blob: 041e0f0fe4b69b018d19a11be1d6f195ed0b85ff [file] [log] [blame]
/*
* Copyright (c) 2013, 2020 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Guy Pelletier - initial API and implementation
package org.eclipse.persistence.internal.jpa.config.xml;
import java.util.ArrayList;
import org.eclipse.persistence.internal.jpa.config.MetadataImpl;
import org.eclipse.persistence.internal.jpa.config.classes.ConverterClassImpl;
import org.eclipse.persistence.internal.jpa.config.classes.EmbeddableImpl;
import org.eclipse.persistence.internal.jpa.config.classes.EntityImpl;
import org.eclipse.persistence.internal.jpa.config.classes.MappedSuperclassImpl;
import org.eclipse.persistence.internal.jpa.config.columns.TenantDiscriminatorColumnImpl;
import org.eclipse.persistence.internal.jpa.config.converters.ConverterImpl;
import org.eclipse.persistence.internal.jpa.config.converters.ObjectTypeConverterImpl;
import org.eclipse.persistence.internal.jpa.config.converters.StructConverterImpl;
import org.eclipse.persistence.internal.jpa.config.converters.TypeConverterImpl;
import org.eclipse.persistence.internal.jpa.config.mappings.AccessMethodsImpl;
import org.eclipse.persistence.internal.jpa.config.partitioning.HashPartitioningImpl;
import org.eclipse.persistence.internal.jpa.config.partitioning.PartitioningImpl;
import org.eclipse.persistence.internal.jpa.config.partitioning.PinnedPartitioningImpl;
import org.eclipse.persistence.internal.jpa.config.partitioning.RangePartitioningImpl;
import org.eclipse.persistence.internal.jpa.config.partitioning.ReplicationPartitioningImpl;
import org.eclipse.persistence.internal.jpa.config.partitioning.RoundRobinPartitioningImpl;
import org.eclipse.persistence.internal.jpa.config.partitioning.UnionPartitioningImpl;
import org.eclipse.persistence.internal.jpa.config.partitioning.ValuePartitioningImpl;
import org.eclipse.persistence.internal.jpa.config.queries.NamedNativeQueryImpl;
import org.eclipse.persistence.internal.jpa.config.queries.NamedPlsqlStoredFunctionQueryImpl;
import org.eclipse.persistence.internal.jpa.config.queries.NamedPlsqlStoredProcedureQueryImpl;
import org.eclipse.persistence.internal.jpa.config.queries.NamedQueryImpl;
import org.eclipse.persistence.internal.jpa.config.queries.NamedStoredFunctionQueryImpl;
import org.eclipse.persistence.internal.jpa.config.queries.NamedStoredProcedureQueryImpl;
import org.eclipse.persistence.internal.jpa.config.queries.OracleArrayImpl;
import org.eclipse.persistence.internal.jpa.config.queries.OracleObjectImpl;
import org.eclipse.persistence.internal.jpa.config.queries.PlsqlRecordImpl;
import org.eclipse.persistence.internal.jpa.config.queries.PlsqlTableImpl;
import org.eclipse.persistence.internal.jpa.config.queries.SqlResultSetMappingImpl;
import org.eclipse.persistence.internal.jpa.config.sequencing.SequenceGeneratorImpl;
import org.eclipse.persistence.internal.jpa.config.sequencing.TableGeneratorImpl;
import org.eclipse.persistence.internal.jpa.config.sequencing.UuidGeneratorImpl;
import org.eclipse.persistence.internal.jpa.metadata.accessors.classes.ConverterAccessor;
import org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EmbeddableAccessor;
import org.eclipse.persistence.internal.jpa.metadata.accessors.classes.EntityAccessor;
import org.eclipse.persistence.internal.jpa.metadata.accessors.classes.MappedSuperclassAccessor;
import org.eclipse.persistence.internal.jpa.metadata.columns.TenantDiscriminatorColumnMetadata;
import org.eclipse.persistence.internal.jpa.metadata.converters.ConverterMetadata;
import org.eclipse.persistence.internal.jpa.metadata.converters.MixedConverterMetadata;
import org.eclipse.persistence.internal.jpa.metadata.converters.ObjectTypeConverterMetadata;
import org.eclipse.persistence.internal.jpa.metadata.converters.SerializedConverterMetadata;
import org.eclipse.persistence.internal.jpa.metadata.converters.StructConverterMetadata;
import org.eclipse.persistence.internal.jpa.metadata.converters.TypeConverterMetadata;
import org.eclipse.persistence.internal.jpa.metadata.partitioning.HashPartitioningMetadata;
import org.eclipse.persistence.internal.jpa.metadata.partitioning.PartitioningMetadata;
import org.eclipse.persistence.internal.jpa.metadata.partitioning.PinnedPartitioningMetadata;
import org.eclipse.persistence.internal.jpa.metadata.partitioning.RangePartitioningMetadata;
import org.eclipse.persistence.internal.jpa.metadata.partitioning.ReplicationPartitioningMetadata;
import org.eclipse.persistence.internal.jpa.metadata.partitioning.RoundRobinPartitioningMetadata;
import org.eclipse.persistence.internal.jpa.metadata.partitioning.UnionPartitioningMetadata;
import org.eclipse.persistence.internal.jpa.metadata.partitioning.ValuePartitioningMetadata;
import org.eclipse.persistence.internal.jpa.metadata.queries.NamedNativeQueryMetadata;
import org.eclipse.persistence.internal.jpa.metadata.queries.NamedPLSQLStoredFunctionQueryMetadata;
import org.eclipse.persistence.internal.jpa.metadata.queries.NamedPLSQLStoredProcedureQueryMetadata;
import org.eclipse.persistence.internal.jpa.metadata.queries.NamedQueryMetadata;
import org.eclipse.persistence.internal.jpa.metadata.queries.NamedStoredFunctionQueryMetadata;
import org.eclipse.persistence.internal.jpa.metadata.queries.NamedStoredProcedureQueryMetadata;
import org.eclipse.persistence.internal.jpa.metadata.queries.OracleArrayTypeMetadata;
import org.eclipse.persistence.internal.jpa.metadata.queries.OracleObjectTypeMetadata;
import org.eclipse.persistence.internal.jpa.metadata.queries.PLSQLRecordMetadata;
import org.eclipse.persistence.internal.jpa.metadata.queries.PLSQLTableMetadata;
import org.eclipse.persistence.internal.jpa.metadata.queries.SQLResultSetMappingMetadata;
import org.eclipse.persistence.internal.jpa.metadata.sequencing.SequenceGeneratorMetadata;
import org.eclipse.persistence.internal.jpa.metadata.sequencing.TableGeneratorMetadata;
import org.eclipse.persistence.internal.jpa.metadata.sequencing.UuidGeneratorMetadata;
import org.eclipse.persistence.internal.jpa.metadata.xml.XMLEntityMappings;
import org.eclipse.persistence.jpa.config.AccessMethods;
import org.eclipse.persistence.jpa.config.Converter;
import org.eclipse.persistence.jpa.config.ConverterClass;
import org.eclipse.persistence.jpa.config.Embeddable;
import org.eclipse.persistence.jpa.config.Entity;
import org.eclipse.persistence.jpa.config.HashPartitioning;
import org.eclipse.persistence.jpa.config.MappedSuperclass;
import org.eclipse.persistence.jpa.config.Mappings;
import org.eclipse.persistence.jpa.config.NamedNativeQuery;
import org.eclipse.persistence.jpa.config.NamedPlsqlStoredFunctionQuery;
import org.eclipse.persistence.jpa.config.NamedPlsqlStoredProcedureQuery;
import org.eclipse.persistence.jpa.config.NamedQuery;
import org.eclipse.persistence.jpa.config.NamedStoredFunctionQuery;
import org.eclipse.persistence.jpa.config.NamedStoredProcedureQuery;
import org.eclipse.persistence.jpa.config.ObjectTypeConverter;
import org.eclipse.persistence.jpa.config.OracleArray;
import org.eclipse.persistence.jpa.config.OracleObject;
import org.eclipse.persistence.jpa.config.Partitioning;
import org.eclipse.persistence.jpa.config.PersistenceUnitMetadata;
import org.eclipse.persistence.jpa.config.PinnedPartitioning;
import org.eclipse.persistence.jpa.config.PlsqlRecord;
import org.eclipse.persistence.jpa.config.PlsqlTable;
import org.eclipse.persistence.jpa.config.RangePartitioning;
import org.eclipse.persistence.jpa.config.ReplicationPartitioning;
import org.eclipse.persistence.jpa.config.RoundRobinPartitioning;
import org.eclipse.persistence.jpa.config.SequenceGenerator;
import org.eclipse.persistence.jpa.config.SqlResultSetMapping;
import org.eclipse.persistence.jpa.config.StructConverter;
import org.eclipse.persistence.jpa.config.TableGenerator;
import org.eclipse.persistence.jpa.config.TenantDiscriminatorColumn;
import org.eclipse.persistence.jpa.config.TypeConverter;
import org.eclipse.persistence.jpa.config.UnionPartitioning;
import org.eclipse.persistence.jpa.config.UuidGenerator;
import org.eclipse.persistence.jpa.config.ValuePartitioning;
/**
* JPA scripting API implementation.
*
* @author Guy Pelletier
* @since EclipseLink 2.5.1
*/
public class MappingsImpl extends MetadataImpl<XMLEntityMappings> implements Mappings {
public MappingsImpl() {
super(new XMLEntityMappings());
getMetadata().setConverters(new ArrayList<ConverterMetadata>());
getMetadata().setConverterAccessors(new ArrayList<ConverterAccessor>());
getMetadata().setEmbeddables(new ArrayList<EmbeddableAccessor>());
getMetadata().setEntities(new ArrayList<EntityAccessor>());
getMetadata().setHashPartitioning(new ArrayList<HashPartitioningMetadata>());
getMetadata().setMappedSuperclasses(new ArrayList<MappedSuperclassAccessor>());
getMetadata().setMixedConverters(new ArrayList<MixedConverterMetadata>());
getMetadata().setNamedQueries(new ArrayList<NamedQueryMetadata>());
getMetadata().setNamedStoredFunctionQueries(new ArrayList<NamedStoredFunctionQueryMetadata>());
getMetadata().setNamedNativeQueries(new ArrayList<NamedNativeQueryMetadata>());
getMetadata().setNamedPLSQLStoredFunctionQueries(new ArrayList<NamedPLSQLStoredFunctionQueryMetadata>());
getMetadata().setNamedPLSQLStoredProcedureQueries(new ArrayList<NamedPLSQLStoredProcedureQueryMetadata>());
getMetadata().setNamedStoredProcedureQueries(new ArrayList<NamedStoredProcedureQueryMetadata>());
getMetadata().setObjectTypeConverters(new ArrayList<ObjectTypeConverterMetadata>());
getMetadata().setOracleArrayTypes(new ArrayList<OracleArrayTypeMetadata>());
getMetadata().setOracleObjectTypes(new ArrayList<OracleObjectTypeMetadata>());
getMetadata().setPartitioning(new ArrayList<PartitioningMetadata>());
getMetadata().setPinnedPartitioning(new ArrayList<PinnedPartitioningMetadata>());
getMetadata().setPLSQLRecords(new ArrayList<PLSQLRecordMetadata>());
getMetadata().setPLSQLTables(new ArrayList<PLSQLTableMetadata>());
getMetadata().setRangePartitioning(new ArrayList<RangePartitioningMetadata>());
getMetadata().setReplicationPartitioning(new ArrayList<ReplicationPartitioningMetadata>());
getMetadata().setRoundRobinPartitioning(new ArrayList<RoundRobinPartitioningMetadata>());
getMetadata().setSequenceGenerators(new ArrayList<SequenceGeneratorMetadata>());
getMetadata().setSerializedConverters(new ArrayList<SerializedConverterMetadata>()); // TODO: add to config
getMetadata().setSqlResultSetMappings(new ArrayList<SQLResultSetMappingMetadata>());
getMetadata().setStructConverters(new ArrayList<StructConverterMetadata>());
getMetadata().setTableGenerators(new ArrayList<TableGeneratorMetadata>());
getMetadata().setTenantDiscriminatorColumns(new ArrayList<TenantDiscriminatorColumnMetadata>());
getMetadata().setTypeConverters(new ArrayList<TypeConverterMetadata>());
getMetadata().setUnionPartitioning(new ArrayList<UnionPartitioningMetadata>());
getMetadata().setUuidGenerators(new ArrayList<UuidGeneratorMetadata>());
getMetadata().setValuePartitioning(new ArrayList<ValuePartitioningMetadata>());
}
@Override
public Converter addConverter() {
ConverterImpl converter = new ConverterImpl();
getMetadata().getConverters().add(converter.getMetadata());
return converter;
}
@Override
public ConverterClass addConverterClass() {
ConverterClassImpl converterClass = new ConverterClassImpl();
getMetadata().getConverterAccessors().add(converterClass.getMetadata());
return converterClass;
}
@Override
public Embeddable addEmbeddable() {
EmbeddableImpl embeddable = new EmbeddableImpl();
getMetadata().getEmbeddables().add(embeddable.getMetadata());
return embeddable;
}
@Override
public Entity addEntity() {
EntityImpl entity = new EntityImpl();
getMetadata().getEntities().add(entity.getMetadata());
return entity;
}
@Override
public HashPartitioning addHashPartitioning() {
HashPartitioningImpl partitioning = new HashPartitioningImpl();
getMetadata().getHashPartitioning().add(partitioning.getMetadata());
return partitioning;
}
@Override
public MappedSuperclass addMappedSuperclass() {
MappedSuperclassImpl mappedSuperclass = new MappedSuperclassImpl();
getMetadata().getMappedSuperclasses().add(mappedSuperclass.getMetadata());
return mappedSuperclass;
}
@Override
public NamedNativeQuery addNamedNativeQuery() {
NamedNativeQueryImpl query = new NamedNativeQueryImpl();
getMetadata().getNamedNativeQueries().add(query.getMetadata());
return query;
}
@Override
public NamedPlsqlStoredFunctionQuery addNamedPlsqlStoredFunctionQuery() {
NamedPlsqlStoredFunctionQueryImpl query = new NamedPlsqlStoredFunctionQueryImpl();
getMetadata().getNamedPLSQLStoredFunctionQueries().add(query.getMetadata());
return query;
}
@Override
public NamedPlsqlStoredProcedureQuery addNamedPlsqlStoredProcedureQuery() {
NamedPlsqlStoredProcedureQueryImpl query = new NamedPlsqlStoredProcedureQueryImpl();
getMetadata().getNamedPLSQLStoredProcedureQueries().add(query.getMetadata());
return query;
}
@Override
public NamedQuery addNamedQuery() {
NamedQueryImpl query = new NamedQueryImpl();
getMetadata().getNamedQueries().add(query.getMetadata());
return query;
}
@Override
public NamedStoredFunctionQuery addNamedStoredFunctionQuery() {
NamedStoredFunctionQueryImpl query = new NamedStoredFunctionQueryImpl();
getMetadata().getNamedStoredFunctionQueries().add(query.getMetadata());
return query;
}
@Override
public NamedStoredProcedureQuery addNamedStoredProcedureQuery() {
NamedStoredProcedureQueryImpl query = new NamedStoredProcedureQueryImpl();
getMetadata().getNamedStoredProcedureQueries().add(query.getMetadata());
return query;
}
@Override
public ObjectTypeConverter addObjectTypeConverter() {
ObjectTypeConverterImpl converter = new ObjectTypeConverterImpl();
getMetadata().getObjectTypeConverters().add(converter.getMetadata());
return converter;
}
@Override
public OracleArray addOracleArray() {
OracleArrayImpl oracleArray = new OracleArrayImpl();
getMetadata().getOracleArrayTypes().add(oracleArray.getMetadata());
return oracleArray;
}
@Override
public OracleObject addOracleObject() {
OracleObjectImpl oracleObject = new OracleObjectImpl();
getMetadata().getOracleObjectTypes().add(oracleObject.getMetadata());
return oracleObject;
}
@Override
public Partitioning addPartitioning() {
PartitioningImpl partitioning = new PartitioningImpl();
getMetadata().getPartitioning().add(partitioning.getMetadata());
return partitioning;
}
@Override
public PinnedPartitioning addPinnedPartitioning() {
PinnedPartitioningImpl partitioning = new PinnedPartitioningImpl();
getMetadata().getPinnedPartitioning().add(partitioning.getMetadata());
return partitioning;
}
@Override
public PlsqlRecord addPlsqlRecord() {
PlsqlRecordImpl plsqlRecord = new PlsqlRecordImpl();
getMetadata().getPLSQLRecords().add(plsqlRecord.getMetadata());
return plsqlRecord;
}
@Override
public PlsqlTable addPlsqlTable() {
PlsqlTableImpl plsqlTable = new PlsqlTableImpl();
getMetadata().getPLSQLTables().add(plsqlTable.getMetadata());
return plsqlTable;
}
@Override
public RangePartitioning addRangePartitioning() {
RangePartitioningImpl partitioning = new RangePartitioningImpl();
getMetadata().getRangePartitioning().add(partitioning.getMetadata());
return partitioning;
}
@Override
public ReplicationPartitioning addReplicationPartititioning() {
ReplicationPartitioningImpl partitioning = new ReplicationPartitioningImpl();
getMetadata().getReplicationPartitioning().add(partitioning.getMetadata());
return partitioning;
}
@Override
public RoundRobinPartitioning addRoundRobinPartitioning() {
RoundRobinPartitioningImpl partitioning = new RoundRobinPartitioningImpl();
getMetadata().getRoundRobinPartitioning().add(partitioning.getMetadata());
return partitioning;
}
@Override
public SequenceGenerator addSequenceGenerator() {
SequenceGeneratorImpl generator = new SequenceGeneratorImpl();
getMetadata().getSequenceGenerators().add(generator.getMetadata());
return generator;
}
@Override
public SqlResultSetMapping addSqlResultSetMapping() {
SqlResultSetMappingImpl sqlResultSetMapping = new SqlResultSetMappingImpl();
getMetadata().getSqlResultSetMappings().add(sqlResultSetMapping.getMetadata());
return sqlResultSetMapping;
}
@Override
public StructConverter addStructConverter() {
StructConverterImpl converter = new StructConverterImpl();
getMetadata().getStructConverters().add(converter.getMetadata());
return converter;
}
@Override
public TableGenerator addTableGenerator() {
TableGeneratorImpl generator = new TableGeneratorImpl();
getMetadata().getTableGenerators().add(generator.getMetadata());
return generator;
}
@Override
public TenantDiscriminatorColumn addTenantDiscriminatorColumn() {
TenantDiscriminatorColumnImpl column = new TenantDiscriminatorColumnImpl();
getMetadata().getTenantDiscriminatorColumns().add(column.getMetadata());
return column;
}
@Override
public TypeConverter addTypeConverter() {
TypeConverterImpl converter = new TypeConverterImpl();
getMetadata().getTypeConverters().add(converter.getMetadata());
return converter;
}
@Override
public UnionPartitioning addUnionPartitioning() {
UnionPartitioningImpl partitioning = new UnionPartitioningImpl();
getMetadata().getUnionPartitioning().add(partitioning.getMetadata());
return partitioning;
}
@Override
public UuidGenerator addUuidGenerator() {
UuidGeneratorImpl generator = new UuidGeneratorImpl();
getMetadata().getUuidGenerators().add(generator.getMetadata());
return null;
}
@Override
public ValuePartitioning addValuePartitioning() {
ValuePartitioningImpl partitioning = new ValuePartitioningImpl();
getMetadata().getValuePartitioning().add(partitioning.getMetadata());
return partitioning;
}
@Override
public Mappings setAccess(String access) {
getMetadata().setAccess(access);
return this;
}
@Override
public AccessMethods setAccessMethods() {
AccessMethodsImpl accessMethods = new AccessMethodsImpl();
getMetadata().setAccessMethods(accessMethods.getMetadata());
return accessMethods;
}
@Override
public Mappings setCatalog(String catalog) {
getMetadata().setCatalog(catalog);
return this;
}
@Override
public Mappings setPackage(String pkg) {
getMetadata().setPackage(pkg);
return this;
}
@Override
public PersistenceUnitMetadata setPersistenceUnitMetadata() {
PersistenceUnitMetadataImpl persistenceUnit = new PersistenceUnitMetadataImpl();
getMetadata().setPersistenceUnitMetadata(persistenceUnit.getMetadata());
return persistenceUnit;
}
@Override
public Mappings setSchema(String schema) {
getMetadata().setSchema(schema);
return this;
}
@Override
public Mappings setVersion(String version) {
getMetadata().setVersion(version);
return this;
}
}