/*******************************************************************************
* Copyright (c) 1998, 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:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.tools.workbench.test.models.projects;
import java.sql.Blob;
import org.eclipse.persistence.descriptors.RelationalDescriptor;
import org.eclipse.persistence.mappings.AggregateObjectMapping;
import org.eclipse.persistence.mappings.DirectCollectionMapping;
import org.eclipse.persistence.mappings.DirectToFieldMapping;
import org.eclipse.persistence.mappings.ManyToManyMapping;
import org.eclipse.persistence.mappings.OneToManyMapping;
import org.eclipse.persistence.mappings.OneToOneMapping;
import org.eclipse.persistence.mappings.TransformationMapping;
import org.eclipse.persistence.mappings.converters.ObjectTypeConverter;
import org.eclipse.persistence.mappings.converters.TypeConversionConverter;
import org.eclipse.persistence.platform.database.MySQLPlatform;
import org.eclipse.persistence.platform.database.OraclePlatform;
import org.eclipse.persistence.queries.DoesExistQuery;
import org.eclipse.persistence.queries.InMemoryQueryIndirectionPolicy;
import org.eclipse.persistence.queries.QueryResultsCachePolicy;
import org.eclipse.persistence.queries.ReadAllQuery;
import org.eclipse.persistence.queries.ReadObjectQuery;
import org.eclipse.persistence.sequencing.TableSequence;
import org.eclipse.persistence.sessions.DatabaseLogin;
import org.eclipse.persistence.sessions.Project;
import org.eclipse.persistence.mappings.xdb.DirectToXMLTypeMapping;
/**
* @author kamoore
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class CrimeSceneRuntimeProject {
private Project runtimeProject;
public CrimeSceneRuntimeProject() {
this.runtimeProject = new Project();
this.runtimeProject.setName("Crime Scene Project");
applyLogin();
this.runtimeProject.addDescriptor(buildAddressDescriptor());
this.runtimeProject.addDescriptor(buildCrimeSceneDescriptor());
this.runtimeProject.addDescriptor(buildDetectiveDescriptor());
this.runtimeProject.addDescriptor(buildFingerprintDescriptor());
this.runtimeProject.addDescriptor(buildFirearmDescriptor());
this.runtimeProject.addDescriptor(buildPersonDescriptor());
this.runtimeProject.addDescriptor(buildPieceOfEvidenceDescriptor());
this.runtimeProject.addDescriptor(buildSuspectDescriptor());
this.runtimeProject.addDescriptor(buildVictimDescriptor());
this.runtimeProject.addDescriptor(buildWeaponDescriptor());
}
public void applyLogin() {
DatabaseLogin login = new DatabaseLogin();
login.usePlatform(new MySQLPlatform());
login.setDriverClassName(TestDatabases.mySQLDriverClassName());
login.setConnectionString(TestDatabases.mySQLServerURL());
login.setUserName(TestDatabases.userName());
login.setPassword(TestDatabases.password());
// Configuration properties.
((TableSequence)login.getDefaultSequence()).setTableName("SEQUENCE");
((TableSequence)login.getDefaultSequence()).setNameFieldName("SEQ_NAME");
((TableSequence)login.getDefaultSequence()).setCounterFieldName("SEQ_COUNT");
((TableSequence)login.getDefaultSequence()).setPreallocationSize(50);
login.setShouldCacheAllStatements(false);
login.setUsesByteArrayBinding(true);
login.setUsesStringBinding(false);
if (login.shouldUseByteArrayBinding()) { // Can only be used with binding.
login.setUsesStreamsForBinding(false);
}
login.setShouldForceFieldNamesToUpperCase(false);
login.setShouldOptimizeDataConversion(true);
login.setShouldTrimStrings(true);
login.setUsesBatchWriting(false);
if (login.shouldUseBatchWriting()) { // Can only be used with batch writing.
login.setUsesJDBCBatchWriting(true);
}
login.setUsesExternalConnectionPooling(false);
login.setUsesExternalTransactionController(false);
this.runtimeProject.setLogin(login);
}
public RelationalDescriptor buildAddressDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.descriptorIsAggregate();
descriptor.setJavaClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.Address.class.getName());
// Descriptor properties.
descriptor.setAlias("Address");
// Query manager.
//Named Queries
// Event manager.
descriptor.getDescriptorEventManager().setPostBuildSelector("handleEvents");
descriptor.getDescriptorEventManager().setPostCloneSelector("handleEvents");
descriptor.getDescriptorEventManager().setPostMergeSelector("handleEvents");
descriptor.getDescriptorEventManager().setPostRefreshSelector("handleEvents");
// Mappings.
DirectToFieldMapping cityMapping = new DirectToFieldMapping();
cityMapping.setAttributeName("city");
cityMapping.setGetMethodName("getCity");
cityMapping.setSetMethodName("setCity");
cityMapping.setFieldName("city->DIRECT");
descriptor.addMapping(cityMapping);
DirectToFieldMapping stateMapping = new DirectToFieldMapping();
stateMapping.setAttributeName("state");
stateMapping.setGetMethodName("getState");
stateMapping.setSetMethodName("setState");
stateMapping.setFieldName("state->DIRECT");
descriptor.addMapping(stateMapping);
DirectToFieldMapping streetMapping = new DirectToFieldMapping();
streetMapping.setAttributeName("street");
streetMapping.setGetMethodName("getStreet");
streetMapping.setSetMethodName("setStreet");
streetMapping.setFieldName("street->DIRECT");
descriptor.addMapping(streetMapping);
DirectToFieldMapping zipMapping = new DirectToFieldMapping();
zipMapping.setAttributeName("zip");
zipMapping.setGetMethodName("getZip");
zipMapping.setSetMethodName("setZip");
zipMapping.setFieldName("zip->DIRECT");
descriptor.addMapping(zipMapping);
return descriptor;
}
public RelationalDescriptor buildCrimeSceneDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.CrimeScene.class.getName());
descriptor.addTableName("CRIME_SCENE");
descriptor.addPrimaryKeyFieldName("CRIME_SCENE.ID");
// Descriptor properties.
descriptor.setIsIsolated(false);
descriptor.useWeakIdentityMap();
descriptor.setIdentityMapSize(98);
descriptor.setSequenceNumberFieldName("CRIME_SCENE.ID");
descriptor.setSequenceNumberName("org.eclipse.persistence.tools.workbench.test.models.crimescene.CrimeScene");
descriptor.setAlias("CrimeScene");
descriptor.setAmendmentClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.CrimeScene.class.getName());
descriptor.setAmendmentMethodName("addToDescriptor");
// Query manager.
descriptor.getDescriptorQueryManager().assumeExistenceForDoesExist();
//Named Queries
// Event manager.
// Mappings.
DirectToXMLTypeMapping descriptionMapping = new DirectToXMLTypeMapping();
descriptionMapping.setAttributeName("description");
descriptionMapping.setGetMethodName("getDescription");
descriptionMapping.setSetMethodName("setDescription");
descriptionMapping.setFieldName("CRIME_SCENE.DESCRIPTION");
descriptionMapping.setShouldReadWholeDocument(true);
descriptor.addMapping(descriptionMapping);
DirectToFieldMapping idMapping = new DirectToFieldMapping();
idMapping.setAttributeName("id");
idMapping.setGetMethodName("getId");
idMapping.setSetMethodName("setId");
idMapping.setFieldName("CRIME_SCENE.ID");
descriptor.addMapping(idMapping);
DirectToFieldMapping timeMapping = new DirectToFieldMapping();
TypeConversionConverter converter = new TypeConversionConverter(timeMapping);
timeMapping.setConverter(converter);
timeMapping.setAttributeName("time");
timeMapping.setGetMethodName("getTime");
timeMapping.setSetMethodName("setTime");
timeMapping.setFieldName("CRIME_SCENE.CS_TIME");
converter.setDataClassName(java.sql.Date.class.getName());
converter.setObjectClassName(java.sql.Date.class.getName());
descriptor.addMapping(timeMapping);
DirectCollectionMapping keywordsMapping = new DirectCollectionMapping();
keywordsMapping.setAttributeName("keywords");
keywordsMapping.setGetMethodName("getKeywords");
keywordsMapping.setSetMethodName("setKeywords");
keywordsMapping.dontUseIndirection();
keywordsMapping.useBatchReading();
keywordsMapping.useListClassName("java.util.ArrayList");
keywordsMapping.setReferenceTableName("KEYWORD");
keywordsMapping.setDirectFieldName("KEYWORD.WORD");
keywordsMapping.addReferenceKeyFieldName("KEYWORD.CS_ID", "CRIME_SCENE.ID");
descriptor.addMapping(keywordsMapping);
OneToManyMapping evidenceMapping = new OneToManyMapping();
evidenceMapping.setAttributeName("evidence");
evidenceMapping.setGetMethodName("getEvidence");
evidenceMapping.setSetMethodName("setEvidence");
evidenceMapping.setReferenceClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.PieceOfEvidence.class.getName());
evidenceMapping.dontUseIndirection();
evidenceMapping.useBatchReading();
evidenceMapping.privateOwnedRelationship();
evidenceMapping.useListClassName("java.util.ArrayList");
evidenceMapping.addAscendingOrdering("name");
evidenceMapping.addTargetForeignKeyFieldName("EVIDENCE.CS_ID", "CRIME_SCENE.ID");
descriptor.addMapping(evidenceMapping);
ManyToManyMapping suspectsMapping = new ManyToManyMapping();
suspectsMapping.setAttributeName("suspects");
suspectsMapping.setGetMethodName("getSuspects");
suspectsMapping.setSetMethodName("setSuspects");
suspectsMapping.setReferenceClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.Suspect.class.getName());
suspectsMapping.dontUseIndirection();
suspectsMapping.useBatchReading();
suspectsMapping.useListClassName("java.util.ArrayList");
suspectsMapping.setRelationTableName("CS_SUSPECT");
suspectsMapping.addSourceRelationKeyFieldName("CS_SUSPECT.CS_ID", "CRIME_SCENE.ID");
suspectsMapping.addTargetRelationKeyFieldName("CS_SUSPECT.SUSPECT_ID", "PERSON.ID");
descriptor.addMapping(suspectsMapping);
descriptor.applyAmendmentMethod();
return descriptor;
}
public RelationalDescriptor buildDetectiveDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.Detective.class.getName());
descriptor.addTableName("PERSON");
descriptor.addPrimaryKeyFieldName("PERSON.ID");
// Inheritance properties.
descriptor.getDescriptorInheritancePolicy().setParentClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.Person.class.getName());
descriptor.getDescriptorInheritancePolicy().setShouldReadSubclasses(true);
// Descriptor properties.
descriptor.setIsIsolated(false);
descriptor.setAlias("Detective");
// Query manager.
descriptor.getDescriptorQueryManager().getDoesExistQuery().setExistencePolicy(DoesExistQuery.AssumeExistence);
//Named Queries
// Event manager.
// Mappings.
DirectToFieldMapping precinctMapping = new DirectToFieldMapping();
precinctMapping.setAttributeName("precinct");
precinctMapping.setGetMethodName("getPrecinct");
precinctMapping.setSetMethodName("setPrecinct");
precinctMapping.setFieldName("PERSON.PRECINCT");
descriptor.addMapping(precinctMapping);
return descriptor;
}
public RelationalDescriptor buildFingerprintDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.Fingerprint.class.getName());
descriptor.addTableName("FINGERPRINT");
descriptor.addPrimaryKeyFieldName("FINGERPRINT.ID");
// Inheritance properties.
descriptor.getDescriptorInheritancePolicy().setParentClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.PieceOfEvidence.class.getName());
descriptor.getDescriptorInheritancePolicy().setShouldReadSubclasses(true);
// Descriptor properties.
descriptor.setAlias("Fingerprint");
descriptor.setIsIsolated(false);
// Query manager.
descriptor.getDescriptorQueryManager().getDoesExistQuery().setExistencePolicy(DoesExistQuery.AssumeExistence);
descriptor.alwaysRefreshCache();
descriptor.disableCacheHits();
//Named Queries
// Event manager.
// Mappings.
DirectToFieldMapping imageMapping = new DirectToFieldMapping();
imageMapping.setAttributeName("image");
imageMapping.setGetMethodName("getImage");
imageMapping.setSetMethodName("setImage");
imageMapping.setFieldName("FINGERPRINT.PRINT_IMAGE");
descriptor.addMapping(imageMapping);
return descriptor;
}
public RelationalDescriptor buildFirearmDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.Firearm.class.getName());
descriptor.addTableName("FIREARM");
descriptor.addPrimaryKeyFieldName("FIREARM.ID");
// Inheritance properties.
descriptor.getDescriptorInheritancePolicy().setParentClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.Weapon.class.getName());
descriptor.getDescriptorInheritancePolicy().setShouldReadSubclasses(true);
// Descriptor properties.
descriptor.setIsIsolated(false);
descriptor.setAlias("Firearm");
descriptor.setShouldAlwaysRefreshCache(true);
descriptor.setShouldDisableCacheHits(false);
// Query manager.
descriptor.getDescriptorQueryManager().getDoesExistQuery().setExistencePolicy(DoesExistQuery.AssumeExistence);
//Named Queries
// Event manager.
// Mappings.
DirectToFieldMapping caliberMapping = new DirectToFieldMapping();
caliberMapping.setAttributeName("caliber");
caliberMapping.setGetMethodName("getCaliber");
caliberMapping.setSetMethodName("setCaliber");
caliberMapping.setFieldName("FIREARM.CALIBER");
descriptor.addMapping(caliberMapping);
DirectToFieldMapping typeMapping = new DirectToFieldMapping();
typeMapping.setAttributeName("type");
typeMapping.setGetMethodName("getType");
typeMapping.setSetMethodName("setType");
typeMapping.setFieldName("FIREARM.FIREARM_TYPE");
typeMapping.setNullValue("Gun");
descriptor.addMapping(typeMapping);
DirectToFieldMapping byteArrayMapping = new DirectToFieldMapping();
TypeConversionConverter converter = new TypeConversionConverter(byteArrayMapping);
converter.setObjectClassName(Blob.class.getName());
converter.setDataClassName("[B");
byteArrayMapping.setConverter(converter);
byteArrayMapping.setAttributeName("byteArray");
byteArrayMapping.setGetMethodName("getByteArray");
byteArrayMapping.setSetMethodName("setByteArray");
byteArrayMapping.setFieldName("FIREARM.BYTE_ARRAY");
descriptor.addMapping(byteArrayMapping);
return descriptor;
}
public RelationalDescriptor buildPersonDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.Person.class.getName());
descriptor.addTableName("PERSON");
descriptor.addPrimaryKeyFieldName("PERSON.ID");
// Inheritance properties.
descriptor.getDescriptorInheritancePolicy().setClassIndicatorFieldName("PERSON.PERSON_TYPE");
descriptor.getDescriptorInheritancePolicy().addClassNameIndicator(org.eclipse.persistence.tools.workbench.test.models.crimescene.Suspect.class.getName(), "S");
descriptor.getDescriptorInheritancePolicy().addClassNameIndicator(org.eclipse.persistence.tools.workbench.test.models.crimescene.Person.class.getName(), "P");
descriptor.getDescriptorInheritancePolicy().addClassNameIndicator(org.eclipse.persistence.tools.workbench.test.models.crimescene.Detective.class.getName(), "D");
descriptor.getDescriptorInheritancePolicy().addClassNameIndicator(org.eclipse.persistence.tools.workbench.test.models.crimescene.Victim.class.getName(), "V");
descriptor.getDescriptorInheritancePolicy().setShouldReadSubclasses(true);
// Descriptor properties.
descriptor.setIsIsolated(false);
descriptor.useFullIdentityMap();
descriptor.setIdentityMapSize(400);
descriptor.setSequenceNumberFieldName("PERSON.ID");
descriptor.setSequenceNumberName("org.eclipse.persistence.tools.workbench.test.models.crimescene.Person");
descriptor.onlyRefreshCacheIfNewerVersion();
descriptor.setAlias("Person");
// Query manager.
descriptor.getDescriptorQueryManager().assumeExistenceForDoesExist();
descriptor.getDescriptorQueryManager().setDeleteSQLString("KILL 'EM ALL!!!!!");
descriptor.getDescriptorQueryManager().getDeleteQuery().setShouldBindAllParameters(true);
//Named Queries
//Named Query -- findByIQ
ReadAllQuery namedQuery0 = new ReadAllQuery();
namedQuery0.setSQLString("Get all the smart'uns!");
namedQuery0.setName("findByIQ");
namedQuery0.setCascadePolicy(1);
namedQuery0.setQueryTimeout(-1);
namedQuery0.setShouldUseWrapperPolicy(true);
namedQuery0.setShouldBindAllParameters(true);
namedQuery0.setShouldCacheStatement(true);
namedQuery0.setShouldMaintainCache(false);
namedQuery0.setShouldPrepare(true);
namedQuery0.setQueryResultsCachePolicy(new QueryResultsCachePolicy());
namedQuery0.setMaxRows(0);
namedQuery0.setShouldRefreshIdentityMapResult(true);
namedQuery0.setCacheUsage(5);
namedQuery0.setLockMode((short)2);
namedQuery0.setShouldRefreshRemoteIdentityMapResult(true);
namedQuery0.setDistinctState((short)0);
namedQuery0.setInMemoryQueryIndirectionPolicy(new InMemoryQueryIndirectionPolicy(0));
descriptor.getDescriptorQueryManager().addQuery("findByIQ", namedQuery0);
// Event manager.
// Mappings.
DirectToFieldMapping ageMapping = new DirectToFieldMapping();
ageMapping.setAttributeName("age");
ageMapping.setGetMethodName("getAge");
ageMapping.setSetMethodName("setAge");
ageMapping.setFieldName("PERSON.AGE");
descriptor.addMapping(ageMapping);
DirectToFieldMapping firstNameMapping = new DirectToFieldMapping();
firstNameMapping.setAttributeName("firstName");
firstNameMapping.setGetMethodName("getFirstName");
firstNameMapping.setSetMethodName("setFirstName");
firstNameMapping.setFieldName("PERSON.F_NAME");
descriptor.addMapping(firstNameMapping);
DirectToFieldMapping idMapping = new DirectToFieldMapping();
idMapping.setAttributeName("id");
idMapping.setGetMethodName("getId");
idMapping.setSetMethodName("setId");
idMapping.setFieldName("PERSON.ID");
descriptor.addMapping(idMapping);
DirectToFieldMapping lastNameMapping = new DirectToFieldMapping();
lastNameMapping.setAttributeName("lastName");
lastNameMapping.setGetMethodName("getLastName");
lastNameMapping.setSetMethodName("setLastName");
lastNameMapping.setFieldName("PERSON.L_NAME");
descriptor.addMapping(lastNameMapping);
DirectToFieldMapping genderMapping = new DirectToFieldMapping();
ObjectTypeConverter converter = new ObjectTypeConverter(genderMapping);
genderMapping.setConverter(converter);
genderMapping.setAttributeName("gender");
genderMapping.setGetMethodName("getGender");
genderMapping.setSetMethodName("setGender");
genderMapping.setFieldName("PERSON.GENDER");
converter.addConversionValue("F", "Female");
converter.addConversionValue("M", "Male");
descriptor.addMapping(genderMapping);
AggregateObjectMapping addressMapping = new AggregateObjectMapping();
addressMapping.setAttributeName("address");
addressMapping.setGetMethodName("getAddress");
addressMapping.setSetMethodName("setAddress");
addressMapping.setReferenceClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.Address.class.getName());
addressMapping.setIsNullAllowed(false);
addressMapping.addFieldNameTranslation("PERSON.ADD_CITY", "city->DIRECT");
addressMapping.addFieldNameTranslation("PERSON.ADD_STATE", "state->DIRECT");
addressMapping.addFieldNameTranslation("PERSON.ADD_STREET", "street->DIRECT");
addressMapping.addFieldNameTranslation("PERSON.ADD_ZIP", "zip->DIRECT");
descriptor.addMapping(addressMapping);
return descriptor;
}
public RelationalDescriptor buildPieceOfEvidenceDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.PieceOfEvidence.class.getName());
descriptor.addTableName("EVIDENCE");
descriptor.addPrimaryKeyFieldName("EVIDENCE.ID");
// Inheritance properties.
descriptor.getDescriptorInheritancePolicy().setClassIndicatorFieldName("EVIDENCE.EVIDENCE_TYPE");
descriptor.getDescriptorInheritancePolicy().addClassNameIndicator(org.eclipse.persistence.tools.workbench.test.models.crimescene.Weapon.class.getName(), "W");
descriptor.getDescriptorInheritancePolicy().addClassNameIndicator(org.eclipse.persistence.tools.workbench.test.models.crimescene.Firearm.class.getName(), "G");
descriptor.getDescriptorInheritancePolicy().addClassNameIndicator(org.eclipse.persistence.tools.workbench.test.models.crimescene.Fingerprint.class.getName(), "F");
descriptor.getDescriptorInheritancePolicy().setShouldReadSubclasses(true);
// Descriptor properties.
descriptor.setIsIsolated(false);
descriptor.useFullIdentityMap();
descriptor.setIdentityMapSize(405);
descriptor.setSequenceNumberFieldName("EVIDENCE.ID");
descriptor.setSequenceNumberName("org.eclipse.persistence.tools.workbench.test.models.crimescene.PieceOfEvidence");
descriptor.setAlias("PieceOfEvidence");
// Query manager.
descriptor.getDescriptorQueryManager().checkDatabaseForDoesExist();
//Named Queries
// Event manager.
// Mappings.
DirectToFieldMapping descriptionMapping = new DirectToFieldMapping();
descriptionMapping.setAttributeName("description");
descriptionMapping.setGetMethodName("getDescription");
descriptionMapping.setSetMethodName("setDescription");
descriptionMapping.setFieldName("EVIDENCE.DESCRIPTION");
descriptor.addMapping(descriptionMapping);
DirectToFieldMapping idMapping = new DirectToFieldMapping();
idMapping.setAttributeName("id");
idMapping.setGetMethodName("getId");
idMapping.setSetMethodName("setId");
idMapping.setFieldName("EVIDENCE.ID");
descriptor.addMapping(idMapping);
DirectToFieldMapping nameMapping = new DirectToFieldMapping();
nameMapping.setAttributeName("name");
nameMapping.setGetMethodName("getName");
nameMapping.setSetMethodName("setName");
nameMapping.setFieldName("EVIDENCE.NAME");
descriptor.addMapping(nameMapping);
OneToOneMapping crimeSceneMapping = new OneToOneMapping();
crimeSceneMapping.setAttributeName("crimeScene");
crimeSceneMapping.setGetMethodName("getCrimeScene");
crimeSceneMapping.setSetMethodName("setCrimeScene");
crimeSceneMapping.setReferenceClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.CrimeScene.class.getName());
crimeSceneMapping.dontUseIndirection();
crimeSceneMapping.useBatchReading();
crimeSceneMapping.addForeignKeyFieldName("EVIDENCE.CS_ID", "CRIME_SCENE.ID");
crimeSceneMapping.useInnerJoinFetch();
descriptor.addMapping(crimeSceneMapping);
return descriptor;
}
public RelationalDescriptor buildSuspectDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.Suspect.class.getName());
descriptor.addTableName("PERSON");
descriptor.addPrimaryKeyFieldName("PERSON.ID");
// Inheritance properties.
descriptor.getDescriptorInheritancePolicy().setParentClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.Person.class.getName());
descriptor.getDescriptorInheritancePolicy().setShouldReadSubclasses(true);
// Descriptor properties.
descriptor.setAlias("Suspect");
descriptor.setIsIsolated(false);
// Query manager.
descriptor.getDescriptorQueryManager().getDoesExistQuery().setExistencePolicy(DoesExistQuery.AssumeExistence);
//Named Queries
// Event manager.
// Mappings.
DirectToFieldMapping aliasMapping = new DirectToFieldMapping();
aliasMapping.setAttributeName("alias");
aliasMapping.setGetMethodName("getAlias");
aliasMapping.setSetMethodName("setAlias");
aliasMapping.setFieldName("PERSON.ALIAS");
descriptor.addMapping(aliasMapping);
TransformationMapping heightMapping = new TransformationMapping();
heightMapping.setAttributeName("height");
heightMapping.setGetMethodName("getHeight");
heightMapping.setSetMethodName("setHeight");
heightMapping.setAttributeTransformation("calculateHeight");
heightMapping.addFieldTransformation("PERSON.HEIGHT_INCHES", "inchesRemainder");
heightMapping.addFieldTransformation("PERSON.HEIGHT_FEET", "heightInFeet");
descriptor.addMapping(heightMapping);
return descriptor;
}
public RelationalDescriptor buildVictimDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.Victim.class.getName());
descriptor.addTableName("PERSON");
descriptor.addPrimaryKeyFieldName("PERSON.ID");
// Inheritance properties.
descriptor.getDescriptorInheritancePolicy().setParentClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.Person.class.getName());
descriptor.getDescriptorInheritancePolicy().setShouldReadSubclasses(true);
// Descriptor properties.
descriptor.setIsIsolated(false);
descriptor.setAlias("Victim");
// Query manager.
descriptor.getDescriptorQueryManager().getDoesExistQuery().setExistencePolicy(DoesExistQuery.AssumeExistence);
//Named Queries
//Named Query -- findByHeadWoundDescription
ReadObjectQuery namedQuery0 = new ReadObjectQuery();
namedQuery0.setSQLString("Get the guy whose head was shaped like a (blank)!");
namedQuery0.setName("findByHeadWoundDescription");
namedQuery0.setCascadePolicy(1);
namedQuery0.setQueryTimeout(-1);
namedQuery0.setShouldUseWrapperPolicy(true);
namedQuery0.setShouldBindAllParameters(true);
namedQuery0.setShouldCacheStatement(true);
namedQuery0.setShouldMaintainCache(false);
namedQuery0.setShouldPrepare(true);
namedQuery0.setMaxRows(0);
namedQuery0.setShouldRefreshIdentityMapResult(true);
namedQuery0.setCacheUsage(5);
namedQuery0.setLockMode((short)2);
namedQuery0.setShouldRefreshRemoteIdentityMapResult(true);
namedQuery0.setDistinctState((short)0);
namedQuery0.setInMemoryQueryIndirectionPolicy(new InMemoryQueryIndirectionPolicy(0));
namedQuery0.addArgumentByTypeName("shape", java.lang.String.class.getName());
descriptor.getDescriptorQueryManager().addQuery("findByHeadWoundDescription", namedQuery0);
// Event manager.
// Mappings.
DirectToFieldMapping statementMapping = new DirectToFieldMapping();
statementMapping.setAttributeName("statement");
statementMapping.setGetMethodName("getStatement");
statementMapping.setSetMethodName("setStatement");
statementMapping.setFieldName("PERSON.STATEMENT");
descriptor.addMapping(statementMapping);
return descriptor;
}
public RelationalDescriptor buildWeaponDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.Weapon.class.getName());
descriptor.addTableName("WEAPON");
descriptor.addPrimaryKeyFieldName("WEAPON.ID");
// Inheritance properties.
descriptor.getDescriptorInheritancePolicy().setParentClassName(org.eclipse.persistence.tools.workbench.test.models.crimescene.PieceOfEvidence.class.getName());
descriptor.getDescriptorInheritancePolicy().setShouldReadSubclasses(true);
// Descriptor properties.
descriptor.setIsIsolated(false);
descriptor.setAlias("Weapon");
// Query manager.
descriptor.getDescriptorQueryManager().getDoesExistQuery().setExistencePolicy(DoesExistQuery.AssumeExistence);
//Named Queries
// Event manager.
// Mappings.
DirectToFieldMapping usedInCrimeMapping = new DirectToFieldMapping();
usedInCrimeMapping.setAttributeName("usedInCrime");
usedInCrimeMapping.setGetMethodName("isUsedInCrime");
usedInCrimeMapping.setSetMethodName("setUsedInCrime");
usedInCrimeMapping.setFieldName("WEAPON.USEDINCRIME");
descriptor.addMapping(usedInCrimeMapping);
return descriptor;
}
public Project getRuntimeProject() {
return this.runtimeProject;
}
}