@Override public FieldType findForeignFieldType(Class<?> clazz) { checkForInitialized(); for (FieldType fieldType : tableInfo.getFieldTypes()) { if (fieldType.getType() == clazz) { return fieldType; } } return null; }
@Override public FieldType findForeignFieldType(Class<?> clazz) { checkForInitialized(); for (FieldType fieldType : tableInfo.getFieldTypes()) { if (fieldType.getType() == clazz) { return fieldType; } } return null; }
public static <T, ID> MappedQueryForFieldEq<T, ID> build(DatabaseType databaseType, TableInfo<T, ID> tableInfo, FieldType idFieldType) throws SQLException { if (idFieldType == null) { idFieldType = tableInfo.getIdField(); if (idFieldType == null) { throw new SQLException("Cannot query-for-id with " + tableInfo.getDataClass() + " because it doesn't have an id field"); } } String statement = buildStatement(databaseType, tableInfo, idFieldType); return new MappedQueryForFieldEq<T, ID>(tableInfo, statement, new FieldType[] { idFieldType }, tableInfo.getFieldTypes(), "query-for-id"); }
public static <T, ID> MappedRefresh<T, ID> build(DatabaseType databaseType, TableInfo<T, ID> tableInfo) throws SQLException { FieldType idField = tableInfo.getIdField(); if (idField == null) { throw new SQLException("Cannot refresh " + tableInfo.getDataClass() + " because it doesn't have an id field"); } String statement = buildStatement(databaseType, tableInfo, idField); return new MappedRefresh<T, ID>(tableInfo, statement, new FieldType[] { tableInfo.getIdField() }, tableInfo.getFieldTypes()); } }
@Test(expected = SQLException.class) public void testGeneratedIdSequenceNotSupported() throws Exception { TableInfo<GeneratedIdSequence, Integer> tableInfo = new TableInfo<GeneratedIdSequence, Integer>(connectionSource, null, GeneratedIdSequence.class); assertEquals(2, tableInfo.getFieldTypes().length); StringBuilder sb = new StringBuilder(); ArrayList<String> additionalArgs = new ArrayList<String>(); ArrayList<String> statementsBefore = new ArrayList<String>(); databaseType.appendColumnArg(null, sb, tableInfo.getFieldTypes()[0], additionalArgs, statementsBefore, null, null); }
@Test(expected = SQLException.class) public void testGeneratedIdSequenceNotSupported() throws Exception { TableInfo<GeneratedIdSequence, Integer> tableInfo = new TableInfo<GeneratedIdSequence, Integer>(connectionSource, null, GeneratedIdSequence.class); assertEquals(2, tableInfo.getFieldTypes().length); StringBuilder sb = new StringBuilder(); ArrayList<String> additionalArgs = new ArrayList<String>(); ArrayList<String> statementsBefore = new ArrayList<String>(); databaseType.appendColumnArg(null, sb, tableInfo.getFieldTypes()[0], additionalArgs, statementsBefore, null, null); }
@Test public void testSerialField() throws Exception { TableInfo<SerialField, Void> tableInfo = new TableInfo<SerialField, Void>(connectionSource, null, SerialField.class); StringBuilder sb = new StringBuilder(); List<String> additionalArgs = new ArrayList<String>(); List<String> statementsBefore = new ArrayList<String>(); databaseType.appendColumnArg(null, sb, tableInfo.getFieldTypes()[0], additionalArgs, statementsBefore, null, null); assertTrue(sb.toString().contains("BLOB")); }
public static <T, ID> MappedRefresh<T, ID> build(Dao<T, ID> dao, TableInfo<T, ID> tableInfo) throws SQLException { FieldType idField = tableInfo.getIdField(); if (idField == null) { throw new SQLException( "Cannot refresh " + tableInfo.getDataClass() + " because it doesn't have an id field"); } DatabaseType databaseType = dao.getConnectionSource().getDatabaseType(); String statement = buildStatement(databaseType, tableInfo, idField); return new MappedRefresh<T, ID>(dao, tableInfo, statement, new FieldType[] { tableInfo.getIdField() }, tableInfo.getFieldTypes()); } }
public static <T, ID> MappedQueryForFieldEq<T, ID> build(Dao<T, ID> dao, TableInfo<T, ID> tableInfo, FieldType idFieldType) throws SQLException { if (idFieldType == null) { idFieldType = tableInfo.getIdField(); if (idFieldType == null) { throw new SQLException("Cannot query-for-id with " + tableInfo.getDataClass() + " because it doesn't have an id field"); } } DatabaseType databaseType = dao.getConnectionSource().getDatabaseType(); String statement = buildStatement(databaseType, tableInfo, idFieldType); return new MappedQueryForFieldEq<T, ID>(dao, tableInfo, statement, new FieldType[] { idFieldType }, tableInfo.getFieldTypes(), "query-for-id"); }
@Override public boolean objectsEqual(T data1, T data2) throws SQLException { checkForInitialized(); for (FieldType fieldType : tableInfo.getFieldTypes()) { Object fieldObj1 = fieldType.extractJavaFieldValue(data1); Object fieldObj2 = fieldType.extractJavaFieldValue(data2); // we can't just do fieldObj1.equals(fieldObj2) because of byte[].equals() if (!fieldType.getDataPersister().dataIsEqual(fieldObj1, fieldObj2)) { return false; } } return true; }
@Override public boolean objectsEqual(T data1, T data2) throws SQLException { checkForInitialized(); for (FieldType fieldType : tableInfo.getFieldTypes()) { Object fieldObj1 = fieldType.extractJavaFieldValue(data1); Object fieldObj2 = fieldType.extractJavaFieldValue(data2); // we can't just do fieldObj1.equals(fieldObj2) because of byte[].equals() if (!fieldType.getDataPersister().dataIsEqual(fieldObj1, fieldObj2)) { return false; } } return true; }
@Test public void testBoolean() throws Exception { TableInfo<AllTypes, Void> tableInfo = new TableInfo<AllTypes, Void>(connectionSource, null, AllTypes.class); assertEquals(9, tableInfo.getFieldTypes().length); FieldType booleanField = tableInfo.getFieldTypes()[1]; assertEquals("booleanField", booleanField.getColumnName()); StringBuilder sb = new StringBuilder(); List<String> additionalArgs = new ArrayList<String>(); List<String> statementsBefore = new ArrayList<String>(); databaseType.appendColumnArg(null, sb, booleanField, additionalArgs, statementsBefore, null, null); assertTrue(sb.toString().contains("SMALLINT")); }
@Test public void testBoolean() throws Exception { TableInfo<AllTypes, Integer> tableInfo = new TableInfo<AllTypes, Integer>(connectionSource, null, AllTypes.class); assertEquals(9, tableInfo.getFieldTypes().length); FieldType booleanField = tableInfo.getFieldTypes()[1]; assertEquals("booleanField", booleanField.getColumnName()); StringBuilder sb = new StringBuilder(); List<String> additionalArgs = new ArrayList<String>(); List<String> statementsBefore = new ArrayList<String>(); databaseType.appendColumnArg(null, sb, booleanField, additionalArgs, statementsBefore, null, null); assertTrue(sb.toString() + " not in right format", sb.toString().contains("SMALLINT")); }
@Test public void testByte() throws Exception { TableInfo<AllTypes, Void> tableInfo = new TableInfo<AllTypes, Void>(connectionSource, null, AllTypes.class); assertEquals(9, tableInfo.getFieldTypes().length); FieldType byteField = tableInfo.getFieldTypes()[3]; assertEquals("byteField", byteField.getColumnName()); StringBuilder sb = new StringBuilder(); List<String> additionalArgs = new ArrayList<String>(); List<String> statementsBefore = new ArrayList<String>(); databaseType.appendColumnArg(null, sb, byteField, additionalArgs, statementsBefore, null, null); assertTrue(sb.toString().contains("SMALLINT")); }
@Test public void testByte() throws Exception { TableInfo<AllTypes, Integer> tableInfo = new TableInfo<AllTypes, Integer>(connectionSource, null, AllTypes.class); assertEquals(9, tableInfo.getFieldTypes().length); FieldType byteField = tableInfo.getFieldTypes()[3]; assertEquals("byteField", byteField.getColumnName()); StringBuilder sb = new StringBuilder(); List<String> additionalArgs = new ArrayList<String>(); List<String> statementsBefore = new ArrayList<String>(); databaseType.appendColumnArg(null, sb, byteField, additionalArgs, statementsBefore, null, null); assertTrue(sb.toString().contains("SMALLINT")); }
@Test public void testLong() throws Exception { TableInfo<AllTypes, Integer> tableInfo = new TableInfo<AllTypes, Integer>(connectionSource, null, AllTypes.class); assertEquals(9, tableInfo.getFieldTypes().length); FieldType booleanField = tableInfo.getFieldTypes()[6]; assertEquals("longField", booleanField.getColumnName()); StringBuilder sb = new StringBuilder(); List<String> additionalArgs = new ArrayList<String>(); List<String> statementsBefore = new ArrayList<String>(); databaseType.appendColumnArg(null, sb, booleanField, additionalArgs, statementsBefore, null, null); assertTrue(sb.toString().contains("NUMERIC")); }
@Test public void testGeneratedId() throws Exception { TableInfo<GeneratedId, Integer> tableInfo = new TableInfo<GeneratedId, Integer>(connectionSource, null, GeneratedId.class); StringBuilder sb = new StringBuilder(); List<String> additionalArgs = new ArrayList<String>(); List<String> statementsBefore = new ArrayList<String>(); databaseType.appendColumnArg(null, sb, tableInfo.getFieldTypes()[0], additionalArgs, statementsBefore, null, null); databaseType.addPrimaryKeySql(tableInfo.getFieldTypes(), additionalArgs, statementsBefore, null, null); assertTrue(sb + "should contain the stuff", sb.toString().contains(" INTEGER PRIMARY KEY AUTOINCREMENT")); assertEquals(0, statementsBefore.size()); assertEquals(0, additionalArgs.size()); }
@Test public void testBoolean() throws Exception { TableInfo<AllTypes, Integer> tableInfo = new TableInfo<AllTypes, Integer>(connectionSource, null, AllTypes.class); assertEquals(9, tableInfo.getFieldTypes().length); FieldType booleanField = tableInfo.getFieldTypes()[1]; assertEquals("booleanField", booleanField.getColumnName()); StringBuilder sb = new StringBuilder(); List<String> additionalArgs = new ArrayList<String>(); List<String> statementsBefore = new ArrayList<String>(); databaseType.appendColumnArg(null, sb, booleanField, additionalArgs, statementsBefore, null, null); assertTrue(sb.toString().contains("BIT")); }
@Test public void testByte() throws Exception { TableInfo<AllTypes, Integer> tableInfo = new TableInfo<AllTypes, Integer>(connectionSource, null, AllTypes.class); assertEquals(9, tableInfo.getFieldTypes().length); FieldType byteField = tableInfo.getFieldTypes()[3]; assertEquals("byteField", byteField.getColumnName()); StringBuilder sb = new StringBuilder(); List<String> additionalArgs = new ArrayList<String>(); List<String> statementsBefore = new ArrayList<String>(); databaseType.appendColumnArg(null, sb, byteField, additionalArgs, statementsBefore, null, null); assertTrue(sb.toString().contains("SMALLINT")); }
@Test public void testBasic() throws SQLException { TableInfo<Foo, String> tableInfo = new TableInfo<Foo, String>(databaseType, Foo.class); assertEquals(Foo.class, tableInfo.getDataClass()); assertEquals(TABLE_NAME, tableInfo.getTableName()); assertEquals(COLUMN_NAME, tableInfo.getIdField().getColumnName()); assertEquals(1, tableInfo.getFieldTypes().length); assertSame(tableInfo.getIdField(), tableInfo.getFieldTypes()[0]); assertEquals(COLUMN_NAME, tableInfo.getFieldTypeByColumnName(COLUMN_NAME).getColumnName()); }