/*******************************************************************************
* 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.descriptors.RelationalDescriptor;
import org.eclipse.persistence.mappings.AggregateObjectMapping;
import org.eclipse.persistence.mappings.DirectToFieldMapping;
import org.eclipse.persistence.platform.database.MySQLPlatform;
import org.eclipse.persistence.platform.database.OraclePlatform;
import org.eclipse.persistence.sequencing.TableSequence;
import org.eclipse.persistence.sessions.DatabaseLogin;
import org.eclipse.persistence.sessions.Project;
public class CurrencyRuntimeProject {
private Project runtimeProject;
public CurrencyRuntimeProject() {
this.runtimeProject = new Project();
this.runtimeProject.setName("Currency Project");
applyLogin();
this.runtimeProject.addDescriptor(buildCommodityPriceDescriptor());
this.runtimeProject.addDescriptor(buildCurrencyDescriptor());
this.runtimeProject.addDescriptor(buildCurrencyRangeDescriptor());
this.runtimeProject.addDescriptor(buildExchangeRateDescriptor());
}
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 buildCommodityPriceDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClassName(org.eclipse.persistence.tools.workbench.test.models.currency.CommodityPrice.class.getName());
descriptor.addTableName("COMMODITY_PRICE");
descriptor.addPrimaryKeyFieldName("COMMODITY_PRICE.ID");
// Descriptor properties.
descriptor.setIsIsolated(false);
descriptor.setAlias("CommodityPrice");
descriptor.useFullIdentityMap();
descriptor.setIdentityMapSize(405);
descriptor.getDescriptorQueryManager().checkDatabaseForDoesExist();
DirectToFieldMapping idMapping = new DirectToFieldMapping();
idMapping.setAttributeName("id");
idMapping.setFieldName("COMMODITY_PRICE.ID");
descriptor.addMapping(idMapping);
DirectToFieldMapping typeMapping = new DirectToFieldMapping();
typeMapping.setAttributeName("type");
typeMapping.setFieldName("COMMODITY_PRICE.TYPE");
descriptor.addMapping(typeMapping);
DirectToFieldMapping periodLengthMapping = new DirectToFieldMapping();
periodLengthMapping.setAttributeName("periodLength");
periodLengthMapping.setFieldName("COMMODITY_PRICE.PERIOD");
descriptor.addMapping(periodLengthMapping);
AggregateObjectMapping currencyRangeMapping = new AggregateObjectMapping();
currencyRangeMapping.setAttributeName("currencyRange");
currencyRangeMapping.setReferenceClassName(org.eclipse.persistence.tools.workbench.test.models.currency.CurrencyRange.class.getName());
currencyRangeMapping.setIsNullAllowed(false);
currencyRangeMapping.addFieldNameTranslation("COMMODITY_PRICE.HIGH_UNIT", "highLimit_unit->DIRECT");
currencyRangeMapping.addFieldNameTranslation("COMMODITY_PRICE.TREND", "trend->DIRECT");
currencyRangeMapping.addFieldNameTranslation("COMMODITY_PRICE.LOW_VALUE", "lowLimit_value->DIRECT");
currencyRangeMapping.addFieldNameTranslation("COMMODITY_PRICE.HIGH_VALUE", "highLimit_value->DIRECT");
currencyRangeMapping.addFieldNameTranslation("COMMODITY_PRICE.LOW_UNIT", "lowLimit_unit->DIRECT");
descriptor.addMapping(currencyRangeMapping);
return descriptor;
}
public RelationalDescriptor buildCurrencyDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.descriptorIsAggregate();
descriptor.setJavaClassName(org.eclipse.persistence.tools.workbench.test.models.currency.Currency.class.getName());
// Descriptor properties.
descriptor.setAlias("Currency");
// Query manager.
//Named Queries
// Event manager.
// Mappings.
DirectToFieldMapping unitMapping = new DirectToFieldMapping();
unitMapping.setAttributeName("unit");
unitMapping.setFieldName("unit->DIRECT");
descriptor.addMapping(unitMapping);
DirectToFieldMapping valueMapping = new DirectToFieldMapping();
valueMapping.setAttributeName("value");
valueMapping.setFieldName("value->DIRECT");
descriptor.addMapping(valueMapping);
return descriptor;
}
public RelationalDescriptor buildCurrencyRangeDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.descriptorIsAggregate();
descriptor.setJavaClassName(org.eclipse.persistence.tools.workbench.test.models.currency.CurrencyRange.class.getName());
// Descriptor properties.
descriptor.setAlias("CurrencyRange");
// Query manager.
//Named Queries
// Event manager.
// Mappings.
DirectToFieldMapping trendMapping = new DirectToFieldMapping();
trendMapping.setAttributeName("trend");
trendMapping.setFieldName("trend->DIRECT");
descriptor.addMapping(trendMapping);
AggregateObjectMapping highLimitMapping = new AggregateObjectMapping();
highLimitMapping.setAttributeName("highLimit");
highLimitMapping.setReferenceClassName(org.eclipse.persistence.tools.workbench.test.models.currency.Currency.class.getName());
highLimitMapping.setIsNullAllowed(false);
highLimitMapping.addFieldNameTranslation("highLimit_unit->DIRECT", "unit->DIRECT");
highLimitMapping.addFieldNameTranslation("highLimit_value->DIRECT", "value->DIRECT");
descriptor.addMapping(highLimitMapping);
AggregateObjectMapping lowLimitMapping = new AggregateObjectMapping();
lowLimitMapping.setAttributeName("lowLimit");
lowLimitMapping.setReferenceClassName(org.eclipse.persistence.tools.workbench.test.models.currency.Currency.class.getName());
lowLimitMapping.setIsNullAllowed(false);
lowLimitMapping.addFieldNameTranslation("lowLimit_unit->DIRECT", "unit->DIRECT");
lowLimitMapping.addFieldNameTranslation("lowLimit_value->DIRECT", "value->DIRECT");
descriptor.addMapping(lowLimitMapping);
return descriptor;
}
public RelationalDescriptor buildExchangeRateDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClassName(org.eclipse.persistence.tools.workbench.test.models.currency.ExchangeRate.class.getName());
descriptor.addTableName("EXCHANGE_RATE");
descriptor.addPrimaryKeyFieldName("EXCHANGE_RATE.ID");
// Descriptor properties.
descriptor.useFullIdentityMap();
descriptor.setIdentityMapSize(405);
descriptor.setAlias("ExchangeRate");
descriptor.setIsIsolated(false);
// Query manager.
descriptor.getDescriptorQueryManager().checkDatabaseForDoesExist();
//Named Queries
// Event manager.
// Mappings.
DirectToFieldMapping idMapping = new DirectToFieldMapping();
idMapping.setAttributeName("id");
idMapping.setFieldName("EXCHANGE_RATE.ID");
descriptor.addMapping(idMapping);
DirectToFieldMapping periodLengthMapping = new DirectToFieldMapping();
periodLengthMapping.setAttributeName("periodLength");
periodLengthMapping.setFieldName("EXCHANGE_RATE.PERIOD");
descriptor.addMapping(periodLengthMapping);
AggregateObjectMapping currencyRangeMapping = new AggregateObjectMapping();
currencyRangeMapping.setAttributeName("currencyRange");
currencyRangeMapping.setReferenceClassName(org.eclipse.persistence.tools.workbench.test.models.currency.CurrencyRange.class.getName());
currencyRangeMapping.setIsNullAllowed(false);
currencyRangeMapping.addFieldNameTranslation("EXCHANGE_RATE.HI_UNIT", "highLimit_unit->DIRECT");
currencyRangeMapping.addFieldNameTranslation("EXCHANGE_RATE.TREND", "trend->DIRECT");
currencyRangeMapping.addFieldNameTranslation("EXCHANGE_RATE.LO_VALUE", "lowLimit_value->DIRECT");
currencyRangeMapping.addFieldNameTranslation("EXCHANGE_RATE.HI_VALUE", "highLimit_value->DIRECT");
currencyRangeMapping.addFieldNameTranslation("EXCHANGE_RATE.LO_UNIT", "lowLimit_unit->DIRECT");
descriptor.addMapping(currencyRangeMapping);
return descriptor;
}
public Project getRuntimeProject() {
return this.runtimeProject;
}
}