/** * Creates a new instance with the specified {type => flag} mappings. * * @param mappings The mappings from entity type to polymorphic flag value. */ public DefaultPolymorphicTypeMapper(Map<Class<? extends RawEntity<?>>, String> mappings) { this.mappings = mappings; this.reverse = new HashMap<String, Set<Class<? extends RawEntity<?>>>>(); createReverseMappings(); }
/** * Specifies the {@link PolymorphicTypeMapper} instance to use for all flag value conversion of polymorphic types. * The default type mapper is an empty {@link DefaultPolymorphicTypeMapper} instance (thus using the fully qualified * classname for all values). * * @see #getPolymorphicTypeMapper() */ public void setPolymorphicTypeMapper(PolymorphicTypeMapper typeMapper) { typeMapperLock.writeLock().lock(); try { this.typeMapper = typeMapper; if (typeMapper instanceof DefaultPolymorphicTypeMapper) { ((DefaultPolymorphicTypeMapper) typeMapper).resolveMappings(getTableNameConverter()); } } finally { typeMapperLock.writeLock().unlock(); } }
/** * Creates a new instance of <code>EntityManager</code> using the specified {@link DatabaseProvider}. * * @param provider the {@link DatabaseProvider} to use in all database operations. * @param configuration the configuration for this entity manager */ public EntityManager(DatabaseProvider provider, EntityManagerConfiguration configuration) { this.provider = Objects.requireNonNull(provider, "provider can't be null"); this.configuration = Objects.requireNonNull(configuration); valGenCache = CacheBuilder.newBuilder().build(new CacheLoader<Class<? extends ValueGenerator<?>>, ValueGenerator<?>>() { @Override public ValueGenerator<?> load(Class<? extends ValueGenerator<?>> generatorClass) throws Exception { return generatorClass.newInstance(); } }); // TODO: move caching out of there! nameConverters = new CachingNameConverters(configuration.getNameConverters()); schemaConfiguration = Objects.requireNonNull(configuration.getSchemaConfiguration(), "schema configuration can't be null"); typeMapper = new DefaultPolymorphicTypeMapper(new HashMap<Class<? extends RawEntity<?>>, String>()); entityInfoResolver = Objects.requireNonNull(configuration.getEntityInfoResolverFactory().create(nameConverters, provider.getTypeManager()), "entityInfoResolver"); }
public final void migrate(Class<? extends RawEntity<?>>... entities) { try { entityManager.setPolymorphicTypeMapper(new DefaultPolymorphicTypeMapper(entities)); entityManager.migrate(entities); } catch (SQLException e) { throw new ActiveObjectsSqlException(entityManager, e); } }
public void migrateDestructively(Class<? extends RawEntity<?>>... entities) { try { entityManager.setPolymorphicTypeMapper(new DefaultPolymorphicTypeMapper(entities)); entityManager.migrateDestructively(entities); } catch (SQLException e) { throw new ActiveObjectsSqlException(entityManager, e); } }
/** * Creates a new instance with the specified {type => flag} mappings. * * @param mappings The mappings from entity type to polymorphic flag value. */ public DefaultPolymorphicTypeMapper(Map<Class<? extends RawEntity<?>>, String> mappings) { this.mappings = mappings; this.reverse = new HashMap<String, Set<Class<? extends RawEntity<?>>>>(); createReverseMappings(); }
/** * Specifies the {@link PolymorphicTypeMapper} instance to use for all flag value conversion of polymorphic types. * The default type mapper is an empty {@link DefaultPolymorphicTypeMapper} instance (thus using the fully qualified * classname for all values). * * @see #getPolymorphicTypeMapper() */ public void setPolymorphicTypeMapper(PolymorphicTypeMapper typeMapper) { typeMapperLock.writeLock().lock(); try { this.typeMapper = typeMapper; if (typeMapper instanceof DefaultPolymorphicTypeMapper) { ((DefaultPolymorphicTypeMapper) typeMapper).resolveMappings(getTableNameConverter()); } } finally { typeMapperLock.writeLock().unlock(); } }
/** * Creates a new instance of <code>EntityManager</code> using the specified {@link DatabaseProvider}. * * @param provider the {@link DatabaseProvider} to use in all database operations. * @param configuration the configuration for this entity manager */ public EntityManager(DatabaseProvider provider, EntityManagerConfiguration configuration) { this.provider = Objects.requireNonNull(provider, "provider can't be null"); this.configuration = Objects.requireNonNull(configuration); valGenCache = CacheBuilder.newBuilder().build(new CacheLoader<Class<? extends ValueGenerator<?>>, ValueGenerator<?>>() { @Override public ValueGenerator<?> load(Class<? extends ValueGenerator<?>> generatorClass) throws Exception { return generatorClass.newInstance(); } }); // TODO: move caching out of there! nameConverters = new CachingNameConverters(configuration.getNameConverters()); schemaConfiguration = Objects.requireNonNull(configuration.getSchemaConfiguration(), "schema configuration can't be null"); typeMapper = new DefaultPolymorphicTypeMapper(new HashMap<Class<? extends RawEntity<?>>, String>()); entityInfoResolver = Objects.requireNonNull(configuration.getEntityInfoResolverFactory().create(nameConverters, provider.getTypeManager()), "entityInfoResolver"); }
void resolveMappings(TableNameConverter converter) { if (types == null) { return; } while (converter instanceof PluralizedTableNameConverter) { converter = ((PluralizedTableNameConverter) converter).getDelegate(); } for (Class<? extends RawEntity<?>> type : types) { mappings.put(type, converter.getName(type)); } types = null; createReverseMappings(); }
void resolveMappings(TableNameConverter converter) { if (types == null) { return; } while (converter instanceof PluralizedTableNameConverter) { converter = ((PluralizedTableNameConverter) converter).getDelegate(); } for (Class<? extends RawEntity<?>> type : types) { mappings.put(type, converter.getName(type)); } types = null; createReverseMappings(); }