/** * Registers entity. {@link #registerType(Class) Registers types} and table names. */ public <E> DbEntityDescriptor<E> registerEntity(final Class<E> type) { DbEntityDescriptor<E> ded = registerType(type); DbEntityDescriptor existing = tableNamesMap.put(ded.getTableName(), ded); if (existing != null) { if (ded.getType() == type) { return ded; } throw new DbOomException("Entity registration failed! Table '" + ded.getTableName() + "' already mapped to an entity: " + existing.getType()); } return ded; }
/** * {@inheritDoc} */ @Override public Class[] resolveTables() { List<Class> classes = new ArrayList<>(tableNames.length); String lastTableName = null; resultColumns.clear(); for (int i = 0; i < tableNames.length; i++) { String tableName = tableNames[i]; String columnName = columnNames[i]; if (tableName == null) { // maybe JDBC driver does not support it throw new DbOomException(dbOomQuery, "Table name missing in meta-data"); } if ((!tableName.equals(lastTableName)) || (resultColumns.contains(columnName))) { resultColumns.clear(); lastTableName = tableName; DbEntityDescriptor ded = dbEntityManager.lookupTableName(tableName); if (ded == null) { throw new DbOomException(dbOomQuery, "Table name not registered: " + tableName); } classes.add(ded.getType()); } resultColumns.add(columnName); } return classes.toArray(new Class[0]); }
/** * Registers just type and entity names. Enough for most usages. */ public <E> DbEntityDescriptor<E> registerType(final Class<E> type) { DbEntityDescriptor<E> ded = createDbEntityDescriptor(type); DbEntityDescriptor<E> existing = descriptorsMap.put(type, ded); if (log.isDebugEnabled()) { log.debug("Register " + type.getName() + " as " + ded.getTableName()); } if (existing != null) { if (ded.getType() == type) { return ded; } throw new DbOomException("Type already registered: " + existing.getType()); } existing = entityNamesMap.put(ded.getEntityName(), ded); if (existing != null) { throw new DbOomException("Name '" + ded.getEntityName() + "' already mapped to an entity: " + existing.getType()); } return ded; }
public void printEntities(final int width) { if (!databaseEnabled) { return; } final List<DbEntityDescriptor> list = new ArrayList<>(); dbOom.entityManager().forEachEntity(list::add); if (list.isEmpty()) { return; } final Print print = new Print(); print.line("Entities", width); list.stream() .sorted(Comparator.comparing(DbEntityDescriptor::getEntityName)) .forEach(ded -> print.outLeftRightNewLine( Chalk256.chalk().yellow(), ded.getTableName(), Chalk256.chalk().blue(), ClassUtil.getShortClassName(ded.getType(), 2), width)); print.line(width); } }
/** * Registers entity. {@link #registerType(Class) Registers types} and table names. */ public <E> DbEntityDescriptor<E> registerEntity(final Class<E> type) { DbEntityDescriptor<E> ded = registerType(type); DbEntityDescriptor existing = tableNamesMap.put(ded.getTableName(), ded); if (existing != null) { if (ded.getType() == type) { return ded; } throw new DbOomException("Entity registration failed! Table '" + ded.getTableName() + "' already mapped to an entity: " + existing.getType()); } return ded; }
/** * {@inheritDoc} */ public Class[] resolveTables() { List<Class> classes = new ArrayList<Class>(tableNames.length); String lastTableName = null; resultColumns.clear(); for (int i = 0; i < tableNames.length; i++) { String tableName = tableNames[i]; String columnName = columnNames[i]; if (tableName == null) { // Maybe JDBC driver does not support it throw new DbOomException("Table name not available in driver meta-data."); } if ((tableName.equals(lastTableName) == false) || (resultColumns.contains(columnName) == true)) { resultColumns.clear(); lastTableName = tableName; DbEntityDescriptor ded = dbOomManager.lookupTableName(tableName); if (ded == null) { throw new DbOomException("Table name not registered: " + tableName); } classes.add(ded.getType()); } resultColumns.add(columnName); } return classes.toArray(new Class[classes.size()]); }
/** * Registers just type and entity names. Enough for most usages. */ public DbEntityDescriptor registerType(Class type) { DbEntityDescriptor ded = createDbEntityDescriptor(type); DbEntityDescriptor existing = descriptorsMap.put(type, ded); if (existing != null) { throw new DbOomException("Type registration failed! Type '" + existing.getType() + "' already registered."); } existing = entityNamesMap.put(ded.getEntityName(), ded); if (existing != null) { throw new DbOomException("Type registration failed! Name '" + ded.getEntityName() + "' already mapped to an entity class: " + existing.getType()); } return ded; }
/** * {@inheritDoc} */ @Override public Class[] resolveTables() { List<Class> classes = new ArrayList<>(tableNames.length); String lastTableName = null; resultColumns.clear(); for (int i = 0; i < tableNames.length; i++) { String tableName = tableNames[i]; String columnName = columnNames[i]; if (tableName == null) { // maybe JDBC driver does not support it throw new DbOomException(dbOomQuery, "Table name missing in meta-data"); } if ((!tableName.equals(lastTableName)) || (resultColumns.contains(columnName))) { resultColumns.clear(); lastTableName = tableName; DbEntityDescriptor ded = dbEntityManager.lookupTableName(tableName); if (ded == null) { throw new DbOomException(dbOomQuery, "Table name not registered: " + tableName); } classes.add(ded.getType()); } resultColumns.add(columnName); } return classes.toArray(new Class[0]); }
/** * Registers entity. {@link #registerType(Class) Registers types} and table names. * Throw exception is type is already registered. */ public DbEntityDescriptor registerEntity(Class type) { DbEntityDescriptor ded = registerType(type); DbEntityDescriptor existing = tableNamesMap.put(ded.getTableName(), ded); if (existing != null) { throw new DbOomException("Entity registration failed! Table '" + ded.getTableName() + "' already mapped to an entity class: " + existing.getType()); } return ded; }
/** * Registers just type and entity names. Enough for most usages. */ public <E> DbEntityDescriptor<E> registerType(final Class<E> type) { DbEntityDescriptor<E> ded = createDbEntityDescriptor(type); DbEntityDescriptor<E> existing = descriptorsMap.put(type, ded); if (log.isDebugEnabled()) { log.debug("Register " + type.getName() + " as " + ded.getTableName()); } if (existing != null) { if (ded.getType() == type) { return ded; } throw new DbOomException("Type already registered: " + existing.getType()); } existing = entityNamesMap.put(ded.getEntityName(), ded); if (existing != null) { throw new DbOomException("Name '" + ded.getEntityName() + "' already mapped to an entity: " + existing.getType()); } return ded; }
public void printEntities(final int width) { if (!databaseEnabled) { return; } final List<DbEntityDescriptor> list = new ArrayList<>(); dbOom.entityManager().forEachEntity(list::add); if (list.isEmpty()) { return; } final Print print = new Print(); print.line("Entities", width); list.stream() .sorted(Comparator.comparing(DbEntityDescriptor::getEntityName)) .forEach(ded -> print.outLeftRightNewLine( Chalk256.chalk().yellow(), ded.getTableName(), Chalk256.chalk().blue(), ClassUtil.getShortClassName(ded.getType(), 2), width)); print.line(width); } }