blob: f57f9bebe4fa57e910c876e8321b110d012b6cdb [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.classes;
import java.util.ArrayList;
import org.eclipse.persistence.internal.jpa.config.additionalcriteria.AdditionalCriteriaImpl;
import org.eclipse.persistence.internal.jpa.config.cache.CacheImpl;
import org.eclipse.persistence.internal.jpa.config.cache.CacheIndexImpl;
import org.eclipse.persistence.internal.jpa.config.cache.CacheInterceptorImpl;
import org.eclipse.persistence.internal.jpa.config.columns.PrimaryKeyImpl;
import org.eclipse.persistence.internal.jpa.config.listeners.EntityListenerImpl;
import org.eclipse.persistence.internal.jpa.config.locking.OptimisticLockingImpl;
import org.eclipse.persistence.internal.jpa.config.multitenant.MultitenantImpl;
import org.eclipse.persistence.internal.jpa.config.queries.FetchGroupImpl;
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.QueryRedirectorsImpl;
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.MappedSuperclassAccessor;
import org.eclipse.persistence.internal.jpa.metadata.cache.CacheIndexMetadata;
import org.eclipse.persistence.internal.jpa.metadata.listeners.EntityListenerMetadata;
import org.eclipse.persistence.internal.jpa.metadata.queries.FetchGroupMetadata;
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.SQLResultSetMappingMetadata;
import org.eclipse.persistence.jpa.config.AdditionalCriteria;
import org.eclipse.persistence.jpa.config.Cache;
import org.eclipse.persistence.jpa.config.CacheIndex;
import org.eclipse.persistence.jpa.config.CacheInterceptor;
import org.eclipse.persistence.jpa.config.EntityListener;
import org.eclipse.persistence.jpa.config.FetchGroup;
import org.eclipse.persistence.jpa.config.Multitenant;
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.OptimisticLocking;
import org.eclipse.persistence.jpa.config.PrimaryKey;
import org.eclipse.persistence.jpa.config.QueryRedirectors;
import org.eclipse.persistence.jpa.config.SequenceGenerator;
import org.eclipse.persistence.jpa.config.SqlResultSetMapping;
import org.eclipse.persistence.jpa.config.TableGenerator;
import org.eclipse.persistence.jpa.config.UuidGenerator;
/**
* JPA scripting API implementation.
*
* @author Guy Pelletier
* @since EclipseLink 2.5.1
*/
@SuppressWarnings("unchecked")
public abstract class AbstractMappedClassImpl<T extends MappedSuperclassAccessor, R> extends AbstractClassImpl<T, R> {
public AbstractMappedClassImpl(T t) {
super(t);
getMetadata().setCacheIndexes(new ArrayList<CacheIndexMetadata>());
getMetadata().setEntityListeners(new ArrayList<EntityListenerMetadata>());
getMetadata().setFetchGroups(new ArrayList<FetchGroupMetadata>());
getMetadata().setNamedNativeQueries(new ArrayList<NamedNativeQueryMetadata>());
getMetadata().setNamedQueries(new ArrayList<NamedQueryMetadata>());
getMetadata().setNamedStoredFunctionQueries(new ArrayList<NamedStoredFunctionQueryMetadata>());
getMetadata().setNamedStoredProcedureQueries(new ArrayList<NamedStoredProcedureQueryMetadata>());
getMetadata().setNamedPLSQLStoredFunctionQueries(new ArrayList<NamedPLSQLStoredFunctionQueryMetadata>());
getMetadata().setNamedPLSQLStoredProcedureQueries(new ArrayList<NamedPLSQLStoredProcedureQueryMetadata>());
getMetadata().setSqlResultSetMappings(new ArrayList<SQLResultSetMappingMetadata>());
}
public CacheIndex addCacheIndex() {
CacheIndexImpl cacheIndex = new CacheIndexImpl();
getMetadata().getCacheIndexes().add(cacheIndex.getMetadata());
return cacheIndex;
}
public EntityListener addEntityListener() {
EntityListenerImpl listener = new EntityListenerImpl();
getMetadata().getEntityListeners().add(listener.getMetadata());
return listener;
}
public FetchGroup addFetchGroup() {
FetchGroupImpl fetchGroup = new FetchGroupImpl();
getMetadata().getFetchGroups().add(fetchGroup.getMetadata());
return fetchGroup;
}
public NamedNativeQuery addNamedNativeQuery() {
NamedNativeQueryImpl query = new NamedNativeQueryImpl();
getMetadata().getNamedNativeQueries().add(query.getMetadata());
return query;
}
public NamedPlsqlStoredFunctionQuery addNamedPLSQLStoredFunctionQuery() {
NamedPlsqlStoredFunctionQueryImpl query = new NamedPlsqlStoredFunctionQueryImpl();
getMetadata().getNamedPLSQLStoredFunctionQueries().add(query.getMetadata());
return query;
}
public NamedPlsqlStoredProcedureQuery addNamedPLSQLStoredProcedureQuery() {
NamedPlsqlStoredProcedureQueryImpl query = new NamedPlsqlStoredProcedureQueryImpl();
getMetadata().getNamedPLSQLStoredProcedureQueries().add(query.getMetadata());
return query;
}
public NamedQuery addNamedQuery() {
NamedQueryImpl namedQuery = new NamedQueryImpl();
getMetadata().getNamedQueries().add(namedQuery.getMetadata());
return namedQuery;
}
public NamedStoredFunctionQuery addNamedStoredFunctionQuery() {
NamedStoredFunctionQueryImpl query = new NamedStoredFunctionQueryImpl();
getMetadata().getNamedStoredFunctionQueries().add(query.getMetadata());
return query;
}
public NamedStoredProcedureQuery addNamedStoredProcedureQuery() {
NamedStoredProcedureQueryImpl query = new NamedStoredProcedureQueryImpl();
getMetadata().getNamedStoredProcedureQueries().add(query.getMetadata());
return query;
}
public SqlResultSetMapping addSqlResultSetMapping() {
SqlResultSetMappingImpl sqlResultSetMapping = new SqlResultSetMappingImpl();
getMetadata().getSqlResultSetMappings().add(sqlResultSetMapping.getMetadata());
return sqlResultSetMapping;
}
public AdditionalCriteria setAdditionalCriteria() {
AdditionalCriteriaImpl additionalCriteria = new AdditionalCriteriaImpl();
getMetadata().setAdditionalCriteria(additionalCriteria.getMetadata());
return additionalCriteria;
}
public Cache setCache() {
CacheImpl cache = new CacheImpl();
getMetadata().setCache(cache.getMetadata());
return cache;
}
public R setCacheable(Boolean cacheable) {
getMetadata().setCacheable(cacheable);
return (R) this;
}
public CacheInterceptor setCacheInterceptor() {
CacheInterceptorImpl cacheInterceptor = new CacheInterceptorImpl();
getMetadata().setCacheInterceptor(cacheInterceptor.getMetadata());
return cacheInterceptor;
}
public R setExcludeDefaultListeners(Boolean excludeDefaultListeners) {
getMetadata().setExcludeDefaultListeners(excludeDefaultListeners);
return (R) this;
}
public R setExcludeSuperclassListeners(Boolean excludeSuperclassListeners) {
getMetadata().setExcludeSuperclassListeners(excludeSuperclassListeners);
return (R) this;
}
public R setExistenceChecking(String existenceChecking) {
getMetadata().setExistenceChecking(existenceChecking);
return (R) this;
}
public R setIdClass(String idClass) {
getMetadata().setIdClassName(idClass);
return (R) this;
}
public Multitenant setMultitenant() {
MultitenantImpl multitenant = new MultitenantImpl();
getMetadata().setMultitenant(multitenant.getMetadata());
return multitenant;
}
public OptimisticLocking setOptimisticLocking() {
OptimisticLockingImpl optimisticLocking = new OptimisticLockingImpl();
getMetadata().setOptimisticLocking(optimisticLocking.getMetadata());
return optimisticLocking;
}
public R setPostLoad(String methodName) {
getMetadata().setPostLoad(methodName);
return (R) this;
}
public R setPostPersist(String methodName) {
getMetadata().setPostPersist(methodName);
return (R) this;
}
public R setPostRemove(String methodName) {
getMetadata().setPostRemove(methodName);
return (R) this;
}
public R setPostUpdate(String methodName) {
getMetadata().setPostUpdate(methodName);
return (R) this;
}
public R setPrePersist(String methodName) {
getMetadata().setPrePersist(methodName);
return (R) this;
}
public R setPreRemove(String methodName) {
getMetadata().setPreRemove(methodName);
return (R) this;
}
public R setPreUpdate(String methodName) {
getMetadata().setPreUpdate(methodName);
return (R) this;
}
public PrimaryKey setPrimaryKey() {
PrimaryKeyImpl primaryKey = new PrimaryKeyImpl();
getMetadata().setPrimaryKey(primaryKey.getMetadata());
return primaryKey;
}
public QueryRedirectors setQueryRedirectors() {
QueryRedirectorsImpl queryRedirectors = new QueryRedirectorsImpl();
getMetadata().setQueryRedirectors(queryRedirectors.getMetadata());
return queryRedirectors;
}
public R setReadOnly(Boolean readOnly) {
getMetadata().setReadOnly(readOnly);
return (R) this;
}
public SequenceGenerator setSequenceGenerator() {
SequenceGeneratorImpl sequenceGenerator = new SequenceGeneratorImpl();
getMetadata().setSequenceGenerator(sequenceGenerator.getMetadata());
return sequenceGenerator;
}
public TableGenerator setTableGenerator() {
TableGeneratorImpl tableGenerator = new TableGeneratorImpl();
getMetadata().setTableGenerator(tableGenerator.getMetadata());
return tableGenerator;
}
public UuidGenerator setUuidGenerator() {
UuidGeneratorImpl uuidGenerator = new UuidGeneratorImpl();
getMetadata().setUuidGenerator(uuidGenerator.getMetadata());
return uuidGenerator;
}
}