[teiid-commits] teiid SVN: r4403 - in trunk/engine/src: test/java/org/teiid/query/metadata and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Thu Sep 6 07:18:07 EDT 2012


Author: shawkins
Date: 2012-09-06 07:18:06 -0400 (Thu, 06 Sep 2012)
New Revision: 4403

Modified:
   trunk/engine/src/main/java/org/teiid/query/metadata/DDLStringVisitor.java
   trunk/engine/src/test/java/org/teiid/query/metadata/TestDDLStringVisitor.java
Log:
TEIID-2187 switching to always use the constraint form in ddl and adding options

Modified: trunk/engine/src/main/java/org/teiid/query/metadata/DDLStringVisitor.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/metadata/DDLStringVisitor.java	2012-09-06 10:59:21 UTC (rev 4402)
+++ trunk/engine/src/main/java/org/teiid/query/metadata/DDLStringVisitor.java	2012-09-06 11:18:06 UTC (rev 4403)
@@ -30,6 +30,7 @@
 import java.util.EnumSet;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.regex.Pattern;
 
 import org.teiid.adminapi.Admin.SchemaObjectType;
@@ -154,7 +155,7 @@
 				else {
 					buffer.append(COMMA);
 				}
-				visit(c, table);
+				visit(c);
 			}
 			buildContraints(table);
 			buffer.append(NEWLINE);
@@ -235,7 +236,7 @@
 		
 		KeyRecord pk = table.getPrimaryKey();
 		if (pk != null) {
-			addConstraint("PK", PRIMARY_KEY, pk); //$NON-NLS-1$
+			addConstraint("PK", PRIMARY_KEY, pk, true); //$NON-NLS-1$
 		}
 
 		addConstraints(table.getUniqueKeys(), UNIQUE, UNIQUE);
@@ -243,28 +244,26 @@
 
 		for (int i = 0; i < table.getForeignKeys().size(); i++) {
 			ForeignKey key = table.getForeignKeys().get(i);
-			addConstraint("FK" + i, FOREIGN_KEY, key); //$NON-NLS-1$
+			addConstraint("FK" + i, FOREIGN_KEY, key, false); //$NON-NLS-1$
 			buffer.append(SPACE).append(REFERENCES);
 			if (key.getReferenceTableName() != null) {
 				buffer.append(SPACE).append(key.getReferenceTableName());
 			}
 			buffer.append(SPACE);
 			addNames(buffer, key.getReferenceColumns());
+			appendOptions(key);
 		}
 	}
 
 	private void addConstraints(List<KeyRecord> constraints, String defaultName, String type) {
 		for (int i = 0; i < constraints.size(); i++) {
 			KeyRecord constraint = constraints.get(i);
-			addConstraint(defaultName + i, type, constraint);
+			addConstraint(defaultName + i, type, constraint, true);
 		}
 	}
 
 	private void addConstraint(String defaultName, String type,
-			KeyRecord constraint) {
-		if (constraint.getType() != KeyRecord.Type.AccessPattern && constraint.getColumns().size() <= 1) {
-			return;
-		}
+			KeyRecord constraint, boolean addOptions) {
 		buffer.append(COMMA).append(NEWLINE).append(TAB);
 		boolean nameMatches = defaultName.equals(constraint.getName());
 		if (!nameMatches) {
@@ -272,6 +271,9 @@
 		}
 		buffer.append(type);
 		addColumns(buffer, constraint.getColumns(), false);
+		if (addOptions) {
+			appendOptions(constraint);
+		}
 	}
 
 	private void addColumns(StringBuilder builder, List<Column> columns, boolean includeType) {
@@ -309,7 +311,7 @@
 		}
 	}	
 	
-	private void visit(Column column, Table table) {
+	private void visit(Column column) {
 		buffer.append(NEWLINE).append(TAB);
 		appendColumn(buffer, column, true, true);
 		
@@ -317,32 +319,6 @@
 			buffer.append(SPACE).append(AUTO_INCREMENT);
 		}
 		
-		KeyRecord pk = table.getPrimaryKey();
-		if (pk != null && pk.getColumns().size() == 1) {
-			Column c = pk.getColumns().get(0);
-			if (column.equals(c)) {
-				buffer.append(SPACE).append(PRIMARY_KEY);
-			}
-		}
-		
-		for (KeyRecord key:table.getUniqueKeys()) {
-			if (key != null && key.getColumns().size() == 1) {
-				Column c = key.getColumns().get(0);
-				if (column.equals(c)) {
-					buffer.append(SPACE).append(UNIQUE);
-				}
-			}
-		}
-		
-		for (KeyRecord key:table.getIndexes()) {
-			if (key != null && key.getColumns().size() == 1) {
-				Column c = key.getColumns().get(0);
-				if (column.equals(c)) {
-					buffer.append(SPACE).append(INDEX);
-				}
-			}
-		}		
-		
 		appendDefault(column);
 		
 		// options
@@ -460,9 +436,21 @@
 			addOption(options, DISTINCT_VALUES, column.getDistinctValues());
 		}		
 		
-		if (!column.getProperties().isEmpty()) {
-			for (String key:column.getProperties().keySet()) {
-				addOption(options, key, column.getProperty(key, false));
+		buildOptions(column, options);
+	}
+	
+	private void appendOptions(AbstractMetadataRecord record) {
+		StringBuilder options = new StringBuilder();
+		buildOptions(record, options);
+		if (options.length() != 0) {
+			buffer.append(SPACE).append(OPTIONS).append(SPACE).append(LPAREN).append(options).append(RPAREN);
+		}
+	}
+
+	private void buildOptions(AbstractMetadataRecord record, StringBuilder options) {
+		if (!record.getProperties().isEmpty()) {
+			for (Map.Entry<String, String> entry:record.getProperties().entrySet()) {
+				addOption(options, entry.getKey(), entry.getValue());
 			}
 		}
 	}	

Modified: trunk/engine/src/test/java/org/teiid/query/metadata/TestDDLStringVisitor.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/metadata/TestDDLStringVisitor.java	2012-09-06 10:59:21 UTC (rev 4402)
+++ trunk/engine/src/test/java/org/teiid/query/metadata/TestDDLStringVisitor.java	2012-09-06 11:18:06 UTC (rev 4403)
@@ -44,12 +44,17 @@
 	public void testForeignTable() throws Exception {
 		
 		String ddl = "CREATE FOREIGN TABLE G1 (\n" + 
-				"	e1 integer PRIMARY KEY,\n" + 
-				"	e2 string(10) UNIQUE,\n" + 
-				"	e3 date NOT NULL UNIQUE,\n" + 
+				"	e1 integer,\n" + 
+				"	e2 string(10),\n" + 
+				"	e3 date NOT NULL,\n" + 
 				"	e4 bigdecimal(12,3),\n" + 
-				"	e5 integer AUTO_INCREMENT INDEX OPTIONS (UUID 'uuid', NAMEINSOURCE 'nis', SELECTABLE false),\n" + 
-				"	e6 string INDEX DEFAULT 'hello'\n" + 
+				"	e5 integer AUTO_INCREMENT OPTIONS (UUID 'uuid', NAMEINSOURCE 'nis', SELECTABLE false),\n" + 
+				"	e6 string DEFAULT 'hello',\n" +
+				"	PRIMARY KEY(e1),\n" +
+				"	UNIQUE(e2),\n" +
+				"	UNIQUE(e3),\n" +
+				"	INDEX(e5),\n" +
+				"	INDEX(e6)\n" +
 				") OPTIONS (ANNOTATION 'Test Table', CARDINALITY '12', FOO 'BAR', UPDATABLE 'true', UUID 'uuid2');";
 		
 		MetadataFactory mf = new MetadataFactory("test", 1, "model", TestDDLParser.getDataTypes(), new Properties(), null);
@@ -110,12 +115,12 @@
 	@Test
 	public void testConstraints2() throws Exception {
 		String ddl = "CREATE FOREIGN TABLE G1( e1 integer, e2 varchar, e3 date, " +
-				"ACCESSPATTERN(e1), UNIQUE(e1), ACCESSPATTERN(e2, e3))";
+				"ACCESSPATTERN(e1), UNIQUE(e1) options (x true), ACCESSPATTERN(e2, e3))";
 		String expected = "CREATE FOREIGN TABLE G1 (\n" + 
-				"	e1 integer UNIQUE,\n" + 
+				"	e1 integer,\n" + 
 				"	e2 string,\n" + 
 				"	e3 date,\n" + 
-				"	ACCESSPATTERN(e1),\n	ACCESSPATTERN(e2, e3)\n" + 
+				"	ACCESSPATTERN(e1),\n	ACCESSPATTERN(e2, e3),\n	UNIQUE(e1) OPTIONS (x 'true')\n" + 
 				");";
 		helpTest(ddl, expected);
 	}		



More information about the teiid-commits mailing list