/******************************************************************************* | |
* 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.tests.optimisticlocking.cascaded; | |
import org.eclipse.persistence.sessions.*; | |
import org.eclipse.persistence.mappings.*; | |
import org.eclipse.persistence.descriptors.*; | |
public class BarProject extends Project { | |
public BarProject(DatabaseSession session) { | |
setName("Bar"); | |
applyLogin(session); | |
addDescriptor(buildBarDescriptor()); | |
addDescriptor(buildBartenderDescriptor()); | |
addDescriptor(buildLicenseDescriptor()); | |
addDescriptor(buildQualificationDescriptor()); | |
addDescriptor(buildAwardDescriptor()); | |
} | |
public void applyLogin(DatabaseSession session) { | |
DatabaseLogin login = (DatabaseLogin)session.getLogin().clone(); | |
// Configuration properties. | |
login.setShouldBindAllParameters(false); | |
login.setShouldCacheAllStatements(false); | |
login.setUsesByteArrayBinding(true); | |
login.setUsesStringBinding(false); | |
if (login.shouldUseByteArrayBinding()) { | |
login.setUsesStreamsForBinding(false); | |
} | |
login.setShouldForceFieldNamesToUpperCase(false); | |
login.setShouldOptimizeDataConversion(true); | |
login.setShouldTrimStrings(true); | |
login.setUsesBatchWriting(false); | |
if (login.shouldUseBatchWriting()) { | |
login.setUsesJDBCBatchWriting(true); | |
} | |
login.setUsesExternalConnectionPooling(false); | |
login.setUsesExternalTransactionController(false); | |
setLogin(login); | |
} | |
public ClassDescriptor buildAwardDescriptor() { | |
RelationalDescriptor descriptor = new RelationalDescriptor(); | |
descriptor.setJavaClass(Award.class); | |
descriptor.addTableName("CASCADE_AWARD"); | |
descriptor.addPrimaryKeyFieldName("CASCADE_AWARD.ID"); | |
// Descriptor Properties. | |
descriptor.useSoftCacheWeakIdentityMap(); | |
descriptor.setIdentityMapSize(100); | |
descriptor.useRemoteSoftCacheWeakIdentityMap(); | |
descriptor.setRemoteIdentityMapSize(100); | |
descriptor.setSequenceNumberFieldName("CASCADE_AWARD.ID"); | |
descriptor.setSequenceNumberName("CASCADE_AWARD_SEQ"); | |
descriptor.setAlias("Award"); | |
// Query Manager. | |
descriptor.getQueryManager().checkCacheForDoesExist(); | |
descriptor.getQueryManager().setQueryTimeout(0); | |
// Mappings. | |
DirectToFieldMapping idMapping = new DirectToFieldMapping(); | |
idMapping.setAttributeName("id"); | |
idMapping.setFieldName("CASCADE_AWARD.ID"); | |
descriptor.addMapping(idMapping); | |
DirectToFieldMapping descriptionMapping = new DirectToFieldMapping(); | |
descriptionMapping.setAttributeName("description"); | |
descriptionMapping.setFieldName("CASCADE_AWARD.DESCRIPTION"); | |
descriptor.addMapping(descriptionMapping); | |
OneToOneMapping qualificationMapping = new OneToOneMapping(); | |
qualificationMapping.setAttributeName("qualification"); | |
qualificationMapping.setReferenceClass(Qualification.class); | |
qualificationMapping.useBasicIndirection(); | |
qualificationMapping.addForeignKeyFieldName("CASCADE_AWARD.QUALIFICATION_ID", "CASCADE_QUALIFICATION.ID"); | |
descriptor.addMapping(qualificationMapping); | |
return descriptor; | |
} | |
public ClassDescriptor buildBarDescriptor() { | |
RelationalDescriptor descriptor = new RelationalDescriptor(); | |
descriptor.setJavaClass(Bar.class); | |
descriptor.addTableName("CASCADE_BAR"); | |
descriptor.addPrimaryKeyFieldName("CASCADE_BAR.ID"); | |
// Descriptor Properties. | |
descriptor.useSoftCacheWeakIdentityMap(); | |
descriptor.setIdentityMapSize(100); | |
descriptor.useRemoteSoftCacheWeakIdentityMap(); | |
descriptor.setRemoteIdentityMapSize(100); | |
descriptor.setSequenceNumberFieldName("CASCADE_BAR.ID"); | |
descriptor.setSequenceNumberName("CASCADE_BAR_SEQ"); | |
descriptor.setAlias("Bar"); | |
VersionLockingPolicy lockingPolicy = new VersionLockingPolicy(); | |
lockingPolicy.setWriteLockFieldName("CASCADE_BAR.VERSION"); | |
lockingPolicy.setIsCascaded(true); | |
descriptor.setOptimisticLockingPolicy(lockingPolicy); | |
// Query Manager. | |
descriptor.getQueryManager().checkCacheForDoesExist(); | |
descriptor.getQueryManager().setQueryTimeout(0); | |
// Mappings. | |
DirectToFieldMapping idMapping = new DirectToFieldMapping(); | |
idMapping.setAttributeName("id"); | |
idMapping.setFieldName("CASCADE_BAR.ID"); | |
descriptor.addMapping(idMapping); | |
DirectToFieldMapping nameMapping = new DirectToFieldMapping(); | |
nameMapping.setAttributeName("name"); | |
nameMapping.setFieldName("CASCADE_BAR.NAME"); | |
nameMapping.setNullValue(""); | |
descriptor.addMapping(nameMapping); | |
DirectToFieldMapping versionMapping = new DirectToFieldMapping(); | |
versionMapping.setAttributeName("version"); | |
versionMapping.setFieldName("CASCADE_BAR.VERSION"); | |
versionMapping.setIsReadOnly(true); | |
descriptor.addMapping(versionMapping); | |
OneToOneMapping licenseMapping = new OneToOneMapping(); | |
licenseMapping.setAttributeName("license"); | |
licenseMapping.setReferenceClass(License.class); | |
licenseMapping.useBasicIndirection(); | |
licenseMapping.privateOwnedRelationship(); | |
licenseMapping.addForeignKeyFieldName("CASCADE_BAR.LICENSE_ID", "CASCADE_LICENSE.ID"); | |
descriptor.addMapping(licenseMapping); | |
OneToManyMapping bartendersMapping = new OneToManyMapping(); | |
bartendersMapping.setAttributeName("bartenders"); | |
bartendersMapping.setReferenceClass(Bartender.class); | |
bartendersMapping.useBasicIndirection(); | |
bartendersMapping.privateOwnedRelationship(); | |
bartendersMapping.addTargetForeignKeyFieldName("CASCADE_BARTENDER.BAR_ID", "CASCADE_BAR.ID"); | |
descriptor.addMapping(bartendersMapping); | |
return descriptor; | |
} | |
public ClassDescriptor buildBartenderDescriptor() { | |
RelationalDescriptor descriptor = new RelationalDescriptor(); | |
descriptor.setJavaClass(Bartender.class); | |
descriptor.addTableName("CASCADE_BARTENDER"); | |
descriptor.addPrimaryKeyFieldName("CASCADE_BARTENDER.ID"); | |
// Descriptor Properties. | |
descriptor.useSoftCacheWeakIdentityMap(); | |
descriptor.setIdentityMapSize(100); | |
descriptor.useRemoteSoftCacheWeakIdentityMap(); | |
descriptor.setRemoteIdentityMapSize(100); | |
descriptor.setSequenceNumberFieldName("CASCADE_BARTENDER.ID"); | |
descriptor.setSequenceNumberName("CASCADE_BARTENDER_SEQ"); | |
descriptor.setAlias("Bartender"); | |
// Query Manager. | |
descriptor.getQueryManager().checkCacheForDoesExist(); | |
descriptor.getQueryManager().setQueryTimeout(0); | |
// Mappings. | |
DirectToFieldMapping idMapping = new DirectToFieldMapping(); | |
idMapping.setAttributeName("id"); | |
idMapping.setFieldName("CASCADE_BARTENDER.ID"); | |
descriptor.addMapping(idMapping); | |
DirectToFieldMapping firstNameMapping = new DirectToFieldMapping(); | |
firstNameMapping.setAttributeName("firstName"); | |
firstNameMapping.setFieldName("CASCADE_BARTENDER.F_NAME"); | |
descriptor.addMapping(firstNameMapping); | |
DirectToFieldMapping lastNameMapping = new DirectToFieldMapping(); | |
lastNameMapping.setAttributeName("lastName"); | |
lastNameMapping.setFieldName("CASCADE_BARTENDER.L_NAME"); | |
descriptor.addMapping(lastNameMapping); | |
OneToOneMapping barMapping = new OneToOneMapping(); | |
barMapping.setAttributeName("bar"); | |
barMapping.setReferenceClass(Bar.class); | |
barMapping.useBasicIndirection(); | |
barMapping.addForeignKeyFieldName("CASCADE_BARTENDER.BAR_ID", "CASCADE_BAR.ID"); | |
descriptor.addMapping(barMapping); | |
OneToOneMapping qualificationMapping = new OneToOneMapping(); | |
qualificationMapping.setAttributeName("qualification"); | |
qualificationMapping.setReferenceClass(Qualification.class); | |
qualificationMapping.useBasicIndirection(); | |
qualificationMapping.privateOwnedRelationship(); | |
qualificationMapping.addForeignKeyFieldName("CASCADE_BARTENDER.QUALIFICATION_ID", "CASCADE_QUALIFICATION.ID"); | |
descriptor.addMapping(qualificationMapping); | |
return descriptor; | |
} | |
public ClassDescriptor buildLicenseDescriptor() { | |
RelationalDescriptor descriptor = new RelationalDescriptor(); | |
descriptor.setJavaClass(License.class); | |
descriptor.addTableName("CASCADE_LICENSE"); | |
descriptor.addPrimaryKeyFieldName("CASCADE_LICENSE.ID"); | |
// Descriptor Properties. | |
descriptor.useSoftCacheWeakIdentityMap(); | |
descriptor.setIdentityMapSize(100); | |
descriptor.useRemoteSoftCacheWeakIdentityMap(); | |
descriptor.setRemoteIdentityMapSize(100); | |
descriptor.setSequenceNumberFieldName("CASCADE_LICENSE.ID"); | |
descriptor.setSequenceNumberName("CASCADE_LICENSE_SEQ"); | |
descriptor.setAlias("License"); | |
// Query Manager. | |
descriptor.getQueryManager().checkCacheForDoesExist(); | |
descriptor.getQueryManager().setQueryTimeout(0); | |
// Mappings. | |
DirectToFieldMapping idMapping = new DirectToFieldMapping(); | |
idMapping.setAttributeName("id"); | |
idMapping.setFieldName("CASCADE_LICENSE.ID"); | |
descriptor.addMapping(idMapping); | |
DirectToFieldMapping classMapping = new DirectToFieldMapping(); | |
classMapping.setAttributeName("licenseClass"); | |
classMapping.setFieldName("CASCADE_LICENSE.LICENSE_CLASS"); | |
descriptor.addMapping(classMapping); | |
return descriptor; | |
} | |
public ClassDescriptor buildQualificationDescriptor() { | |
RelationalDescriptor descriptor = new RelationalDescriptor(); | |
descriptor.setJavaClass(Qualification.class); | |
descriptor.addTableName("CASCADE_QUALIFICATION"); | |
descriptor.addPrimaryKeyFieldName("CASCADE_QUALIFICATION.ID"); | |
// Descriptor Properties. | |
descriptor.useSoftCacheWeakIdentityMap(); | |
descriptor.setIdentityMapSize(100); | |
descriptor.useRemoteSoftCacheWeakIdentityMap(); | |
descriptor.setRemoteIdentityMapSize(100); | |
descriptor.setSequenceNumberFieldName("CASCADE_QUALIFICATION.ID"); | |
descriptor.setSequenceNumberName("CASCADE_QUALIFICATION_SEQ"); | |
descriptor.setAlias("Qualification"); | |
VersionLockingPolicy lockingPolicy = new VersionLockingPolicy(); | |
lockingPolicy.setWriteLockFieldName("CASCADE_QUALIFICATION.VERSION"); | |
descriptor.setOptimisticLockingPolicy(lockingPolicy); | |
// Query Manager. | |
descriptor.getQueryManager().checkCacheForDoesExist(); | |
descriptor.getQueryManager().setQueryTimeout(0); | |
// Mappings. | |
DirectToFieldMapping idMapping = new DirectToFieldMapping(); | |
idMapping.setAttributeName("id"); | |
idMapping.setFieldName("CASCADE_QUALIFICATION.ID"); | |
descriptor.addMapping(idMapping); | |
DirectToFieldMapping yearsOfExperienceMapping = new DirectToFieldMapping(); | |
yearsOfExperienceMapping.setAttributeName("yearsOfExperience"); | |
yearsOfExperienceMapping.setFieldName("CASCADE_QUALIFICATION.YEARS"); | |
yearsOfExperienceMapping.setNullValue(""); | |
descriptor.addMapping(yearsOfExperienceMapping); | |
DirectToFieldMapping versionMapping = new DirectToFieldMapping(); | |
versionMapping.setAttributeName("version"); | |
versionMapping.setFieldName("CASCADE_QUALIFICATION.VERSION"); | |
versionMapping.setIsReadOnly(true); | |
descriptor.addMapping(versionMapping); | |
OneToManyMapping awardsMapping = new OneToManyMapping(); | |
awardsMapping.setAttributeName("awards"); | |
awardsMapping.setReferenceClass(Award.class); | |
awardsMapping.useBasicIndirection(); | |
awardsMapping.privateOwnedRelationship(); | |
awardsMapping.addTargetForeignKeyFieldName("CASCADE_AWARD.QUALIFICATION_ID", "CASCADE_QUALIFICATION.ID"); | |
descriptor.addMapping(awardsMapping); | |
return descriptor; | |
} | |
} |