/** * Resolves {@link jodd.db.oom.DbEntityDescriptor} for all given types, * so not to repeat every time. */ protected DbEntityDescriptor[] resolveDbEntityDescriptors(final Class[] types) { if (cachedDbEntityDescriptors == null) { DbEntityDescriptor[] descs = new DbEntityDescriptor[types.length]; for (int i = 0; i < types.length; i++) { Class type = types[i]; if (type != null) { descs[i] = dbEntityManager.lookupType(type); } } cachedDbEntityDescriptors = descs; } return cachedDbEntityDescriptors; }
/** * Lookups for entity name and throws an exception if entity type is invalid. */ protected DbEntityDescriptor lookupType(final Class entity) { final DbEntityDescriptor ded = dbEntityManager.lookupType(entity); if (ded == null) { throw new DbSqlBuilderException("Invalid or not-persistent entity: " + entity.getName()); } return ded; }
/** * Lookups for entity name and throws an exception if entity type is invalid. */ protected DbEntityDescriptor lookupType(final Class entity) { DbEntityDescriptor ded = entityManager.lookupType(entity); if (ded == null) { throw new DbSqlBuilderException("Invalid or not-persistent entity type: " + entity.getName()); } return ded; }
/** * Creates table names for given types. */ protected String[] createTypesTableNames(final Class[] types) { String[] names = new String[types.length]; for (int i = 0; i < types.length; i++) { if (types[i] == null) { names[i] = null; continue; } DbEntityDescriptor ded = dbEntityManager.lookupType(types[i]); if (ded != null) { String tableName = ded.getTableName(); tableName = tableName.toUpperCase(); names[i] = tableName; } } return names; }
/** * Delete single object by its id. Resets ID value. */ public void deleteById(final Object entity) { if (entity != null) { int result = query(dbOom.entities().deleteById(entity)).autoClose().executeUpdate(); if (result != 0) { // now reset the ID value Class type = entity.getClass(); DbEntityDescriptor ded = dbOom.entityManager().lookupType(type); setEntityId(ded, entity, 0); } } }
/** * Populates entity with generated column values from executed query. */ public void populateGeneratedKeys(final Object entity) { final String[] generatedColumns = getGeneratedColumnNames(); if (generatedColumns == null) { return; } DbEntityDescriptor ded = dbOom.entityManager().lookupType(entity.getClass()); // prepare key types Class[] keyTypes = new Class[generatedColumns.length]; String[] properties = new String[generatedColumns.length]; for (int i = 0; i < generatedColumns.length; i++) { String column = generatedColumns[i]; DbEntityColumnDescriptor decd = ded.findByColumnName(column); if (decd != null) { keyTypes[i] = decd.getPropertyType(); properties[i] = decd.getPropertyName(); } } final Object keyValues = findGeneratedColumns(keyTypes); if (!keyValues.getClass().isArray()) { BeanUtil.declared.setProperty(entity, properties[0], keyValues); } else { for (int i = 0; i < properties.length; i++) { BeanUtil.declared.setProperty(entity, properties[i], ((Object[]) keyValues)[i]); } } }
/** * Creates SELECT criteria for the entity matched by foreign key. * Foreign key is created by concatenating foreign table name and column name. */ public DbSqlBuilder findForeign(final Class entity, final Object value) { final String tableRef = createTableRefName(entity); final DbEntityDescriptor dedFk = entityManager.lookupType(value.getClass()); final String tableName = dbOomConfig.getTableNames().convertTableNameToEntityName(dedFk.getTableName()); final String columnName = dbOomConfig.getColumnNames().convertColumnNameToPropertyName(dedFk.getIdColumnName()); final String fkColumn = uncapitalize(tableName) + capitalize(columnName); final Object idValue = BeanUtil.pojo.getProperty(value, dedFk.getIdPropertyName()); return sql().$(SELECT).column(tableRef).$(FROM).table(entity, tableRef).$(WHERE).ref(tableRef, fkColumn).$(EQUALS).columnValue(idValue); }
final DbEntityDescriptor ded = dbOom.entityManager().lookupType(type);
DbEntityDescriptor ded = dbEntityManager.lookupType(Tester.class); assertEquals("TESTER", ded.getTableName()); dbEntityManager.registerEntity(Tester.class); ded = dbEntityManager.lookupType(Tester.class); assertEquals("tester", ded.getTableName()); dbEntityManager.registerEntity(Tester.class); ded = dbEntityManager.lookupType(Tester.class); assertEquals("Tester", ded.getTableName());
/** * Resolves {@link jodd.db.oom.DbEntityDescriptor} for all given types, * so not to repeat every time. */ protected DbEntityDescriptor[] resolveDbEntityDescriptors(final Class[] types) { if (cachedDbEntityDescriptors == null) { DbEntityDescriptor[] descs = new DbEntityDescriptor[types.length]; for (int i = 0; i < types.length; i++) { Class type = types[i]; if (type != null) { descs[i] = dbEntityManager.lookupType(type); } } cachedDbEntityDescriptors = descs; } return cachedDbEntityDescriptors; }
/** * Lookups for entity name and throws an exception if entity type is invalid. */ protected DbEntityDescriptor lookupType(final Class entity) { final DbEntityDescriptor ded = dbEntityManager.lookupType(entity); if (ded == null) { throw new DbSqlBuilderException("Invalid or not-persistent entity: " + entity.getName()); } return ded; }
/** * Lookups for entity name and throws an exception if entity type is invalid. */ protected DbEntityDescriptor lookupType(final Class entity) { DbEntityDescriptor ded = entityManager.lookupType(entity); if (ded == null) { throw new DbSqlBuilderException("Invalid or not-persistent entity type: " + entity.getName()); } return ded; }
/** * Creates table names for given types. */ protected String[] createTypesTableNames(final Class[] types) { String[] names = new String[types.length]; for (int i = 0; i < types.length; i++) { if (types[i] == null) { names[i] = null; continue; } DbEntityDescriptor ded = dbEntityManager.lookupType(types[i]); if (ded != null) { String tableName = ded.getTableName(); tableName = tableName.toUpperCase(); names[i] = tableName; } } return names; }
/** * Delete single object by its id. Resets ID value. */ public void deleteById(final Object entity) { if (entity != null) { int result = query(dbOom.entities().deleteById(entity)).autoClose().executeUpdate(); if (result != 0) { // now reset the ID value Class type = entity.getClass(); DbEntityDescriptor ded = dbOom.entityManager().lookupType(type); setEntityId(ded, entity, 0); } } }
/** * Populates entity with generated column values from executed query. */ public void populateGeneratedKeys(final Object entity) { final String[] generatedColumns = getGeneratedColumnNames(); if (generatedColumns == null) { return; } DbEntityDescriptor ded = dbOom.entityManager().lookupType(entity.getClass()); // prepare key types Class[] keyTypes = new Class[generatedColumns.length]; String[] properties = new String[generatedColumns.length]; for (int i = 0; i < generatedColumns.length; i++) { String column = generatedColumns[i]; DbEntityColumnDescriptor decd = ded.findByColumnName(column); if (decd != null) { keyTypes[i] = decd.getPropertyType(); properties[i] = decd.getPropertyName(); } } final Object keyValues = findGeneratedColumns(keyTypes); if (!keyValues.getClass().isArray()) { BeanUtil.declared.setProperty(entity, properties[0], keyValues); } else { for (int i = 0; i < properties.length; i++) { BeanUtil.declared.setProperty(entity, properties[i], ((Object[]) keyValues)[i]); } } }
/** * Creates SELECT criteria for the entity matched by foreign key. * Foreign key is created by concatenating foreign table name and column name. */ public DbSqlBuilder findForeign(final Class entity, final Object value) { final String tableRef = createTableRefName(entity); final DbEntityDescriptor dedFk = entityManager.lookupType(value.getClass()); final String tableName = dbOomConfig.getTableNames().convertTableNameToEntityName(dedFk.getTableName()); final String columnName = dbOomConfig.getColumnNames().convertColumnNameToPropertyName(dedFk.getIdColumnName()); final String fkColumn = uncapitalize(tableName) + capitalize(columnName); final Object idValue = BeanUtil.pojo.getProperty(value, dedFk.getIdPropertyName()); return sql().$(SELECT).column(tableRef).$(FROM).table(entity, tableRef).$(WHERE).ref(tableRef, fkColumn).$(EQUALS).columnValue(idValue); }
final DbEntityDescriptor ded = dbOom.entityManager().lookupType(type);