/******************************************************************************* | |
* Copyright (c) 1998, 2013 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: | |
* Oracle - initial API and implementation from Oracle TopLink | |
******************************************************************************/ | |
package org.eclipse.persistence.testing.models.transparentindirection; | |
import java.util.*; | |
import org.eclipse.persistence.descriptors.RelationalDescriptor; | |
/** | |
* override the generated methods with hand-modified methods; | |
* allow different container policies (Collection/Vector, Map/Hashtable) | |
*/ | |
public abstract class IndirectContainerProject extends GeneratedIndirectContainerProject { | |
public IndirectContainerProject() { | |
super(); | |
} | |
/** | |
* modifications are marked with "bjv" | |
*/ | |
protected void buildOrderDescriptor() { | |
RelationalDescriptor descriptor = new RelationalDescriptor(); | |
// SECTION: DESCRIPTOR | |
descriptor.setJavaClass(this.orderClass());// bjv | |
Vector vector = new Vector(); | |
vector.addElement("ORD"); | |
descriptor.setTableNames(vector); | |
descriptor.addPrimaryKeyFieldName("ORD.ID"); | |
// SECTION: PROPERTIES | |
descriptor.setIdentityMapClass(org.eclipse.persistence.internal.identitymaps.FullIdentityMap.class); | |
descriptor.setSequenceNumberName("order_seq"); | |
descriptor.setSequenceNumberFieldName("ID"); | |
descriptor.setExistenceChecking("Check cache"); | |
descriptor.setIdentityMapSize(100); | |
// SECTION: COPY POLICY | |
descriptor.createCopyPolicy("constructor"); | |
// SECTION: INSTANTIATION POLICY | |
descriptor.createInstantiationPolicy("constructor"); | |
// SECTION: DIRECTCOLLECTIONMAPPING | |
org.eclipse.persistence.mappings.DirectCollectionMapping directcollectionmapping = new org.eclipse.persistence.mappings.DirectCollectionMapping(); | |
directcollectionmapping.setAttributeName("contacts"); | |
directcollectionmapping.setIsReadOnly(false); | |
directcollectionmapping.setUsesIndirection(false); | |
directcollectionmapping.setIsPrivateOwned(true); | |
this.configureContactContainer(directcollectionmapping);// bjv | |
directcollectionmapping.setDirectFieldName("CONTACT.NAME"); | |
directcollectionmapping.setReferenceTableName("CONTACT"); | |
directcollectionmapping.addReferenceKeyFieldName("CONTACT.ORDER_ID", "ORD.ID"); | |
descriptor.addMapping(directcollectionmapping); | |
// SECTION: DIRECTCOLLECTIONMAPPING | |
org.eclipse.persistence.mappings.DirectCollectionMapping directcollectionmapping1 = new org.eclipse.persistence.mappings.DirectCollectionMapping(); | |
directcollectionmapping1.setAttributeName("contacts2"); | |
directcollectionmapping1.setIsReadOnly(false); | |
directcollectionmapping1.setUsesIndirection(false); | |
directcollectionmapping1.setIsPrivateOwned(true); | |
this.configureContactContainer2(directcollectionmapping1);// bjv | |
directcollectionmapping1.setDirectFieldName("CONTACT2.NAME"); | |
directcollectionmapping1.setReferenceTableName("CONTACT2"); | |
directcollectionmapping1.addReferenceKeyFieldName("CONTACT2.ORDER_ID", "ORD.ID"); | |
descriptor.addMapping(directcollectionmapping1); | |
// SECTION: DIRECTTOFIELDMAPPING | |
org.eclipse.persistence.mappings.DirectToFieldMapping directtofieldmapping = new org.eclipse.persistence.mappings.DirectToFieldMapping(); | |
directtofieldmapping.setAttributeName("customerName"); | |
directtofieldmapping.setIsReadOnly(false); | |
directtofieldmapping.setFieldName("ORD.CUSTNAME"); | |
descriptor.addMapping(directtofieldmapping); | |
// SECTION: DIRECTTOFIELDMAPPING | |
org.eclipse.persistence.mappings.DirectToFieldMapping directtofieldmapping1 = new org.eclipse.persistence.mappings.DirectToFieldMapping(); | |
directtofieldmapping1.setAttributeName("id"); | |
directtofieldmapping1.setIsReadOnly(false); | |
directtofieldmapping1.setFieldName("ORD.ID"); | |
descriptor.addMapping(directtofieldmapping1); | |
// SECTION: MANYTOMANYMAPPING | |
org.eclipse.persistence.mappings.ManyToManyMapping manytomanymapping = new org.eclipse.persistence.mappings.ManyToManyMapping(); | |
manytomanymapping.setAttributeName("salesReps"); | |
manytomanymapping.setIsReadOnly(false); | |
manytomanymapping.setUsesIndirection(false); | |
manytomanymapping.setReferenceClass(salesRepClass()); | |
manytomanymapping.setIsPrivateOwned(false); | |
this.configureSalesRepContainer(manytomanymapping);// bjv | |
manytomanymapping.setRelationTableName("ORDREP"); | |
manytomanymapping.addSourceRelationKeyFieldName("ORDREP.ORDER_ID", "ORD.ID"); | |
manytomanymapping.addTargetRelationKeyFieldName("ORDREP.SALEREP_ID", "SALEREP.ID"); | |
descriptor.addMapping(manytomanymapping); | |
// SECTION: MANYTOMANYMAPPING | |
org.eclipse.persistence.mappings.ManyToManyMapping manytomanymapping1 = new org.eclipse.persistence.mappings.ManyToManyMapping(); | |
manytomanymapping1.setAttributeName("salesReps2"); | |
manytomanymapping1.setIsReadOnly(false); | |
manytomanymapping1.setUsesIndirection(false); | |
manytomanymapping1.setReferenceClass(salesRepClass()); | |
manytomanymapping1.setIsPrivateOwned(false); | |
this.configureSalesRepContainer2(manytomanymapping1);// bjv | |
manytomanymapping1.setRelationTableName("ORDREP2"); | |
manytomanymapping1.addSourceRelationKeyFieldName("ORDREP2.ORDER_ID", "ORD.ID"); | |
manytomanymapping1.addTargetRelationKeyFieldName("ORDREP2.SALEREP_ID", "SALEREP.ID"); | |
descriptor.addMapping(manytomanymapping1); | |
// SECTION: ONETOMANYMAPPING | |
org.eclipse.persistence.mappings.OneToManyMapping onetomanymapping = new org.eclipse.persistence.mappings.OneToManyMapping(); | |
onetomanymapping.setAttributeName("lines"); | |
onetomanymapping.setIsReadOnly(false); | |
onetomanymapping.setUsesIndirection(false); | |
onetomanymapping.setReferenceClass(orderLineClass()); | |
onetomanymapping.setIsPrivateOwned(true); | |
this.configureLineContainer(onetomanymapping);// bjv | |
onetomanymapping.addTargetForeignKeyFieldName("ORDLINE.ORDER_ID", "ORD.ID"); | |
descriptor.addMapping(onetomanymapping); | |
// SECTION: TRANSFORMATIONMAPPING | |
org.eclipse.persistence.mappings.TransformationMapping transformationmapping = new org.eclipse.persistence.mappings.TransformationMapping(); | |
transformationmapping.setAttributeName("total"); | |
transformationmapping.setIsReadOnly(false); | |
transformationmapping.setUsesIndirection(true); | |
transformationmapping.setAttributeTransformation("getTotalFromRow"); | |
transformationmapping.addFieldTransformation("ORD.TOTT", "getTotalTens"); | |
transformationmapping.addFieldTransformation("ORD.TOTO", "getTotalOnes"); | |
descriptor.addMapping(transformationmapping); | |
// SECTION: TRANSFORMATIONMAPPING | |
org.eclipse.persistence.mappings.TransformationMapping transformationmapping2 = new org.eclipse.persistence.mappings.TransformationMapping(); | |
transformationmapping2.setAttributeName("total2"); | |
transformationmapping2.setIsReadOnly(false); | |
transformationmapping2.setUsesIndirection(false); | |
transformationmapping2.setAttributeTransformation("getTotalFromRow2"); | |
transformationmapping2.addFieldTransformation("ORD.TOTT2", "getTotalTens2"); | |
transformationmapping2.addFieldTransformation("ORD.TOTO2", "getTotalOnes2"); | |
descriptor.addMapping(transformationmapping2); | |
this.modifyOrderDescriptor(descriptor);// bjv | |
addDescriptor(descriptor); | |
} | |
/** | |
* modifications are marked with "bjv" | |
*/ | |
protected void buildOrderLineDescriptor() { | |
RelationalDescriptor descriptor = new RelationalDescriptor(); | |
// SECTION: DESCRIPTOR | |
descriptor.setJavaClass(orderLineClass()); | |
Vector vector = new Vector(); | |
vector.addElement("ORDLINE"); | |
descriptor.setTableNames(vector); | |
descriptor.addPrimaryKeyFieldName("ORDLINE.ID"); | |
// SECTION: PROPERTIES | |
descriptor.setIdentityMapClass(org.eclipse.persistence.internal.identitymaps.FullIdentityMap.class); | |
descriptor.setSequenceNumberName("orderline"); | |
descriptor.setSequenceNumberFieldName("ID"); | |
descriptor.setExistenceChecking("Check cache"); | |
descriptor.setIdentityMapSize(100); | |
// SECTION: COPY POLICY | |
descriptor.createCopyPolicy("constructor"); | |
// SECTION: INSTANTIATION POLICY | |
descriptor.createInstantiationPolicy("constructor"); | |
// SECTION: DIRECTTOFIELDMAPPING | |
org.eclipse.persistence.mappings.DirectToFieldMapping directtofieldmapping = new org.eclipse.persistence.mappings.DirectToFieldMapping(); | |
directtofieldmapping.setAttributeName("id"); | |
directtofieldmapping.setIsReadOnly(false); | |
directtofieldmapping.setFieldName("ORDLINE.ID"); | |
descriptor.addMapping(directtofieldmapping); | |
// SECTION: DIRECTTOFIELDMAPPING | |
org.eclipse.persistence.mappings.DirectToFieldMapping directtofieldmapping1 = new org.eclipse.persistence.mappings.DirectToFieldMapping(); | |
directtofieldmapping1.setAttributeName("itemName"); | |
directtofieldmapping1.setIsReadOnly(false); | |
directtofieldmapping1.setFieldName("ORDLINE.ITEM_NAME"); | |
descriptor.addMapping(directtofieldmapping1); | |
// SECTION: DIRECTTOFIELDMAPPING | |
org.eclipse.persistence.mappings.DirectToFieldMapping directtofieldmapping2 = new org.eclipse.persistence.mappings.DirectToFieldMapping(); | |
directtofieldmapping2.setAttributeName("quantity"); | |
directtofieldmapping2.setIsReadOnly(false); | |
directtofieldmapping2.setFieldName("ORDLINE.QUANTITY"); | |
descriptor.addMapping(directtofieldmapping2); | |
// SECTION: ONETOONEMAPPING | |
org.eclipse.persistence.mappings.OneToOneMapping onetoonemapping = new org.eclipse.persistence.mappings.OneToOneMapping(); | |
onetoonemapping.setAttributeName("order"); | |
onetoonemapping.setIsReadOnly(false); | |
onetoonemapping.setUsesIndirection(false); | |
onetoonemapping.setReferenceClass(this.orderClass());// bjv | |
onetoonemapping.setIsPrivateOwned(false); | |
onetoonemapping.addForeignKeyFieldName("ORDLINE.ORDER_ID", "ORD.ID"); | |
descriptor.addMapping(onetoonemapping); | |
addDescriptor(descriptor); | |
} | |
/** | |
* modifications are marked with "bjv" | |
*/ | |
protected void buildSalesRepDescriptor() { | |
RelationalDescriptor descriptor = new RelationalDescriptor(); | |
// SECTION: DESCRIPTOR | |
descriptor.setJavaClass(salesRepClass()); | |
Vector vector = new Vector(); | |
vector.addElement("SALEREP"); | |
descriptor.setTableNames(vector); | |
descriptor.addPrimaryKeyFieldName("SALEREP.ID"); | |
// SECTION: PROPERTIES | |
descriptor.setIdentityMapClass(org.eclipse.persistence.internal.identitymaps.FullIdentityMap.class); | |
descriptor.setSequenceNumberName("salesrep"); | |
descriptor.setSequenceNumberFieldName("ID"); | |
descriptor.setExistenceChecking("Check cache"); | |
descriptor.setIdentityMapSize(100); | |
// SECTION: COPY POLICY | |
descriptor.createCopyPolicy("constructor"); | |
// SECTION: INSTANTIATION POLICY | |
descriptor.createInstantiationPolicy("constructor"); | |
// SECTION: DIRECTTOFIELDMAPPING | |
org.eclipse.persistence.mappings.DirectToFieldMapping directtofieldmapping = new org.eclipse.persistence.mappings.DirectToFieldMapping(); | |
directtofieldmapping.setAttributeName("id"); | |
directtofieldmapping.setIsReadOnly(false); | |
directtofieldmapping.setFieldName("SALEREP.ID"); | |
descriptor.addMapping(directtofieldmapping); | |
// SECTION: DIRECTTOFIELDMAPPING | |
org.eclipse.persistence.mappings.DirectToFieldMapping directtofieldmapping1 = new org.eclipse.persistence.mappings.DirectToFieldMapping(); | |
directtofieldmapping1.setAttributeName("name"); | |
directtofieldmapping1.setIsReadOnly(false); | |
directtofieldmapping1.setFieldName("SALEREP.NAME"); | |
descriptor.addMapping(directtofieldmapping1); | |
// SECTION: MANYTOMANYMAPPING | |
org.eclipse.persistence.mappings.ManyToManyMapping manytomanymapping = new org.eclipse.persistence.mappings.ManyToManyMapping(); | |
manytomanymapping.setAttributeName("orders"); | |
manytomanymapping.setIsReadOnly(true); | |
manytomanymapping.setUsesIndirection(false); | |
manytomanymapping.setReferenceClass(this.orderClass());// bjv | |
manytomanymapping.setIsPrivateOwned(false); | |
manytomanymapping.useCollectionClass(java.util.Vector.class); | |
manytomanymapping.setRelationTableName("ORDREP"); | |
manytomanymapping.addSourceRelationKeyFieldName("ORDREP.SALEREP_ID", "SALEREP.ID"); | |
manytomanymapping.addTargetRelationKeyFieldName("ORDREP.ORDER_ID", "ORD.ID"); | |
descriptor.addMapping(manytomanymapping); | |
// SECTION: MANYTOMANYMAPPING | |
org.eclipse.persistence.mappings.ManyToManyMapping manytomanymapping1 = new org.eclipse.persistence.mappings.ManyToManyMapping(); | |
manytomanymapping1.setAttributeName("orders2"); | |
manytomanymapping1.setIsReadOnly(true); | |
manytomanymapping1.setUsesIndirection(false); | |
manytomanymapping1.setReferenceClass(this.orderClass());// bjv | |
manytomanymapping1.setIsPrivateOwned(false); | |
manytomanymapping1.useCollectionClass(java.util.Vector.class); | |
manytomanymapping1.setRelationTableName("ORDREP2"); | |
manytomanymapping1.addSourceRelationKeyFieldName("ORDREP2.SALEREP_ID", "SALEREP.ID"); | |
manytomanymapping1.addTargetRelationKeyFieldName("ORDREP2.ORDER_ID", "ORD.ID"); | |
descriptor.addMapping(manytomanymapping1); | |
addDescriptor(descriptor); | |
} | |
protected abstract void configureContactContainer(org.eclipse.persistence.mappings.DirectCollectionMapping directcollectionmapping); | |
protected void configureContactContainer2(org.eclipse.persistence.mappings.DirectCollectionMapping directcollectionmapping) { | |
directcollectionmapping.useCollectionClass(java.util.Stack.class); | |
} | |
protected abstract void configureLineContainer(org.eclipse.persistence.mappings.OneToManyMapping onetomanymapping); | |
protected abstract void configureSalesRepContainer(org.eclipse.persistence.mappings.ManyToManyMapping manytomanymapping); | |
protected void configureSalesRepContainer2(org.eclipse.persistence.mappings.ManyToManyMapping manytomanymapping) { | |
manytomanymapping.useMapClass(org.eclipse.persistence.testing.tests.transparentindirection.TestHashtable.class, "getKey"); | |
} | |
protected abstract void modifyOrderDescriptor(RelationalDescriptor descriptor); | |
protected abstract Class orderClass(); | |
protected abstract Class orderLineClass(); | |
protected abstract Class salesRepClass(); | |
} |