Changeset 887
- Timestamp:
- 02/04/10 21:56:24 (2 years ago)
- Location:
- MetadataBeans/trunk
- Files:
-
- 59 edited
- 4 copied
-
.classpath (modified) (1 diff)
-
.settings/org.eclipse.jdt.core.prefs (modified) (1 diff)
-
pom.xml (modified) (2 diffs)
-
src/main/java/org/eobjects/metamodel/AccessDataContextStrategy.java (modified) (3 diffs)
-
src/main/java/org/eobjects/metamodel/CompositeDataContextStrategy.java (modified) (2 diffs)
-
src/main/java/org/eobjects/metamodel/CsvDataContextStrategy.java (modified) (10 diffs)
-
src/main/java/org/eobjects/metamodel/ExcelDataContextStrategy.java (modified) (8 diffs)
-
src/main/java/org/eobjects/metamodel/JdbcDataContextStrategy.java (modified) (6 diffs)
-
src/main/java/org/eobjects/metamodel/MetaModelHelper.java (modified) (30 diffs)
-
src/main/java/org/eobjects/metamodel/QueryPostprocessDataContextStrategy.java (modified) (3 diffs)
-
src/main/java/org/eobjects/metamodel/QuerySplitter.java (modified) (3 diffs)
-
src/main/java/org/eobjects/metamodel/XmlDataContextStrategy.java (modified) (22 diffs)
-
src/main/java/org/eobjects/metamodel/dbase/DbaseDataContextStrategy.java (modified) (4 diffs)
-
src/main/java/org/eobjects/metamodel/detect/ColumnTypeTransformer.java (modified) (4 diffs)
-
src/main/java/org/eobjects/metamodel/query/FromItem.java (modified) (3 diffs)
-
src/main/java/org/eobjects/metamodel/query/Query.java (modified) (1 diff)
-
src/main/java/org/eobjects/metamodel/query/SelectItem.java (modified) (1 diff)
-
src/main/java/org/eobjects/metamodel/schema/Column.java (modified) (4 diffs)
-
src/main/java/org/eobjects/metamodel/schema/CompositeSchema.java (modified) (1 diff)
-
src/main/java/org/eobjects/metamodel/schema/ImmutableRelationship.java (copied) (copied from MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/Relationship.java) (11 diffs)
-
src/main/java/org/eobjects/metamodel/schema/JdbcColumn.java (modified) (1 diff)
-
src/main/java/org/eobjects/metamodel/schema/JdbcSchema.java (modified) (4 diffs)
-
src/main/java/org/eobjects/metamodel/schema/JdbcTable.java (modified) (2 diffs)
-
src/main/java/org/eobjects/metamodel/schema/MutableColumn.java (copied) (copied from MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/Column.java) (15 diffs)
-
src/main/java/org/eobjects/metamodel/schema/MutableSchema.java (copied) (copied from MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/Schema.java) (13 diffs)
-
src/main/java/org/eobjects/metamodel/schema/MutableTable.java (copied) (copied from MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/Table.java) (27 diffs)
-
src/main/java/org/eobjects/metamodel/schema/Relationship.java (modified) (3 diffs)
-
src/main/java/org/eobjects/metamodel/schema/Schema.java (modified) (3 diffs)
-
src/main/java/org/eobjects/metamodel/schema/Table.java (modified) (6 diffs)
-
src/test/java/org/eobjects/metamodel/AccessDataContextStrategyTest.java (modified) (5 diffs)
-
src/test/java/org/eobjects/metamodel/CompositeDataContextStrategyTest.java (modified) (1 diff)
-
src/test/java/org/eobjects/metamodel/CsvDataContextStrategyTest.java (modified) (23 diffs)
-
src/test/java/org/eobjects/metamodel/DerbyTest.java (modified) (1 diff)
-
src/test/java/org/eobjects/metamodel/ExcelDataContextStrategyTest.java (modified) (9 diffs)
-
src/test/java/org/eobjects/metamodel/HsqldbTest.java (modified) (3 diffs)
-
src/test/java/org/eobjects/metamodel/JdbcDataContextStrategyTest.java (modified) (5 diffs)
-
src/test/java/org/eobjects/metamodel/MetaModelHelperTest.java (modified) (7 diffs)
-
src/test/java/org/eobjects/metamodel/MetaModelTestCase.java (modified) (3 diffs)
-
src/test/java/org/eobjects/metamodel/OpenOfficeDataContextStrategyTest.java (modified) (2 diffs)
-
src/test/java/org/eobjects/metamodel/QueryPostprocessDataContextStrategyTest.java (modified) (3 diffs)
-
src/test/java/org/eobjects/metamodel/QuerySplitterTest.java (modified) (2 diffs)
-
src/test/java/org/eobjects/metamodel/SqliteTest.java (modified) (2 diffs)
-
src/test/java/org/eobjects/metamodel/XmlDataContextStrategyTest.java (modified) (19 diffs)
-
src/test/java/org/eobjects/metamodel/data/RowFilterDataSetStrategyTest.java (modified) (1 diff)
-
src/test/java/org/eobjects/metamodel/dbase/DbaseDataContextStrategyMeterTest.java (modified) (5 diffs)
-
src/test/java/org/eobjects/metamodel/dbase/DbaseDataContextStrategyReportTest.java (modified) (4 diffs)
-
src/test/java/org/eobjects/metamodel/detect/ColumnTypeTransformerTest.java (modified) (5 diffs)
-
src/test/java/org/eobjects/metamodel/dialects/AbstractQueryRewriterTest.java (modified) (2 diffs)
-
src/test/java/org/eobjects/metamodel/dialects/MysqlQueryRewriterTest.java (modified) (2 diffs)
-
src/test/java/org/eobjects/metamodel/dialects/PostgresqlQueryRewriterTest.java (modified) (2 diffs)
-
src/test/java/org/eobjects/metamodel/dialects/SQLServerQueryRewriterTest.java (modified) (2 diffs)
-
src/test/java/org/eobjects/metamodel/query/FilterItemTest.java (modified) (12 diffs)
-
src/test/java/org/eobjects/metamodel/query/FromClauseTest.java (modified) (1 diff)
-
src/test/java/org/eobjects/metamodel/query/FromItemTest.java (modified) (1 diff)
-
src/test/java/org/eobjects/metamodel/query/QueryTest.java (modified) (1 diff)
-
src/test/java/org/eobjects/metamodel/query/SelectItemTest.java (modified) (2 diffs)
-
src/test/java/org/eobjects/metamodel/schema/ColumnTest.java (modified) (2 diffs)
-
src/test/java/org/eobjects/metamodel/schema/JdbcSchemaTest.java (modified) (2 diffs)
-
src/test/java/org/eobjects/metamodel/schema/SchemaModelTest.java (modified) (5 diffs)
-
src/test/java/org/eobjects/metamodel/schema/SchemaTest.java (modified) (3 diffs)
-
src/test/java/org/eobjects/metamodel/schema/TableTest.java (modified) (4 diffs)
-
src/test/resources/jdbcschema_serialized.dat (modified) (previous)
-
src/test/resources/xml_input_eobjects.xml (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
MetadataBeans/trunk/.classpath
r877 r887 1 1 <?xml version="1.0" encoding="UTF-8"?> 2 2 <classpath> 3 <classpathentry kind="src" path="src/main/java"/>4 <classpathentry kind="src" path="src/main/resources"/>5 <classpathentry kind="src" path="src/test/java"/>6 <classpathentry kind="src" path="src/test/resources"/>7 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER "/>3 <classpathentry kind="src" output="target/classes" path="src/main/java"/> 4 <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/> 5 <classpathentry kind="src" output="target/test-classes" path="src/test/java"/> 6 <classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/> 7 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/> 8 8 <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/> 9 9 <classpathentry kind="output" path="target/classes"/> -
MetadataBeans/trunk/.settings/org.eclipse.jdt.core.prefs
r624 r887 1 # Sun Oct 05 18:07:39 CEST 20081 #Thu Feb 04 21:14:57 CET 2010 2 2 eclipse.preferences.version=1 3 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 4 org.eclipse.jdt.core.compiler.compliance=1.5 5 org.eclipse.jdt.core.compiler.source=1.5 3 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled 4 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 5 org.eclipse.jdt.core.compiler.compliance=1.6 6 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error 7 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error 8 org.eclipse.jdt.core.compiler.source=1.6 -
MetadataBeans/trunk/pom.xml
r878 r887 62 62 <build> 63 63 <plugins> 64 <!-- Ensures java 5compatibility -->64 <!-- Ensures java 6 compatibility --> 65 65 <plugin> 66 66 <artifactId>maven-compiler-plugin</artifactId> 67 67 <configuration> 68 <source>1. 5</source>69 <target>1. 5</target>68 <source>1.6</source> 69 <target>1.6</target> 70 70 <encoding>utf-8</encoding> 71 71 </configuration> … … 170 170 <groupId>junit</groupId> 171 171 <artifactId>junit</artifactId> 172 <version> 3.8.2</version>172 <version>4.7</version> 173 173 <scope>test</scope> 174 174 </dependency> -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/AccessDataContextStrategy.java
r886 r887 12 12 import org.eobjects.metamodel.schema.Column; 13 13 import org.eobjects.metamodel.schema.ColumnType; 14 import org.eobjects.metamodel.schema.Schema; 14 import org.eobjects.metamodel.schema.MutableColumn; 15 import org.eobjects.metamodel.schema.MutableSchema; 16 import org.eobjects.metamodel.schema.MutableTable; 15 17 import org.eobjects.metamodel.schema.Table; 16 18 import org.eobjects.metamodel.schema.TableType; 17 19 18 20 import com.healthmarketscience.jackcess.Database; 19 20 21 21 22 public class AccessDataContextStrategy extends … … 47 48 48 49 @Override 49 protected Schema getMainSchema() throws MetaModelException {50 Schema schema = newSchema(_file.getName());50 protected MutableSchema getMainSchema() throws MetaModelException { 51 MutableSchema schema = new MutableSchema(_file.getName()); 51 52 Database db = getDatabase(); 52 53 for (com.healthmarketscience.jackcess.Table mdbTable : db) { 53 Table table = new Table(mdbTable.getName(), TableType.TABLE, schema); 54 MutableTable table = new MutableTable(mdbTable.getName(), 55 TableType.TABLE, schema); 54 56 55 57 try { … … 59 61 ColumnType columnType = ColumnType 60 62 .convertColumnType(mdbColumn.getSQLType()); 61 Column column = new Column(mdbColumn.getName(), columnType,62 table, i, null);63 MutableColumn column = new MutableColumn(mdbColumn 64 .getName(), columnType, table, i, null); 63 65 column.setColumnSize((int) mdbColumn.getLength()); 64 66 column.setNativeType(mdbColumn.getType().name()); -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/CompositeDataContextStrategy.java
r886 r887 17 17 import org.eobjects.metamodel.schema.Column; 18 18 import org.eobjects.metamodel.schema.CompositeSchema; 19 import org.eobjects.metamodel.schema.MutableSchema; 19 20 import org.eobjects.metamodel.schema.Schema; 20 21 import org.eobjects.metamodel.schema.Table; 21 22 22 23 23 public class CompositeDataContextStrategy implements IDataContextStrategy { … … 82 82 83 83 @Override 84 protected Schema getMainSchema() throws MetaModelException { 84 protected MutableSchema getMainSchema() 85 throws MetaModelException { 85 86 throw new UnsupportedOperationException( 86 87 "Use CompositeDataContextStrategy for exploring the schema"); -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/CsvDataContextStrategy.java
r886 r887 28 28 import org.eobjects.metamodel.schema.Column; 29 29 import org.eobjects.metamodel.schema.ColumnType; 30 import org.eobjects.metamodel.schema.Schema; 30 import org.eobjects.metamodel.schema.MutableColumn; 31 import org.eobjects.metamodel.schema.MutableSchema; 32 import org.eobjects.metamodel.schema.MutableTable; 31 33 import org.eobjects.metamodel.schema.Table; 32 34 import org.eobjects.metamodel.schema.TableType; … … 46 48 47 49 public CsvDataContextStrategy(File file) { 48 this(file, CSVReader.DEFAULT_SEPARATOR, CSVReader.DEFAULT_QUOTE_CHARACTER); 50 this(file, CSVReader.DEFAULT_SEPARATOR, 51 CSVReader.DEFAULT_QUOTE_CHARACTER); 49 52 } 50 53 … … 67 70 * the character to use for enclosing/quoting values 68 71 */ 69 public CsvDataContextStrategy(File file, char separatorChar, char quoteChar, String fileEncoding) { 72 public CsvDataContextStrategy(File file, char separatorChar, 73 char quoteChar, String fileEncoding) { 70 74 if (file == null) { 71 75 throw new IllegalArgumentException("File cannot be null"); … … 84 88 } 85 89 86 public CsvDataContextStrategy(URL url, char separatorChar, char quoteChar, String encoding) { 90 public CsvDataContextStrategy(URL url, char separatorChar, char quoteChar, 91 String encoding) { 87 92 _encoding = encoding; 88 93 _separatorChar = separatorChar; … … 95 100 } 96 101 97 public CsvDataContextStrategy(InputStream inputStream, char separatorChar, char quoteChar) { 102 public CsvDataContextStrategy(InputStream inputStream, char separatorChar, 103 char quoteChar) { 98 104 this(inputStream, separatorChar, quoteChar, FileHelper.DEFAULT_ENCODING); 99 105 } 100 106 101 public CsvDataContextStrategy(InputStream inputStream, char separatorChar, char quoteChar, String encoding) { 107 public CsvDataContextStrategy(InputStream inputStream, char separatorChar, 108 char quoteChar, String encoding) { 102 109 _encoding = encoding; 103 110 _separatorChar = separatorChar; … … 110 117 } 111 118 112 private void createFileFromInputStream(InputStream inputStream) throws IOException { 119 private void createFileFromInputStream(InputStream inputStream) 120 throws IOException { 113 121 File tempDir = FileHelper.getTempDir(); 114 122 boolean usableName = false; … … 121 129 _file.deleteOnExit(); 122 130 BufferedWriter writer = FileHelper.getBufferedWriter(_file, _encoding); 123 BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); 124 for (String line = reader.readLine(); line != null; line = reader.readLine()) { 131 BufferedReader reader = new BufferedReader(new InputStreamReader( 132 inputStream)); 133 for (String line = reader.readLine(); line != null; line = reader 134 .readLine()) { 125 135 writer.write(line); 126 136 writer.write('\n'); … … 131 141 132 142 @Override 133 public DataSet materializeMainSchemaTable(Table table, Column[] columns, int maxRows) { 143 public DataSet materializeMainSchemaTable(Table table, Column[] columns, 144 int maxRows) { 134 145 if (columns == null || columns.length == 0) { 135 146 columns = table.getColumns(); 136 147 } 137 CSVReader reader = new CSVReader(FileHelper.getReader(_file, _encoding), _separatorChar, _quoteChar, 1); 148 CSVReader reader = new CSVReader( 149 FileHelper.getReader(_file, _encoding), _separatorChar, 150 _quoteChar, 1); 138 151 if (maxRows < 0) { 139 152 return new DataSet(new CsvDataSetStrategy(reader, columns, null)); … … 144 157 145 158 @Override 146 protected Schema getMainSchema() throws MetaModelException {159 protected MutableSchema getMainSchema() throws MetaModelException { 147 160 CSVReader reader = null; 148 161 try { 149 162 String schemaName = getDefaultSchemaName(); 150 Schema schema = new Schema(schemaName); 151 Table table = new Table(schemaName.substring(0, schemaName.length() - 4), TableType.TABLE, schema); 163 MutableSchema schema = new MutableSchema(schemaName); 164 MutableTable table = new MutableTable(schemaName.substring(0, 165 schemaName.length() - 4), TableType.TABLE, schema); 152 166 schema.addTable(table); 153 167 154 reader = new CSVReader(FileHelper.getReader(_file, _encoding), _separatorChar, _quoteChar); 168 reader = new CSVReader(FileHelper.getReader(_file, _encoding), 169 _separatorChar, _quoteChar); 155 170 String[] columnHeaders = reader.readNext(); 156 171 reader.close(); 157 172 for (int i = 0; i < columnHeaders.length; i++) { 158 Column column = new Column(columnHeaders[i], ColumnType.VARCHAR, table, i, true); 173 MutableColumn column = new MutableColumn(columnHeaders[i], 174 ColumnType.VARCHAR, table, i, true); 159 175 table.addColumn(column); 160 176 } … … 162 178 return schema; 163 179 } catch (Exception e) { 164 throw new IllegalStateException("Exception reading from file: " + _file, e); 180 throw new IllegalStateException("Exception reading from file: " 181 + _file, e); 165 182 } finally { 166 183 if (reader != null) { -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/ExcelDataContextStrategy.java
r886 r887 35 35 import org.eobjects.metamodel.schema.Column; 36 36 import org.eobjects.metamodel.schema.ColumnType; 37 import org.eobjects.metamodel.schema.Schema; 37 import org.eobjects.metamodel.schema.MutableColumn; 38 import org.eobjects.metamodel.schema.MutableSchema; 39 import org.eobjects.metamodel.schema.MutableTable; 38 40 import org.eobjects.metamodel.schema.Table; 39 41 import org.eobjects.metamodel.util.FormatHelper; 40 41 42 42 43 /** 43 44 * DataContextStrategy to use for Excel files 44 45 */ 45 public class ExcelDataContextStrategy extends QueryPostprocessDataContextStrategy { 46 public class ExcelDataContextStrategy extends 47 QueryPostprocessDataContextStrategy { 46 48 47 private static final NumberFormat _numberFormat = FormatHelper.getUiNumberFormat(); 49 private static final NumberFormat _numberFormat = FormatHelper 50 .getUiNumberFormat(); 48 51 private File _file; 49 52 … … 59 62 60 63 @Override 61 public DataSet materializeMainSchemaTable(Table table, Column[] columns, int maxRows) { 64 public DataSet materializeMainSchemaTable(Table table, Column[] columns, 65 int maxRows) { 62 66 if (columns == null || columns.length == 0) 63 67 columns = table.getColumns(); … … 85 89 String[] dataValues = new String[columns.length]; 86 90 for (int j = 0; j < columns.length; j++) { 87 HSSFCell cell = row.getCell(columns[j].getColumnNumber()); 91 HSSFCell cell = row.getCell(columns[j] 92 .getColumnNumber()); 88 93 dataValues[j] = getCellValue(cell); 89 94 } … … 101 106 102 107 } catch (Exception e) { 103 throw new IllegalStateException("Exception reading from file: " + _file, e); 108 throw new IllegalStateException("Exception reading from file: " 109 + _file, e); 104 110 } finally { 105 111 if (in != null) { … … 118 124 } 119 125 120 protected Schema getMainSchema() throws MetaModelException {126 protected MutableSchema getMainSchema() throws MetaModelException { 121 127 InputStream in = null; 122 Schema schema = null;128 MutableSchema schema = null; 123 129 try { 124 130 125 schema = new Schema(getDefaultSchemaName());131 schema = new MutableSchema(getDefaultSchemaName()); 126 132 in = new FileInputStream(_file); 127 133 HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(in)); … … 133 139 Iterator<HSSFRow> rowIterator = currentSheet.rowIterator(); 134 140 if (rowIterator.hasNext()) { 135 Table table = new Table(wb.getSheetName(i)); 141 MutableTable table = new MutableTable(wb 142 .getSheetName(i)); 136 143 HSSFRow row = rowIterator.next(); 137 144 short rowLength = row.getLastCellNum(); … … 142 149 columnName = "[Column " + (j + 1) + "]"; 143 150 } 144 Column column = new Column(columnName, ColumnType.VARCHAR, table, j, true); 151 MutableColumn column = new MutableColumn( 152 columnName, ColumnType.VARCHAR, table, j, 153 true); 145 154 table.addColumn(column); 146 155 } … … 152 161 153 162 } catch (Exception e) { 154 throw new IllegalStateException("Exception reading from file: " + _file, e); 163 throw new IllegalStateException("Exception reading from file: " 164 + _file, e); 155 165 } finally { 156 166 if (in != null) { -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/JdbcDataContextStrategy.java
r886 r887 48 48 import org.eobjects.metamodel.schema.JdbcSchema; 49 49 import org.eobjects.metamodel.schema.JdbcTable; 50 import org.eobjects.metamodel.schema.MutableColumn; 51 import org.eobjects.metamodel.schema.ImmutableRelationship; 52 import org.eobjects.metamodel.schema.MutableSchema; 50 53 import org.eobjects.metamodel.schema.Relationship; 51 54 import org.eobjects.metamodel.schema.Schema; 52 55 import org.eobjects.metamodel.schema.Table; 53 56 import org.eobjects.metamodel.schema.TableType; 54 55 57 56 58 /** … … 252 254 if (columnName != null) { 253 255 Column column = table.getColumnByName(columnName); 254 if (column != null ) {255 column.setIndexed(true);256 if (column != null && column instanceof MutableColumn) { 257 ((MutableColumn) column).setIndexed(true); 256 258 } else { 257 259 _log.error("Indexed column \"" + columnName … … 328 330 String remarks = rs.getString(12); 329 331 330 Column column = new JdbcColumn(columnName, columnType, table,331 columnNumber, nullable);332 MutableColumn column = new JdbcColumn(columnName, columnType, 333 table, columnNumber, nullable); 332 334 column.setRemarks(remarks); 333 335 column.setNativeType(nativeType); … … 420 422 } 421 423 if (!exists) { 422 Relationship.createRelationship(new Column[] { pkColumn }, 424 ImmutableRelationship.createRelationship( 425 new Column[] { pkColumn }, 423 426 new Column[] { fkColumn }); 424 427 } … … 553 556 554 557 @Override 555 protected Schema getMainSchema() throws MetaModelException {558 protected MutableSchema getMainSchema() throws MetaModelException { 556 559 return JdbcDataContextStrategy.this 557 560 .getSchemaByName(getMainSchemaName()); … … 732 735 } 733 736 734 public Schema getSchemaByName(String name) throws MetaModelException {737 public MutableSchema getSchemaByName(String name) throws MetaModelException { 735 738 DatabaseMetaData metaData; 736 739 try { -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/MetaModelHelper.java
r886 r887 44 44 import org.eobjects.metamodel.util.ObjectComparator; 45 45 46 47 46 /** 48 47 * This class contains various helper functionality to common tasks involving … … 67 66 * list of tables and columns are included 68 67 */ 69 public static Table[] getTables(List<Table> tableList, List<Column> columnList) { 68 public static Table[] getTables(List<? extends Table> tableList, 69 List<? extends Column> columnList) { 70 70 HashSet<Table> set = new HashSet<Table>(); 71 71 set.addAll(tableList); … … 103 103 */ 104 104 public static Column[] getTableColumns(Table table, List<Column> columns) { 105 return getTableColumns(table, columns.toArray(new Column[columns.size()])); 105 return getTableColumns(table, columns 106 .toArray(new Column[columns.size()])); 106 107 } 107 108 … … 129 130 } 130 131 131 public static DataSet getCarthesianProduct(DataSet[] fromDataSets, List<FilterItem> whereItems) { 132 return getCarthesianProduct(fromDataSets, whereItems.toArray(new FilterItem[whereItems.size()])); 133 } 134 135 public static DataSet getCarthesianProduct(DataSet[] fromDataSets, FilterItem... filterItems) { 132 public static DataSet getCarthesianProduct(DataSet[] fromDataSets, 133 List<FilterItem> whereItems) { 134 return getCarthesianProduct(fromDataSets, whereItems 135 .toArray(new FilterItem[whereItems.size()])); 136 } 137 138 public static DataSet getCarthesianProduct(DataSet[] fromDataSets, 139 FilterItem... filterItems) { 136 140 // First check if carthesian product is even nescesary 137 141 if (fromDataSets.length == 1) { … … 156 160 Object[] values = fromDataSet.getRow().getValues(); 157 161 Object[] row = new Object[selectItems.size()]; 158 System.arraycopy(values, 0, row, selectItemOffset, values.length); 162 System.arraycopy(values, 0, row, selectItemOffset, 163 values.length); 159 164 data.add(row); 160 165 } … … 171 176 for (int j = 0; j < fromDataRows.size(); j++) { 172 177 Object[] newRow = fromDataRows.get(j); 173 System.arraycopy(newRow, 0, originalRow, selectItemOffset, newRow.length); 178 System.arraycopy(newRow, 0, originalRow, 179 selectItemOffset, newRow.length); 174 180 data.add(i + j, originalRow.clone()); 175 181 } … … 179 185 } 180 186 181 SelectItem[] finalSelectItems = selectItems.toArray(new SelectItem[selectItems.size()]); 187 SelectItem[] finalSelectItems = selectItems 188 .toArray(new SelectItem[selectItems.size()]); 182 189 for (Iterator<Object[]> it = data.iterator(); it.hasNext();) { 183 190 Object[] objects = it.next(); … … 193 200 } 194 201 195 public static DataSet getFiltered(DataSet dataSet, List<FilterItem> filterItems) { 196 return getFiltered(dataSet, filterItems.toArray(new FilterItem[filterItems.size()])); 197 } 198 199 public static DataSet getFiltered(DataSet dataSet, FilterItem... filterItems) { 202 public static DataSet getFiltered(DataSet dataSet, 203 List<FilterItem> filterItems) { 204 return getFiltered(dataSet, filterItems 205 .toArray(new FilterItem[filterItems.size()])); 206 } 207 208 public static DataSet getFiltered(DataSet dataSet, 209 FilterItem... filterItems) { 200 210 if (filterItems.length == 0) { 201 211 return dataSet; … … 219 229 } 220 230 221 public static DataSet getSelection(List<SelectItem> selectItems, DataSet dataSet) { 222 return getSelection(selectItems.toArray(new SelectItem[selectItems.size()]), dataSet); 231 public static DataSet getSelection(List<SelectItem> selectItems, 232 DataSet dataSet) { 233 return getSelection(selectItems.toArray(new SelectItem[selectItems 234 .size()]), dataSet); 223 235 } 224 236 … … 233 245 SelectItem selectItem = selectItems[i]; 234 246 if (selectItem.getSubQuerySelectItem() != null) { 235 resultRow[i] = row.getValue(selectItem.getSubQuerySelectItem()); 247 resultRow[i] = row.getValue(selectItem 248 .getSubQuerySelectItem()); 236 249 } else { 237 250 resultRow[i] = row.getValue(selectItem); … … 246 259 } 247 260 248 public static DataSet getGrouped(List<SelectItem> selectItems, DataSet dataSet, List<GroupByItem> groupByItems) { 249 return getGrouped(selectItems.toArray(new SelectItem[selectItems.size()]), dataSet, groupByItems 250 .toArray(new GroupByItem[groupByItems.size()])); 251 } 252 253 public static DataSet getGrouped(SelectItem[] selectItems, DataSet dataSet, GroupByItem[] groupByItems) { 261 public static DataSet getGrouped(List<SelectItem> selectItems, 262 DataSet dataSet, List<GroupByItem> groupByItems) { 263 return getGrouped(selectItems 264 .toArray(new SelectItem[selectItems.size()]), dataSet, 265 groupByItems.toArray(new GroupByItem[groupByItems.size()])); 266 } 267 268 public static DataSet getGrouped(SelectItem[] selectItems, DataSet dataSet, 269 GroupByItem[] groupByItems) { 254 270 DataSet result = dataSet; 255 271 if (groupByItems != null && groupByItems.length > 0) { … … 262 278 263 279 // Creates a list of SelectItems that have functions 264 List<SelectItem> functionItems = getFunctionSelectItems(Arrays.asList(selectItems)); 280 List<SelectItem> functionItems = getFunctionSelectItems(Arrays 281 .asList(selectItems)); 265 282 266 283 // Loop through the dataset and identify groups … … 300 317 objects.add(""); 301 318 } else { 302 throw new IllegalArgumentException("Expression function not supported: " + item); 319 throw new IllegalArgumentException( 320 "Expression function not supported: " + item); 303 321 } 304 322 } … … 309 327 310 328 // Loop through the groups to generate aggregates 311 for (Entry<Row, Map<SelectItem, List<Object>>> entry : uniqueRows.entrySet()) { 329 for (Entry<Row, Map<SelectItem, List<Object>>> entry : uniqueRows 330 .entrySet()) { 312 331 Row row = entry.getKey(); 313 332 Map<SelectItem, List<Object>> functionInput = entry.getValue(); … … 326 345 List<Object> objects = functionInput.get(item); 327 346 if (objects != null) { 328 Object functionResult = item.getFunction().evaluate(objects.toArray()); 347 Object functionResult = item.getFunction() 348 .evaluate(objects.toArray()); 329 349 resultRow[i] = functionResult; 330 350 } else { 331 351 if (item.getFunction() != null) { 332 _log.error("No function input found for SelectItem: " + item); 352 _log 353 .error("No function input found for SelectItem: " 354 + item); 333 355 } 334 356 } … … 343 365 } 344 366 345 public static DataSet getAggregated(List<SelectItem> resultSelectItems, DataSet dataSet) { 367 public static DataSet getAggregated(List<SelectItem> resultSelectItems, 368 DataSet dataSet) { 346 369 List<SelectItem> functionItems = getFunctionSelectItems(resultSelectItems); 347 370 if (functionItems.isEmpty()) { 348 371 return dataSet; 349 372 } else { 350 SelectItem[] resultSelectItemsArray = resultSelectItems.toArray(new SelectItem[resultSelectItems.size()]); 373 SelectItem[] resultSelectItemsArray = resultSelectItems 374 .toArray(new SelectItem[resultSelectItems.size()]); 351 375 Map<SelectItem, List<Object>> functionInput = new HashMap<SelectItem, List<Object>>(); 352 376 for (SelectItem item : functionItems) { … … 366 390 Column column = item.getColumn(); 367 391 if (column != null) { 368 Object value = inputRow.getValue(new SelectItem(column)); 392 Object value = inputRow 393 .getValue(new SelectItem(column)); 369 394 objects.add(value); 370 395 } else if (SelectItem.isCountAllItem(item)) { … … 373 398 objects.add(""); 374 399 } else { 375 throw new IllegalArgumentException("Expression function not supported: " + item); 400 throw new IllegalArgumentException( 401 "Expression function not supported: " + item); 376 402 } 377 403 } … … 382 408 Object[] values = new Object[resultSelectItemsArray.length]; 383 409 for (int i = 0; i < resultSelectItemsArray.length; i++) { 384 Object value = inputRow.getValue(resultSelectItemsArray[i]); 410 Object value = inputRow 411 .getValue(resultSelectItemsArray[i]); 385 412 if (value != null) { 386 413 values[i] = value; … … 414 441 Row row = resultRows.get(i); 415 442 Object[] values = row.getValues(); 416 for (Entry<SelectItem, Object> entry : functionResult.entrySet()) { 443 for (Entry<SelectItem, Object> entry : functionResult 444 .entrySet()) { 417 445 SelectItem item = entry.getKey(); 418 446 int itemIndex = row.indexOf(item); … … 429 457 } 430 458 431 public static List<SelectItem> getFunctionSelectItems(List<SelectItem> selectItems) { 459 public static List<SelectItem> getFunctionSelectItems( 460 List<SelectItem> selectItems) { 432 461 List<SelectItem> result = new ArrayList<SelectItem>(); 433 462 for (SelectItem selectItem : selectItems) { … … 442 471 } 443 472 444 public static DataSet getOrdered(DataSet dataSet, List<OrderByItem> orderByItems) { 445 return getOrdered(dataSet, orderByItems.toArray(new OrderByItem[orderByItems.size()])); 446 } 447 448 public static DataSet getOrdered(DataSet dataSet, final OrderByItem... orderByItems) { 473 public static DataSet getOrdered(DataSet dataSet, 474 List<OrderByItem> orderByItems) { 475 return getOrdered(dataSet, orderByItems 476 .toArray(new OrderByItem[orderByItems.size()])); 477 } 478 479 public static DataSet getOrdered(DataSet dataSet, 480 final OrderByItem... orderByItems) { 449 481 if (orderByItems != null && orderByItems.length != 0) { 450 482 final int[] sortIndexes = new int[orderByItems.length]; … … 456 488 List<Object[]> data = dataSet.toObjectArrays(); 457 489 458 final Comparator<Object> valueComparator = ObjectComparator.getComparator(); 490 final Comparator<Object> valueComparator = ObjectComparator 491 .getComparator(); 459 492 460 493 Collections.sort(data, new Comparator<Object[]>() { … … 463 496 Object sortObj1 = o1[sortIndexes[i]]; 464 497 Object sortObj2 = o2[sortIndexes[i]]; 465 int compare = valueComparator.compare(sortObj1, sortObj2); 498 int compare = valueComparator.compare(sortObj1, 499 sortObj2); 466 500 if (compare != 0) { 467 501 OrderByItem orderByItem = orderByItems[i]; … … 516 550 result.addAll(getTableFromItems(rightSide)); 517 551 } else { 518 throw new IllegalStateException("FromItem was neither of Table type, SubQuery type or Join type: " + item); 552 throw new IllegalStateException( 553 "FromItem was neither of Table type, SubQuery type or Join type: " 554 + item); 519 555 } 520 556 return result; … … 533 569 * if less or more than one Row is returned from the query 534 570 */ 535 public static Row executeSingleRowQuery(DataContext dataContext, Query query) throws MetaModelException { 571 public static Row executeSingleRowQuery(DataContext dataContext, Query query) 572 throws MetaModelException { 536 573 DataSet dataSet = dataContext.executeQuery(query); 537 574 boolean next = dataSet.next(); 538 575 if (!next) { 539 throw new MetaModelException("No rows returned from query: " + query); 576 throw new MetaModelException("No rows returned from query: " 577 + query); 540 578 } 541 579 Row row = dataSet.getRow(); 542 580 next = dataSet.next(); 543 581 if (next) { 544 throw new MetaModelException("More than one row returned from query: " + query); 582 throw new MetaModelException( 583 "More than one row returned from query: " + query); 545 584 } 546 585 dataSet.close(); … … 559 598 * @return the left joined result dataset 560 599 */ 561 public static DataSet getLeftJoin(DataSet ds1, DataSet ds2, FilterItem[] onConditions) { 600 public static DataSet getLeftJoin(DataSet ds1, DataSet ds2, 601 FilterItem[] onConditions) { 562 602 if (ds1 == null) { 563 603 throw new IllegalArgumentException("Left DataSet cannot be null"); … … 583 623 584 624 List<Object[]> carthesianRows = getCarthesianProduct( 585 new DataSet[] { new DataSet(ds1rows), new DataSet(si2, ds2data) }, onConditions).toObjectArrays(); 625 new DataSet[] { new DataSet(ds1rows), 626 new DataSet(si2, ds2data) }, onConditions) 627 .toObjectArrays(); 586 628 if (carthesianRows.size() > 0) { 587 629 resultRows.addAll(carthesianRows); … … 609 651 * @return the right joined result dataset 610 652 */ 611 public static DataSet getRightJoin(DataSet ds1, DataSet ds2, FilterItem[] onConditions) { 653 public static DataSet getRightJoin(DataSet ds1, DataSet ds2, 654 FilterItem[] onConditions) { 612 655 SelectItem[] ds1selects = ds1.getSelectItems(); 613 656 SelectItem[] ds2selects = ds2.getSelectItems(); 614 SelectItem[] leftOrderedSelects = new SelectItem[ds1selects.length + ds2selects.length]; 615 System.arraycopy(ds1selects, 0, leftOrderedSelects, 0, ds1selects.length); 616 System.arraycopy(ds2selects, 0, leftOrderedSelects, ds1selects.length, ds2selects.length); 657 SelectItem[] leftOrderedSelects = new SelectItem[ds1selects.length 658 + ds2selects.length]; 659 System.arraycopy(ds1selects, 0, leftOrderedSelects, 0, 660 ds1selects.length); 661 System.arraycopy(ds2selects, 0, leftOrderedSelects, ds1selects.length, 662 ds2selects.length); 617 663 618 664 // We will reuse the left join algorithm (but switch the datasets … … 645 691 } 646 692 647 public static Column[] getColumnsByType(Column[] columns, ColumnType columnType) { 693 public static Column[] getColumnsByType(Column[] columns, 694 ColumnType columnType) { 648 695 ArrayList<Column> result = new ArrayList<Column>(); 649 696 for (Column column : columns) { -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/QueryPostprocessDataContextStrategy.java
r886 r887 41 41 import org.eobjects.metamodel.schema.Column; 42 42 import org.eobjects.metamodel.schema.ColumnType; 43 import org.eobjects.metamodel.schema.MutableColumn; 44 import org.eobjects.metamodel.schema.ImmutableRelationship; 45 import org.eobjects.metamodel.schema.MutableSchema; 46 import org.eobjects.metamodel.schema.MutableTable; 43 47 import org.eobjects.metamodel.schema.Relationship; 44 48 import org.eobjects.metamodel.schema.Schema; … … 354 358 private Schema getInformationSchema() { 355 359 // Create schema 356 Schema informationSchema = newSchema(INFORMATION_SCHEMA_NAME);357 Table tablesTable = newTable("tables", TableType.TABLE,360 MutableSchema informationSchema = new MutableSchema(INFORMATION_SCHEMA_NAME); 361 MutableTable tablesTable = new MutableTable("tables", TableType.TABLE, 358 362 informationSchema); 359 Table columnsTable = newTable("columns", TableType.TABLE,363 MutableTable columnsTable = new MutableTable("columns", TableType.TABLE, 360 364 informationSchema); 361 Table relationshipsTable = newTable("relationships", TableType.TABLE,365 MutableTable relationshipsTable = new MutableTable("relationships", TableType.TABLE, 362 366 informationSchema); 363 367 informationSchema.addTable(tablesTable).addTable(columnsTable) … … 365 369 366 370 // Create "tables" table: name, type, num_columns, remarks 367 tablesTable.addColumn(new Column("name", ColumnType.VARCHAR,371 tablesTable.addColumn(new MutableColumn("name", ColumnType.VARCHAR, 368 372 tablesTable, 0, false)); 369 tablesTable.addColumn(new Column("type", ColumnType.VARCHAR,373 tablesTable.addColumn(new MutableColumn("type", ColumnType.VARCHAR, 370 374 tablesTable, 1, true)); 371 tablesTable.addColumn(new Column("num_columns", ColumnType.INTEGER,375 tablesTable.addColumn(new MutableColumn("num_columns", ColumnType.INTEGER, 372 376 tablesTable, 2, true)); 373 tablesTable.addColumn(new Column("remarks", ColumnType.VARCHAR,377 tablesTable.addColumn(new MutableColumn("remarks", ColumnType.VARCHAR, 374 378 tablesTable, 3, true)); 375 379 376 380 // Create "columns" table: name, type, native_type, size, nullable, 377 381 // indexed, table, remarks 378 columnsTable.addColumn(new Column("name", ColumnType.VARCHAR,382 columnsTable.addColumn(new MutableColumn("name", ColumnType.VARCHAR, 379 383 columnsTable, 0, false)); 380 columnsTable.addColumn(new Column("type", ColumnType.VARCHAR,384 columnsTable.addColumn(new MutableColumn("type", ColumnType.VARCHAR, 381 385 columnsTable, 1, true)); 382 columnsTable.addColumn(new Column("native_type", ColumnType.VARCHAR,386 columnsTable.addColumn(new MutableColumn("native_type", ColumnType.VARCHAR, 383 387 columnsTable, 2, true)); 384 columnsTable.addColumn(new Column("size", ColumnType.INTEGER,388 columnsTable.addColumn(new MutableColumn("size", ColumnType.INTEGER, 385 389 columnsTable, 3, true)); 386 columnsTable.addColumn(new Column("nullable", ColumnType.BOOLEAN,390 columnsTable.addColumn(new MutableColumn("nullable", ColumnType.BOOLEAN, 387 391 columnsTable, 4, true)); 388 columnsTable.addColumn(new Column("indexed", ColumnType.BOOLEAN,392 columnsTable.addColumn(new MutableColumn("indexed", ColumnType.BOOLEAN, 389 393 columnsTable, 5, true)); 390 columnsTable.addColumn(new Column("table", ColumnType.VARCHAR,394 columnsTable.addColumn(new MutableColumn("table", ColumnType.VARCHAR, 391 395 columnsTable, 6, false)); 392 columnsTable.addColumn(new Column("remarks", ColumnType.VARCHAR,396 columnsTable.addColumn(new MutableColumn("remarks", ColumnType.VARCHAR, 393 397 columnsTable, 7, true)); 394 398 395 399 // Create "relationships" table: primary_table, primary_column, 396 400 // foreign_table, foreign_column 397 relationshipsTable.addColumn(new Column("primary_table",401 relationshipsTable.addColumn(new MutableColumn("primary_table", 398 402 ColumnType.VARCHAR, relationshipsTable, 0, false)); 399 relationshipsTable.addColumn(new Column("primary_column",403 relationshipsTable.addColumn(new MutableColumn("primary_column", 400 404 ColumnType.VARCHAR, relationshipsTable, 1, false)); 401 relationshipsTable.addColumn(new Column("foreign_table",405 relationshipsTable.addColumn(new MutableColumn("foreign_table", 402 406 ColumnType.VARCHAR, relationshipsTable, 2, false)); 403 relationshipsTable.addColumn(new Column("foreign_column",407 relationshipsTable.addColumn(new MutableColumn("foreign_column", 404 408 ColumnType.VARCHAR, relationshipsTable, 3, false)); 405 409 406 Relationship.createRelationship(tablesTable.getColumnByName("name"),410 ImmutableRelationship.createRelationship(tablesTable.getColumnByName("name"), 407 411 columnsTable.getColumnByName("table")); 408 Relationship.createRelationship(tablesTable.getColumnByName("name"),412 ImmutableRelationship.createRelationship(tablesTable.getColumnByName("name"), 409 413 relationshipsTable.getColumnByName("primary_table")); 410 Relationship.createRelationship(tablesTable.getColumnByName("name"),414 ImmutableRelationship.createRelationship(tablesTable.getColumnByName("name"), 411 415 relationshipsTable.getColumnByName("foreign_table")); 412 Relationship.createRelationship(columnsTable.getColumnByName("name"),416 ImmutableRelationship.createRelationship(columnsTable.getColumnByName("name"), 413 417 relationshipsTable.getColumnByName("primary_column")); 414 Relationship.createRelationship(columnsTable.getColumnByName("name"),418 ImmutableRelationship.createRelationship(columnsTable.getColumnByName("name"), 415 419 relationshipsTable.getColumnByName("foreign_column")); 416 420 -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/QuerySplitter.java
r886 r887 36 36 import org.eobjects.metamodel.schema.Table; 37 37 38 39 38 /** 40 39 * The QuerySplitter class makes it possible to split up queries that are … … 52 51 */ 53 52 public class QuerySplitter { 54 53 55 54 public final static long DEFAULT_MAX_ROWS = 300000; 56 55 private static final int MINIMUM_MAX_ROWS = 100; … … 110 109 } 111 110 112 private List<Query> splitQueryBasedOnColumns(List<Column> splitColumns) { 111 private List<Query> splitQueryBasedOnColumns( 112 List<Column> splitColumns) { 113 113 List<Query> result = new ArrayList<Query>(); 114 114 if (splitColumns.isEmpty() || getRowCount() <= _maxRows) { -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/XmlDataContextStrategy.java
r886 r887 37 37 import org.eobjects.metamodel.query.SelectItem; 38 38 import org.eobjects.metamodel.schema.Column; 39 import org.eobjects.metamodel.schema.MutableColumn; 39 40 import org.eobjects.metamodel.schema.ColumnType; 41 import org.eobjects.metamodel.schema.ImmutableRelationship; 42 import org.eobjects.metamodel.schema.MutableSchema; 43 import org.eobjects.metamodel.schema.MutableTable; 40 44 import org.eobjects.metamodel.schema.Relationship; 41 import org.eobjects.metamodel.schema.Schema;42 45 import org.eobjects.metamodel.schema.Table; 43 46 import org.eobjects.metamodel.schema.TableType; … … 53 56 import org.xml.sax.InputSource; 54 57 55 56 58 /** 57 59 * A DataContext strategy that reads XML content and maps it to a table-based … … 69 71 public static final String NATIVE_TYPE_TEXT = "XML Text"; 70 72 private static final String TEXT_CONTENT_TEMP_SUFFIX = "_metamodel_text_content"; 71 private Schema _schema;73 private MutableSchema _schema; 72 74 private Map<String, List<Object[]>> _tableData = new HashMap<String, List<Object[]>>();; 73 75 private boolean _autoFlattenTables; … … 86 88 _autoFlattenTables = autoFlattenTables; 87 89 _schemaName = schemaName; 88 _schema = new Schema(_schemaName);90 _schema = new MutableSchema(_schemaName); 89 91 loadSchema(document); 90 92 } … … 195 197 196 198 @Override 197 protected Schema getMainSchema() throws MetaModelException {199 protected MutableSchema getMainSchema() throws MetaModelException { 198 200 loadSchema(); 199 201 return _schema; … … 214 216 public XmlDataContextStrategy loadSchema() { 215 217 if (_schema == null) { 216 _schema = new Schema(_schemaName);218 _schema = new MutableSchema(_schemaName); 217 219 try { 218 220 DocumentBuilderFactory dbf = DocumentBuilderFactory … … 237 239 // node or pure XML structure) 238 240 Table[] tables = _schema.getTables(); 239 for (Table table : tables) { 241 for (Table t : tables) { 242 MutableTable table = (MutableTable) t; 240 243 String tableName = table.getName(); 241 244 List<Object[]> tableRows = _tableData.get(tableName); … … 248 251 Column idColumn = getIdColumn(table); 249 252 Column column = table.getColumnByName("id"); 250 if (column == null ) {251 idColumn.setName("id");253 if (column == null && column instanceof MutableColumn) { 254 ((MutableColumn) idColumn).setName("id"); 252 255 } 253 256 … … 264 267 } 265 268 if (!found) { 266 table.removeColumn(textContentColumn);269 ((MutableTable) table).removeColumn(textContentColumn); 267 270 } else { 268 271 // Rename all text content columns to reasonable … … 274 277 column = table.getColumnByName(preferredName); 275 278 if (column == null) { 276 textContentColumn.setName(preferredName); 279 ((MutableColumn) textContentColumn) 280 .setName(preferredName); 277 281 } 278 282 } … … 285 289 286 290 private void loadTables(Element element, String tablePrefix, 287 Column parentKeyColumn, int parentKey) {291 MutableColumn parentKeyColumn, int parentKey) { 288 292 Attr[] attributes = getAttributes(element); 289 293 String textContent = getTextContent(element); … … 292 296 || hasSiblings(element)) { 293 297 // We need to represent this type of node with a table 294 Table table = _schema.getTableByName(tableName); 298 MutableTable table = (MutableTable) _schema 299 .getTableByName(tableName); 295 300 Column idColumn; 296 Column foreignKeyColumn;301 MutableColumn foreignKeyColumn; 297 302 List<Object[]> tableRows; 298 303 if (table == null) { 299 304 _log.info("Creating table: " + tableName); 300 table = new Table(tableName, TableType.TABLE, _schema);305 table = new MutableTable(tableName, TableType.TABLE, _schema); 301 306 _schema.addTable(table); 302 307 idColumn = getIdColumn(table); … … 306 311 if (parentKeyColumn != null) { 307 312 Table parentTable = parentKeyColumn.getTable(); 308 foreignKeyColumn = new Column( 309 parentTable.getName() + "_id", parentKeyColumn 310 .getType(), table, table.getColumnCount(), 311 false); 313 foreignKeyColumn = new MutableColumn(parentTable.getName() 314 + "_id", parentKeyColumn.getType(), table, table 315 .getColumnCount(), false); 312 316 foreignKeyColumn.setNativeType(NATIVE_TYPE_FOREIGN_KEY); 313 table.addColumn(foreignKeyColumn);314 315 Relationship.createRelationship(316 new Column[] { parentKeyColumn },317 new Column[] { foreignKeyColumn });317 ((MutableTable) table).addColumn(foreignKeyColumn); 318 319 ImmutableRelationship.createRelationship( 320 new MutableColumn[] { parentKeyColumn }, 321 new MutableColumn[] { foreignKeyColumn }); 318 322 319 323 } else { … … 325 329 Column[] foreignKeys = table.getForeignKeys(); 326 330 if (foreignKeys.length == 1) { 327 foreignKeyColumn = foreignKeys[0];331 foreignKeyColumn = (MutableColumn) foreignKeys[0]; 328 332 } else { 329 333 foreignKeyColumn = null; … … 333 337 Column textContentColumn = getTextContentColumn(table, element 334 338 .getNodeName()); 335 Map< Column, String> columnValues = new HashMap<Column, String>();339 Map<MutableColumn, String> columnValues = new HashMap<MutableColumn, String>(); 336 340 for (Attr attr : attributes) { 337 341 String name = attr.getName(); 338 Column column = table.getColumnByName(name); 342 MutableColumn column = (MutableColumn) table 343 .getColumnByName(name); 339 344 if (column == null) { 340 345 _log.info("Creating column: " + tableName + "." + name); 341 column = new Column(name, ColumnType.VARCHAR, table, table342 .getColumnCount(), true);346 column = new MutableColumn(name, ColumnType.VARCHAR, table, 347 table.getColumnCount(), true); 343 348 column.setNativeType(NATIVE_TYPE_ATTRIBUTE); 344 table.addColumn(column);349 ((MutableTable) table).addColumn(column); 345 350 } 346 351 columnValues.put(column, attr.getValue()); … … 360 365 } 361 366 // Add values for attributes 362 for (Entry< Column, String> entry : columnValues.entrySet()) {367 for (Entry<MutableColumn, String> entry : columnValues.entrySet()) { 363 368 rowData[entry.getKey().getColumnNumber()] = entry.getValue(); 364 369 } … … 373 378 // child tables can create relationship to it 374 379 parentKey = id; 375 parentKeyColumn = idColumn;380 parentKeyColumn = (MutableColumn) idColumn; 376 381 } 377 382 tableRows.add(rowData); … … 400 405 _log.info("Creating text content column for table: " 401 406 + table.getName()); 402 column = new Column(preferredColumnName + TEXT_CONTENT_TEMP_SUFFIX, 403 ColumnType.VARCHAR, table, table.getColumnCount(), true); 404 column.setNativeType(NATIVE_TYPE_TEXT); 405 table.addColumn(column); 407 MutableColumn c = new MutableColumn(preferredColumnName 408 + TEXT_CONTENT_TEMP_SUFFIX, ColumnType.VARCHAR, table, 409 table.getColumnCount(), true); 410 c.setNativeType(NATIVE_TYPE_TEXT); 411 ((MutableTable) table).addColumn(c); 412 column = c; 413 406 414 } 407 415 return column; 408 416 } 409 417 410 private Column getIdColumn( Table table) {418 private Column getIdColumn(MutableTable table) { 411 419 Column[] columns = table.getColumns(); 412 420 Column column = null; 413 421 for (Column col : columns) { 414 422 if (NATIVE_TYPE_PRIMARY_KEY.equals(col.getNativeType())) { 415 column = col;423 column = (MutableColumn) col; 416 424 break; 417 425 } … … 420 428 String tableName = table.getName(); 421 429 _log.info("Creating id column for table: " + tableName); 422 column = new Column(tableName + "_metamodel_surrogate_id", 423 ColumnType.INTEGER, table, table.getColumnCount(), false); 424 column.setNativeType(NATIVE_TYPE_PRIMARY_KEY); 425 column.setIndexed(true); 426 table.addColumn(column); 430 MutableColumn c = new MutableColumn(tableName 431 + "_mdbeans_surrogate_id", ColumnType.INTEGER, table, table 432 .getColumnCount(), false); 433 c.setNativeType(NATIVE_TYPE_PRIMARY_KEY); 434 c.setIndexed(true); 435 table.addColumn(c); 436 column = c; 427 437 } 428 438 return column; … … 492 502 493 503 public XmlDataContextStrategy flattenTables(Relationship relationship) { 494 Table primaryTable = relationship.getPrimaryTable(); 495 Table foreignTable = relationship.getForeignTable(); 504 MutableTable primaryTable = (MutableTable) relationship 505 .getPrimaryTable(); 506 MutableTable foreignTable = (MutableTable) relationship 507 .getForeignTable(); 496 508 497 509 // Check that foreignTable is not primary table in other relationships … … 530 542 531 543 Query q = new Query(); 532 q.select(primaryColumns.toArray(new Column[primaryColumns.size()])); 533 q.select(foreignColumns.toArray(new Column[foreignColumns.size()])); 544 q.select(primaryColumns 545 .toArray(new MutableColumn[primaryColumns.size()])); 546 q.select(foreignColumns 547 .toArray(new MutableColumn[foreignColumns.size()])); 534 548 q.from(new FromItem(JoinType.LEFT, relationship)); 535 549 if (_log.isDebugEnabled()) { … … 540 554 541 555 for (Column foreignColumn : foreignColumns) { 542 Column newPrimaryColumn = new Column(foreignColumn.getName(),543 foreignColumn.getType(), primaryTable, primaryTable544 .getColumnCount(), foreignColumn.isNullable());556 MutableColumn newPrimaryColumn = new MutableColumn(foreignColumn 557 .getName(), foreignColumn.getType(), primaryTable, 558 primaryTable.getColumnCount(), foreignColumn.isNullable()); 545 559 newPrimaryColumn.setIndexed(foreignColumn.isIndexed()); 546 560 newPrimaryColumn.setNativeType(foreignColumn.getNativeType()); 547 primaryTable.addColumn(newPrimaryColumn);561 ((MutableTable) primaryTable).addColumn(newPrimaryColumn); 548 562 } 549 563 _tableData.put(primaryTableName, tableRows); 550 foreignTable.getSchema().removeTable(foreignTable);564 ((MutableSchema) foreignTable.getSchema()).removeTable(foreignTable); 551 565 _tableData.remove(foreignTableName); 552 relationship.remove();566 ImmutableRelationship.remove(relationship); 553 567 554 568 if (_log.isInfoEnabled()) { -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/dbase/DbaseDataContextStrategy.java
r886 r887 28 28 import org.eobjects.metamodel.schema.Column; 29 29 import org.eobjects.metamodel.schema.ColumnType; 30 import org.eobjects.metamodel.schema.MutableColumn; 31 import org.eobjects.metamodel.schema.MutableSchema; 32 import org.eobjects.metamodel.schema.MutableTable; 30 33 import org.eobjects.metamodel.schema.Schema; 31 34 import org.eobjects.metamodel.schema.Table; … … 40 43 import org.xBaseJ.fields.NumField; 41 44 import org.xBaseJ.fields.PictureField; 42 43 45 44 46 public class DbaseDataContextStrategy extends … … 81 83 } 82 84 83 Schema schema = newSchema(schemaName);84 Table table = new Table(schemaName85 .substring(0,schemaName.length() - 4), TableType.TABLE, schema);85 MutableSchema schema = new MutableSchema(schemaName); 86 MutableTable table = new MutableTable(schemaName.substring(0, 87 schemaName.length() - 4), TableType.TABLE, schema); 86 88 schema.addTable(table); 87 89 … … 90 92 Field field = dbf.getField(i + 1); 91 93 92 Column column = newColumn(field.getName());94 MutableColumn column = new MutableColumn(field.getName()); 93 95 ColumnType columnType = ColumnType.VARCHAR; 94 96 -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/detect/ColumnTypeTransformer.java
r886 r887 23 23 import org.apache.commons.logging.LogFactory; 24 24 import org.eobjects.metamodel.schema.Column; 25 import org.eobjects.metamodel.schema.MutableColumn; 25 26 import org.eobjects.metamodel.schema.ColumnType; 26 27 import org.eobjects.metamodel.util.BooleanComparator; … … 28 29 import org.joda.time.LocalDate; 29 30 import org.joda.time.LocalTime; 30 31 31 32 32 /** … … 64 64 private boolean _timePossible = true; 65 65 private boolean _nullPossible = false; 66 private Column _column;66 private MutableColumn _column; 67 67 68 68 public ColumnTypeTransformer(Column column) { … … 70 70 throw new IllegalArgumentException("Column cannot be null"); 71 71 } 72 _column = column; 72 if (!(column instanceof MutableColumn)) { 73 throw new IllegalArgumentException( 74 "Can only transform type of MutableColumns"); 75 } 76 _column = (MutableColumn) column; 73 77 } 74 78 -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/query/FromItem.java
r886 r887 22 22 import org.eobjects.metamodel.schema.Table; 23 23 24 25 24 /** 26 25 * Represents a FROM item. FROM items can take different forms: … … 120 119 _rightOn = rightOn; 121 120 } 122 123 /** 124 * Creates a single unvalidated from item based on a expression. 125 * Expression based from items are typically NOT datastore-neutral but are126 * availablefor special "hacking" needs.127 * 128 * Expression based from items can only be used for JDBC based datastores since129 * they are translated directly into SQL.121 122 /** 123 * Creates a single unvalidated from item based on a expression. Expression 124 * based from items are typically NOT datastore-neutral but are available 125 * for special "hacking" needs. 126 * 127 * Expression based from items can only be used for JDBC based datastores 128 * since they are translated directly into SQL. 130 129 * 131 130 * @param expression 132 * An expression to use for the from item, for example 133 * "MYTABLE". 131 * An expression to use for the from item, for example "MYTABLE". 134 132 */ 135 133 public FromItem(String expression) { … … 186 184 return _rightOn; 187 185 } 188 186 189 187 public String getExpression() { 190 188 return _expression; -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/query/Query.java
r886 r887 24 24 import org.eobjects.metamodel.schema.Column; 25 25 import org.eobjects.metamodel.schema.Table; 26 27 26 28 27 /** -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/query/SelectItem.java
r886 r887 24 24 import org.eobjects.metamodel.schema.Table; 25 25 26 27 26 /** 28 27 * Represents a SELECT item. SelectItems can take different forms: -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/Column.java
r886 r887 1 /**2 * This file is part of MetaModel.3 *4 * MetaModel is free software: you can redistribute it and/or modify5 * it under the terms of the GNU General Public License as published by6 * the Free Software Foundation, either version 3 of the License, or7 * (at your option) any later version.8 *9 * MetaModel is distributed in the hope that it will be useful,10 * but WITHOUT ANY WARRANTY; without even the implied warranty of11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12 * GNU General Public License for more details.13 *14 * You should have received a copy of the GNU General Public License15 * along with MetaModel. If not, see <http://www.gnu.org/licenses/>.16 */17 1 package org.eobjects.metamodel.schema; 18 19 import java.io.Serializable;20 21 import org.apache.commons.lang.builder.CompareToBuilder;22 import org.apache.commons.lang.builder.EqualsBuilder;23 import org.apache.commons.lang.builder.HashCodeBuilder;24 import org.apache.commons.lang.builder.ToStringBuilder;25 import org.apache.commons.lang.builder.ToStringStyle;26 2 27 3 /** … … 32 8 * @see Relationship 33 9 */ 34 public class Column implements Serializable, Comparable<Column> { 35 36 private static final long serialVersionUID = -353183696233890927L; 37 private transient String _qualifiedLabel; 38 private int _columnNumber; 39 private String _name; 40 private ColumnType _type; 41 private Table _table; 42 private Boolean _nullable = null; 43 private String _remarks; 44 private boolean _indexed = false; 45 private Integer _columnSize = null; 46 private String _nativeType = null; 47 private String _quoteString = null; 48 49 public Column() { 50 } 51 52 public Column(String name) { 53 this(); 54 setName(name); 55 } 56 57 public Column(String name, ColumnType type) { 58 this(name); 59 setType(type); 60 } 61 62 public Column(String name, ColumnType type, Table table, int columnNumber, 63 Boolean nullable) { 64 this(name, type); 65 setColumnNumber(columnNumber); 66 setTable(table); 67 setNullable(nullable); 68 } 10 public interface Column extends Comparable<Column> { 69 11 70 12 /** … … 72 14 * whereas the JDBC is 1-based. 73 15 */ 74 public int getColumnNumber() { 75 return _columnNumber; 76 } 77 78 public Column setColumnNumber(int columnNumber) { 79 _columnNumber = columnNumber; 80 return this; 81 } 16 public int getColumnNumber(); 82 17 83 18 /** 84 19 * Returns the Column Name 85 20 */ 86 public String getName() { 87 return _name; 88 } 21 public String getName(); 89 22 90 23 /** … … 96 29 * @return a qualified label 97 30 */ 98 public String getQualifiedLabel() { 99 if (_qualifiedLabel == null) { 100 StringBuilder sb = new StringBuilder(); 101 if (_table != null) { 102 sb.append(_table.getQualifiedLabel()); 103 sb.append('.'); 104 } 105 sb.append(getName()); 106 _qualifiedLabel = sb.toString(); 107 } 108 return _qualifiedLabel; 109 } 110 111 public Column setName(String name) { 112 _name = name; 113 _qualifiedLabel = null; 114 return this; 115 } 31 public String getQualifiedLabel(); 116 32 117 33 /** 118 34 * Gets the type of the column 119 35 */ 120 public ColumnType getType() { 121 return _type; 122 } 123 124 public Column setType(ColumnType type) { 125 _type = type; 126 return this; 127 } 36 public ColumnType getType(); 128 37 129 38 /** 130 39 * Gets the table for which this column belong 131 40 */ 132 public Table getTable() { 133 return _table; 134 } 41 public Table getTable(); 135 42 136 public Column setTable(Table table) { 137 _table = table; 138 _qualifiedLabel = null; 139 return this; 140 } 43 public Boolean isNullable(); 141 44 142 public Boolean isNullable() { 143 return _nullable; 144 } 45 public String getRemarks(); 145 46 146 public Column setNullable(Boolean nullable) { 147 _nullable = nullable; 148 return this; 149 } 47 public Integer getColumnSize(); 150 48 151 public String getRemarks() { 152 return _remarks; 153 } 49 public String getNativeType(); 154 50 155 public void setRemarks(String remarks) { 156 _remarks = remarks; 157 } 51 public boolean isIndexed(); 158 52 159 public Integer getColumnSize() { 160 return _columnSize; 161 } 53 public String getQuote(); 162 54 163 public Column setColumnSize(Integer columnSize) { 164 _columnSize = columnSize; 165 return this; 166 } 55 public String getQuotedName(); 167 56 168 public String getNativeType() { 169 return _nativeType; 170 } 57 public int compareTo(Column that); 171 58 172 public Column setNativeType(String nativeType) {173 _nativeType = nativeType;174 return this;175 }176 177 public boolean isIndexed() {178 return _indexed;179 }180 181 public Column setIndexed(boolean indexed) {182 _indexed = indexed;183 return this;184 }185 186 public String getQuote() {187 return _quoteString;188 }189 190 public Column setQuote(String quoteString) {191 _quoteString = quoteString;192 return this;193 }194 195 public String getQuotedName() {196 if (_quoteString != null) {197 return _quoteString + getName() + _quoteString;198 }199 return getName();200 }201 202 @Override203 public String toString() {204 return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)205 .append("name", _name).append("columnNumber", _columnNumber)206 .append("type", _type).append("nullable", _nullable).append(207 "indexed", isIndexed()).append("nativeType",208 _nativeType).append("columnSize", _columnSize)209 .toString();210 }211 212 @Override213 public int hashCode() {214 HashCodeBuilder hcb = new HashCodeBuilder();215 hcb.append(_columnNumber).append(_name).append(_table);216 return hcb.toHashCode();217 }218 219 @Override220 public boolean equals(Object obj) {221 if (obj == this) {222 return true;223 }224 if (obj instanceof Column) {225 Column that = (Column) obj;226 EqualsBuilder eb = new EqualsBuilder().append(this.getName(),227 that.getName()).append(this.getColumnNumber(),228 that.getColumnNumber()).append(this.getType(),229 that.getType()).append(this.isIndexed(), that.isIndexed())230 .append(this.getNativeType(), that.getNativeType()).append(231 this.getColumnSize(), that.getColumnSize());232 if (this.getTable() != null && that.getTable() != null) {233 eb.append(this.getTable().getName(), that.getTable().getName());234 }235 return eb.isEquals();236 }237 return false;238 }239 240 public int compareTo(Column that) {241 CompareToBuilder ctb = new CompareToBuilder();242 ctb.append(this.getColumnNumber(), that.getColumnNumber());243 ctb.append(this.getTable(), that.getTable());244 return ctb.toComparison();245 }246 247 /**248 * Tells the column object that the table it belongs to have changed. This249 * is typically done if the table is being renamed or similar.250 */251 protected void fireTableChanged() {252 _qualifiedLabel = null;253 }254 59 } -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/CompositeSchema.java
r886 r887 8 8 import org.apache.commons.logging.LogFactory; 9 9 10 public class CompositeSchema extends Schema {10 public class CompositeSchema extends MutableSchema { 11 11 12 12 private static final long serialVersionUID = -4018186004438335133L; -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/ImmutableRelationship.java
r886 r887 22 22 import org.apache.commons.lang.builder.EqualsBuilder; 23 23 import org.apache.commons.lang.builder.HashCodeBuilder; 24 25 /** 26 * Represents a relationship between two tables where one set of columns is the 27 * primary key, and another set is the foreign key. Relationship is unlike most 28 * of the MetaModel an immutable type. The immutability help ensure integrity of 29 * object-relationships. To create relationsips use the 30 * <code>createRelationship</code> method and to remove them use the 31 * <code>remove</remove> method. 32 * 33 * @see Table 34 * @see Column 35 */ 36 public class Relationship implements Serializable, Comparable<Relationship> { 24 import org.apache.commons.lang.builder.ToStringBuilder; 25 import org.apache.commons.lang.builder.ToStringStyle; 26 27 public class ImmutableRelationship implements Serializable, Relationship { 37 28 38 29 private static final long serialVersionUID = 238786848828528822L; 39 private Table _primaryTable;30 private MutableTable _primaryTable; 40 31 private Column[] _primaryColumns; 41 private Table _foreignTable;32 private MutableTable _foreignTable; 42 33 private Column[] _foreignColumns; 43 34 … … 54 45 public static Relationship createRelationship(Column[] primaryColumns, 55 46 Column[] foreignColumns) { 56 Table primaryTable = checkSameTable(primaryColumns);57 Table foreignTable = checkSameTable(foreignColumns);58 Relationship relation = new Relationship(primaryTable, primaryColumns,59 foreignTable, foreignColumns);47 MutableTable primaryTable = checkSameTable(primaryColumns); 48 MutableTable foreignTable = checkSameTable(foreignColumns); 49 ImmutableRelationship relation = new ImmutableRelationship(primaryTable, 50 primaryColumns, foreignTable, foreignColumns); 60 51 primaryTable.addRelationship(relation); 61 52 … … 74 65 } 75 66 76 private static Table checkSameTable(Column[] columns) {67 private static MutableTable checkSameTable(Column[] columns) { 77 68 if (columns == null || columns.length == 0) { 78 69 throw new IllegalArgumentException( … … 93 84 } 94 85 } 95 return table; 96 } 97 98 public void remove() { 86 if (table instanceof MutableTable) { 87 return (MutableTable) table; 88 } 89 throw new IllegalStateException( 90 "Can only create MutableRelationship for MutableTables"); 91 } 92 93 private void remove() { 99 94 _primaryTable.removeRelationship(this); 100 95 _foreignTable.removeRelationship(this); … … 108 103 * Prevent external instantiation 109 104 */ 110 private Relationship(Table primaryTable, Column[] primaryColumns, 111 Table foreignTable, Column[] foreignColumns) { 105 private ImmutableRelationship(MutableTable primaryTable, 106 Column[] primaryColumns, MutableTable foreignTable, 107 Column[] foreignColumns) { 112 108 _primaryTable = primaryTable; 113 109 _primaryColumns = primaryColumns; … … 116 112 } 117 113 114 @Override 118 115 public Table getPrimaryTable() { 119 116 return _primaryTable; 120 117 } 121 118 119 @Override 122 120 public Column[] getPrimaryColumns() { 123 121 return _primaryColumns; 124 122 } 125 123 124 @Override 126 125 public Table getForeignTable() { 127 126 return _foreignTable; 128 127 } 129 128 129 @Override 130 130 public Column[] getForeignColumns() { 131 131 return _foreignColumns; … … 134 134 @Override 135 135 public String toString() { 136 StringBuilder sb = new StringBuilder(); 137 sb.append("Relationship["); 138 sb.append("primaryTable=" + _primaryTable.getName()); 136 StringBuilder sb = new StringBuilder("{"); 139 137 Column[] columns = getPrimaryColumns(); 140 sb.append(",primaryColumns={");141 138 for (int i = 0; i < columns.length; i++) { 142 139 if (i != 0) { … … 146 143 } 147 144 sb.append("}"); 148 sb.append(",foreignTable=" + _foreignTable.getName()); 145 String primaryColumns = sb.toString(); 146 147 sb = new StringBuilder("{"); 149 148 columns = getForeignColumns(); 150 sb.append(",foreignColumns={");151 149 for (int i = 0; i < columns.length; i++) { 152 150 if (i != 0) { … … 156 154 } 157 155 sb.append("}"); 158 sb.append("]"); 159 return sb.toString(); 160 } 161 156 String foreignColumns = sb.toString(); 157 158 return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) 159 .append("primaryTable", _primaryTable.getName()).append( 160 "primaryColumns", primaryColumns).append( 161 "foreignTable", _foreignTable.getName()).append("foreignColumns", foreignColumns).toString(); 162 } 163 164 @Override 162 165 public int compareTo(Relationship that) { 163 166 CompareToBuilder ctb = new CompareToBuilder(); … … 198 201 * columns as a part of the relation 199 202 */ 203 @Override 200 204 public boolean containsColumnPair(Column pkColumn, Column fkColumn) { 201 205 if (pkColumn != null && fkColumn != null) { … … 209 213 return false; 210 214 } 215 216 public static void remove(Relationship relationship) { 217 ((ImmutableRelationship) relationship).remove(); 218 } 211 219 } -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/JdbcColumn.java
r886 r887 21 21 import java.io.ObjectOutputStream; 22 22 23 public class JdbcColumn extends Column {23 public class JdbcColumn extends MutableColumn { 24 24 25 25 private static final long serialVersionUID = 389872697452157919L; -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/JdbcSchema.java
r886 r887 24 24 25 25 26 public class JdbcSchema extends Schema {26 public class JdbcSchema extends MutableSchema { 27 27 28 28 private static final long serialVersionUID = 7543633400859277467L; … … 47 47 // Trigger the lazy-loading of the full schema, including relationships, 48 48 // indexes and all columns 49 Schema schema = newSchema(_name);49 MutableSchema schema = new MutableSchema(_name); 50 50 Table[] tables = getTables(); 51 51 for (int i = 0; i < tables.length; i++) { 52 52 Table origTable = tables[i]; 53 Table newTable = newTable(origTable.getName(),53 MutableTable newTable = new MutableTable(origTable.getName(), 54 54 origTable.getType(), schema); 55 55 newTable.setQuote(origTable.getQuote()); … … 58 58 for (int j = 0; j < columns.length; j++) { 59 59 Column origColumn = columns[j]; 60 Column newColumn = newColumn(origColumn.getName(), origColumn60 MutableColumn newColumn = new MutableColumn(origColumn.getName(), origColumn 61 61 .getType(), newTable, origColumn.getColumnNumber(), 62 62 origColumn.isNullable()); … … 92 92 } 93 93 94 Relationship.createRelationship(newPrimaryColumns,94 ImmutableRelationship.createRelationship(newPrimaryColumns, 95 95 newForeignColumns); 96 96 } -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/JdbcTable.java
r886 r887 24 24 import org.eobjects.metamodel.JdbcDataContextStrategy; 25 25 26 27 public class JdbcTable extends Table { 26 public class JdbcTable extends MutableTable { 28 27 29 28 private static final long serialVersionUID = 5952310469458880330L; … … 84 83 private void readObject(ObjectInputStream stream) throws IOException, 85 84 ClassNotFoundException { 86 Schema schema = (Schema) stream.readObject();85 MutableSchema schema = (MutableSchema) stream.readObject(); 87 86 String tableName = (String) stream.readObject(); 88 87 Table table = schema.getTableByName(tableName); -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/MutableColumn.java
r886 r887 25 25 import org.apache.commons.lang.builder.ToStringStyle; 26 26 27 /** 28 * Represents a column and it's metadata description. Columns reside within a 29 * Table and can be used as keys for relationships between tables. 30 * 31 * @see Table 32 * @see Relationship 33 */ 34 public class Column implements Serializable, Comparable<Column> { 27 public class MutableColumn implements Serializable, Column { 35 28 36 29 private static final long serialVersionUID = -353183696233890927L; … … 47 40 private String _quoteString = null; 48 41 49 public Column() {50 } 51 52 public Column(String name) {42 public MutableColumn() { 43 } 44 45 public MutableColumn(String name) { 53 46 this(); 54 47 setName(name); 55 48 } 56 49 57 public Column(String name, ColumnType type) {50 public MutableColumn(String name, ColumnType type) { 58 51 this(name); 59 52 setType(type); 60 53 } 61 54 62 public Column(String name, ColumnType type, Table table, int columnNumber,63 Boolean nullable) {55 public MutableColumn(String name, ColumnType type, Table table, 56 int columnNumber, Boolean nullable) { 64 57 this(name, type); 65 58 setColumnNumber(columnNumber); … … 72 65 * whereas the JDBC is 1-based. 73 66 */ 67 @Override 74 68 public int getColumnNumber() { 75 69 return _columnNumber; … … 84 78 * Returns the Column Name 85 79 */ 80 @Override 86 81 public String getName() { 87 82 return _name; … … 96 91 * @return a qualified label 97 92 */ 93 @Override 98 94 public String getQualifiedLabel() { 99 95 if (_qualifiedLabel == null) { … … 118 114 * Gets the type of the column 119 115 */ 116 @Override 120 117 public ColumnType getType() { 121 118 return _type; … … 130 127 * Gets the table for which this column belong 131 128 */ 129 @Override 132 130 public Table getTable() { 133 131 return _table; … … 140 138 } 141 139 140 @Override 142 141 public Boolean isNullable() { 143 142 return _nullable; … … 149 148 } 150 149 150 @Override 151 151 public String getRemarks() { 152 152 return _remarks; … … 157 157 } 158 158 159 @Override 159 160 public Integer getColumnSize() { 160 161 return _columnSize; … … 166 167 } 167 168 169 @Override 168 170 public String getNativeType() { 169 171 return _nativeType; … … 175 177 } 176 178 179 @Override 177 180 public boolean isIndexed() { 178 181 return _indexed; 179 182 } 180 183 181 public Column setIndexed(boolean indexed) {184 public MutableColumn setIndexed(boolean indexed) { 182 185 _indexed = indexed; 183 186 return this; 184 187 } 185 188 189 @Override 186 190 public String getQuote() { 187 191 return _quoteString; … … 193 197 } 194 198 199 @Override 195 200 public String getQuotedName() { 196 201 if (_quoteString != null) { … … 222 227 return true; 223 228 } 224 if (obj instanceof Column) {229 if (obj instanceof MutableColumn) { 225 230 Column that = (Column) obj; 226 231 EqualsBuilder eb = new EqualsBuilder().append(this.getName(), … … 238 243 } 239 244 245 @Override 240 246 public int compareTo(Column that) { 241 247 CompareToBuilder ctb = new CompareToBuilder(); -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/MutableSchema.java
r886 r887 28 28 import org.apache.commons.lang.builder.ToStringStyle; 29 29 30 /** 31 * Represents a schema and it's metadata. Schemas represent a collection of 32 * tables. 33 * 34 * @see Table 35 */ 36 public class Schema implements Serializable, Comparable<Schema> { 30 public class MutableSchema implements Serializable, Schema { 37 31 38 32 private static final long serialVersionUID = 4465197783868238863L; … … 41 35 protected List<Table> _tables = new ArrayList<Table>(); 42 36 43 public Schema() {44 } 45 46 public Schema(String name) {37 public MutableSchema() { 38 } 39 40 public MutableSchema(String name) { 47 41 this(); 48 42 _name = name; 49 43 } 50 44 51 public Schema(String name, Table... tables) {45 public MutableSchema(String name, Table... tables) { 52 46 this(name); 53 47 setTables(tables); … … 57 51 * @return the name of the schema 58 52 */ 53 @Override 59 54 public String getName() { 60 55 return _name; … … 64 59 _name = name; 65 60 for (Table table : _tables) { 66 table.fireSchemaChanged(); 61 if (table instanceof MutableTable) { 62 ((MutableTable) table).fireSchemaChanged(); 63 } 67 64 } 68 65 return this; … … 72 69 * @return the number of tables that reside in the schema 73 70 */ 71 @Override 74 72 public int getTableCount() { 75 73 return _tables.size(); 76 74 } 77 75 76 @Override 78 77 public int getTableCount(TableType type) { 79 78 return getTables(type).length; … … 83 82 * @return the tables that reside in the schema 84 83 */ 84 @Override 85 85 public Table[] getTables() { 86 86 return _tables.toArray(new Table[_tables.size()]); 87 87 } 88 88 89 @Override 89 90 public Table[] getTables(TableType type) { 90 91 List<Table> result = new ArrayList<Table>(); … … 113 114 } 114 115 115 public Schema addTable(Table table) {116 public MutableSchema addTable(Table table) { 116 117 _tables.add(table); 117 118 return this; … … 131 132 * found. 132 133 */ 134 @Override 133 135 public Table getTableByName(String tableName) { 134 136 if (tableName != null) { … … 157 159 } 158 160 161 @Override 159 162 public Relationship[] getRelationships() { 160 163 List<Relationship> result = new ArrayList<Relationship>(); 161 164 for (Table table : _tables) { 162 165 Relationship[] relations = table.getRelationships(); 163 for (int i = 0; i < relations.length; i++) { 164 Relationship relation = relations[i]; 166 for (Relationship relation : relations) { 165 167 boolean found = false; 166 168 for (Relationship existingRelation : result) { … … 179 181 } 180 182 183 @Override 181 184 public int getRelationshipCount() { 182 185 return getRelationships().length; … … 202 205 return true; 203 206 } 204 if (obj instanceof Schema) {207 if (obj instanceof MutableSchema) { 205 208 Schema that = (Schema) obj; 206 209 return new EqualsBuilder().append(this.getName(), that.getName()) … … 210 213 } 211 214 215 @Override 212 216 public int compareTo(Schema that) { 213 217 CompareToBuilder ctb = new CompareToBuilder(); … … 217 221 } 218 222 223 @Override 219 224 public String[] getTableNames() { 220 225 ArrayList<String> result = new ArrayList<String>(); -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/MutableTable.java
r886 r887 31 31 import org.eobjects.metamodel.MetaModelHelper; 32 32 33 34 /** 35 * Represents the metadata about a table. Tables reside within a schema and 36 * contains columns and relationships to other tables. 37 * 38 * @see Schema 39 * @see Column 40 * @see Relationship 41 */ 42 public class Table implements Serializable, Comparable<Table> { 33 public class MutableTable implements Serializable, Comparable<Table>, Table { 43 34 44 35 private static final long serialVersionUID = -5094888465714027354L; … … 46 37 protected TableType _type; 47 38 protected String _remarks; 48 protected Schema _schema;39 protected MutableSchema _schema; 49 40 protected List<Column> _columns = new ArrayList<Column>(); 50 41 protected List<Relationship> _relationships = new ArrayList<Relationship>(); … … 52 43 private transient String _qualifiedLabel; 53 44 54 public Table() {55 } 56 57 public Table(String name) {45 public MutableTable() { 46 } 47 48 public MutableTable(String name) { 58 49 this(); 59 50 setName(name); 60 51 } 61 52 62 public Table(String name, TableType type) {53 public MutableTable(String name, TableType type) { 63 54 this(name); 64 55 _type = type; 65 56 } 66 57 67 public Table(String name, TableType type,Schema schema) {58 public MutableTable(String name, TableType type, MutableSchema schema) { 68 59 this(name, type); 69 60 _schema = schema; 70 61 } 71 62 72 public Table(String name, TableType type, Schema schema, Column... columns) { 63 public MutableTable(String name, TableType type, MutableSchema schema, 64 Column... columns) { 73 65 this(name, type, schema); 74 66 setColumns(columns); 75 67 } 76 68 77 /** 78 * @return the name of the table 79 */ 69 @Override 80 70 public String getName() { 81 71 return _name; … … 104 94 } 105 95 106 /** 107 * @return the number of columns in this table 108 */ 96 @Override 109 97 public int getColumnCount() { 110 98 return getColumnsInternal().size(); 111 99 } 112 100 113 /** 114 * @return the columns of the table 115 */ 101 @Override 116 102 public Column[] getColumns() { 117 103 List<Column> columns = getColumnsInternal(); … … 128 114 } 129 115 130 public Table setColumns(Collection< Column> columns) {116 public Table setColumns(Collection<? extends Column> columns) { 131 117 List<Column> existingColumns = getColumnsInternal(); 132 118 existingColumns.clear(); … … 147 133 } 148 134 149 /** 150 * Convenience method for retrieving a column by it's name 151 * 152 * @param columnName 153 * the name of the column to retrieve 154 * @return the column with the given name. Returns null if no such column is 155 * found. 156 */ 135 @Override 157 136 public Column getColumnByName(String columnName) { 158 137 if (columnName != null) { … … 181 160 } 182 161 183 /** 184 * @return the schema that the table belong to 185 */ 186 public Schema getSchema() { 162 @Override 163 public MutableSchema getSchema() { 187 164 return _schema; 188 165 } 189 166 190 public Table setSchema( Schema schema) {167 public Table setSchema(MutableSchema schema) { 191 168 _schema = schema; 192 169 fireSchemaChanged(); … … 201 178 _qualifiedLabel = null; 202 179 for (Column column : _columns) { 203 column.fireTableChanged();204 }205 }206 207 /**208 * @return the type of table 209 */180 if (column instanceof MutableColumn) { 181 ((MutableColumn) column).fireTableChanged(); 182 } 183 } 184 } 185 186 @Override 210 187 public TableType getType() { 211 188 return _type; … … 217 194 } 218 195 219 /** 220 * @return all relations for this table. To add relations use 221 * TableRelation.createRelation(); 222 */ 196 @Override 223 197 public Relationship[] getRelationships() { 224 198 List<Relationship> relationships = getRelationshipsInternal(); … … 226 200 } 227 201 228 /** 229 * @param otherTable 230 * @return this tables relationsips to another table 231 */ 202 @Override 232 203 public Relationship[] getRelationships(Table otherTable) { 233 204 List<Relationship> result = new ArrayList<Relationship>(); … … 263 234 } 264 235 236 @Override 265 237 public int getRelationshipCount() { 266 238 return getRelationshipsInternal().size(); 267 239 } 268 240 241 @Override 269 242 public String getRemarks() { 270 243 return _remarks; … … 275 248 } 276 249 250 @Override 277 251 public String getQuote() { 278 252 return _quoteString; … … 284 258 } 285 259 260 @Override 286 261 public String getQuotedName() { 287 262 if (_quoteString != null) { … … 291 266 } 292 267 293 /** 294 * Gets a label with a simple dot-separated qualified name such as 295 * "MY_SCHEMA.MY_TABLE". The qualified label can be used as a unique 296 * identifier for the table but is not necessarily directly transferable to 297 * SQL syntax. 298 * 299 * @return a qualified label 300 */ 268 @Override 301 269 public String getQualifiedLabel() { 302 270 if (_qualifiedLabel == null) { … … 312 280 } 313 281 282 @Override 314 283 public Column[] getNumberColumns() { 315 284 List<Column> result = new ArrayList<Column>(); … … 323 292 } 324 293 294 @Override 325 295 public Column[] getLiteralColumns() { 326 296 List<Column> result = new ArrayList<Column>(); … … 335 305 } 336 306 307 @Override 337 308 public Column[] getTimeBasedColumns() { 338 309 List<Column> result = new ArrayList<Column>(); … … 347 318 } 348 319 320 @Override 349 321 public Column[] getBooleanColumns() { 350 322 List<Column> result = new ArrayList<Column>(); … … 359 331 } 360 332 333 @Override 361 334 public Column[] getIndexedColumns() { 362 335 List<Column> result = new ArrayList<Column>(); … … 389 362 return true; 390 363 } 391 if (obj instanceof Table) {364 if (obj instanceof MutableTable) { 392 365 Table that = (Table) obj; 393 366 return new EqualsBuilder().append(this.getName(), that.getName()) … … 401 374 } 402 375 376 @Override 403 377 public int compareTo(Table that) { 404 378 CompareToBuilder ctb = new CompareToBuilder(); … … 408 382 } 409 383 410 /** 411 * @return the relationships where this table is the foreign table 412 */ 384 @Override 413 385 public Relationship[] getForeignKeyRelationships() { 414 386 List<Relationship> result = new ArrayList<Relationship>(); … … 422 394 } 423 395 424 /** 425 * @return the relationships where this table is the primary table 426 */ 396 @Override 427 397 public Relationship[] getPrimaryKeyRelationships() { 428 398 List<Relationship> result = new ArrayList<Relationship>(); … … 436 406 } 437 407 408 @Override 438 409 public Column[] getForeignKeys() { 439 410 Set<Column> columns = new HashSet<Column>(); … … 448 419 } 449 420 421 @Override 450 422 public Column[] getPrimaryKeys() { 451 423 Set<Column> columns = new HashSet<Column>(); … … 460 432 } 461 433 434 @Override 462 435 public String[] getColumnNames() { 463 436 ArrayList<String> result = new ArrayList<String>(); … … 469 442 } 470 443 444 @Override 471 445 public Column[] getColumnsOfType(ColumnType columnType) { 472 446 Column[] columns = getColumns(); -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/Relationship.java
r886 r887 1 /**2 * This file is part of MetaModel.3 *4 * MetaModel is free software: you can redistribute it and/or modify5 * it under the terms of the GNU General Public License as published by6 * the Free Software Foundation, either version 3 of the License, or7 * (at your option) any later version.8 *9 * MetaModel is distributed in the hope that it will be useful,10 * but WITHOUT ANY WARRANTY; without even the implied warranty of11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12 * GNU General Public License for more details.13 *14 * You should have received a copy of the GNU General Public License15 * along with MetaModel. If not, see <http://www.gnu.org/licenses/>.16 */17 1 package org.eobjects.metamodel.schema; 18 19 import java.io.Serializable;20 21 import org.apache.commons.lang.builder.CompareToBuilder;22 import org.apache.commons.lang.builder.EqualsBuilder;23 import org.apache.commons.lang.builder.HashCodeBuilder;24 2 25 3 /** 26 4 * Represents a relationship between two tables where one set of columns is the 27 5 * primary key, and another set is the foreign key. Relationship is unlike most 28 * of the MetaModel an im mutabletype. The immutability help ensure integrity of6 * of the MetaModel an im type. The immutability help ensure integrity of 29 7 * object-relationships. To create relationsips use the 30 8 * <code>createRelationship</code> method and to remove them use the … … 34 12 * @see Column 35 13 */ 36 public class Relationship implements Serializable,Comparable<Relationship> {14 public interface Relationship extends Comparable<Relationship> { 37 15 38 private static final long serialVersionUID = 238786848828528822L; 39 private Table _primaryTable; 40 private Column[] _primaryColumns; 41 private Table _foreignTable; 42 private Column[] _foreignColumns; 16 public Table getPrimaryTable(); 43 17 44 /** 45 * Factory method to create relations between two tables by specifying which 46 * columns from the tables that enforce the relationship. 47 * 48 * @param primaryColumns 49 * the columns from the primary key table 50 * @param foreignColumns 51 * the columns from the foreign key table 52 * @return the relation created 53 */ 54 public static Relationship createRelationship(Column[] primaryColumns, 55 Column[] foreignColumns) { 56 Table primaryTable = checkSameTable(primaryColumns); 57 Table foreignTable = checkSameTable(foreignColumns); 58 Relationship relation = new Relationship(primaryTable, primaryColumns, 59 foreignTable, foreignColumns); 60 primaryTable.addRelationship(relation); 18 public Column[] getPrimaryColumns(); 61 19 62 // Ticket #144: Some tables have relations with them selves and then the 63 // relationship should only be added once. 64 if (foreignTable != primaryTable) { 65 foreignTable.addRelationship(relation); 66 } 67 return relation; 68 } 20 public Table getForeignTable(); 69 21 70 public static Relationship createRelationship(Column primaryColumn, 71 Column foreignColumn) { 72 return createRelationship(new Column[] { primaryColumn }, 73 new Column[] { foreignColumn }); 74 } 22 public Column[] getForeignColumns(); 75 23 76 private static Table checkSameTable(Column[] columns) { 77 if (columns == null || columns.length == 0) { 78 throw new IllegalArgumentException( 79 "At least one key-column must exist on both " 80 + "primary and foreign side for " 81 + "a relation to exist."); 82 } 83 Table table = null; 84 for (int i = 0; i < columns.length; i++) { 85 Column column = columns[i]; 86 if (i == 0) { 87 table = column.getTable(); 88 } else { 89 if (table != column.getTable()) { 90 throw new IllegalArgumentException( 91 "Key-columns did not have same table"); 92 } 93 } 94 } 95 return table; 96 } 97 98 public void remove() { 99 _primaryTable.removeRelationship(this); 100 _foreignTable.removeRelationship(this); 101 _primaryColumns = null; 102 _primaryTable = null; 103 _foreignColumns = null; 104 _foreignTable = null; 105 } 106 107 /** 108 * Prevent external instantiation 109 */ 110 private Relationship(Table primaryTable, Column[] primaryColumns, 111 Table foreignTable, Column[] foreignColumns) { 112 _primaryTable = primaryTable; 113 _primaryColumns = primaryColumns; 114 _foreignTable = foreignTable; 115 _foreignColumns = foreignColumns; 116 } 117 118 public Table getPrimaryTable() { 119 return _primaryTable; 120 } 121 122 public Column[] getPrimaryColumns() { 123 return _primaryColumns; 124 } 125 126 public Table getForeignTable() { 127 return _foreignTable; 128 } 129 130 public Column[] getForeignColumns() { 131 return _foreignColumns; 132 } 133 134 @Override 135 public String toString() { 136 StringBuilder sb = new StringBuilder(); 137 sb.append("Relationship["); 138 sb.append("primaryTable=" + _primaryTable.getName()); 139 Column[] columns = getPrimaryColumns(); 140 sb.append(",primaryColumns={"); 141 for (int i = 0; i < columns.length; i++) { 142 if (i != 0) { 143 sb.append(","); 144 } 145 sb.append(columns[i].getName()); 146 } 147 sb.append("}"); 148 sb.append(",foreignTable=" + _foreignTable.getName()); 149 columns = getForeignColumns(); 150 sb.append(",foreignColumns={"); 151 for (int i = 0; i < columns.length; i++) { 152 if (i != 0) { 153 sb.append(","); 154 } 155 sb.append(columns[i].getName()); 156 } 157 sb.append("}"); 158 sb.append("]"); 159 return sb.toString(); 160 } 161 162 public int compareTo(Relationship that) { 163 CompareToBuilder ctb = new CompareToBuilder(); 164 ctb.append(this.getPrimaryTable(), that.getPrimaryTable()); 165 ctb.append(this.getForeignTable(), that.getForeignTable()); 166 ctb.append(this.getPrimaryColumns(), that.getPrimaryColumns()); 167 ctb.append(this.getForeignColumns(), that.getForeignColumns()); 168 return ctb.toComparison(); 169 } 170 171 @Override 172 public boolean equals(Object obj) { 173 if (obj == this) { 174 return true; 175 } 176 if (obj instanceof Relationship) { 177 Relationship that = (Relationship) obj; 178 EqualsBuilder eb = new EqualsBuilder(); 179 eb.append(this.getPrimaryColumns(), that.getPrimaryColumns()); 180 eb.append(this.getForeignColumns(), that.getForeignColumns()); 181 return eb.isEquals(); 182 } 183 return false; 184 } 185 186 @Override 187 public int hashCode() { 188 return new HashCodeBuilder().append(_foreignColumns).append( 189 _primaryColumns).toHashCode(); 190 } 24 public int compareTo(Relationship that); 191 25 192 26 /** … … 198 32 * columns as a part of the relation 199 33 */ 200 public boolean containsColumnPair(Column pkColumn, Column fkColumn) { 201 if (pkColumn != null && fkColumn != null) { 202 for (int i = 0; i < _primaryColumns.length; i++) { 203 if (pkColumn.equals(_primaryColumns[i]) 204 && fkColumn.equals(_foreignColumns[i])) { 205 return true; 206 } 207 } 208 } 209 return false; 210 } 34 public boolean containsColumnPair(Column pkColumn, 35 Column fkColumn); 36 211 37 } -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/Schema.java
r886 r887 1 /**2 * This file is part of MetaModel.3 *4 * MetaModel is free software: you can redistribute it and/or modify5 * it under the terms of the GNU General Public License as published by6 * the Free Software Foundation, either version 3 of the License, or7 * (at your option) any later version.8 *9 * MetaModel is distributed in the hope that it will be useful,10 * but WITHOUT ANY WARRANTY; without even the implied warranty of11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12 * GNU General Public License for more details.13 *14 * You should have received a copy of the GNU General Public License15 * along with MetaModel. If not, see <http://www.gnu.org/licenses/>.16 */17 1 package org.eobjects.metamodel.schema; 18 19 import java.io.Serializable;20 import java.util.ArrayList;21 import java.util.Collection;22 import java.util.List;23 24 import org.apache.commons.lang.builder.CompareToBuilder;25 import org.apache.commons.lang.builder.EqualsBuilder;26 import org.apache.commons.lang.builder.HashCodeBuilder;27 import org.apache.commons.lang.builder.ToStringBuilder;28 import org.apache.commons.lang.builder.ToStringStyle;29 2 30 3 /** … … 34 7 * @see Table 35 8 */ 36 public class Schema implements Serializable, Comparable<Schema> { 37 38 private static final long serialVersionUID = 4465197783868238863L; 39 40 protected String _name; 41 protected List<Table> _tables = new ArrayList<Table>(); 42 43 public Schema() { 44 } 45 46 public Schema(String name) { 47 this(); 48 _name = name; 49 } 50 51 public Schema(String name, Table... tables) { 52 this(name); 53 setTables(tables); 54 } 9 public interface Schema extends Comparable<Schema> { 55 10 56 11 /** 57 12 * @return the name of the schema 58 13 */ 59 public String getName() { 60 return _name; 61 } 62 63 public Schema setName(String name) { 64 _name = name; 65 for (Table table : _tables) { 66 table.fireSchemaChanged(); 67 } 68 return this; 69 } 14 public String getName(); 70 15 71 16 /** 72 17 * @return the number of tables that reside in the schema 73 18 */ 74 public int getTableCount() { 75 return _tables.size(); 76 } 19 public int getTableCount(); 77 20 78 public int getTableCount(TableType type) { 79 return getTables(type).length; 80 } 21 public int getTableCount(TableType type); 81 22 82 23 /** 83 24 * @return the tables that reside in the schema 84 25 */ 85 public Table[] getTables() { 86 return _tables.toArray(new Table[_tables.size()]); 87 } 26 public Table[] getTables(); 88 27 89 public Table[] getTables(TableType type) { 90 List<Table> result = new ArrayList<Table>(); 91 for (Table table : _tables) { 92 if (table.getType() == type) { 93 result.add(table); 94 } 95 } 96 return result.toArray(new Table[result.size()]); 97 } 98 99 public Schema setTables(Collection<Table> tables) { 100 _tables.clear(); 101 for (Table table : tables) { 102 _tables.add(table); 103 } 104 return this; 105 } 106 107 public Schema setTables(Table... tables) { 108 _tables.clear(); 109 for (Table table : tables) { 110 _tables.add(table); 111 } 112 return this; 113 } 114 115 public Schema addTable(Table table) { 116 _tables.add(table); 117 return this; 118 } 119 120 public Schema removeTable(Table table) { 121 _tables.remove(table); 122 return this; 123 } 28 public Table[] getTables(TableType type); 124 29 125 30 /** … … 131 36 * found. 132 37 */ 133 public Table getTableByName(String tableName) { 134 if (tableName != null) { 135 List<Table> foundTables = new ArrayList<Table>(); 136 // Search for table matches, case insensitive. 137 for (Table table : _tables) { 138 if (tableName.equalsIgnoreCase(table.getName())) { 139 foundTables.add(table); 140 } 141 } 142 int numTables = foundTables.size(); 143 if (numTables == 0) { 144 return null; 145 } else if (numTables == 1) { 146 return foundTables.get(0); 147 } else { 148 // If more matches are found, search case sensitive 149 for (Table table : foundTables) { 150 if (tableName.equals(table.getName())) { 151 return table; 152 } 153 } 154 } 155 } 156 return null; 157 } 38 public Table getTableByName(String tableName); 158 39 159 public Relationship[] getRelationships() { 160 List<Relationship> result = new ArrayList<Relationship>(); 161 for (Table table : _tables) { 162 Relationship[] relations = table.getRelationships(); 163 for (int i = 0; i < relations.length; i++) { 164 Relationship relation = relations[i]; 165 boolean found = false; 166 for (Relationship existingRelation : result) { 167 if (relation == existingRelation) { 168 found = true; 169 break; 170 } 171 } 40 public Relationship[] getRelationships(); 172 41 173 if (!found) { 174 result.add(relation); 175 } 176 } 177 } 178 return result.toArray(new Relationship[result.size()]); 179 } 42 public int getRelationshipCount(); 180 43 181 public int getRelationshipCount() { 182 return getRelationships().length; 183 } 44 public int compareTo(Schema that); 184 45 185 @Override 186 public String toString() { 187 return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) 188 .append("name", _name).toString(); 189 } 46 public String[] getTableNames(); 190 47 191 @Override192 public int hashCode() {193 HashCodeBuilder hcb = new HashCodeBuilder();194 hcb.append(_name);195 hcb.append(_tables.size());196 return hcb.toHashCode();197 }198 199 @Override200 public boolean equals(Object obj) {201 if (obj == this) {202 return true;203 }204 if (obj instanceof Schema) {205 Schema that = (Schema) obj;206 return new EqualsBuilder().append(this.getName(), that.getName())207 .append(this.getTables(), that.getTables()).isEquals();208 }209 return false;210 }211 212 public int compareTo(Schema that) {213 CompareToBuilder ctb = new CompareToBuilder();214 ctb.append(this.getName(), that.getName());215 ctb.append(this.getTableCount(), that.getTableCount());216 return ctb.toComparison();217 }218 219 public String[] getTableNames() {220 ArrayList<String> result = new ArrayList<String>();221 Table[] tables = getTables();222 for (Table table : tables) {223 result.add(table.getName());224 }225 return result.toArray(new String[result.size()]);226 }227 48 } -
MetadataBeans/trunk/src/main/java/org/eobjects/metamodel/schema/Table.java
r886 r887 1 /**2 * This file is part of MetaModel.3 *4 * MetaModel is free software: you can redistribute it and/or modify5 * it under the terms of the GNU General Public License as published by6 * the Free Software Foundation, either version 3 of the License, or7 * (at your option) any later version.8 *9 * MetaModel is distributed in the hope that it will be useful,10 * but WITHOUT ANY WARRANTY; without even the implied warranty of11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12 * GNU General Public License for more details.13 *14 * You should have received a copy of the GNU General Public License15 * along with MetaModel. If not, see <http://www.gnu.org/licenses/>.16 */17 1 package org.eobjects.metamodel.schema; 18 19 import java.io.Serializable;20 import java.util.ArrayList;21 import java.util.Collection;22 import java.util.HashSet;23 import java.util.List;24 import java.util.Set;25 26 import org.apache.commons.lang.builder.CompareToBuilder;27 import org.apache.commons.lang.builder.EqualsBuilder;28 import org.apache.commons.lang.builder.HashCodeBuilder;29 import org.apache.commons.lang.builder.ToStringBuilder;30 import org.apache.commons.lang.builder.ToStringStyle;31 import org.eobjects.metamodel.MetaModelHelper;32 33 2 34 3 /** … … 40 9 * @see Relationship 41 10 */ 42 public class Table implements Serializable, Comparable<Table> { 43 44 private static final long serialVersionUID = -5094888465714027354L; 45 protected String _name; 46 protected TableType _type; 47 protected String _remarks; 48 protected Schema _schema; 49 protected List<Column> _columns = new ArrayList<Column>(); 50 protected List<Relationship> _relationships = new ArrayList<Relationship>(); 51 protected String _quoteString = null; 52 private transient String _qualifiedLabel; 53 54 public Table() { 55 } 56 57 public Table(String name) { 58 this(); 59 setName(name); 60 } 61 62 public Table(String name, TableType type) { 63 this(name); 64 _type = type; 65 } 66 67 public Table(String name, TableType type, Schema schema) { 68 this(name, type); 69 _schema = schema; 70 } 71 72 public Table(String name, TableType type, Schema schema, Column... columns) { 73 this(name, type, schema); 74 setColumns(columns); 75 } 11 public interface Table extends Comparable<Table> { 76 12 77 13 /** 78 14 * @return the name of the table 79 15 */ 80 public String getName() { 81 return _name; 82 } 83 84 public Table setName(String name) { 85 _name = name; 86 fireSchemaChanged(); 87 return this; 88 } 89 90 /** 91 * Internal getter for the columns of the table. Overwrite this method to 92 * implement column lookup, column lazy-loading or similar. 93 */ 94 protected List<Column> getColumnsInternal() { 95 return _columns; 96 } 97 98 /** 99 * Internal getter for the relationships of the table. Overwrite this method 100 * to implement relationship lookup, relationship lazy-loading or similar. 101 */ 102 protected List<Relationship> getRelationshipsInternal() { 103 return _relationships; 104 } 16 public String getName(); 105 17 106 18 /** 107 19 * @return the number of columns in this table 108 20 */ 109 public int getColumnCount() { 110 return getColumnsInternal().size(); 111 } 21 public int getColumnCount(); 112 22 113 23 /** 114 24 * @return the columns of the table 115 25 */ 116 public Column[] getColumns() { 117 List<Column> columns = getColumnsInternal(); 118 return columns.toArray(new Column[columns.size()]); 119 } 120 121 public Table setColumns(Column... columns) { 122 List<Column> existingColumns = getColumnsInternal(); 123 existingColumns.clear(); 124 for (Column column : columns) { 125 existingColumns.add(column); 126 } 127 return this; 128 } 129 130 public Table setColumns(Collection<Column> columns) { 131 List<Column> existingColumns = getColumnsInternal(); 132 existingColumns.clear(); 133 for (Column column : columns) { 134 existingColumns.add(column); 135 } 136 return this; 137 } 138 139 public Table addColumn(Column column) { 140 getColumnsInternal().add(column); 141 return this; 142 } 143 144 public Table removeColumn(Column column) { 145 getColumnsInternal().remove(column); 146 return this; 147 } 26 public Column[] getColumns(); 148 27 149 28 /** … … 155 34 * found. 156 35 */ 157 public Column getColumnByName(String columnName) { 158 if (columnName != null) { 159 List<Column> foundColumn = new ArrayList<Column>(); 160 // Search for column matches, case insensitive. 161 for (Column column : getColumnsInternal()) { 162 if (columnName.equalsIgnoreCase(column.getName())) { 163 foundColumn.add(column); 164 } 165 } 166 int numColumns = foundColumn.size(); 167 if (numColumns == 0) { 168 return null; 169 } else if (numColumns == 1) { 170 return foundColumn.get(0); 171 } else { 172 // If more matches are found, search case sensitive 173 for (Column column : foundColumn) { 174 if (columnName.equals(column.getName())) { 175 return column; 176 } 177 } 178 } 179 } 180 return null; 181 } 36 public Column getColumnByName(String columnName); 182 37 183 38 /** 184 39 * @return the schema that the table belong to 185 40 */ 186 public Schema getSchema() { 187 return _schema; 188 } 41 public Schema getSchema(); 189 42 190 public Table setSchema(Schema schema) {191 _schema = schema;192 fireSchemaChanged();193 return this;194 }195 196 /**197 * Tells the table object that the schema it belongs to have changed. This198 * is typically done if the schema is being renamed or similar.199 */200 protected void fireSchemaChanged() {201 _qualifiedLabel = null;202 for (Column column : _columns) {203 column.fireTableChanged();204 }205 }206 207 43 /** 208 44 * @return the type of table 209 45 */ 210 public TableType getType() { 211 return _type; 212 } 46 public TableType getType(); 213 47 214 public Table setType(TableType type) { 215 _type = type; 216 return this; 217 } 48 public Table setType(TableType type); 218 49 219 50 /** … … 221 52 * TableRelation.createRelation(); 222 53 */ 223 public Relationship[] getRelationships() { 224 List<Relationship> relationships = getRelationshipsInternal(); 225 return relationships.toArray(new Relationship[relationships.size()]); 226 } 54 public Relationship[] getRelationships(); 227 55 228 56 /** … … 230 58 * @return this tables relationsips to another table 231 59 */ 232 public Relationship[] getRelationships(Table otherTable) { 233 List<Relationship> result = new ArrayList<Relationship>(); 234 List<Relationship> relationships = getRelationshipsInternal(); 235 for (Relationship relation : relationships) { 236 if (relation.getForeignTable() == otherTable 237 && relation.getPrimaryTable() == this) { 238 result.add(relation); 239 } else if (relation.getForeignTable() == this 240 && relation.getPrimaryTable() == otherTable) { 241 result.add(relation); 242 } 243 } 244 return result.toArray(new Relationship[result.size()]); 245 } 60 public Relationship[] getRelationships(Table otherTable); 246 61 247 /** 248 * Protected method for adding a relationship to this table. Should not be 249 * used. Use Relationship.createRelationship(Column[], Column[]) instead. 250 */ 251 protected Table addRelationship(Relationship relation) { 252 getRelationshipsInternal().add(relation); 253 return this; 254 } 62 public int getRelationshipCount(); 255 63 256 /** 257 * Protected method for removing a relationship from this table. Should not 258 * be used. Use Relationship.remove() instead. 259 */ 260 protected Table removeRelationship(Relationship relation) { 261 getRelationshipsInternal().remove(relation); 262 return this; 263 } 64 public String getRemarks(); 264 65 265 public int getRelationshipCount() { 266 return getRelationshipsInternal().size(); 267 } 66 public String getQuote(); 268 67 269 public String getRemarks() { 270 return _remarks; 271 } 272 273 public void setRemarks(String remarks) { 274 _remarks = remarks; 275 } 276 277 public String getQuote() { 278 return _quoteString; 279 } 280 281 public Table setQuote(String quoteString) { 282 _quoteString = quoteString; 283 return this; 284 } 285 286 public String getQuotedName() { 287 if (_quoteString != null) { 288 return _quoteString + getName() + _quoteString; 289 } 290 return getName(); 291 } 68 public String getQuotedName(); 292 69 293 70 /** … … 299 76 * @return a qualified label 300 77 */ 301 public String getQualifiedLabel() { 302 if (_qualifiedLabel == null) { 303 StringBuilder sb = new StringBuilder(); 304 if (_schema != null && _schema.getName() != null) { 305 sb.append(_schema.getName()); 306 sb.append('.'); 307 } 308 sb.append(getName()); 309 _qualifiedLabel = sb.toString(); 310 } 311 return _qualifiedLabel; 312 } 78 public String getQualifiedLabel(); 313 79 314 public Column[] getNumberColumns() { 315 List<Column> result = new ArrayList<Column>(); 316 Column[] columns = getColumns(); 317 for (int i = 0; i < columns.length; i++) { 318 if (columns[i].getType() != null && columns[i].getType().isNumber()) { 319 result.add(columns[i]); 320 } 321 } 322 return result.toArray(new Column[result.size()]); 323 } 80 public Column[] getNumberColumns(); 324 81 325 public Column[] getLiteralColumns() { 326 List<Column> result = new ArrayList<Column>(); 327 Column[] columns = getColumns(); 328 for (int i = 0; i < columns.length; i++) { 329 if (columns[i].getType() != null 330 && columns[i].getType().isLiteral()) { 331 result.add(columns[i]); 332 } 333 } 334 return result.toArray(new Column[result.size()]); 335 } 82 public Column[] getLiteralColumns(); 336 83 337 public Column[] getTimeBasedColumns() { 338 List<Column> result = new ArrayList<Column>(); 339 Column[] columns = getColumns(); 340 for (int i = 0; i < columns.length; i++) { 341 if (columns[i].getType() != null 342 && columns[i].getType().isTimeBased()) { 343 result.add(columns[i]); 344 } 345 } 346 return result.toArray(new Column[result.size()]); 347 } 84 public Column[] getTimeBasedColumns(); 348 85 349 public Column[] getBooleanColumns() { 350 List<Column> result = new ArrayList<Column>(); 351 Column[] columns = getColumns(); 352 for (int i = 0; i < columns.length; i++) { 353 if (columns[i].getType() != null 354 && columns[i].getType().isBoolean()) { 355 result.add(columns[i]); 356 } 357 } 358 return result.toArray(new Column[result.size()]); 359 } 86 public Column[] getBooleanColumns(); 360 87 361 public Column[] getIndexedColumns() { 362 List<Column> result = new ArrayList<Column>(); 363 Column[] columns = getColumns(); 364 for (int i = 0; i < columns.length; i++) { 365 if (columns[i].isIndexed()) { 366 result.add(columns[i]); 367 } 368 } 369 return result.toArray(new Column[result.size()]); 370 } 371 372 @Override 373 public String toString() { 374 return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) 375 .append("name", _name).append("type", _type).append("remarks", 376 _remarks).toString(); 377 } 378 379 @Override 380 public int hashCode() { 381 HashCodeBuilder hcb = new HashCodeBuilder(); 382 hcb.append(_name).append(_type).append(_schema).append(_columns.size()); 383 return hcb.toHashCode(); 384 } 385 386 @Override 387 public boolean equals(Object obj) { 388 if (obj == this) { 389 return true; 390 } 391 if (obj instanceof Table) { 392 Table that = (Table) obj; 393 return new EqualsBuilder().append(this.getName(), that.getName()) 394 .append(this.getType(), that.getType()).append( 395 this.getRemarks(), that.getRemarks()).append( 396 this.getColumns(), that.getColumns()).append( 397 this.getRelationships(), that.getRelationships()) 398 .isEquals(); 399 } 400 return false; 401 } 402 403 public int compareTo(Table that) { 404 CompareToBuilder ctb = new CompareToBuilder(); 405 ctb.append(this.getName(), that.getName()); 406 ctb.append(this.getSchema(), that.getSchema()); 407 return ctb.toComparison(); 408 } 88 public Column[] getIndexedColumns(); 409 89 410 90 /** 411 91 * @return the relationships where this table is the foreign table 412 92 */ 413 public Relationship[] getForeignKeyRelationships() { 414 List<Relationship> result = new ArrayList<Relationship>(); 415 Relationship[] relationships = getRelationships(); 416 for (Relationship relationship : relationships) { 417 if (equals(relationship.getForeignTable())) { 418 result.add(relationship); 419 } 420 } 421 return result.toArray(new Relationship[result.size()]); 422 } 93 public Relationship[] getForeignKeyRelationships(); 423 94 424 95 /** 425 96 * @return the relationships where this table is the primary table 426 97 */ 427 public Relationship[] getPrimaryKeyRelationships() { 428 List<Relationship> result = new ArrayList<Relationship>(); 429 Relationship[] relationships = getRelationships(); 430 for (Relationship relationship : relationships) { 431 if (equals(relationship.getPrimaryTable())) { 432 result.add(relationship); 433 } 434 } 435 return result.toArray(new Relationship[result.size()]); 436 } 98 public Relationship[] getPrimaryKeyRelationships(); 437 99 438 public Column[] getForeignKeys() { 439 Set<Column> columns = new HashSet<Column>(); 440 Relationship[] relationships = getForeignKeyRelationships(); 441 for (Relationship relationship : relationships) { 442 Column[] foreignColumns = relationship.getForeignColumns(); 443 for (Column column : foreignColumns) { 444 columns.add(column); 445 } 446 } 447 return columns.toArray(new Column[columns.size()]); 448 } 100 public Column[] getForeignKeys(); 449 101 450 public Column[] getPrimaryKeys() { 451 Set<Column> columns = new HashSet<Column>(); 452 Relationship[] relationships = getPrimaryKeyRelationships(); 453 for (Relationship relationship : relationships) { 454 Column[] foreignColumns = relationship.getPrimaryColumns(); 455 for (Column column : foreignColumns) { 456 columns.add(column); 457 } 458 } 459 return columns.toArray(new Column[columns.size()]); 460 } 102 public Column[] getPrimaryKeys(); 461 103 462 public String[] getColumnNames() { 463 ArrayList<String> result = new ArrayList<String>(); 464 Column[] columns = getColumns(); 465 for (Column column : columns) { 466 result.add(column.getName()); 467 } 468 return result.toArray(new String[result.size()]); 469 } 104 public String[] getColumnNames(); 470 105 471 public Column[] getColumnsOfType(ColumnType columnType) { 472 Column[] columns = getColumns(); 473 return MetaModelHelper.getColumnsByType(columns, columnType); 474 } 106 public Column[] getColumnsOfType(ColumnType columnType); 107 475 108 } -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/AccessDataContextStrategyTest.java
r886 r887 3 3 import java.util.Date; 4 4 5 import junit.framework.TestCase; 6 5 7 import org.apache.commons.lang.ArrayUtils; 6 import org.eobjects.metamodel.AccessDataContextStrategy;7 import org.eobjects.metamodel.DataContext;8 8 import org.eobjects.metamodel.data.DataSet; 9 9 import org.eobjects.metamodel.data.Row; … … 12 12 import org.eobjects.metamodel.schema.Schema; 13 13 import org.eobjects.metamodel.schema.Table; 14 15 import junit.framework.TestCase;16 14 17 15 public class AccessDataContextStrategyTest extends TestCase { … … 33 31 Column nameCol = table.getColumnByName("name"); 34 32 assertEquals( 35 " Column[name=name,columnNumber=1,type=VARCHAR,nullable=<null>,indexed=false,nativeType=TEXT,columnSize=100]",33 "MutableColumn[name=name,columnNumber=1,type=VARCHAR,nullable=<null>,indexed=false,nativeType=TEXT,columnSize=100]", 36 34 nameCol.toString()); 37 35 38 36 Column maleCol = table.getColumnByName("male"); 39 37 assertEquals( 40 " Column[name=male,columnNumber=3,type=BOOLEAN,nullable=<null>,indexed=false,nativeType=BOOLEAN,columnSize=1]",38 "MutableColumn[name=male,columnNumber=3,type=BOOLEAN,nullable=<null>,indexed=false,nativeType=BOOLEAN,columnSize=1]", 41 39 maleCol.toString()); 42 40 43 41 Column developerSinceCol = table.getColumnByName("developer_since"); 44 42 assertEquals( 45 " Column[name=developer_since,columnNumber=4,type=TIMESTAMP,nullable=<null>,indexed=false,nativeType=SHORT_DATE_TIME,columnSize=8]",43 "MutableColumn[name=developer_since,columnNumber=4,type=TIMESTAMP,nullable=<null>,indexed=false,nativeType=SHORT_DATE_TIME,columnSize=8]", 46 44 developerSinceCol.toString()); 47 45 … … 70 68 Column idCol = table.getColumnByName("id"); 71 69 assertEquals( 72 " Column[name=id,columnNumber=0,type=INTEGER,nullable=<null>,indexed=false,nativeType=LONG,columnSize=4]",70 "MutableColumn[name=id,columnNumber=0,type=INTEGER,nullable=<null>,indexed=false,nativeType=LONG,columnSize=4]", 73 71 idCol.toString()); 74 72 75 73 Column nameCol = table.getColumnByName("name"); 76 74 assertEquals( 77 " Column[name=name,columnNumber=1,type=VARCHAR,nullable=<null>,indexed=false,nativeType=TEXT,columnSize=100]",75 "MutableColumn[name=name,columnNumber=1,type=VARCHAR,nullable=<null>,indexed=false,nativeType=TEXT,columnSize=100]", 78 76 nameCol.toString()); 79 77 80 78 Column versionCol = table.getColumnByName("version"); 81 79 assertEquals( 82 " Column[name=version,columnNumber=2,type=INTEGER,nullable=<null>,indexed=false,nativeType=LONG,columnSize=4]",80 "MutableColumn[name=version,columnNumber=2,type=INTEGER,nullable=<null>,indexed=false,nativeType=LONG,columnSize=4]", 83 81 versionCol.toString()); 84 82 85 83 Column founderCol = table.getColumnByName("founder_developer"); 86 84 assertEquals( 87 " Column[name=founder_developer,columnNumber=3,type=INTEGER,nullable=<null>,indexed=false,nativeType=LONG,columnSize=4]",85 "MutableColumn[name=founder_developer,columnNumber=3,type=INTEGER,nullable=<null>,indexed=false,nativeType=LONG,columnSize=4]", 88 86 founderCol.toString()); 89 87 … … 91 89 founderCol).from(table)); 92 90 assertTrue(ds.next()); 93 assertEquals("Anthons Algorithms", ds.getRow().getValue(nameCol).toString()); 91 assertEquals("Anthons Algorithms", ds.getRow().getValue(nameCol) 92 .toString()); 94 93 assertEquals(11, ds.getRow().getValue(versionCol)); 95 94 assertEquals(1, ds.getRow().getValue(founderCol)); 96 95 assertTrue(ds.next()); 97 assertEquals("Barbaras Basic Bundle", ds.getRow().getValue(nameCol).toString()); 96 assertEquals("Barbaras Basic Bundle", ds.getRow().getValue(nameCol) 97 .toString()); 98 98 assertEquals(2, ds.getRow().getValue(versionCol)); 99 99 assertEquals(2, ds.getRow().getValue(founderCol)); -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/CompositeDataContextStrategyTest.java
r886 r887 5 5 6 6 import org.apache.commons.lang.ArrayUtils; 7 import org.eobjects.metamodel.DataContext;8 import org.eobjects.metamodel.DataContextFactory;9 7 import org.eobjects.metamodel.data.DataSet; 10 8 import org.eobjects.metamodel.query.JoinType; -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/CsvDataContextStrategyTest.java
r886 r887 24 24 25 25 import org.apache.commons.lang.ArrayUtils; 26 import org.eobjects.metamodel.CsvDataContextStrategy;27 import org.eobjects.metamodel.DataContext;28 import org.eobjects.metamodel.QueryPostprocessDataContextStrategy;29 26 import org.eobjects.metamodel.data.DataSet; 30 27 import org.eobjects.metamodel.query.FilterItem; … … 35 32 import org.eobjects.metamodel.schema.Column; 36 33 import org.eobjects.metamodel.schema.ColumnType; 34 import org.eobjects.metamodel.schema.MutableColumn; 37 35 import org.eobjects.metamodel.schema.Schema; 38 36 import org.eobjects.metamodel.schema.Table; 39 40 37 41 38 public class CsvDataContextStrategyTest extends MetaModelTestCase { … … 51 48 File file = new File("target/huge_csv.csv"); 52 49 ExampleDataCreator.createFile(file); 53 50 54 51 long timeAtStart = System.currentTimeMillis(); 55 52 System.out.println("time at start: " + timeAtStart); 56 53 57 DataContext dc = new DataContext(new CsvDataContextStrategy(file, ',', '"')); 54 DataContext dc = new DataContext(new CsvDataContextStrategy(file, ',', 55 '"')); 58 56 Table t = dc.getDefaultSchema().getTables()[0]; 59 57 … … 68 66 69 67 while (ds.next()) { 70 assertEquals(ExampleDataCreator.NUM_COLS, ds.getRow().getValues().length); 68 assertEquals(ExampleDataCreator.NUM_COLS, 69 ds.getRow().getValues().length); 71 70 } 72 71 ds.close(); … … 74 73 long timeAfterDataSet = System.currentTimeMillis(); 75 74 System.out.println("time after dataSet: " + timeAfterDataSet); 76 75 77 76 if (!file.delete()) { 78 77 file.deleteOnExit(); … … 83 82 File file = new File("src/test/resources/tickets.csv"); 84 83 FileInputStream inputStream = new FileInputStream(file); 85 DataContext dc = new DataContext(new CsvDataContextStrategy(inputStream, ',', '"')); 84 DataContext dc = new DataContext(new CsvDataContextStrategy( 85 inputStream, ',', '"')); 86 86 Schema schema = dc.getDefaultSchema(); 87 87 String name = schema.getName(); … … 91 91 Table table = schema.getTables()[0]; 92 92 Column column = table.getColumns()[0]; 93 TableModel tableModel = dc.executeQuery(new Query().select(column).from(table)).toTableModel(); 93 TableModel tableModel = dc.executeQuery( 94 new Query().select(column).from(table)).toTableModel(); 94 95 assertEquals(1, tableModel.getColumnCount()); 95 96 assertEquals(36, tableModel.getRowCount()); … … 98 99 // Test two seperate reads to ensure that the temp file is working 99 100 // properly and persistent. 100 tableModel = dc.executeQuery(new Query().select(column).from(table)).toTableModel(); 101 tableModel = dc.executeQuery(new Query().select(column).from(table)) 102 .toTableModel(); 101 103 assertEquals(1, tableModel.getColumnCount()); 102 104 assertEquals(36, tableModel.getRowCount()); … … 132 134 public void testGetSchemas() throws Exception { 133 135 File file = new File("src/test/resources/csv_people.csv"); 134 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy(file); 136 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy( 137 file); 135 138 Schema[] schemas = new DataContext(strategy).getSchemas(); 136 139 assertEquals(2, schemas.length); … … 153 156 public void testWhereItemNotInSelectClause() throws Exception { 154 157 File file = new File("src/test/resources/csv_people.csv"); 155 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy(file); 156 Table table = new DataContext(strategy).getSchemas()[0].getTableByName("csv_people"); 158 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy( 159 file); 160 Table table = new DataContext(strategy).getSchemas()[0] 161 .getTableByName("csv_people"); 157 162 158 163 Query q = new Query(); 159 164 q.from(table); 160 q.where(new FilterItem(new SelectItem(table.getColumnByName("id")), OperatorType.EQUALS_TO, 1)); 165 q.where(new FilterItem(new SelectItem(table.getColumnByName("id")), 166 OperatorType.EQUALS_TO, 1)); 161 167 q.select(table.getColumnByName("name")); 162 168 DataSet data = strategy.executeQuery(q); … … 167 173 168 174 public void testGroupByQuery() throws Exception { 169 DataContext dc = new DataContext(new CsvDataContextStrategy(new File("src/test/resources/csv_people.csv"))); 175 DataContext dc = new DataContext(new CsvDataContextStrategy(new File( 176 "src/test/resources/csv_people.csv"))); 170 177 Table table = dc.getSchemas()[0].getTableByName("csv_people"); 171 178 … … 173 180 q.from(table); 174 181 q.groupBy(table.getColumnByName("gender")); 175 q.select(new SelectItem(table.getColumnByName("gender")), new SelectItem(FunctionType.MAX, table 176 .getColumnByName("age")), new SelectItem(FunctionType.MIN, table.getColumnByName("age")), 177 new SelectItem(FunctionType.COUNT, "*", "total"), new SelectItem(FunctionType.MIN, table 178 .getColumnByName("id")).setAlias("firstId")); 182 q.select(new SelectItem(table.getColumnByName("gender")), 183 new SelectItem(FunctionType.MAX, table.getColumnByName("age")), 184 new SelectItem(FunctionType.MIN, table.getColumnByName("age")), 185 new SelectItem(FunctionType.COUNT, "*", "total"), 186 new SelectItem(FunctionType.MIN, table.getColumnByName("id")) 187 .setAlias("firstId")); 179 188 DataSet data = dc.executeQuery(q); 180 189 assertEquals( … … 182 191 ArrayUtils.toString(data.getSelectItems())); 183 192 184 String[] expectations = new String[] { "Row[values={female,20,17,5,5}]", "Row[values={male,19,17,4,1}]" }; 193 String[] expectations = new String[] { 194 "Row[values={female,20,17,5,5}]", 195 "Row[values={male,19,17,4,1}]" }; 185 196 186 197 assertTrue(data.next()); … … 193 204 public void testMaterializeTable() throws Exception { 194 205 File file = new File("src/test/resources/csv_people.csv"); 195 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy(file); 206 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy( 207 file); 196 208 Table table = new DataContext(strategy).getSchemas()[0].getTables()[0]; 197 DataSet dataSet = strategy.materializeMainSchemaTable(table, table.getColumns(), -1); 209 DataSet dataSet = strategy.materializeMainSchemaTable(table, table 210 .getColumns(), -1); 198 211 assertNull(dataSet.getRow()); 199 212 assertTrue(dataSet.next()); 200 assertEquals("Row[values={1,mike,male,18}]", dataSet.getRow().toString()); 201 assertTrue(dataSet.next()); 202 assertEquals("Row[values={2,michael,male,19}]", dataSet.getRow().toString()); 203 assertTrue(dataSet.next()); 204 assertEquals("Row[values={3,peter,male,18}]", dataSet.getRow().toString()); 205 assertTrue(dataSet.next()); 206 assertTrue(dataSet.next()); 207 assertEquals("Row[values={5,barbara, barb,female,18}]", dataSet.getRow().toString()); 208 assertTrue(dataSet.next()); 209 assertTrue(dataSet.next()); 210 assertTrue(dataSet.next()); 211 assertTrue(dataSet.next()); 212 assertEquals("Row[values={9,carrie,female,17}]", dataSet.getRow().toString()); 213 assertEquals("Row[values={1,mike,male,18}]", dataSet.getRow() 214 .toString()); 215 assertTrue(dataSet.next()); 216 assertEquals("Row[values={2,michael,male,19}]", dataSet.getRow() 217 .toString()); 218 assertTrue(dataSet.next()); 219 assertEquals("Row[values={3,peter,male,18}]", dataSet.getRow() 220 .toString()); 221 assertTrue(dataSet.next()); 222 assertTrue(dataSet.next()); 223 assertEquals("Row[values={5,barbara, barb,female,18}]", dataSet 224 .getRow().toString()); 225 assertTrue(dataSet.next()); 226 assertTrue(dataSet.next()); 227 assertTrue(dataSet.next()); 228 assertTrue(dataSet.next()); 229 assertEquals("Row[values={9,carrie,female,17}]", dataSet.getRow() 230 .toString()); 213 231 assertFalse(dataSet.next()); 214 232 215 dataSet = strategy.materializeMainSchemaTable(table, table.getColumns(), 1); 216 assertTrue(dataSet.next()); 217 assertEquals("Row[values={1,mike,male,18}]", dataSet.getRow().toString()); 233 dataSet = strategy.materializeMainSchemaTable(table, 234 table.getColumns(), 1); 235 assertTrue(dataSet.next()); 236 assertEquals("Row[values={1,mike,male,18}]", dataSet.getRow() 237 .toString()); 218 238 assertFalse(dataSet.next()); 219 239 } … … 221 241 public void testAlternativeDelimitors() throws Exception { 222 242 File file = new File("src/test/resources/csv_semicolon_singlequote.csv"); 223 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy(file, ';', '\''); 243 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy( 244 file, ';', '\''); 224 245 Table table = new DataContext(strategy).getSchemas()[0].getTables()[0]; 225 DataSet dataSet = strategy.materializeMainSchemaTable(table, table.getColumns(), -1); 226 assertTrue(dataSet.next()); 227 assertEquals("Row[values={1,mike,male,18}]", dataSet.getRow().toString()); 228 assertTrue(dataSet.next()); 229 assertEquals("Row[values={2,michael,male,19}]", dataSet.getRow().toString()); 230 assertTrue(dataSet.next()); 231 assertEquals("Row[values={3,peter,male,18}]", dataSet.getRow().toString()); 232 assertTrue(dataSet.next()); 233 assertTrue(dataSet.next()); 234 assertEquals("Row[values={5,barbara; barb,female,18}]", dataSet.getRow().toString()); 235 assertTrue(dataSet.next()); 236 assertTrue(dataSet.next()); 237 assertTrue(dataSet.next()); 238 assertTrue(dataSet.next()); 239 assertEquals("Row[values={9,carrie,female,17}]", dataSet.getRow().toString()); 246 DataSet dataSet = strategy.materializeMainSchemaTable(table, table 247 .getColumns(), -1); 248 assertTrue(dataSet.next()); 249 assertEquals("Row[values={1,mike,male,18}]", dataSet.getRow() 250 .toString()); 251 assertTrue(dataSet.next()); 252 assertEquals("Row[values={2,michael,male,19}]", dataSet.getRow() 253 .toString()); 254 assertTrue(dataSet.next()); 255 assertEquals("Row[values={3,peter,male,18}]", dataSet.getRow() 256 .toString()); 257 assertTrue(dataSet.next()); 258 assertTrue(dataSet.next()); 259 assertEquals("Row[values={5,barbara; barb,female,18}]", dataSet 260 .getRow().toString()); 261 assertTrue(dataSet.next()); 262 assertTrue(dataSet.next()); 263 assertTrue(dataSet.next()); 264 assertTrue(dataSet.next()); 265 assertEquals("Row[values={9,carrie,female,17}]", dataSet.getRow() 266 .toString()); 240 267 assertFalse(dataSet.next()); 241 268 assertNull(dataSet.getRow()); … … 244 271 public void testMaxRows() throws Exception { 245 272 File file = new File("src/test/resources/csv_semicolon_singlequote.csv"); 246 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy(file, ';', '\''); 273 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy( 274 file, ';', '\''); 247 275 Table table = new DataContext(strategy).getSchemas()[0].getTables()[0]; 248 Query query = new Query().from(table).select(table.getColumns()).setMaxRows(5); 276 Query query = new Query().from(table).select(table.getColumns()) 277 .setMaxRows(5); 249 278 DataSet dataSet = strategy.executeQuery(query); 250 279 TableModel tableModel = dataSet.toTableModel(); … … 254 283 public void testQueryOnlyAggregate() throws Exception { 255 284 File file = new File("src/test/resources/csv_people.csv"); 256 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy(file); 285 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy( 286 file); 257 287 DataContext dc = new DataContext(strategy); 258 288 Table table = dc.getDefaultSchema().getTables()[0]; 259 289 260 290 Query q = new Query().selectCount().from(table); 261 assertEquals("SELECT COUNT(*) FROM csv_people.csv.csv_people", q.toString()); 291 assertEquals("SELECT COUNT(*) FROM csv_people.csv.csv_people", q 292 .toString()); 262 293 263 294 List<Object[]> data = dc.executeQuery(q).toObjectArrays(); … … 268 299 269 300 q.select(table.getColumns()[0]); 270 assertEquals("SELECT COUNT(*), csv_people.id FROM csv_people.csv.csv_people", q.toString()); 301 assertEquals( 302 "SELECT COUNT(*), csv_people.id FROM csv_people.csv.csv_people", 303 q.toString()); 271 304 data = dc.executeQuery(q).toObjectArrays(); 272 305 assertEquals(9, data.size()); … … 290 323 public void testUsingColumnTypeTransformers() throws Exception { 291 324 File file = new File("src/test/resources/csv_people.csv"); 292 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy(file); 325 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy( 326 file); 293 327 DataContext dc = new DataContext(strategy); 294 328 Table table = dc.getDefaultSchema().getTables()[0]; … … 299 333 strategy.transformColumnTypes(idColumn, ageColumn); 300 334 301 idColumn.setType(ColumnType.INTEGER); 302 ageColumn.setType(ColumnType.DOUBLE); 303 304 DataSet dataSet = dc.executeQuery(new Query().select(idColumn, ageColumn).from(table)); 305 assertTrue(dataSet.next()); 306 assertEquals("java.lang.Integer", dataSet.getRow().getValue(idColumn).getClass().getName()); 335 ((MutableColumn) idColumn).setType(ColumnType.INTEGER); 336 ((MutableColumn) ageColumn).setType(ColumnType.DOUBLE); 337 338 DataSet dataSet = dc.executeQuery(new Query().select(idColumn, 339 ageColumn).from(table)); 340 assertTrue(dataSet.next()); 341 assertEquals("java.lang.Integer", dataSet.getRow().getValue(idColumn) 342 .getClass().getName()); 307 343 assertEquals(1, dataSet.getRow().getValue(idColumn)); 308 assertEquals("java.lang.Double", dataSet.getRow().getValue(ageColumn).getClass().getName()); 344 assertEquals("java.lang.Double", dataSet.getRow().getValue(ageColumn) 345 .getClass().getName()); 309 346 assertEquals(18.0, dataSet.getRow().getValue(ageColumn)); 310 347 311 348 assertTrue(dataSet.next()); 312 assertEquals("java.lang.Integer", dataSet.getRow().getValue(idColumn).getClass().getName()); 349 assertEquals("java.lang.Integer", dataSet.getRow().getValue(idColumn) 350 .getClass().getName()); 313 351 assertEquals(2, dataSet.getRow().getValue(idColumn)); 314 assertEquals("java.lang.Double", dataSet.getRow().getValue(ageColumn).getClass().getName()); 352 assertEquals("java.lang.Double", dataSet.getRow().getValue(ageColumn) 353 .getClass().getName()); 315 354 assertEquals(19.0, dataSet.getRow().getValue(ageColumn)); 316 355 … … 320 359 public void testAutoTransformColumnTypes() throws Exception { 321 360 File file = new File("src/test/resources/csv_people.csv"); 322 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy(file); 361 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy( 362 file); 323 363 strategy.autoTransformColumnTypes(); 324 364 … … 331 371 assertEquals(ColumnType.INTEGER, ageColumn.getType()); 332 372 333 DataSet dataSet = dc.executeQuery(new Query().select(idColumn, ageColumn).from(table)); 334 assertTrue(dataSet.next()); 335 assertEquals("java.lang.Integer", dataSet.getRow().getValue(idColumn).getClass().getName()); 373 DataSet dataSet = dc.executeQuery(new Query().select(idColumn, 374 ageColumn).from(table)); 375 assertTrue(dataSet.next()); 376 assertEquals("java.lang.Integer", dataSet.getRow().getValue(idColumn) 377 .getClass().getName()); 336 378 assertEquals(1, dataSet.getRow().getValue(idColumn)); 337 assertEquals("java.lang.Integer", dataSet.getRow().getValue(ageColumn).getClass().getName()); 379 assertEquals("java.lang.Integer", dataSet.getRow().getValue(ageColumn) 380 .getClass().getName()); 338 381 assertEquals(18, dataSet.getRow().getValue(ageColumn)); 339 382 340 383 assertTrue(dataSet.next()); 341 assertEquals("java.lang.Integer", dataSet.getRow().getValue(idColumn).getClass().getName()); 384 assertEquals("java.lang.Integer", dataSet.getRow().getValue(idColumn) 385 .getClass().getName()); 342 386 assertEquals(2, dataSet.getRow().getValue(idColumn)); 343 assertEquals("java.lang.Integer", dataSet.getRow().getValue(ageColumn).getClass().getName()); 387 assertEquals("java.lang.Integer", dataSet.getRow().getValue(ageColumn) 388 .getClass().getName()); 344 389 assertEquals(19, dataSet.getRow().getValue(ageColumn)); 345 390 … … 349 394 public void testAllTypes() throws Exception { 350 395 File file = new File("src/test/resources/csv_various_types.csv"); 351 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy(file); 396 QueryPostprocessDataContextStrategy strategy = new CsvDataContextStrategy( 397 file); 352 398 strategy.autoTransformColumnTypes(); 353 399 354 400 DataContext dc = new DataContext(strategy); 355 401 Table table = dc.getDefaultSchema().getTables()[0]; 356 assertEquals("{date,time,description,rating,holiday}", ArrayUtils.toString(table.getColumnNames())); 357 358 assertEquals( 359 "Column[name=date,columnNumber=0,type=DATE,nullable=false,indexed=false,nativeType=Text transformed to date,columnSize=<null>]", 402 assertEquals("{date,time,description,rating,holiday}", ArrayUtils 403 .toString(table.getColumnNames())); 404 405 assertEquals( 406 "MutableColumn[name=date,columnNumber=0,type=DATE,nullable=false,indexed=false,nativeType=Text transformed to date,columnSize=<null>]", 360 407 table.getColumnByName("date").toString()); 361 408 assertEquals( 362 " Column[name=time,columnNumber=1,type=TIME,nullable=false,indexed=false,nativeType=Text transformed to time,columnSize=<null>]",409 "MutableColumn[name=time,columnNumber=1,type=TIME,nullable=false,indexed=false,nativeType=Text transformed to time,columnSize=<null>]", 363 410 table.getColumnByName("time").toString()); 364 411 assertEquals( 365 " Column[name=description,columnNumber=2,type=VARCHAR,nullable=false,indexed=false,nativeType=Text,columnSize=<null>]",412 "MutableColumn[name=description,columnNumber=2,type=VARCHAR,nullable=false,indexed=false,nativeType=Text,columnSize=<null>]", 366 413 table.getColumnByName("description").toString()); 367 414 assertEquals( 368 " Column[name=rating,columnNumber=3,type=DOUBLE,nullable=false,indexed=false,nativeType=Text transformed to double,columnSize=<null>]",415 "MutableColumn[name=rating,columnNumber=3,type=DOUBLE,nullable=false,indexed=false,nativeType=Text transformed to double,columnSize=<null>]", 369 416 table.getColumnByName("rating").toString()); 370 417 assertEquals( 371 " Column[name=holiday,columnNumber=4,type=BOOLEAN,nullable=true,indexed=false,nativeType=Text transformed to boolean,columnSize=<null>]",418 "MutableColumn[name=holiday,columnNumber=4,type=BOOLEAN,nullable=true,indexed=false,nativeType=Text transformed to boolean,columnSize=<null>]", 372 419 table.getColumnByName("holiday").toString()); 373 420 374 DataSet dataSet = dc.executeQuery(new Query().from(table).select(table.getColumns())); 375 assertTrue(dataSet.next()); 376 assertEquals("java.sql.Date", dataSet.getRow().getValue(0).getClass().getName()); 377 assertEquals("java.sql.Time", dataSet.getRow().getValue(1).getClass().getName()); 378 assertEquals("java.lang.String", dataSet.getRow().getValue(2).getClass().getName()); 379 assertEquals("java.lang.Double", dataSet.getRow().getValue(3).getClass().getName()); 380 assertEquals("java.lang.Boolean", dataSet.getRow().getValue(4).getClass().getName()); 381 assertEquals("{2008-11-04,12:00:00,election day,8.8,false}", ArrayUtils.toString(dataSet.getRow().getValues())); 382 assertTrue(dataSet.next()); 383 assertEquals("java.sql.Date", dataSet.getRow().getValue(0).getClass().getName()); 384 assertEquals("java.sql.Time", dataSet.getRow().getValue(1).getClass().getName()); 385 assertEquals("java.lang.String", dataSet.getRow().getValue(2).getClass().getName()); 386 assertEquals("java.lang.Double", dataSet.getRow().getValue(3).getClass().getName()); 387 assertEquals("java.lang.Boolean", dataSet.getRow().getValue(4).getClass().getName()); 388 assertEquals("{2008-12-24,00:00:00,christmas day,9.0,true}", ArrayUtils.toString(dataSet.getRow().getValues())); 389 assertTrue(dataSet.next()); 390 assertEquals("java.sql.Date", dataSet.getRow().getValue(0).getClass().getName()); 391 assertEquals("java.sql.Time", dataSet.getRow().getValue(1).getClass().getName()); 392 assertEquals("java.lang.String", dataSet.getRow().getValue(2).getClass().getName()); 393 assertEquals("java.lang.Double", dataSet.getRow().getValue(3).getClass().getName()); 421 DataSet dataSet = dc.executeQuery(new Query().from(table).select( 422 table.getColumns())); 423 assertTrue(dataSet.next()); 424 assertEquals("java.sql.Date", dataSet.getRow().getValue(0).getClass() 425 .getName()); 426 assertEquals("java.sql.Time", dataSet.getRow().getValue(1).getClass() 427 .getName()); 428 assertEquals("java.lang.String", dataSet.getRow().getValue(2) 429 .getClass().getName()); 430 assertEquals("java.lang.Double", dataSet.getRow().getValue(3) 431 .getClass().getName()); 432 assertEquals("java.lang.Boolean", dataSet.getRow().getValue(4) 433 .getClass().getName()); 434 assertEquals("{2008-11-04,12:00:00,election day,8.8,false}", ArrayUtils 435 .toString(dataSet.getRow().getValues())); 436 assertTrue(dataSet.next()); 437 assertEquals("java.sql.Date", dataSet.getRow().getValue(0).getClass() 438 .getName()); 439 assertEquals("java.sql.Time", dataSet.getRow().getValue(1).getClass() 440 .getName()); 441 assertEquals("java.lang.String", dataSet.getRow().getValue(2) 442 .getClass().getName()); 443 assertEquals("java.lang.Double", dataSet.getRow().getValue(3) 444 .getClass().getName()); 445 assertEquals("java.lang.Boolean", dataSet.getRow().getValue(4) 446 .getClass().getName()); 447 assertEquals("{2008-12-24,00:00:00,christmas day,9.0,true}", ArrayUtils 448 .toString(dataSet.getRow().getValues())); 449 assertTrue(dataSet.next()); 450 assertEquals("java.sql.Date", dataSet.getRow().getValue(0).getClass() 451 .getName()); 452 assertEquals("java.sql.Time", dataSet.getRow().getValue(1).getClass() 453 .getName()); 454 assertEquals("java.lang.String", dataSet.getRow().getValue(2) 455 .getClass().getName()); 456 assertEquals("java.lang.Double", dataSet.getRow().getValue(3) 457 .getClass().getName()); 394 458 assertNull(dataSet.getRow().getValue(4)); 395 assertEquals("{2007-12-31,23:59:00,new years eve,6.4,<null>}", ArrayUtils396 .toString(dataSet.getRow().getValues()));459 assertEquals("{2007-12-31,23:59:00,new years eve,6.4,<null>}", 460 ArrayUtils.toString(dataSet.getRow().getValues())); 397 461 assertFalse(dataSet.next()); 398 462 } -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/DerbyTest.java
r886 r887 31 31 import org.eobjects.metamodel.query.Query; 32 32 import org.eobjects.metamodel.query.SelectItem; 33 import org.eobjects.metamodel.schema.Table; 33 34 import org.eobjects.metamodel.schema.Schema; 34 import org.eobjects.metamodel.schema.Table;35 35 import org.eobjects.metamodel.schema.TableType; 36 36 -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/ExcelDataContextStrategyTest.java
r886 r887 22 22 23 23 import org.apache.commons.lang.ArrayUtils; 24 import org.eobjects.metamodel.DataContext;25 import org.eobjects.metamodel.ExcelDataContextStrategy;26 import org.eobjects.metamodel.QueryPostprocessDataContextStrategy;27 24 import org.eobjects.metamodel.data.DataSet; 28 25 import org.eobjects.metamodel.query.Query; … … 31 28 import org.eobjects.metamodel.schema.Table; 32 29 33 34 30 public class ExcelDataContextStrategyTest extends TestCase { 35 31 36 32 public void testGetSchemas() throws Exception { 37 33 File file = new File("src/test/resources/xls_people.xls"); 38 QueryPostprocessDataContextStrategy strategy = new ExcelDataContextStrategy(file); 34 QueryPostprocessDataContextStrategy strategy = new ExcelDataContextStrategy( 35 file); 39 36 Schema[] schemas = new DataContext(strategy).getSchemas(); 40 37 assertEquals(2, schemas.length); … … 57 54 public void testMaterializeTable() throws Exception { 58 55 File file = new File("src/test/resources/xls_people.xls"); 59 QueryPostprocessDataContextStrategy strategy = new ExcelDataContextStrategy(file); 56 QueryPostprocessDataContextStrategy strategy = new ExcelDataContextStrategy( 57 file); 60 58 Table table = new DataContext(strategy).getDefaultSchema().getTables()[0]; 61 DataSet dataSet = strategy.materializeMainSchemaTable(table, table.getColumns(), -1); 59 DataSet dataSet = strategy.materializeMainSchemaTable(table, table 60 .getColumns(), -1); 62 61 assertTrue(dataSet.next()); 63 assertEquals("Row[values={1,mike,male,18}]", dataSet.getRow().toString()); 62 assertEquals("Row[values={1,mike,male,18}]", dataSet.getRow() 63 .toString()); 64 64 assertTrue(dataSet.next()); 65 assertEquals("Row[values={2,michael,male,19}]", dataSet.getRow().toString()); 65 assertEquals("Row[values={2,michael,male,19}]", dataSet.getRow() 66 .toString()); 66 67 assertTrue(dataSet.next()); 67 assertEquals("Row[values={3,peter,male,18}]", dataSet.getRow().toString()); 68 assertEquals("Row[values={3,peter,male,18}]", dataSet.getRow() 69 .toString()); 68 70 assertTrue(dataSet.next()); 69 71 assertTrue(dataSet.next()); … … 72 74 assertTrue(dataSet.next()); 73 75 assertTrue(dataSet.next()); 74 assertEquals("Row[values={9,carrie,female,17}]", dataSet.getRow().toString()); 76 assertEquals("Row[values={9,carrie,female,17}]", dataSet.getRow() 77 .toString()); 75 78 assertFalse(dataSet.next()); 76 79 assertNull(dataSet.getRow()); … … 85 88 Table table = schema.getTables()[0]; 86 89 assertEquals( 87 "{ Column[name=a,columnNumber=0,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>],"88 + " Column[name=b,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>],"89 + " Column[name=c,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>],"90 + " Column[name=d,columnNumber=3,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]}",90 "{MutableColumn[name=a,columnNumber=0,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 91 + "MutableColumn[name=b,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 92 + "MutableColumn[name=c,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 93 + "MutableColumn[name=d,columnNumber=3,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]}", 91 94 ArrayUtils.toString(table.getColumns())); 92 95 … … 94 97 DataSet ds = dc.executeQuery(q); 95 98 assertTrue(ds.next()); 96 assertEquals("{1,2,3,<null>}", ArrayUtils.toString(ds.getRow().getValues())); 99 assertEquals("{1,2,3,<null>}", ArrayUtils.toString(ds.getRow() 100 .getValues())); 97 101 assertTrue(ds.next()); 98 assertEquals("{5,<null>,7,8}", ArrayUtils.toString(ds.getRow().getValues())); 102 assertEquals("{5,<null>,7,8}", ArrayUtils.toString(ds.getRow() 103 .getValues())); 99 104 assertTrue(ds.next()); 100 assertEquals("{9,10,11,12}", ArrayUtils.toString(ds.getRow().getValues())); 105 assertEquals("{9,10,11,12}", ArrayUtils.toString(ds.getRow() 106 .getValues())); 101 107 assertFalse(ds.next()); 102 108 } … … 110 116 Table table = schema.getTables()[0]; 111 117 assertEquals( 112 "{ Column[name=a,columnNumber=0,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>],"113 + " Column[name=b,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>],"114 + " Column[name=[Column 3],columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>],"115 + " Column[name=d,columnNumber=3,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]}",118 "{MutableColumn[name=a,columnNumber=0,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 119 + "MutableColumn[name=b,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 120 + "MutableColumn[name=[Column 3],columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 121 + "MutableColumn[name=d,columnNumber=3,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]}", 116 122 ArrayUtils.toString(table.getColumns())); 117 123 … … 123 129 assertEquals("{5,6,7,8}", ArrayUtils.toString(ds.getRow().getValues())); 124 130 assertTrue(ds.next()); 125 assertEquals("{9,10,11,12}", ArrayUtils.toString(ds.getRow().getValues())); 131 assertEquals("{9,10,11,12}", ArrayUtils.toString(ds.getRow() 132 .getValues())); 126 133 assertFalse(ds.next()); 127 134 } … … 131 138 DataContext dc = new DataContext(new ExcelDataContextStrategy(file)); 132 139 Schema schema = dc.getDefaultSchema(); 133 assertEquals("{Table[name=Sheet1,type=<null>,remarks=<null>]}", ArrayUtils.toString(schema.getTables())); 140 assertEquals("{MutableTable[name=Sheet1,type=<null>,remarks=<null>]}", 141 ArrayUtils.toString(schema.getTables())); 134 142 Table table = schema.getTableByName("Sheet1"); 135 143 assertEquals( 136 "{Column[name=Pkg No.,columnNumber=0,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 137 + "Column[name=Description,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 138 + "Column[name=Room,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 139 + "Column[name=Level,columnNumber=3,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 140 + "Column[name=[Column 5],columnNumber=4,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 141 + "Column[name=[Column 6],columnNumber=5,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 142 + "Column[name=[Column 7],columnNumber=6,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 143 + "Column[name=[Column 8],columnNumber=7,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 144 + "Column[name=[Column 9],columnNumber=8,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 145 + "Column[name=[Column 10],columnNumber=9,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 146 + "Column[name=[Column 11],columnNumber=10,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>],Column[name=[Column 12],columnNumber=11,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]}", 144 "{MutableColumn[name=Pkg No.,columnNumber=0,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 145 + "MutableColumn[name=Description,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 146 + "MutableColumn[name=Room,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 147 + "MutableColumn[name=Level,columnNumber=3,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 148 + "MutableColumn[name=[Column 5],columnNumber=4,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 149 + "MutableColumn[name=[Column 6],columnNumber=5,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 150 + "MutableColumn[name=[Column 7],columnNumber=6,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 151 + "MutableColumn[name=[Column 8],columnNumber=7,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 152 + "MutableColumn[name=[Column 9],columnNumber=8,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 153 + "MutableColumn[name=[Column 10],columnNumber=9,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 154 + "MutableColumn[name=[Column 11],columnNumber=10,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 155 + "MutableColumn[name=[Column 12],columnNumber=11,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]}", 147 156 ArrayUtils.toString(table.getColumns())); 148 157 } -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/HsqldbTest.java
r886 r887 25 25 26 26 import org.apache.commons.lang.ArrayUtils; 27 import org.eobjects.metamodel.DataContext;28 import org.eobjects.metamodel.JdbcDataContextFactory;29 import org.eobjects.metamodel.JdbcDataContextStrategy;30 import org.eobjects.metamodel.MetaModelHelper;31 27 import org.eobjects.metamodel.data.DataSet; 32 28 import org.eobjects.metamodel.dialects.DefaultQueryRewriter; … … 39 35 import org.eobjects.metamodel.schema.Schema; 40 36 import org.eobjects.metamodel.schema.Table; 41 42 37 43 38 /** … … 110 105 // Only a single relationship registered in the database 111 106 assertEquals( 112 "{ Relationship[primaryTable=PRODUCTS,primaryColumns={PRODUCTCODE},foreignTable=ORDERFACT,foreignColumns={PRODUCTCODE}]}",107 "{ImmutableRelationship[primaryTable=PRODUCTS,primaryColumns={PRODUCTCODE},foreignTable=ORDERFACT,foreignColumns={PRODUCTCODE}]}", 113 108 ArrayUtils.toString(publicSchema.getRelationships())); 114 109 } -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/JdbcDataContextStrategyTest.java
r886 r887 27 27 import org.apache.commons.lang.ArrayUtils; 28 28 import org.easymock.EasyMock; 29 import org.eobjects.metamodel.DataContext;30 import org.eobjects.metamodel.JdbcDataContextFactory;31 import org.eobjects.metamodel.JdbcDataContextStrategy;32 import org.eobjects.metamodel.MetaModelException;33 import org.eobjects.metamodel.QueryPostprocessDataContextStrategy;34 29 import org.eobjects.metamodel.data.DataSet; 35 30 import org.eobjects.metamodel.dialects.AbstractQueryRewriter; … … 42 37 import org.eobjects.metamodel.query.SelectItem; 43 38 import org.eobjects.metamodel.schema.Column; 39 import org.eobjects.metamodel.schema.MutableSchema; 44 40 import org.eobjects.metamodel.schema.Relationship; 45 41 import org.eobjects.metamodel.schema.Schema; … … 179 175 */ 180 176 assertEquals( 181 "{ Relationship[primaryTable=PRODUCTS,primaryColumns={PRODUCTCODE},foreignTable=ORDERFACT,foreignColumns={PRODUCTCODE}]}",177 "{ImmutableRelationship[primaryTable=PRODUCTS,primaryColumns={PRODUCTCODE},foreignTable=ORDERFACT,foreignColumns={PRODUCTCODE}]}", 182 178 ArrayUtils.toString(relations)); 183 179 … … 345 341 */ 346 342 public void testCsvQueryResultComparison() throws Exception { 347 final Schema schema = getExampleSchema();343 final MutableSchema schema = getExampleSchema(); 348 344 349 345 Connection connection = getTestDbConnection(); … … 362 358 363 359 @Override 364 protected Schema getMainSchema() throws MetaModelException {360 protected MutableSchema getMainSchema() throws MetaModelException { 365 361 return schema; 366 362 } -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/MetaModelHelperTest.java
r886 r887 21 21 22 22 import org.apache.commons.lang.ArrayUtils; 23 import org.eobjects.metamodel.MetaModelHelper;24 23 import org.eobjects.metamodel.data.DataSet; 25 24 import org.eobjects.metamodel.query.FilterItem; … … 32 31 import org.eobjects.metamodel.schema.Column; 33 32 import org.eobjects.metamodel.schema.ColumnType; 33 import org.eobjects.metamodel.schema.MutableColumn; 34 import org.eobjects.metamodel.schema.MutableTable; 34 35 import org.eobjects.metamodel.schema.Schema; 35 36 import org.eobjects.metamodel.schema.Table; … … 39 40 40 41 public void testLeftJoin() throws Exception { 41 SelectItem si1 = new SelectItem(new Column("person_id",42 ColumnType.INTEGER)); 43 SelectItem si2 = new SelectItem(new Column("person_name",44 ColumnType.VARCHAR)); 45 SelectItem si3 = new SelectItem(new Column("person_age",46 ColumnType.INTEGER)); 47 SelectItem si4 = new SelectItem(new Column("person_role_id",48 ColumnType.INTEGER)); 49 SelectItem si5 = new SelectItem(new Column("role_id",50 ColumnType.INTEGER)); 51 SelectItem si6 = new SelectItem(new Column("role_name",52 ColumnType.VARCHAR)); 53 SelectItem si7 = new SelectItem(new Column("role_code",42 SelectItem si1 = new SelectItem(new MutableColumn("person_id", 43 ColumnType.INTEGER)); 44 SelectItem si2 = new SelectItem(new MutableColumn("person_name", 45 ColumnType.VARCHAR)); 46 SelectItem si3 = new SelectItem(new MutableColumn("person_age", 47 ColumnType.INTEGER)); 48 SelectItem si4 = new SelectItem(new MutableColumn("person_role_id", 49 ColumnType.INTEGER)); 50 SelectItem si5 = new SelectItem(new MutableColumn("role_id", 51 ColumnType.INTEGER)); 52 SelectItem si6 = new SelectItem(new MutableColumn("role_name", 53 ColumnType.VARCHAR)); 54 SelectItem si7 = new SelectItem(new MutableColumn("role_code", 54 55 ColumnType.VARCHAR)); 55 56 List<Object[]> data1 = new ArrayList<Object[]>(); … … 87 88 88 89 public void testRightJoin() throws Exception { 89 SelectItem si1 = new SelectItem(new Column("person_id",90 ColumnType.INTEGER)); 91 SelectItem si2 = new SelectItem(new Column("person_name",92 ColumnType.VARCHAR)); 93 SelectItem si3 = new SelectItem(new Column("person_age",94 ColumnType.INTEGER)); 95 SelectItem si4 = new SelectItem(new Column("person_role_id",96 ColumnType.INTEGER)); 97 SelectItem si5 = new SelectItem(new Column("role_id",98 ColumnType.INTEGER)); 99 SelectItem si6 = new SelectItem(new Column("role_name",100 ColumnType.VARCHAR)); 101 SelectItem si7 = new SelectItem(new Column("role_code",90 SelectItem si1 = new SelectItem(new MutableColumn("person_id", 91 ColumnType.INTEGER)); 92 SelectItem si2 = new SelectItem(new MutableColumn("person_name", 93 ColumnType.VARCHAR)); 94 SelectItem si3 = new SelectItem(new MutableColumn("person_age", 95 ColumnType.INTEGER)); 96 SelectItem si4 = new SelectItem(new MutableColumn("person_role_id", 97 ColumnType.INTEGER)); 98 SelectItem si5 = new SelectItem(new MutableColumn("role_id", 99 ColumnType.INTEGER)); 100 SelectItem si6 = new SelectItem(new MutableColumn("role_name", 101 ColumnType.VARCHAR)); 102 SelectItem si7 = new SelectItem(new MutableColumn("role_code", 102 103 ColumnType.VARCHAR)); 103 104 List<Object[]> data1 = new ArrayList<Object[]>(); … … 210 211 data1.add(new Object[] { "o" }); 211 212 DataSet dataSet1 = new DataSet(new SelectItem[] { new SelectItem( 212 new Column("foo", ColumnType.VARCHAR)) }, data1);213 new MutableColumn("foo", ColumnType.VARCHAR)) }, data1); 213 214 return dataSet1; 214 215 } … … 242 243 243 244 public void testGetTables() throws Exception { 244 Table table1 = newTable("table1");245 Table table2 = newTable("table2");246 Column t1column1 = newColumn("t1c1", ColumnType.BIGINT);247 Column t2column1 = newColumn("t2c1", ColumnType.BIGINT);248 Column t2column2 = newColumn("t2c2", ColumnType.BIGINT);245 MutableTable table1 = new MutableTable("table1"); 246 MutableTable table2 = new MutableTable("table2"); 247 MutableColumn t1column1 = new MutableColumn("t1c1", ColumnType.BIGINT); 248 MutableColumn t2column1 = new MutableColumn("t2c1", ColumnType.BIGINT); 249 MutableColumn t2column2 = new MutableColumn("t2c2", ColumnType.BIGINT); 249 250 table1.addColumn(t1column1); 250 251 t1column1.setTable(table1); … … 267 268 268 269 public void testGetTableColumns() throws Exception { 269 Table table1 = newTable("table1");270 Column column1 = newColumn("c1", ColumnType.BIGINT);271 Column column2 = newColumn("c2", ColumnType.BIGINT);272 Column column3 = newColumn("c3", ColumnType.BIGINT);270 MutableTable table1 = new MutableTable("table1"); 271 MutableColumn column1 = new MutableColumn("c1", ColumnType.BIGINT); 272 MutableColumn column2 = new MutableColumn("c2", ColumnType.BIGINT); 273 MutableColumn column3 = new MutableColumn("c3", ColumnType.BIGINT); 273 274 table1.addColumn(column1); 274 275 column1.setTable(table1); -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/MetaModelTestCase.java
r886 r887 30 30 import org.eobjects.metamodel.data.Row; 31 31 import org.eobjects.metamodel.schema.Column; 32 import org.eobjects.metamodel.schema.MutableColumn; 32 33 import org.eobjects.metamodel.schema.ColumnType; 33 import org.eobjects.metamodel.schema. Relationship;34 import org.eobjects.metamodel.schema. Schema;35 import org.eobjects.metamodel.schema. Table;34 import org.eobjects.metamodel.schema.ImmutableRelationship; 35 import org.eobjects.metamodel.schema.MutableSchema; 36 import org.eobjects.metamodel.schema.MutableTable; 36 37 import org.eobjects.metamodel.schema.TableType; 37 38 … … 81 82 * </ul> 82 83 */ 83 protected Schema getExampleSchema() {84 Schema schema = newSchema("MetaModelSchema");85 86 Table table1 = newTable(TABLE_CONTRIBUTOR, TableType.TABLE, schema);87 Column column1 = newColumn(COLUMN_CONTRIBUTOR_CONTRIBUTOR_ID,84 protected MutableSchema getExampleSchema() { 85 MutableSchema schema = new MutableSchema("MetaModelSchema"); 86 87 MutableTable table1 = new MutableTable(TABLE_CONTRIBUTOR, TableType.TABLE, schema); 88 MutableColumn column1 = new MutableColumn(COLUMN_CONTRIBUTOR_CONTRIBUTOR_ID, 88 89 ColumnType.INTEGER, table1, 0, false).setIndexed(true); 89 Column column2 = newColumn(COLUMN_CONTRIBUTOR_NAME,90 MutableColumn column2 = new MutableColumn(COLUMN_CONTRIBUTOR_NAME, 90 91 ColumnType.VARCHAR, table1, 1, false); 91 Column column3 = new Column(COLUMN_CONTRIBUTOR_COUNTRY,92 Column column3 = new MutableColumn(COLUMN_CONTRIBUTOR_COUNTRY, 92 93 ColumnType.VARCHAR, table1, 2, true); 93 94 table1.setColumns(column1, column2, column3); 94 95 95 Table table2 = newTable(TABLE_PROJECT, TableType.TABLE, schema);96 Column column4 = newColumn(COLUMN_PROJECT_PROJECT_ID,96 MutableTable table2 = new MutableTable(TABLE_PROJECT, TableType.TABLE, schema); 97 MutableColumn column4 = new MutableColumn(COLUMN_PROJECT_PROJECT_ID, 97 98 ColumnType.INTEGER, table2, 0, false); 98 Column column5 = newColumn(COLUMN_PROJECT_NAME, ColumnType.VARCHAR,99 MutableColumn column5 = new MutableColumn(COLUMN_PROJECT_NAME, ColumnType.VARCHAR, 99 100 table2, 1, false); 100 Column column6 = new Column(COLUMN_PROJECT_LINES_OF_CODE,101 Column column6 = new MutableColumn(COLUMN_PROJECT_LINES_OF_CODE, 101 102 ColumnType.BIGINT, table2, 2, true); 102 Column column7 = new Column(COLUMN_PROJECT_PARENT_PROJECT_ID,103 Column column7 = new MutableColumn(COLUMN_PROJECT_PARENT_PROJECT_ID, 103 104 ColumnType.INTEGER, table2, 3, true); 104 105 table2.setColumns(column4, column5, column6, column7); 105 106 106 Table table3 = newTable(TABLE_ROLE, TableType.TABLE, schema);107 Column column8 = newColumn(COLUMN_ROLE_CONTRIBUTOR_ID,107 MutableTable table3 = new MutableTable(TABLE_ROLE, TableType.TABLE, schema); 108 MutableColumn column8 = new MutableColumn(COLUMN_ROLE_CONTRIBUTOR_ID, 108 109 ColumnType.INTEGER, table3, 0, false); 109 Column column9 = newColumn(COLUMN_ROLE_PROJECT_ID, ColumnType.INTEGER,110 MutableColumn column9 = new MutableColumn(COLUMN_ROLE_PROJECT_ID, ColumnType.INTEGER, 110 111 table3, 1, false); 111 Column column10 = newColumn(COLUMN_ROLE_ROLE_NAME, ColumnType.VARCHAR,112 MutableColumn column10 = new MutableColumn(COLUMN_ROLE_ROLE_NAME, ColumnType.VARCHAR, 112 113 table3, 2, false); 113 114 table3.setColumns(column8, column9, column10); 114 115 115 Table table4 = newTable(TABLE_PROJECT_CONTRIBUTOR, TableType.VIEW,116 MutableTable table4 = new MutableTable(TABLE_PROJECT_CONTRIBUTOR, TableType.VIEW, 116 117 schema); 117 Column column11 = newColumn(COLUMN_PROJECT_CONTRIBUTOR_CONTRIBUTOR,118 MutableColumn column11 = new MutableColumn(COLUMN_PROJECT_CONTRIBUTOR_CONTRIBUTOR, 118 119 ColumnType.VARCHAR, table4, 0, false); 119 Column column12 = newColumn(COLUMN_PROJECT_CONTRIBUTOR_PROJECT,120 MutableColumn column12 = new MutableColumn(COLUMN_PROJECT_CONTRIBUTOR_PROJECT, 120 121 ColumnType.VARCHAR, table4, 1, false); 121 Column column13 = newColumn(COLUMN_PROJECT_CONTRIBUTOR_ROLE,122 MutableColumn column13 = new MutableColumn(COLUMN_PROJECT_CONTRIBUTOR_ROLE, 122 123 ColumnType.VARCHAR, table4, 2, false); 123 ArrayList< Column> columnList = new ArrayList<Column>();124 ArrayList<MutableColumn> columnList = new ArrayList<MutableColumn>(); 124 125 columnList.add(column11); 125 126 columnList.add(column12); … … 128 129 129 130 // one-Contributor-to-many-Role's 130 Relationship.createRelationship(newColumn[] { column1 },131 new Column[] { column8 });131 ImmutableRelationship.createRelationship(new MutableColumn[] { column1 }, 132 new MutableColumn[] { column8 }); 132 133 133 134 // one-Project-to-many-Role's 134 Relationship.createRelationship(newColumn[] { column4 },135 new Column[] { column9 });135 ImmutableRelationship.createRelationship(new MutableColumn[] { column4 }, 136 new MutableColumn[] { column9 }); 136 137 137 138 // view relation [contributor -> contributor_name] 138 Relationship.createRelationship(newColumn[] { column2 },139 new Column[] { column11 });139 ImmutableRelationship.createRelationship(new MutableColumn[] { column2 }, 140 new MutableColumn[] { column11 }); 140 141 141 142 // view relation [project -> project_name] 142 Relationship.createRelationship(newColumn[] { column5 },143 new Column[] { column12 });143 ImmutableRelationship.createRelationship(new MutableColumn[] { column5 }, 144 new MutableColumn[] { column12 }); 144 145 145 146 // view relation [role -> role_name] 146 Relationship.createRelationship(newColumn[] { column10 },147 new Column[] { column13 });147 ImmutableRelationship.createRelationship(new MutableColumn[] { column10 }, 148 new MutableColumn[] { column13 }); 148 149 149 150 schema.setTables(table1, table2, table3, table4); -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/OpenOfficeDataContextStrategyTest.java
r886 r887 27 27 import org.eobjects.metamodel.data.DataSet; 28 28 import org.eobjects.metamodel.query.Query; 29 import org.eobjects.metamodel.schema.Table; 29 30 import org.eobjects.metamodel.schema.Schema; 30 import org.eobjects.metamodel.schema.Table;31 31 32 32 … … 73 73 ArrayUtils.toString(schema.getTables())); 74 74 assertEquals( 75 "{ Relationship[primaryTable=CONTRIBUTORS,primaryColumns={ID},foreignTable=projects,foreignColumns={admin}]}",75 "{ImmutableRelationship[primaryTable=CONTRIBUTORS,primaryColumns={ID},foreignTable=projects,foreignColumns={admin}]}", 76 76 ArrayUtils.toString(schema.getRelationships())); 77 77 } -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/QueryPostprocessDataContextStrategyTest.java
r886 r887 23 23 24 24 import org.apache.commons.lang.ArrayUtils; 25 import org.eobjects.metamodel.IDataContextStrategy;26 import org.eobjects.metamodel.MetaModelException;27 import org.eobjects.metamodel.QueryPostprocessDataContextStrategy;28 25 import org.eobjects.metamodel.data.DataSet; 29 26 import org.eobjects.metamodel.data.Row; … … 41 38 import org.eobjects.metamodel.schema.Schema; 42 39 import org.eobjects.metamodel.schema.Table; 43 44 40 45 41 public class QueryPostprocessDataContextStrategyTest extends MetaModelTestCase { … … 141 137 .getSchemaByName("information_schema"); 142 138 assertEquals( 143 "{ Table[name=tables,type=TABLE,remarks=<null>],Table[name=columns,type=TABLE,remarks=<null>],Table[name=relationships,type=TABLE,remarks=<null>]}",139 "{MutableTable[name=tables,type=TABLE,remarks=<null>],MutableTable[name=columns,type=TABLE,remarks=<null>],MutableTable[name=relationships,type=TABLE,remarks=<null>]}", 144 140 ArrayUtils.toString(informationSchema.getTables())); 145 141 assertEquals( 146 "{ Relationship[primaryTable=tables,primaryColumns={name},foreignTable=columns,foreignColumns={table}],"147 + " Relationship[primaryTable=tables,primaryColumns={name},foreignTable=relationships,foreignColumns={primary_table}],"148 + " Relationship[primaryTable=tables,primaryColumns={name},foreignTable=relationships,foreignColumns={foreign_table}],"149 + " Relationship[primaryTable=columns,primaryColumns={name},foreignTable=relationships,foreignColumns={primary_column}],"150 + " Relationship[primaryTable=columns,primaryColumns={name},foreignTable=relationships,foreignColumns={foreign_column}]}",142 "{ImmutableRelationship[primaryTable=tables,primaryColumns={name},foreignTable=columns,foreignColumns={table}]," 143 + "ImmutableRelationship[primaryTable=tables,primaryColumns={name},foreignTable=relationships,foreignColumns={primary_table}]," 144 + "ImmutableRelationship[primaryTable=tables,primaryColumns={name},foreignTable=relationships,foreignColumns={foreign_table}]," 145 + "ImmutableRelationship[primaryTable=columns,primaryColumns={name},foreignTable=relationships,foreignColumns={primary_column}]," 146 + "ImmutableRelationship[primaryTable=columns,primaryColumns={name},foreignTable=relationships,foreignColumns={foreign_column}]}", 151 147 ArrayUtils.toString(informationSchema.getRelationships())); 152 148 Table tablesTable = informationSchema.getTableByName("tables"); 153 149 assertEquals( 154 "{ Column[name=name,columnNumber=0,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>],"155 + " Column[name=type,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>],"156 + " Column[name=num_columns,columnNumber=2,type=INTEGER,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>],"157 + " Column[name=remarks,columnNumber=3,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]}",150 "{MutableColumn[name=name,columnNumber=0,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>]," 151 + "MutableColumn[name=type,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 152 + "MutableColumn[name=num_columns,columnNumber=2,type=INTEGER,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 153 + "MutableColumn[name=remarks,columnNumber=3,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]}", 158 154 ArrayUtils.toString(tablesTable.getColumns())); 159 155 Table columnsTable = informationSchema.getTableByName("columns"); 160 156 assertEquals( 161 "{ Column[name=name,columnNumber=0,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>],"162 + " Column[name=type,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>],"163 + " Column[name=native_type,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>],"164 + " Column[name=size,columnNumber=3,type=INTEGER,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>],"165 + " Column[name=nullable,columnNumber=4,type=BOOLEAN,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>],"166 + " Column[name=indexed,columnNumber=5,type=BOOLEAN,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>],"167 + " Column[name=table,columnNumber=6,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>],"168 + " Column[name=remarks,columnNumber=7,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]}",157 "{MutableColumn[name=name,columnNumber=0,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>]," 158 + "MutableColumn[name=type,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 159 + "MutableColumn[name=native_type,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 160 + "MutableColumn[name=size,columnNumber=3,type=INTEGER,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 161 + "MutableColumn[name=nullable,columnNumber=4,type=BOOLEAN,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 162 + "MutableColumn[name=indexed,columnNumber=5,type=BOOLEAN,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]," 163 + "MutableColumn[name=table,columnNumber=6,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>]," 164 + "MutableColumn[name=remarks,columnNumber=7,type=VARCHAR,nullable=true,indexed=false,nativeType=<null>,columnSize=<null>]}", 169 165 ArrayUtils.toString(columnsTable.getColumns())); 170 166 Table relationshipsTable = informationSchema 171 167 .getTableByName("relationships"); 172 168 assertEquals( 173 "{ Column[name=primary_table,columnNumber=0,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>],"174 + " Column[name=primary_column,columnNumber=1,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>],"175 + " Column[name=foreign_table,columnNumber=2,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>],"176 + " Column[name=foreign_column,columnNumber=3,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>]}",169 "{MutableColumn[name=primary_table,columnNumber=0,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>]," 170 + "MutableColumn[name=primary_column,columnNumber=1,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>]," 171 + "MutableColumn[name=foreign_table,columnNumber=2,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>]," 172 + "MutableColumn[name=foreign_column,columnNumber=3,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>]}", 177 173 ArrayUtils.toString(relationshipsTable.getColumns())); 178 174 -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/QuerySplitterTest.java
r886 r887 21 21 22 22 import org.apache.commons.lang.ArrayUtils; 23 import org.eobjects.metamodel.DataContext;24 import org.eobjects.metamodel.JdbcDataContextFactory;25 import org.eobjects.metamodel.QuerySplitter;26 23 import org.eobjects.metamodel.data.DataSet; 27 24 import org.eobjects.metamodel.query.FromItem; … … 128 125 Relationship relationship = relationships[0]; 129 126 assertEquals( 130 " Relationship[primaryTable=PRODUCTS,primaryColumns={PRODUCTCODE},foreignTable=ORDERFACT,foreignColumns={PRODUCTCODE}]",127 "ImmutableRelationship[primaryTable=PRODUCTS,primaryColumns={PRODUCTCODE},foreignTable=ORDERFACT,foreignColumns={PRODUCTCODE}]", 131 128 relationship.toString()); 132 129 -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/SqliteTest.java
r886 r887 21 21 import java.util.List; 22 22 23 import junit.framework.TestCase; 24 23 25 import org.apache.commons.lang.ArrayUtils; 24 import org.eobjects.metamodel.DataContext;25 import org.eobjects.metamodel.JdbcDataContextFactory;26 26 import org.eobjects.metamodel.query.OperatorType; 27 27 import org.eobjects.metamodel.query.Query; … … 29 29 import org.eobjects.metamodel.schema.Schema; 30 30 import org.eobjects.metamodel.schema.Table; 31 32 33 import junit.framework.TestCase;34 31 35 32 /** -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/XmlDataContextStrategyTest.java
r886 r887 27 27 28 28 import org.apache.commons.lang.ArrayUtils; 29 import org.eobjects.metamodel.DataContext;30 import org.eobjects.metamodel.IDataContextStrategy;31 import org.eobjects.metamodel.XmlDataContextStrategy;32 29 import org.eobjects.metamodel.data.DataSet; 33 30 import org.eobjects.metamodel.query.FromItem; … … 40 37 import org.w3c.dom.Element; 41 38 42 43 39 public class XmlDataContextStrategyTest extends MetaModelTestCase { 44 40 … … 46 42 // Retrieve the eobjects.org news rss 47 43 URL url = new URL("http://eobjects.org/trac/blog?format=rss"); 48 44 49 45 try { 50 XmlDataContextStrategy strategy = new XmlDataContextStrategy(url, true); 46 XmlDataContextStrategy strategy = new XmlDataContextStrategy(url, 47 true); 51 48 DataContext dataContext = new DataContext(strategy); 52 49 53 50 Schema schema = dataContext.getDefaultSchema(); 54 51 assertEquals("/blog?format=rss", schema.getName()); 55 52 56 53 assertEquals( 57 54 "{rss,channel_title,channel_link,channel_description,channel_language," 58 + "channel_generator,channel_image_title,channel_image_url,"59 + "channel_image_link,channel_item,channel_item_guid,channel_item_category}",55 + "channel_generator,channel_image_title,channel_image_url," 56 + "channel_image_link,channel_item,channel_item_guid,channel_item_category}", 60 57 ArrayUtils.toString(schema.getTableNames())); 61 58 } catch (IllegalArgumentException e) { … … 76 73 77 74 Schema schema = strategy.getSchemaByName("xml_input_eobjects.xml"); 78 assertEquals("Schema[name=xml_input_eobjects.xml]", schema.toString()); 75 assertEquals("MutableSchema[name=xml_input_eobjects.xml]", schema 76 .toString()); 79 77 80 78 Table[] tables = schema.getTables(); 81 79 assertEquals(5, schema.getTableCount()); 82 80 assertEquals( 83 "{ Table[name=eobjects.dk,type=TABLE,remarks=<null>],"84 + " Table[name=contributors_person,type=TABLE,remarks=<null>],"85 + " Table[name=contributors_person_name,type=TABLE,remarks=<null>],"86 + " Table[name=contributors_person_address,type=TABLE,remarks=<null>],"87 + " Table[name=projects_project,type=TABLE,remarks=<null>]}",81 "{MutableTable[name=eobjects.org,type=TABLE,remarks=<null>]," 82 + "MutableTable[name=contributors_person,type=TABLE,remarks=<null>]," 83 + "MutableTable[name=contributors_person_name,type=TABLE,remarks=<null>]," 84 + "MutableTable[name=contributors_person_address,type=TABLE,remarks=<null>]," 85 + "MutableTable[name=projects_project,type=TABLE,remarks=<null>]}", 88 86 ArrayUtils.toString(tables)); 89 87 90 Table table = schema.getTableByName("eobjects. dk");88 Table table = schema.getTableByName("eobjects.org"); 91 89 assertEquals(2, table.getColumnCount()); 92 90 assertEquals( 93 "{ Column[name=id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>],"94 + " Column[name=website,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Attribute,columnSize=<null>]}",91 "{MutableColumn[name=eobjects.org_mdbeans_surrogate_id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]," 92 + "MutableColumn[name=website,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Attribute,columnSize=<null>]}", 95 93 ArrayUtils.toString(table.getColumns())); 96 94 … … 98 96 assertEquals(1, table.getColumnCount()); 99 97 assertEquals( 100 "{ Column[name=id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]}",98 "{MutableColumn[name=contributors_person_mdbeans_surrogate_id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]}", 101 99 ArrayUtils.toString(table.getColumns())); 102 100 … … 104 102 assertEquals(3, table.getColumnCount()); 105 103 assertEquals( 106 "{Column[name=id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]," 107 + "Column[name=contributors_person_id,columnNumber=1,type=INTEGER,nullable=false,indexed=false,nativeType=Auto-generated foreign key,columnSize=<null>]," 108 + "Column[name=name,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]}", 109 ArrayUtils.toString(table.getColumns())); 110 assertEquals( 111 "{Relationship[primaryTable=contributors_person,primaryColumns={id}," 112 + "foreignTable=contributors_person_name,foreignColumns={contributors_person_id}]}", 104 "{MutableColumn[name=contributors_person_name_mdbeans_surrogate_id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]," 105 + "MutableColumn[name=contributors_person_id,columnNumber=1,type=INTEGER,nullable=false,indexed=false,nativeType=Auto-generated foreign key,columnSize=<null>]," 106 + "MutableColumn[name=name,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]}", 107 ArrayUtils.toString(table.getColumns())); 108 assertEquals( 109 "{ImmutableRelationship[primaryTable=contributors_person,primaryColumns={contributors_person_mdbeans_surrogate_id},foreignTable=contributors_person_name,foreignColumns={contributors_person_id}]}", 113 110 ArrayUtils.toString(table.getRelationships())); 114 111 … … 116 113 assertEquals(3, table.getColumnCount()); 117 114 assertEquals( 118 "{ Column[name=id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>],"119 + " Column[name=contributors_person_id,columnNumber=1,type=INTEGER,nullable=false,indexed=false,nativeType=Auto-generated foreign key,columnSize=<null>],"120 + " Column[name=address,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]}",121 ArrayUtils.toString(table.getColumns())); 122 assertEquals( 123 "{ Relationship[primaryTable=contributors_person,primaryColumns={id},"115 "{MutableColumn[name=contributors_person_address_mdbeans_surrogate_id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]," 116 + "MutableColumn[name=contributors_person_id,columnNumber=1,type=INTEGER,nullable=false,indexed=false,nativeType=Auto-generated foreign key,columnSize=<null>]," 117 + "MutableColumn[name=address,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]}", 118 ArrayUtils.toString(table.getColumns())); 119 assertEquals( 120 "{ImmutableRelationship[primaryTable=contributors_person,primaryColumns={contributors_person_mdbeans_surrogate_id}," 124 121 + "foreignTable=contributors_person_address,foreignColumns={contributors_person_id}]}", 125 122 ArrayUtils.toString(table.getRelationships())); … … 128 125 assertEquals(3, table.getColumnCount()); 129 126 assertEquals( 130 "{ Column[name=id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>],"131 + " Column[name=project,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>],"132 + " Column[name=name,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Attribute,columnSize=<null>]}",127 "{MutableColumn[name=projects_project_mdbeans_surrogate_id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]," 128 + "MutableColumn[name=project,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]," 129 + "MutableColumn[name=name,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Attribute,columnSize=<null>]}", 133 130 ArrayUtils.toString(table.getColumns())); 134 131 … … 137 134 assertEquals(2, table.getColumnCount()); 138 135 assertEquals( 139 "{ Column[name=id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>],"140 + " Column[name=name,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]}",136 "{MutableColumn[name=contributors_person_mdbeans_surrogate_id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]," 137 + "MutableColumn[name=name,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]}", 141 138 ArrayUtils.toString(table.getColumns())); 142 139 } … … 150 147 Query q = new Query().select(table.getColumns()).from(table, "p"); 151 148 assertEquals( 152 "SELECT p. id, p.project, p.name FROM xml_input_eobjects.xml.projects_project p",149 "SELECT p.projects_project_mdbeans_surrogate_id, p.project, p.name FROM xml_input_eobjects.xml.projects_project p", 153 150 q.toString()); 154 151 DataSet data = dc.executeQuery(q); … … 177 174 178 175 assertEquals( 179 "SELECT contributors_person. id, contributors_person_address.id, "176 "SELECT contributors_person.contributors_person_mdbeans_surrogate_id, contributors_person_address.contributors_person_address_mdbeans_surrogate_id, " 180 177 + "contributors_person_address.contributors_person_id, contributors_person_address.address " 181 178 + "FROM xml_input_eobjects.xml.contributors_person INNER JOIN xml_input_eobjects.xml.contributors_person_address " 182 + "ON contributors_person. id = contributors_person_address.contributors_person_id",179 + "ON contributors_person.contributors_person_mdbeans_surrogate_id = contributors_person_address.contributors_person_id", 183 180 q.toString()); 184 181 … … 227 224 "foobarSchema", document, true); 228 225 Schema schema = strategy.getSchemaByName("foobarSchema"); 229 assertEquals(" Schema[name=foobarSchema]", schema.toString());230 assertEquals("{ Table[name=child,type=TABLE,remarks=<null>]}",226 assertEquals("MutableSchema[name=foobarSchema]", schema.toString()); 227 assertEquals("{MutableTable[name=child,type=TABLE,remarks=<null>]}", 231 228 ArrayUtils.toString(schema.getTables())); 232 229 Table table = schema.getTables()[0]; 233 230 assertEquals( 234 "{ Column[name=id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>],"235 + " Column[name=child,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]}",231 "{MutableColumn[name=child_mdbeans_surrogate_id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]," 232 + "MutableColumn[name=child,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]}", 236 233 ArrayUtils.toString(table.getColumns())); 237 234 } … … 244 241 Schema schema = dc.getDefaultSchema(); 245 242 assertEquals( 246 "{ Table[name=dependency,type=TABLE,remarks=<null>],"247 + " Table[name=dependency_groupId,type=TABLE,remarks=<null>],"248 + " Table[name=dependency_artifactId,type=TABLE,remarks=<null>],"249 + " Table[name=dependency_version,type=TABLE,remarks=<null>],"250 + " Table[name=dependency_scope,type=TABLE,remarks=<null>]}",243 "{MutableTable[name=dependency,type=TABLE,remarks=<null>]," 244 + "MutableTable[name=dependency_groupId,type=TABLE,remarks=<null>]," 245 + "MutableTable[name=dependency_artifactId,type=TABLE,remarks=<null>]," 246 + "MutableTable[name=dependency_version,type=TABLE,remarks=<null>]," 247 + "MutableTable[name=dependency_scope,type=TABLE,remarks=<null>]}", 251 248 ArrayUtils.toString(schema.getTables())); 252 249 Table dependencyTable = schema.getTableByName("dependency"); 253 250 assertEquals( 254 "{ Column[name=id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]}",251 "{MutableColumn[name=dependency_mdbeans_surrogate_id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]}", 255 252 ArrayUtils.toString(dependencyTable.getColumns())); 256 253 List<Object[]> dependencyData = strategy.materializeMainSchemaTable( … … 264 261 .getRelationships()[0]; 265 262 assertEquals( 266 " Relationship[primaryTable=dependency,primaryColumns={id},foreignTable=dependency_groupId,foreignColumns={dependency_id}]",263 "ImmutableRelationship[primaryTable=dependency,primaryColumns={dependency_mdbeans_surrogate_id},foreignTable=dependency_groupId,foreignColumns={dependency_id}]", 267 264 relationship.toString()); 268 265 … … 270 267 271 268 assertEquals( 272 "{ Table[name=dependency,type=TABLE,remarks=<null>],"273 + " Table[name=dependency_artifactId,type=TABLE,remarks=<null>],"274 + " Table[name=dependency_version,type=TABLE,remarks=<null>],"275 + " Table[name=dependency_scope,type=TABLE,remarks=<null>]}",269 "{MutableTable[name=dependency,type=TABLE,remarks=<null>]," 270 + "MutableTable[name=dependency_artifactId,type=TABLE,remarks=<null>]," 271 + "MutableTable[name=dependency_version,type=TABLE,remarks=<null>]," 272 + "MutableTable[name=dependency_scope,type=TABLE,remarks=<null>]}", 276 273 ArrayUtils.toString(schema.getTables())); 277 274 278 275 assertEquals( 279 "{ Column[name=id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>],"280 + " Column[name=groupId,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]}",276 "{MutableColumn[name=dependency_mdbeans_surrogate_id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]," 277 + "MutableColumn[name=groupId,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]}", 281 278 ArrayUtils.toString(dependencyTable.getColumns())); 282 279 … … 290 287 strategy.autoFlattenTables(); 291 288 292 assertEquals("{Table[name=dependency,type=TABLE,remarks=<null>]}", 289 assertEquals( 290 "{MutableTable[name=dependency,type=TABLE,remarks=<null>]}", 293 291 ArrayUtils.toString(schema.getTables())); 294 292 assertEquals( 295 "{ Column[name=id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>],"296 + " Column[name=groupId,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>],"297 + " Column[name=artifactId,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>],"298 + " Column[name=version,columnNumber=3,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>],"299 + " Column[name=scope,columnNumber=4,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]}",293 "{MutableColumn[name=dependency_mdbeans_surrogate_id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]," 294 + "MutableColumn[name=groupId,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]," 295 + "MutableColumn[name=artifactId,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]," 296 + "MutableColumn[name=version,columnNumber=3,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]," 297 + "MutableColumn[name=scope,columnNumber=4,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]}", 300 298 ArrayUtils.toString(dependencyTable.getColumns())); 301 299 … … 317 315 Table table = schema.getTableByName("dependencies_dependency"); 318 316 assertEquals( 319 "{ Column[name=id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>],"320 + " Column[name=groupId,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>],"321 + " Column[name=artifactId,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>],"322 + " Column[name=version,columnNumber=3,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>],"323 + " Column[name=scope,columnNumber=4,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]}",317 "{MutableColumn[name=dependencies_dependency_mdbeans_surrogate_id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]," 318 + "MutableColumn[name=groupId,columnNumber=1,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]," 319 + "MutableColumn[name=artifactId,columnNumber=2,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]," 320 + "MutableColumn[name=version,columnNumber=3,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]," 321 + "MutableColumn[name=scope,columnNumber=4,type=VARCHAR,nullable=true,indexed=false,nativeType=XML Text,columnSize=<null>]}", 324 322 ArrayUtils.toString(table.getColumns())); 325 323 … … 327 325 328 326 assertEquals( 329 "{ Column[name=id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>],"330 + " Column[name=groupId,columnNumber=1,type=VARCHAR,nullable=false,indexed=false,nativeType=Text,columnSize=<null>],"331 + " Column[name=artifactId,columnNumber=2,type=VARCHAR,nullable=false,indexed=false,nativeType=Text,columnSize=<null>],"332 + " Column[name=version,columnNumber=3,type=VARCHAR,nullable=false,indexed=false,nativeType=Text,columnSize=<null>],"333 + " Column[name=scope,columnNumber=4,type=VARCHAR,nullable=true,indexed=false,nativeType=Text,columnSize=<null>]}",327 "{MutableColumn[name=dependencies_dependency_mdbeans_surrogate_id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]," 328 + "MutableColumn[name=groupId,columnNumber=1,type=VARCHAR,nullable=false,indexed=false,nativeType=Text,columnSize=<null>]," 329 + "MutableColumn[name=artifactId,columnNumber=2,type=VARCHAR,nullable=false,indexed=false,nativeType=Text,columnSize=<null>]," 330 + "MutableColumn[name=version,columnNumber=3,type=VARCHAR,nullable=false,indexed=false,nativeType=Text,columnSize=<null>]," 331 + "MutableColumn[name=scope,columnNumber=4,type=VARCHAR,nullable=true,indexed=false,nativeType=Text,columnSize=<null>]}", 334 332 ArrayUtils.toString(table.getColumns())); 335 333 336 334 table = schema.getTableByName("inceptionYear"); 337 335 assertEquals( 338 "{ Column[name=id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>],"339 + " Column[name=inceptionYear,columnNumber=1,type=INTEGER,nullable=false,indexed=false,nativeType=Text transformed to integer,columnSize=<null>]}",336 "{MutableColumn[name=inceptionYear_mdbeans_surrogate_id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=Auto-generated primary key,columnSize=<null>]," 337 + "MutableColumn[name=inceptionYear,columnNumber=1,type=INTEGER,nullable=false,indexed=false,nativeType=Text transformed to integer,columnSize=<null>]}", 340 338 ArrayUtils.toString(table.getColumns())); 341 339 … … 362 360 ArrayUtils.toString(schema.getTableNames())); 363 361 assertEquals( 364 "{ id,OSType,lastStateChange,name,uuid,enabled,enabled,RAMSize,enabled,enabled,mode,value,"362 "{Machine_mdbeans_surrogate_id,OSType,lastStateChange,name,uuid,enabled,enabled,RAMSize,enabled,enabled,mode,value," 365 363 + "enabled,type,enabled,mode}", ArrayUtils 366 364 .toString(schema.getTableByName("Machine") -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/data/RowFilterDataSetStrategyTest.java
r886 r887 22 22 import org.eobjects.metamodel.JdbcDataContextFactory; 23 23 import org.eobjects.metamodel.MetaModelTestCase; 24 import org.eobjects.metamodel.data.DataSet;25 import org.eobjects.metamodel.data.IRowFilter;26 import org.eobjects.metamodel.data.Row;27 import org.eobjects.metamodel.data.RowFilterDataSetStrategyWrapper;28 24 import org.eobjects.metamodel.query.Query; 29 25 import org.eobjects.metamodel.schema.Table; -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/dbase/DbaseDataContextStrategyMeterTest.java
r886 r887 2 2 3 3 import java.util.Date; 4 5 import junit.framework.TestCase; 4 6 5 7 import org.apache.commons.lang.ArrayUtils; … … 8 10 import org.eobjects.metamodel.data.DataSet; 9 11 import org.eobjects.metamodel.data.Row; 10 import org.eobjects.metamodel.dbase.DbaseDataContextStrategy;11 12 import org.eobjects.metamodel.query.Query; 12 13 import org.eobjects.metamodel.query.SelectItem; … … 15 16 import org.eobjects.metamodel.schema.Schema; 16 17 import org.eobjects.metamodel.schema.Table; 17 18 import junit.framework.TestCase;19 18 20 19 public class DbaseDataContextStrategyMeterTest extends TestCase { … … 28 27 29 28 Schema schema = dc.getSchemaByName("METER.DBF"); 30 assertEquals("{ Table[name=METER,type=TABLE,remarks=<null>]}",29 assertEquals("{MutableTable[name=METER,type=TABLE,remarks=<null>]}", 31 30 ArrayUtils.toString(schema.getTables())); 32 31 … … 38 37 Column column = table.getColumnByName("F_TYPE"); 39 38 assertEquals( 40 " Column[name=F_TYPE,columnNumber=11,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=1]",39 "MutableColumn[name=F_TYPE,columnNumber=11,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=1]", 41 40 column.toString()); 42 41 43 42 column = table.getColumnByName("V1"); 44 43 assertEquals( 45 " Column[name=V1,columnNumber=26,type=DOUBLE,nullable=<null>,indexed=false,nativeType=N,columnSize=12]",44 "MutableColumn[name=V1,columnNumber=26,type=DOUBLE,nullable=<null>,indexed=false,nativeType=N,columnSize=12]", 46 45 column.toString()); 47 46 48 47 column = table.getColumnByName("V12"); 49 48 assertEquals( 50 " Column[name=V12,columnNumber=37,type=DOUBLE,nullable=<null>,indexed=false,nativeType=N,columnSize=12]",49 "MutableColumn[name=V12,columnNumber=37,type=DOUBLE,nullable=<null>,indexed=false,nativeType=N,columnSize=12]", 51 50 column.toString()); 52 51 53 52 column = table.getColumnByName("A_NAME"); 54 53 assertEquals( 55 " Column[name=A_NAME,columnNumber=25,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22]",54 "MutableColumn[name=A_NAME,columnNumber=25,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22]", 56 55 column.toString()); 57 56 } -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/dbase/DbaseDataContextStrategyReportTest.java
r886 r887 7 7 import org.eobjects.metamodel.data.DataSet; 8 8 import org.eobjects.metamodel.data.Row; 9 import org.eobjects.metamodel.dbase.DbaseDataContextStrategy;10 9 import org.eobjects.metamodel.query.Query; 11 10 import org.eobjects.metamodel.query.SelectItem; … … 14 13 import org.eobjects.metamodel.schema.Schema; 15 14 import org.eobjects.metamodel.schema.Table; 16 17 15 18 16 public class DbaseDataContextStrategyReportTest extends TestCase { … … 26 24 27 25 Schema schema = dc.getSchemaByName("report.dbf"); 28 assertEquals("{ Table[name=report,type=TABLE,remarks=<null>]}",26 assertEquals("{MutableTable[name=report,type=TABLE,remarks=<null>]}", 29 27 ArrayUtils.toString(schema.getTables())); 30 28 … … 39 37 columns = table.getColumnsOfType(ColumnType.CHAR); 40 38 assertEquals( 41 "{ Column[name=R_INST,columnNumber=0,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=4],Column[name=R_NAME,columnNumber=1,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22],Column[name=R_TITLE,columnNumber=2,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=255],Column[name=R_SUBTIT,columnNumber=3,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=64],Column[name=CUS_CORP,columnNumber=4,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],Column[name=CUS_NAME,columnNumber=5,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],Column[name=CUS_TITL,columnNumber=6,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],Column[name=CUS_SALU,columnNumber=7,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],Column[name=CUS_AD1,columnNumber=8,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=33],Column[name=CUS_AD2,columnNumber=9,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=33],Column[name=CUS_AD3,columnNumber=10,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=33],Column[name=CUS_CTY,columnNumber=11,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22],Column[name=CUS_ST,columnNumber=12,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22],Column[name=CUS_COU,columnNumber=13,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22],Column[name=CUS_ZIP,columnNumber=14,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=10],Column[name=CUS_PHON,columnNumber=15,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=14],Column[name=CUS_FAX,columnNumber=16,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=14],Column[name=CUS_OPHN,columnNumber=17,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=14],Column[name=CUS_EMAI,columnNumber=18,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],Column[name=AUT_CORP,columnNumber=19,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],Column[name=AUT_NAME,columnNumber=20,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],Column[name=AUT_TITL,columnNumber=21,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],Column[name=AUT_SALU,columnNumber=22,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],Column[name=AUT_AD1,columnNumber=23,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=33],Column[name=AUT_AD2,columnNumber=24,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=33],Column[name=AUT_AD3,columnNumber=25,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=33],Column[name=AUT_CTY,columnNumber=26,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22],Column[name=AUT_ST,columnNumber=27,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22],Column[name=AUT_COU,columnNumber=28,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22],Column[name=AUT_ZIP,columnNumber=29,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=10],Column[name=AUT_PHON,columnNumber=30,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=14],Column[name=AUT_FAX,columnNumber=31,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=14],Column[name=AUT_OPHN,columnNumber=32,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=14],Column[name=AUT_EMAI,columnNumber=33,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55]}",39 "{MutableColumn[name=R_INST,columnNumber=0,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=4],MutableColumn[name=R_NAME,columnNumber=1,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22],MutableColumn[name=R_TITLE,columnNumber=2,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=255],MutableColumn[name=R_SUBTIT,columnNumber=3,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=64],MutableColumn[name=CUS_CORP,columnNumber=4,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],MutableColumn[name=CUS_NAME,columnNumber=5,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],MutableColumn[name=CUS_TITL,columnNumber=6,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],MutableColumn[name=CUS_SALU,columnNumber=7,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],MutableColumn[name=CUS_AD1,columnNumber=8,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=33],MutableColumn[name=CUS_AD2,columnNumber=9,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=33],MutableColumn[name=CUS_AD3,columnNumber=10,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=33],MutableColumn[name=CUS_CTY,columnNumber=11,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22],MutableColumn[name=CUS_ST,columnNumber=12,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22],MutableColumn[name=CUS_COU,columnNumber=13,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22],MutableColumn[name=CUS_ZIP,columnNumber=14,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=10],MutableColumn[name=CUS_PHON,columnNumber=15,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=14],MutableColumn[name=CUS_FAX,columnNumber=16,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=14],MutableColumn[name=CUS_OPHN,columnNumber=17,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=14],MutableColumn[name=CUS_EMAI,columnNumber=18,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],MutableColumn[name=AUT_CORP,columnNumber=19,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],MutableColumn[name=AUT_NAME,columnNumber=20,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],MutableColumn[name=AUT_TITL,columnNumber=21,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],MutableColumn[name=AUT_SALU,columnNumber=22,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55],MutableColumn[name=AUT_AD1,columnNumber=23,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=33],MutableColumn[name=AUT_AD2,columnNumber=24,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=33],MutableColumn[name=AUT_AD3,columnNumber=25,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=33],MutableColumn[name=AUT_CTY,columnNumber=26,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22],MutableColumn[name=AUT_ST,columnNumber=27,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22],MutableColumn[name=AUT_COU,columnNumber=28,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=22],MutableColumn[name=AUT_ZIP,columnNumber=29,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=10],MutableColumn[name=AUT_PHON,columnNumber=30,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=14],MutableColumn[name=AUT_FAX,columnNumber=31,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=14],MutableColumn[name=AUT_OPHN,columnNumber=32,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=14],MutableColumn[name=AUT_EMAI,columnNumber=33,type=CHAR,nullable=<null>,indexed=false,nativeType=C,columnSize=55]}", 42 40 ArrayUtils.toString(columns)); 43 41 assertEquals(columns.length, table.getColumnCount()); -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/detect/ColumnTypeTransformerTest.java
r886 r887 18 18 19 19 import org.eobjects.metamodel.detect.ColumnTypeTransformer; 20 import org.eobjects.metamodel.schema. Column;20 import org.eobjects.metamodel.schema.MutableColumn; 21 21 import org.eobjects.metamodel.schema.ColumnType; 22 22 … … 26 26 27 27 public void testIntegerAndDouble() throws Exception { 28 Column column = newColumn("foobar", ColumnType.VARCHAR);28 MutableColumn column = new MutableColumn("foobar", ColumnType.VARCHAR); 29 29 ColumnTypeTransformer transformer = new ColumnTypeTransformer(column); 30 30 transformer.registerValue("20"); … … 53 53 54 54 public void testBoolean() throws Exception { 55 Column column = newColumn("foobar", ColumnType.VARCHAR);55 MutableColumn column = new MutableColumn("foobar", ColumnType.VARCHAR); 56 56 ColumnTypeTransformer transformer = new ColumnTypeTransformer(column); 57 57 transformer.registerValue("1"); … … 77 77 78 78 public void testDate() throws Exception { 79 Column column = newColumn("foobar", ColumnType.VARCHAR);79 MutableColumn column = new MutableColumn("foobar", ColumnType.VARCHAR); 80 80 ColumnTypeTransformer transformer = new ColumnTypeTransformer(column); 81 81 transformer.registerValue("2008-11-04"); … … 88 88 89 89 public void testTime() throws Exception { 90 Column column = newColumn("foobar", ColumnType.VARCHAR);90 MutableColumn column = new MutableColumn("foobar", ColumnType.VARCHAR); 91 91 ColumnTypeTransformer transformer = new ColumnTypeTransformer(column); 92 92 transformer.registerValue("02:20"); -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/dialects/AbstractQueryRewriterTest.java
r886 r887 24 24 import org.eobjects.metamodel.query.Query; 25 25 import org.eobjects.metamodel.query.SelectItem; 26 import org.eobjects.metamodel.schema. Column;27 import org.eobjects.metamodel.schema. Table;26 import org.eobjects.metamodel.schema.MutableColumn; 27 import org.eobjects.metamodel.schema.MutableTable; 28 28 29 29 import junit.framework.TestCase; … … 32 32 33 33 public void testRewriteQuery() throws Exception { 34 Query q = new Query().selectCount().from(new Table("foobar")).where(35 new Column("foob"), OperatorType.EQUALS_TO, null).groupBy(36 new Column("col1")).having(37 new FilterItem(new SelectItem(new Column("col2")),34 Query q = new Query().selectCount().from(new MutableTable("foobar")).where( 35 new MutableColumn("foob"), OperatorType.EQUALS_TO, null).groupBy( 36 new MutableColumn("col1")).having( 37 new FilterItem(new SelectItem(new MutableColumn("col2")), 38 38 OperatorType.HIGHER_THAN, 40)).orderBy( 39 new Column("bla"));39 new MutableColumn("bla")); 40 40 assertEquals( 41 41 "SELECT COUNT(*) FROM foobar WHERE foob IS NULL GROUP BY col1 HAVING col2 > 40 ORDER BY bla ASC", -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/dialects/MysqlQueryRewriterTest.java
r886 r887 20 20 import org.eobjects.metamodel.dialects.MysqlQueryRewriter; 21 21 import org.eobjects.metamodel.query.Query; 22 import org.eobjects.metamodel.schema. Column;23 import org.eobjects.metamodel.schema. Table;22 import org.eobjects.metamodel.schema.MutableColumn; 23 import org.eobjects.metamodel.schema.MutableTable; 24 24 25 25 … … 27 27 28 28 public void testRewriteLimit() throws Exception { 29 Query q = new Query().from(new Table("foo")).select(newColumn("bar"))29 Query q = new Query().from(new MutableTable("foo")).select(new MutableColumn("bar")) 30 30 .setMaxRows(25); 31 31 String queryString = new MysqlQueryRewriter().rewriteQuery(null, q); -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/dialects/PostgresqlQueryRewriterTest.java
r886 r887 20 20 import org.eobjects.metamodel.dialects.PostgresqlQueryRewriter; 21 21 import org.eobjects.metamodel.query.Query; 22 import org.eobjects.metamodel.schema. Column;23 import org.eobjects.metamodel.schema. Schema;24 import org.eobjects.metamodel.schema. Table;22 import org.eobjects.metamodel.schema.MutableColumn; 23 import org.eobjects.metamodel.schema.MutableSchema; 24 import org.eobjects.metamodel.schema.MutableTable; 25 25 26 26 … … 28 28 29 29 public void testRewriteLimit() throws Exception { 30 Table table = newTable("foo");31 table.setSchema(new Schema("MY_SCHEMA"));30 MutableTable table = new MutableTable("foo"); 31 table.setSchema(new MutableSchema("MY_SCHEMA")); 32 32 table.setQuote("\""); 33 Column column = newColumn("bar");33 MutableColumn column = new MutableColumn("bar"); 34 34 column.setQuote("\""); 35 35 column.setTable(table); -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/dialects/SQLServerQueryRewriterTest.java
r886 r887 4 4 import org.eobjects.metamodel.dialects.SQLServerQueryRewriter; 5 5 import org.eobjects.metamodel.query.Query; 6 import org.eobjects.metamodel.schema. Column;7 import org.eobjects.metamodel.schema. Schema;8 import org.eobjects.metamodel.schema. Table;6 import org.eobjects.metamodel.schema.MutableColumn; 7 import org.eobjects.metamodel.schema.MutableSchema; 8 import org.eobjects.metamodel.schema.MutableTable; 9 9 10 10 import junit.framework.TestCase; … … 13 13 14 14 public void testAliasing() throws Exception { 15 Table table = newTable("foo");16 table.setSchema(new Schema("MY_SCHEMA"));15 MutableTable table = new MutableTable("foo"); 16 table.setSchema(new MutableSchema("MY_SCHEMA")); 17 17 table.setQuote("\""); 18 Column column = newColumn("bar");18 MutableColumn column = new MutableColumn("bar"); 19 19 column.setQuote("\""); 20 20 column.setTable(table); -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/query/FilterItemTest.java
r886 r887 24 24 import org.eobjects.metamodel.query.Query; 25 25 import org.eobjects.metamodel.query.SelectItem; 26 import org.eobjects.metamodel.schema. Column;26 import org.eobjects.metamodel.schema.MutableColumn; 27 27 import org.eobjects.metamodel.schema.ColumnType; 28 28 import org.joda.time.DateTime; … … 46 46 } 47 47 48 Column col1 = newColumn("Col1", ColumnType.VARCHAR);48 MutableColumn col1 = new MutableColumn("Col1", ColumnType.VARCHAR); 49 49 assertEquals("SELECT Col1 WHERE foobar", new Query().select(col1) 50 50 .where(filterItem).toString()); … … 55 55 56 56 public void testToSqlWhereItem() throws Exception { 57 Column col1 = newColumn("Col1", ColumnType.VARCHAR);57 MutableColumn col1 = new MutableColumn("Col1", ColumnType.VARCHAR); 58 58 SelectItem selectItem = new SelectItem(col1); 59 59 FilterItem c = new FilterItem(selectItem, OperatorType.DIFFERENT_FROM, … … 101 101 assertEquals("Col1 = 1", c.toString()); 102 102 103 Column timeColumn = newColumn("TimeCol", ColumnType.TIME);103 MutableColumn timeColumn = new MutableColumn("TimeCol", ColumnType.TIME); 104 104 selectItem = new SelectItem(timeColumn); 105 105 c = new FilterItem(selectItem, OperatorType.HIGHER_THAN, new LocalTime( … … 107 107 assertEquals("TimeCol > TIME '02:30:05.000000'", c.toString()); 108 108 109 Column dateColumn = newColumn("DateCol", ColumnType.DATE);109 MutableColumn dateColumn = new MutableColumn("DateCol", ColumnType.DATE); 110 110 c = new FilterItem(new SelectItem(dateColumn), 111 111 OperatorType.HIGHER_THAN, new LocalDate(2000, 12, 31)); 112 112 assertEquals("DateCol > DATE '2000-12-31'", c.toString()); 113 113 114 Column timestampColumn = newColumn("TimestampCol",114 MutableColumn timestampColumn = new MutableColumn("TimestampCol", 115 115 ColumnType.TIMESTAMP); 116 116 c = new FilterItem(new SelectItem(timestampColumn), … … 126 126 127 127 public void testEvaluateStrings() throws Exception { 128 Column col1 = newColumn("Col1", ColumnType.VARCHAR);129 Column col2 = newColumn("Col2", ColumnType.VARCHAR);128 MutableColumn col1 = new MutableColumn("Col1", ColumnType.VARCHAR); 129 MutableColumn col2 = new MutableColumn("Col2", ColumnType.VARCHAR); 130 130 SelectItem s1 = new SelectItem(col1); 131 131 SelectItem s2 = new SelectItem(col2); … … 158 158 159 159 public void testEvaluateNull() throws Exception { 160 Column col1 = newColumn("Col1", ColumnType.INTEGER);161 Column col2 = newColumn("Col2", ColumnType.DECIMAL);160 MutableColumn col1 = new MutableColumn("Col1", ColumnType.INTEGER); 161 MutableColumn col2 = new MutableColumn("Col2", ColumnType.DECIMAL); 162 162 SelectItem s1 = new SelectItem(col1); 163 163 SelectItem s2 = new SelectItem(col2); … … 202 202 203 203 public void testEvaluateDates() throws Exception { 204 Column col1 = newColumn("Col1", ColumnType.DATE);204 MutableColumn col1 = new MutableColumn("Col1", ColumnType.DATE); 205 205 SelectItem s1 = new SelectItem(col1); 206 206 SelectItem[] selectItems = new SelectItem[] { s1 }; … … 222 222 223 223 public void testEvaluateBooleans() throws Exception { 224 Column col1 = newColumn("Col1", ColumnType.BIT);224 MutableColumn col1 = new MutableColumn("Col1", ColumnType.BIT); 225 225 SelectItem s1 = new SelectItem(col1); 226 226 SelectItem[] selectItems = new SelectItem[] { s1 }; … … 254 254 */ 255 255 public void testEqualsAndHashCode() throws Exception { 256 Column col1 = newColumn("Col1", ColumnType.BIT);256 MutableColumn col1 = new MutableColumn("Col1", ColumnType.BIT); 257 257 258 258 FilterItem c1 = new FilterItem(new SelectItem(col1), … … 268 268 assertFalse(c1.hashCode() == c2.hashCode()); 269 269 270 Column col2 = newColumn("Col2", ColumnType.VARBINARY);270 MutableColumn col2 = new MutableColumn("Col2", ColumnType.VARBINARY); 271 271 c2 = new FilterItem(new SelectItem(col2), OperatorType.EQUALS_TO, true); 272 272 assertFalse(c1.equals(c2)); … … 275 275 276 276 public void testOrFilterItem() throws Exception { 277 Column col1 = newColumn("Col1", ColumnType.VARCHAR);277 MutableColumn col1 = new MutableColumn("Col1", ColumnType.VARCHAR); 278 278 279 279 SelectItem s1 = new SelectItem(col1); -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/query/FromClauseTest.java
r886 r887 19 19 import org.eobjects.metamodel.MetaModelTestCase; 20 20 import org.eobjects.metamodel.query.Query; 21 import org.eobjects.metamodel.schema.Table; 21 22 import org.eobjects.metamodel.schema.Schema; 22 import org.eobjects.metamodel.schema.Table;23 23 24 24 -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/query/FromItemTest.java
r886 r887 18 18 19 19 import org.eobjects.metamodel.MetaModelTestCase; 20 import org.eobjects.metamodel.query.FromItem;21 import org.eobjects.metamodel.query.JoinType;22 import org.eobjects.metamodel.query.Query;23 import org.eobjects.metamodel.query.SelectItem;24 20 import org.eobjects.metamodel.schema.Column; 25 21 import org.eobjects.metamodel.schema.Relationship; -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/query/QueryTest.java
r886 r887 18 18 19 19 import org.eobjects.metamodel.MetaModelTestCase; 20 import org.eobjects.metamodel.query.FilterItem;21 import org.eobjects.metamodel.query.FromItem;22 import org.eobjects.metamodel.query.FunctionType;23 import org.eobjects.metamodel.query.GroupByItem;24 import org.eobjects.metamodel.query.JoinType;25 import org.eobjects.metamodel.query.OperatorType;26 import org.eobjects.metamodel.query.OrderByItem;27 import org.eobjects.metamodel.query.Query;28 import org.eobjects.metamodel.query.SelectClause;29 import org.eobjects.metamodel.query.SelectItem;30 20 import org.eobjects.metamodel.query.OrderByItem.Direction; 31 21 import org.eobjects.metamodel.schema.Column; -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/query/SelectItemTest.java
r886 r887 24 24 import org.eobjects.metamodel.query.SelectItem; 25 25 import org.eobjects.metamodel.schema.Column; 26 import org.eobjects.metamodel.schema.Table; 26 27 import org.eobjects.metamodel.schema.Schema; 27 import org.eobjects.metamodel.schema.Table;28 29 28 30 29 public class SelectItemTest extends MetaModelTestCase { … … 33 32 34 33 public void testSubQuerySelectItem() throws Exception { 35 Table projectTable = _schema.getTableByName(TABLE_PROJECT);34 Table table = _schema.getTableByName(TABLE_PROJECT); 36 35 Table roleTable = _schema.getTableByName(TABLE_ROLE); 37 36 38 Column projectIdColumn = projectTable37 Column projectIdColumn = table 39 38 .getColumnByName(COLUMN_PROJECT_PROJECT_ID); 40 39 41 FromItem leftSide = new FromItem( projectTable);40 FromItem leftSide = new FromItem(table); 42 41 leftSide.setAlias("a"); 43 42 SelectItem[] leftOn = new SelectItem[] { new SelectItem(projectIdColumn) }; -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/schema/ColumnTest.java
r886 r887 17 17 package org.eobjects.metamodel.schema; 18 18 19 import org.eobjects.metamodel.schema. Column;19 import org.eobjects.metamodel.schema.MutableColumn; 20 20 import org.eobjects.metamodel.schema.ColumnType; 21 import org.eobjects.metamodel.schema. Schema;22 import org.eobjects.metamodel.schema. Table;21 import org.eobjects.metamodel.schema.MutableSchema; 22 import org.eobjects.metamodel.schema.MutableTable; 23 23 24 24 import junit.framework.TestCase; … … 34 34 */ 35 35 public void testEqualsAndHashCode() throws Exception { 36 Column column1 = newColumn("foo");37 Column column2 = newColumn("foo");36 MutableColumn column1 = new MutableColumn("foo"); 37 MutableColumn column2 = new MutableColumn("foo"); 38 38 39 39 assertEquals(column1.hashCode(), column2.hashCode()); 40 40 assertEquals(column1, column2); 41 41 42 column2 = new Column("bar");42 column2 = new MutableColumn("bar"); 43 43 assertFalse(column1.equals(column2)); 44 44 45 column2 = new Column("foo", ColumnType.VARBINARY);45 column2 = new MutableColumn("foo", ColumnType.VARBINARY); 46 46 assertFalse(column1.equals(column2)); 47 47 48 column1 = new Column("foo", ColumnType.VARBINARY);48 column1 = new MutableColumn("foo", ColumnType.VARBINARY); 49 49 assertTrue(column1.equals(column2)); 50 50 } 51 51 52 52 public void testQualifiedLabel() throws Exception { 53 Schema s = newSchema("FOO_SCHEMA");54 Table t = newTable("FOO_TABLE");55 Column c = newColumn("FOO_COLUMN");53 MutableSchema s = new MutableSchema("FOO_SCHEMA"); 54 MutableTable t = new MutableTable("FOO_TABLE"); 55 MutableColumn c = new MutableColumn("FOO_COLUMN"); 56 56 57 57 assertEquals("FOO_COLUMN", c.getQualifiedLabel()); -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/schema/JdbcSchemaTest.java
r886 r887 29 29 import org.eobjects.metamodel.MetaModelTestCase; 30 30 import org.eobjects.metamodel.schema.JdbcSchema; 31 import org.eobjects.metamodel.schema.Schema;32 import org.eobjects.metamodel.schema.Table;33 31 34 32 … … 89 87 90 88 assertEquals( 91 "{ Relationship[primaryTable=PRODUCTS,primaryColumns={PRODUCTCODE},foreignTable=ORDERFACT,foreignColumns={PRODUCTCODE}]}",89 "{ImmutableRelationship[primaryTable=PRODUCTS,primaryColumns={PRODUCTCODE},foreignTable=ORDERFACT,foreignColumns={PRODUCTCODE}]}", 92 90 ArrayUtils.toString(schema.getRelationships())); 93 91 } -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/schema/SchemaModelTest.java
r886 r887 19 19 import org.apache.commons.lang.ArrayUtils; 20 20 import org.eobjects.metamodel.MetaModelTestCase; 21 import org.eobjects.metamodel.schema.Column; 22 import org.eobjects.metamodel.schema.Relationship; 23 import org.eobjects.metamodel.schema.Schema; 24 import org.eobjects.metamodel.schema.Table; 21 import org.eobjects.metamodel.schema.ImmutableRelationship; 25 22 import org.eobjects.metamodel.schema.TableType; 26 27 23 28 24 public class SchemaModelTest extends MetaModelTestCase { … … 31 27 Schema schema = getExampleSchema(); 32 28 assertEquals("MetaModelSchema", schema.getName()); 33 assertEquals(" Schema[name=MetaModelSchema]", schema.toString());29 assertEquals("MutableSchema[name=MetaModelSchema]", schema.toString()); 34 30 assertEquals(5, schema.getRelationships().length); 35 31 … … 73 69 74 70 assertEquals( 75 " Relationship[primaryTable=contributor,primaryColumns={name},foreignTable=project_contributor,foreignColumns={contributor}]",71 "ImmutableRelationship[primaryTable=contributor,primaryColumns={name},foreignTable=project_contributor,foreignColumns={contributor}]", 76 72 projectContributorToContributorRelations[0].toString()); 77 73 78 projectContributorToContributorRelations[0].remove();74 ImmutableRelationship.remove(projectContributorToContributorRelations[0]); 79 75 projectContributorToContributorRelations = projectContributorView 80 76 .getRelationships(contributorTable); … … 86 82 // Get primary keys / Get foreign keys test 87 83 assertEquals( 88 "{ Column[name=contributor_id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=<null>,columnSize=<null>]}",84 "{MutableColumn[name=contributor_id,columnNumber=0,type=INTEGER,nullable=false,indexed=true,nativeType=<null>,columnSize=<null>]}", 89 85 ArrayUtils.toString(contributorTable.getPrimaryKeys())); 90 86 assertEquals("{}", ArrayUtils.toString(contributorTable … … 92 88 93 89 assertEquals( 94 "{ Column[name=name,columnNumber=2,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>]}",90 "{MutableColumn[name=name,columnNumber=2,type=VARCHAR,nullable=false,indexed=false,nativeType=<null>,columnSize=<null>]}", 95 91 ArrayUtils.toString(roleTable.getPrimaryKeys())); 96 92 Column[] foreignKeys = roleTable.getForeignKeys(); -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/schema/SchemaTest.java
r886 r887 17 17 package org.eobjects.metamodel.schema; 18 18 19 import org.eobjects.metamodel.schema. Schema;20 import org.eobjects.metamodel.schema. Table;19 import org.eobjects.metamodel.schema.MutableSchema; 20 import org.eobjects.metamodel.schema.MutableTable; 21 21 22 22 import junit.framework.TestCase; … … 32 32 */ 33 33 public void testEqualsAndHashCode() throws Exception { 34 Schema schema1 = new Schema("foo");35 Schema schema2 = newSchema("foo");34 Schema schema1 = new MutableSchema("foo"); 35 MutableSchema schema2 = new MutableSchema("foo"); 36 36 37 37 assertTrue(schema1.equals(schema2)); 38 38 assertTrue(schema1.hashCode() == schema2.hashCode()); 39 39 40 schema2.addTable(new Table("foo"));40 schema2.addTable(new MutableTable("foo")); 41 41 assertFalse(schema1.equals(schema2)); 42 42 assertFalse(schema1.hashCode() == schema2.hashCode()); 43 43 44 schema2 = new Schema("foo");44 schema2 = new MutableSchema("foo"); 45 45 assertTrue(schema1.equals(schema2)); 46 46 assertTrue(schema1.hashCode() == schema2.hashCode()); … … 48 48 49 49 public void testGetTableByName() throws Exception { 50 Schema s = newSchema("foobar");51 s.addTable(new Table("Foo"));52 s.addTable(new Table("FOO"));53 s.addTable(new Table("bar"));50 MutableSchema s = new MutableSchema("foobar"); 51 s.addTable(new MutableTable("Foo")); 52 s.addTable(new MutableTable("FOO")); 53 s.addTable(new MutableTable("bar")); 54 54 55 55 assertEquals("Foo", s.getTableByName("Foo").getName()); -
MetadataBeans/trunk/src/test/java/org/eobjects/metamodel/schema/TableTest.java
r886 r887 18 18 19 19 import org.apache.commons.lang.ArrayUtils; 20 import org.eobjects.metamodel.schema. Column;21 import org.eobjects.metamodel.schema. Table;20 import org.eobjects.metamodel.schema.MutableColumn; 21 import org.eobjects.metamodel.schema.MutableTable; 22 22 23 23 … … 34 34 */ 35 35 public void testEqualsAndHashCode() throws Exception { 36 Table table1 = newTable("Foo");37 Table table2 = newTable("Foo");36 MutableTable table1 = new MutableTable("Foo"); 37 MutableTable table2 = new MutableTable("Foo"); 38 38 39 39 assertFalse(table2.equals(null)); … … 41 41 assertEquals(table1, table2); 42 42 43 table2.addColumn(new Column("bar"));43 table2.addColumn(new MutableColumn("bar")); 44 44 assertFalse(table1.equals(table2)); 45 45 assertTrue(table1.hashCode() != table2.hashCode()); … … 47 47 48 48 public void testGetIndexedColumns() throws Exception { 49 Table t = newTable("foo");50 t.addColumn(new Column("b").setIndexed(true));51 t.addColumn(new Column("a").setIndexed(false));52 t.addColumn(new Column("r").setIndexed(true));49 MutableTable t = new MutableTable("foo"); 50 t.addColumn(new MutableColumn("b").setIndexed(true)); 51 t.addColumn(new MutableColumn("a").setIndexed(false)); 52 t.addColumn(new MutableColumn("r").setIndexed(true)); 53 53 Column[] indexedColumns = t.getIndexedColumns(); 54 54 assertEquals( 55 "{Column[name=b,columnNumber=0,type=<null>,nullable=<null>,indexed=true,nativeType=<null>,columnSize=<null>],Column[name=r,columnNumber=0,type=<null>,nullable=<null>,indexed=true,nativeType=<null>,columnSize=<null>]}", 55 "{MutableColumn[name=b,columnNumber=0,type=<null>,nullable=<null>,indexed=true,nativeType=<null>,columnSize=<null>]," + 56 "MutableColumn[name=r,columnNumber=0,type=<null>,nullable=<null>,indexed=true,nativeType=<null>,columnSize=<null>]}", 56 57 ArrayUtils.toString(indexedColumns)); 57 58 } 58 59 59 60 public void testGetColumnByName() throws Exception { 60 Table t = newTable("foobar");61 t.addColumn(new Column("Foo"));62 t.addColumn(new Column("FOO"));63 t.addColumn(new Column("bar"));61 MutableTable t = new MutableTable("foobar"); 62 t.addColumn(new MutableColumn("Foo")); 63 t.addColumn(new MutableColumn("FOO")); 64 t.addColumn(new MutableColumn("bar")); 64 65 65 66 assertEquals("Foo", t.getColumnByName("Foo").getName()); -
MetadataBeans/trunk/src/test/resources/xml_input_eobjects.xml
r882 r887 1 1 <?xml version="1.0" encoding="UTF-8"?> 2 <eobjects. dk website="http://www.eobjects.dk">2 <eobjects.org website="http://eobjects.org"> 3 3 <contributors> 4 4 <person> … … 17 17 <project name="MetaModel" /> 18 18 </projects> 19 </eobjects. dk>19 </eobjects.org>
Note: See TracChangeset
for help on using the changeset viewer.
