/******************************************************************************* * Copyright (c) 2013, 2015 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 v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Guy Pelletier - initial API and implementation ******************************************************************************/ package org.eclipse.persistence.internal.jpa.config.mappings; import java.util.ArrayList; import org.eclipse.persistence.internal.jpa.config.columns.JoinColumnImpl; import org.eclipse.persistence.internal.jpa.config.columns.JoinFieldImpl; import org.eclipse.persistence.internal.jpa.config.tables.JoinTableImpl; import org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.RelationshipAccessor; import org.eclipse.persistence.internal.jpa.metadata.columns.JoinColumnMetadata; import org.eclipse.persistence.internal.jpa.metadata.columns.JoinFieldMetadata; import org.eclipse.persistence.jpa.config.BatchFetch; import org.eclipse.persistence.jpa.config.Cascade; import org.eclipse.persistence.jpa.config.JoinColumn; import org.eclipse.persistence.jpa.config.JoinField; import org.eclipse.persistence.jpa.config.JoinTable; /** * JPA scripting API implementation. * * @author Guy Pelletier * @since EclipseLink 2.5.1 */ @SuppressWarnings("unchecked") public class AbstractRelationshipMappingImpl<T extends RelationshipAccessor, R> extends AbstractMappingImpl<T, R> { public AbstractRelationshipMappingImpl(T t) { super(t); getMetadata().setJoinColumns(new ArrayList<JoinColumnMetadata>()); getMetadata().setJoinFields(new ArrayList<JoinFieldMetadata>()); } public JoinColumn addJoinColumn() { JoinColumnImpl joinColumn = new JoinColumnImpl(); getMetadata().getJoinColumns().add(joinColumn.getMetadata()); return joinColumn; } public JoinField addJoinField() { JoinFieldImpl joinField = new JoinFieldImpl(); getMetadata().getJoinFields().add(joinField.getMetadata()); return joinField; } public BatchFetch setBatchFetch() { BatchFetchImpl batchFetch = new BatchFetchImpl(); getMetadata().setBatchFetch(batchFetch.getMetadata()); return batchFetch; } public Cascade setCascade() { CascadeImpl cascade = new CascadeImpl(); getMetadata().setCascade(cascade.getMetadata()); return cascade; } public R setCascadeOnDelete(Boolean cascadeOnDelete) { getMetadata().setCascadeOnDelete(cascadeOnDelete); return (R) this; } public R setFetch(String fetch) { getMetadata().setFetch(fetch); return (R) this; } public R setJoinFetch(String joinFetch) { getMetadata().setJoinFetch(joinFetch); return (R) this; } public JoinTable setJoinTable() { JoinTableImpl joinTable = new JoinTableImpl(); getMetadata().setJoinTable(joinTable.getMetadata()); return joinTable; } public R setMappedBy(String mappedBy) { getMetadata().setMappedBy(mappedBy); return (R) this; } public R setNonCacheable(Boolean nonCacheable) { getMetadata().setNonCacheable(nonCacheable); return (R) this; } public R setOrphanRemoval(Boolean orphanRemoval) { getMetadata().setOrphanRemoval(orphanRemoval); return (R) this; } public R setPrivateOwned(Boolean privateOwned) { getMetadata().setPrivateOwned(privateOwned); return (R) this; } public R setTargetEntity(String targetEntity) { getMetadata().setTargetEntityName(targetEntity); return (R) this; } }