blob: 4aaeb3697e8b250aa7fedba8bf241ff550b130a6 [file] [log] [blame]
/*
* Copyright (c) 1998, 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:
// 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;
}
}