/*******************************************************************************
* 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 org.eclipse.persistence.tools.workbench.test.models.multipletable.*;
import org.eclipse.persistence.sequencing.TableSequence;
import org.eclipse.persistence.sessions.*;
import org.eclipse.persistence.descriptors.*;
import org.eclipse.persistence.mappings.DirectToFieldMapping;
/**
* Project definition for the MultipleTableSystem
*
* @auther Les Davis
* @version 1.0
* @date Sep 13, 2007
*/
public class MultipleTableRuntimeProject {
private Project runtimeProject;
public MultipleTableRuntimeProject() {
this.runtimeProject = new Project();
this.runtimeProject.setName("MultipleTable");
this.applyLogin();
this.runtimeProject.addDescriptor(buildCowDescriptor());
this.runtimeProject.addDescriptor(buildHorseDescriptor());
this.runtimeProject.addDescriptor(buildHumanDescriptor());
this.runtimeProject.addDescriptor(buildSwanDescriptor());
}
public void applyLogin() {
DatabaseLogin login = new DatabaseLogin();
login.usePlatform(new org.eclipse.persistence.platform.database.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");
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 ClassDescriptor buildCowDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClassName("org.eclipse.persistence.tools.workbench.test.models.multipletable.Cow");
descriptor.addTableName("MULTI_COW");
descriptor.addTableName("MULTI_CALFS");
descriptor.addPrimaryKeyFieldName("MULTI_COW.ID");
descriptor.addForeignKeyFieldNameForMultipleTable("MULTI_COW.CALFS_ID", "MULTI_CALFS.ID");
// Descriptor Properties.
descriptor.useSoftCacheWeakIdentityMap();
descriptor.setIdentityMapSize(100);
descriptor.setSequenceNumberFieldName("MULTI_CALFS.ID");
descriptor.setSequenceNumberName("CALF_COUNT_SEQ");
descriptor.setAlias("Cow");
descriptor.setIsIsolated(false);
// Query Manager.
descriptor.getQueryManager().checkCacheForDoesExist();
// Mappings.
DirectToFieldMapping cowIdMapping = new DirectToFieldMapping();
cowIdMapping.setAttributeName("cowId");
cowIdMapping.setFieldName("MULTI_COW.ID");
descriptor.addMapping(cowIdMapping);
DirectToFieldMapping calfCountIdMapping = new DirectToFieldMapping();
calfCountIdMapping.setAttributeName("calfCountId");
calfCountIdMapping.setFieldName("MULTI_CALFS.ID");
descriptor.addMapping(calfCountIdMapping);
DirectToFieldMapping nameMapping = new DirectToFieldMapping();
nameMapping.setAttributeName("name");
nameMapping.setFieldName("MULTI_COW.NAME");
descriptor.addMapping(nameMapping);
DirectToFieldMapping calfCountMapping = new DirectToFieldMapping();
calfCountMapping.setAttributeName("calfCount");
calfCountMapping.setFieldName("MULTI_CALFS.CALFS");
descriptor.addMapping(calfCountMapping);
return descriptor;
}
public ClassDescriptor buildHorseDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClassName("org.eclipse.persistence.tools.workbench.test.models.multipletable.Horse");
descriptor.addTableName("MULTI_HORSE");
descriptor.addTableName("MULTI_FOALS");
descriptor.addPrimaryKeyFieldName("MULTI_HORSE.ID");
descriptor.addForeignKeyFieldNameForMultipleTable("MULTI_FOALS.HORSE_ID", "MULTI_HORSE.ID");
// Descriptor Properties.
descriptor.useSoftCacheWeakIdentityMap();
descriptor.setIdentityMapSize(100);
descriptor.setSequenceNumberFieldName("MULTI_HORSE.ID");
descriptor.setSequenceNumberName("MULTI_HORSE_SEQ");
descriptor.setAlias("Horse");
descriptor.setIsIsolated(false);
// Query Manager.
descriptor.getQueryManager().checkCacheForDoesExist();
// Mappings.
DirectToFieldMapping idMapping = new DirectToFieldMapping();
idMapping.setAttributeName("id");
idMapping.setFieldName("MULTI_HORSE.ID");
descriptor.addMapping(idMapping);
DirectToFieldMapping nameMapping = new DirectToFieldMapping();
nameMapping.setAttributeName("name");
nameMapping.setFieldName("MULTI_HORSE.NAME");
descriptor.addMapping(nameMapping);
DirectToFieldMapping foalCountMapping = new DirectToFieldMapping();
foalCountMapping.setAttributeName("foalCount");
foalCountMapping.setFieldName("MULTI_FOALS.FOALS");
descriptor.addMapping(foalCountMapping);
return descriptor;
}
public ClassDescriptor buildHumanDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClassName("org.eclipse.persistence.tools.workbench.test.models.multipletable.Human");
descriptor.addTableName("MULTI_HUMAN");
descriptor.addTableName("MULTI_KIDS");
descriptor.addPrimaryKeyFieldName("MULTI_HUMAN.ID");
descriptor.addForeignKeyFieldNameForMultipleTable("MULTI_KIDS.ID", "MULTI_HUMAN.ID");
// Descriptor Properties.
descriptor.useSoftCacheWeakIdentityMap();
descriptor.setIdentityMapSize(100);
descriptor.setSequenceNumberFieldName("MULTI_HUMAN.ID");
descriptor.setSequenceNumberName("MULTI_HUMAN_SEQ");
descriptor.setAlias("Human");
descriptor.setIsIsolated(false);
// Query Manager.
descriptor.getQueryManager().checkCacheForDoesExist();
// Mappings.
DirectToFieldMapping idMapping = new DirectToFieldMapping();
idMapping.setAttributeName("id");
idMapping.setFieldName("MULTI_HUMAN.ID");
descriptor.addMapping(idMapping);
DirectToFieldMapping nameMapping = new DirectToFieldMapping();
nameMapping.setAttributeName("name");
nameMapping.setFieldName("MULTI_HUMAN.NAME");
descriptor.addMapping(nameMapping);
DirectToFieldMapping foalCountMapping = new DirectToFieldMapping();
foalCountMapping.setAttributeName("kidCount");
foalCountMapping.setFieldName("MULTI_KIDS.KIDS");
descriptor.addMapping(foalCountMapping);
return descriptor;
}
public ClassDescriptor buildSwanDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClassName("org.eclipse.persistence.tools.workbench.test.models.multipletable.Swan");
descriptor.addTableName("MULTI_SWAN");
descriptor.addTableName("MULTI_CYGNETS");
descriptor.addPrimaryKeyFieldName("MULTI_SWAN.ID");
descriptor.addForeignKeyFieldNameForMultipleTable("MULTI_SWAN.ID", "MULTI_CYGNETS.SWAN_ID");
// Descriptor Properties.
descriptor.useSoftCacheWeakIdentityMap();
descriptor.setIdentityMapSize(100);
descriptor.setSequenceNumberFieldName("MULTI_SWAN.ID");
descriptor.setSequenceNumberName("MULTI_SWAN_SEQ");
descriptor.setAlias("Swan");
descriptor.setIsIsolated(false);
// Query Manager.
descriptor.getQueryManager().checkCacheForDoesExist();
// Mappings.
DirectToFieldMapping idMapping = new DirectToFieldMapping();
idMapping.setAttributeName("id");
idMapping.setFieldName("MULTI_SWAN.ID");
descriptor.addMapping(idMapping);
DirectToFieldMapping nameMapping = new DirectToFieldMapping();
nameMapping.setAttributeName("name");
nameMapping.setFieldName("MULTI_SWAN.NAME");
descriptor.addMapping(nameMapping);
DirectToFieldMapping foalCountMapping = new DirectToFieldMapping();
foalCountMapping.setAttributeName("cygnetCount");
foalCountMapping.setFieldName("MULTI_CYGNETS.CYGNETS");
descriptor.addMapping(foalCountMapping);
return descriptor;
}
public Project getRuntimeProject() {
return runtimeProject;
}
}