novie-core/src/main/java/com/groupon/novie/utils/SchemaDefinitionImpl.java
public Collection<Error> buildAndValidateConfig() {
        Collection<Error> returnValue = new ArrayList<Error>();

        // Check default TZ
        if (defaultTimezone == null) {
            returnValue.add(new Error("No default Timezone configured"));
        }

        for (Pair<Pair<String, String>, Pair<String, String>> fkRelationship : fkRelationshipSet) {
            Optional<PhysicalSqlColumn> left = getColumnByPair(fkRelationship.getLeft());
            Optional<PhysicalSqlColumn> right = getColumnByPair(fkRelationship.getRight());
            if (!left.isPresent()) {
                returnValue.add(new Error("Column " + fkRelationship.getLeft().getRight() + " in table " + fkRelationship.getLeft().getLeft()
                        + " doesn't exist."));
            } else if (!right.isPresent()) {
                returnValue.add(new Error("Column " + fkRelationship.getRight().getRight() + " in table " + fkRelationship.getRight().getLeft()
                        + " doesn't exist."));
            } else {
                buildSqlForeignKey(left.get(), right.get());
            }
        }
        // Check Alternate Tables
        for (Entry<Pair<String, String>, DimensionTable> entry : alternateDimensions.entrySet()) {
            DimensionTable dim = dimensions.get(entry.getKey().getLeft());
            if (dim == null) {
                returnValue.add(new Error("Original dimension " + entry.getKey().getLeft() + " does not exist."));
            } else {
                if (!dim.isEquivalent(entry.getValue(), returnValue)) {
                    returnValue.add(new Error("Dimension " + entry.getValue().getDimensionName() + " is not equivalent to " + dim.getDimensionName()
                            + "."));
                }
            }

        }

        return returnValue;
    }
public Collection<Error> buildAndValidateConfig() {
        Collection<Error> returnValue = new ArrayList<Error>();

        // Check default TZ
        if (defaultTimezone == null) {
            returnValue.add(new Error("No default Timezone configured"));
        }

        for (Pair<Pair<String, String>, Pair<String, String>> fkRelationship : fkRelationshipSet) {
            Optional<PhysicalSqlColumn> left = getColumnByPair(fkRelationship.getLeft());
            Optional<PhysicalSqlColumn> right = getColumnByPair(fkRelationship.getRight());
            if (!left.isPresent()) {
                returnValue.add(new Error("Column " + fkRelationship.getLeft().getRight() + " in table " + fkRelationship.getLeft().getLeft()
                        + " doesn't exist."));
            } else if (!right.isPresent()) {
                returnValue.add(new Error("Column " + fkRelationship.getRight().getRight() + " in table " + fkRelationship.getRight().getLeft()
                        + " doesn't exist."));
            } else {
                buildSqlForeignKey(left.get(), right.get());
            }
        }
        // Check Alternate Tables
        for (Entry<Pair<String, String>, DimensionTable> entry : alternateDimensions.entrySet()) {
            DimensionTable dim = dimensions.get(entry.getKey().getLeft());
            if (dim == null) {
                returnValue.add(new Error("Original dimension " + entry.getKey().getLeft() + " does not exist."));
            } else {
                if (!dim.isEquivalent(entry.getValue(), returnValue)) {
                    returnValue.add(new Error("Dimension " + entry.getValue().getDimensionName() + " is not equivalent to " + dim.getDimensionName()
                            + "."));
                }
            }

        }

        return returnValue;
    }
public Collection < Error > buildAndValidateConfig ( ) { Collection < Error > returnValue = new ArrayList < Error > ( ) ; // Check default TZ if ( defaultTimezone == null ) { returnValue . add ( new Error ( "No default Timezone configured" ) ) ; } for ( Pair < Pair < String , String > , Pair < String , String > > fkRelationship : fkRelationshipSet ) { Optional < PhysicalSqlColumn > left = getColumnByPair ( fkRelationship . getLeft ( ) ) ; Optional < PhysicalSqlColumn > right = getColumnByPair ( fkRelationship . getRight ( ) ) ; if ( ! left . isPresent ( ) ) { returnValue . add ( new Error ( "Column " + fkRelationship . getLeft ( ) . getRight ( ) + " in table " + fkRelationship . getLeft ( ) . getLeft ( ) + " doesn't exist." ) ) ; } else if ( ! right . isPresent ( ) ) { returnValue . add ( new Error ( "Column " + fkRelationship . getRight ( ) . getRight ( ) + " in table " + fkRelationship . getRight ( ) . getLeft ( ) + " doesn't exist." ) ) ; } else { buildSqlForeignKey ( left . get ( ) , right . get ( ) ) ; } } // Check Alternate Tables for ( Entry < Pair < String , String > , DimensionTable > entry : alternateDimensions . entrySet ( ) ) { DimensionTable dim = dimensions . get ( entry . getKey ( ) . getLeft ( ) ) ; if ( dim == null ) { returnValue . add ( new Error ( "Original dimension " + entry . getKey ( ) . getLeft ( ) + " does not exist." ) ) ; } else { if ( ! dim . isEquivalent ( entry . getValue ( ) , returnValue ) ) { returnValue . add ( new Error ( "Dimension " + entry . getValue ( ) . getDimensionName ( ) + " is not equivalent to " + dim . getDimensionName ( ) + "." ) ) ; } } } return returnValue ; }
Build the configuration links (ie Foreigns key). Checks the validity of
the configuration.

@throws Exception
Build the configuration links ( ie Foreigns key ) . Checks the validity of the configuration .