private TypeMetadataSet<EntityTypeMetadata<EntityMetadata>> getEffectiveTypes( Class<?> type, Class<?>... types) { MetadataProvider<EntityMetadata, EntityDiscriminator, RelationMetadata, RelationDiscriminator> metadataProvider = sessionContext.getMetadataProvider(); TypeMetadataSet<EntityTypeMetadata<EntityMetadata>> effectiveTypes = new TypeMetadataSet<>(); effectiveTypes.add(metadataProvider.getEntityMetadata(type)); for (Class<?> otherType : types) { effectiveTypes.add(metadataProvider.getEntityMetadata(otherType)); } return effectiveTypes; }
@Override public int getColumnType(int index) { String runtimeTypeName = provider.getStringValue(adjustColumn(index), ResultsMetadataConstants.DATA_TYPE); JcrType typeInfo = JcrType.typeInfo(runtimeTypeName); return typeInfo != null ? typeInfo.getJdbcType() : Types.VARCHAR; }
private <S, R, T> R createByExample( S from, Class<R> relationType, T to, Map<PrimitivePropertyMethodMetadata<PropertyMetadata>, Object> example) { MetadataProvider<EntityMetadata, EntityDiscriminator, RelationMetadata, RelationDiscriminator> metadataProvider = sessionContext.getMetadataProvider(); AbstractRelationPropertyMethodMetadata<?> fromProperty = metadataProvider.getPropertyMetadata(from.getClass(), relationType, FROM); AbstractRelationPropertyMethodMetadata<?> toProperty = metadataProvider.getPropertyMetadata(to.getClass(), relationType, TO); Entity entity = sessionContext.getEntityInstanceManager().getDatastoreType(from); R instance = sessionContext .getEntityPropertyManager() .createRelationReference(entity, fromProperty, to, toProperty, example); sessionContext.getInstanceListenerService().postCreate(instance); return instance; }
@Override public <T, M> CompositeObject migrate( T instance, MigrationStrategy<T, M> migrationStrategy, Class<M> targetType, Class<?>... targetTypes) { AbstractInstanceManager<EntityId, Entity> entityInstanceManager = sessionContext.getEntityInstanceManager(); Entity entity = entityInstanceManager.getDatastoreType(instance); DatastoreSession< EntityId, Entity, EntityMetadata, EntityDiscriminator, RelationId, Relation, RelationMetadata, RelationDiscriminator, PropertyMetadata> datastoreSession = sessionContext.getDatastoreSession(); Set<EntityDiscriminator> entityDiscriminators = datastoreSession.getDatastoreEntityManager().getEntityDiscriminators(entity); MetadataProvider<EntityMetadata, EntityDiscriminator, RelationMetadata, RelationDiscriminator> metadataProvider = sessionContext.getMetadataProvider(); TypeMetadataSet<EntityTypeMetadata<EntityMetadata>> types = metadataProvider.getTypes(entityDiscriminators); TypeMetadataSet<EntityTypeMetadata<EntityMetadata>> effectiveTargetTypes = getEffectiveTypes(targetType, targetTypes); Set<EntityDiscriminator> targetEntityDiscriminators = metadataProvider.getEntityDiscriminators(effectiveTargetTypes); datastoreSession .getDatastoreEntityManager() .migrateEntity( entity, types, entityDiscriminators, effectiveTargetTypes, targetEntityDiscriminators); entityInstanceManager.removeInstance(instance); CompositeObject migratedInstance = entityInstanceManager.updateInstance(entity); if (migrationStrategy != null) { migrationStrategy.migrate(instance, migratedInstance.as(targetType)); } entityInstanceManager.closeInstance(instance); return migratedInstance; }
@Override public String getTableName(int index) { String name = provider.getStringValue(adjustColumn(index), ResultsMetadataConstants.TABLE); if (name != null) { int dotIndex = name.indexOf('.'); if (dotIndex != -1) { return name.substring(dotIndex + 1); } } return name; }
@Override public String getSchemaName(int index) { String name = provider.getStringValue(adjustColumn(index), ResultsMetadataConstants.SCHEMA); if (name != null) { int dotIndex = name.indexOf('.'); if (dotIndex != -1) { return name.substring(0, dotIndex); } } return null; }
@Override public int isNullable(int index) { Object nullable = provider.getValue(adjustColumn(index), ResultsMetadataConstants.NULLABLE); if (nullable.equals(ResultsMetadataConstants.NULL_TYPES.NULLABLE)) { return columnNullable; } else if (nullable.equals(ResultsMetadataConstants.NULL_TYPES.NOT_NULL)) { return columnNoNulls; } else { return columnNullableUnknown; } }
@Override public boolean isCaseSensitive(int index) { return provider.getBooleanValue(adjustColumn(index), ResultsMetadataConstants.CASE_SENSITIVE); }
@Override public int getScale(int index) { return provider.getIntValue(adjustColumn(index), ResultsMetadataConstants.SCALE); }
@Override public String getColumnTypeName(int index) { return provider.getStringValue(adjustColumn(index), ResultsMetadataConstants.DATA_TYPE); }
@Override public String getColumnName(int index) { return provider.getStringValue(adjustColumn(index), ResultsMetadataConstants.COLUMN); }
@Override public int getColumnDisplaySize(int index) { return provider.getIntValue(adjustColumn(index), ResultsMetadataConstants.DISPLAY_SIZE); }
@Override public boolean isSigned(int index) { return provider.getBooleanValue(adjustColumn(index), ResultsMetadataConstants.SIGNED); }
@Override public boolean isSearchable(int index) { Integer searchable = (Integer) provider.getValue(adjustColumn(index), ResultsMetadataConstants.SEARCHABLE); return !(ResultsMetadataConstants.SEARCH_TYPES.UNSEARCHABLE.equals(searchable)); }
@Override public boolean isCurrency(int index) { return provider.getBooleanValue(adjustColumn(index), ResultsMetadataConstants.CURRENCY); }
@Override public int getPrecision(int index) { return provider.getIntValue(adjustColumn(index), ResultsMetadataConstants.PRECISION); }
@Override public boolean isAutoIncrement(int index) { return provider.getBooleanValue( adjustColumn(index), ResultsMetadataConstants.AUTO_INCREMENTING); }
@Override public int getColumnCount() { return provider.getColumnCount(); }
@Override public boolean isDefinitelyWritable(int index) { return provider.getBooleanValue(adjustColumn(index), ResultsMetadataConstants.WRITABLE); }
@Override public boolean isReadOnly(int index) { return !provider.getBooleanValue(adjustColumn(index), ResultsMetadataConstants.WRITABLE); }