blob: 174a3f23ada40dffc89dfc53b1d1483eb27b01f0 [file] [log] [blame]
/*
* Copyright (c) 1998, 2021 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.models.multipletable;
import java.util.*;
import java.math.*;
import org.eclipse.persistence.descriptors.RelationalDescriptor;
import org.eclipse.persistence.tools.schemaframework.*;
/**
* <b>Purpose</b>: Larger scale projects within the Employee Demo
* <p><b>Description</b>: LargeProject is a concrete subclass of Project. It is instantiated for Projects with type = 'L'. The additional
* information (budget, &amp; milestoneVersion) are mapped from the LPROJECT table.
* @see BusinessProject
*/
public class LargeBusinessProject extends BusinessProject {
public Budget budget;
public Calendar milestoneVersion;
public LargeBusinessProject() {
budget = new Budget(0.0);
}
public static RelationalDescriptor descriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
// SECTION: DESCRIPTOR
descriptor.setJavaClass(LargeBusinessProject.class);
descriptor.setTableName("LPROJ");
descriptor.addPrimaryKeyFieldName("LPROJ.PROJ_ID");
descriptor.getInheritancePolicy().setParentClass(BusinessProject.class);
// SECTION: PROPERTIES
descriptor.setIdentityMapClass(org.eclipse.persistence.internal.identitymaps.FullIdentityMap.class);
descriptor.setExistenceChecking("Check cache");
descriptor.setIdentityMapSize(100);
// SECTION: DIRECTTOFIELDMAPPING
org.eclipse.persistence.mappings.DirectToFieldMapping directtofieldmapping1 = new org.eclipse.persistence.mappings.DirectToFieldMapping();
directtofieldmapping1.setAttributeName("milestoneVersion");
directtofieldmapping1.setIsReadOnly(false);
directtofieldmapping1.setFieldName("LPROJ.MILESTONE");
descriptor.addMapping(directtofieldmapping1);
org.eclipse.persistence.mappings.OneToOneMapping onetoonemapping1 = new org.eclipse.persistence.mappings.OneToOneMapping();
onetoonemapping1.setAttributeName("budget");
onetoonemapping1.setIsReadOnly(false);
onetoonemapping1.setUsesIndirection(false);
onetoonemapping1.setReferenceClass(Budget.class);
onetoonemapping1.setIsPrivateOwned(true);
onetoonemapping1.addForeignKeyFieldName("BUDGET_ID", "ID");
descriptor.addMapping(onetoonemapping1);
return descriptor;
}
public static LargeBusinessProject example1() {
Calendar milestone = GregorianCalendar.getInstance();
milestone.clear();
milestone.set(1999, 05, 06);
LargeBusinessProject lp = new LargeBusinessProject();
lp.name = "Java";
lp.setMilestoneVersion(milestone);
lp.setBudget(4333.00);
return lp;
}
public static LargeBusinessProject example2() {
Calendar milestone = GregorianCalendar.getInstance();
milestone.clear();
milestone.set(2001, 11, 11);
LargeBusinessProject lp = new LargeBusinessProject();
lp.name = "Smalltalk";
lp.description = "a thing";
lp.setMilestoneVersion(milestone);
lp.setBudget(433355.00);
return lp;
}
public Budget getBudget() {
return budget;
}
public Calendar getMilestoneVersion() {
return milestoneVersion;
}
public void setBudget(double amount) {
setBudget(new Budget(amount));
}
public void setBudget(Budget theBudget) {
budget = theBudget;
}
public void setMilestoneVersion(Calendar theMilestoneVersion) {
milestoneVersion = theMilestoneVersion;
}
/**
*Return a platform independant definition of the LPROJECT database table.
*/
public static TableDefinition tableDefinition() {
TableDefinition definition = new TableDefinition();
definition.setName("LPROJ");
definition.addField("PROJ_ID", BigInteger.class, 15);
definition.addField("BUDGET_ID", BigInteger.class, 10);
definition.addField("MILESTONE", java.sql.Timestamp.class);
return definition;
}
/**
* Print the project's data.
*/
public String toString() {
java.io.StringWriter writer = new java.io.StringWriter();
writer.write("Large Project: ");
writer.write(getName());
writer.write(" ");
writer.write(getDescription());
writer.write(" " + getBudget());
writer.write(" ");
writer.write(String.valueOf(getMilestoneVersion()));
return writer.toString();
}
}