blob: 918cc7b07a88b82f91e623dc149d45f4f87beeb2 [file] [log] [blame]
/*******************************************************************************
* 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.models.interfaces;
import java.util.*;
import org.eclipse.persistence.descriptors.*;
import org.eclipse.persistence.sessions.*;
import org.eclipse.persistence.mappings.*;
import org.eclipse.persistence.tools.schemaframework.*;
import org.eclipse.persistence.testing.framework.*;
public class InterfaceWithTablesSystem extends TestSystem {
public void addDescriptors(DatabaseSession session) {
Vector descriptors = new Vector();
descriptors.addElement(showDescriptor());
descriptors.addElement(programDescriptor());
descriptors.addElement(networkDescriptor());
descriptors.addElement(scheduleDescriptor());
descriptors.addElement(commercialDescriptor());
session.addDescriptors(descriptors);
}
public RelationalDescriptor commercialDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClass(Commercial.class);
descriptor.getInheritancePolicy().setParentClass(Program.class);
return descriptor;
}
public void createTables(DatabaseSession session) {
SchemaManager schemaManager = new SchemaManager(session);
schemaManager.replaceObject(programTable());
schemaManager.replaceObject(networkTable());
schemaManager.replaceObject(scheduleTable());
schemaManager.replaceObject(scheduleProgramTable());
schemaManager.createSequences();
}
public RelationalDescriptor networkDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClass(Network.class);
descriptor.setTableName("TV_NET");
descriptor.setPrimaryKeyFieldName("NAME");
descriptor.addDirectMapping("name", "NAME");
return descriptor;
}
public TableDefinition networkTable() {
TableDefinition table = new TableDefinition();
table.setName("TV_NET");
table.addPrimaryKeyField("NAME", String.class, 20);
return table;
}
public void populate(DatabaseSession session) {
PopulationManager manager = PopulationManager.getDefaultManager();
TVSchedule schedule = new TVSchedule();
schedule.broadcastor = new Network();
((Network)schedule.broadcastor).name = "NBC";
Commercial eatYourWeaties = new Commercial();
eatYourWeaties.setName("Eat Your Weaties");
eatYourWeaties.setDescription("Mikey says that he likes it.");
eatYourWeaties.setDuration(new Float(0.5));
Show zena = new Show();
zena.setName("Zena");
zena.setDescription("Zena the worrier princess");
zena.setDuration(new Float(20));
schedule.segments.addElement(eatYourWeaties);
schedule.segments.addElement(zena);
UnitOfWork uow = session.acquireUnitOfWork();
uow.registerObject(schedule);
uow.commit();
manager.registerObject(schedule, "example1");
manager.registerObject(schedule.broadcastor, "example1");
manager.registerObject(eatYourWeaties, "example1");
manager.registerObject(zena, "example2");
}
public RelationalDescriptor programDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClass(Program.class);
descriptor.setTableName("TV_PROG");
descriptor.setPrimaryKeyFieldName("NAME");
descriptor.getInheritancePolicy().setClassIndicatorFieldName("PG_TYPE");
descriptor.getInheritancePolicy().addClassIndicator(Show.class, "S");
descriptor.getInheritancePolicy().addClassIndicator(Commercial.class, "C");
descriptor.addDirectMapping("name", "getName", "setName", "NAME");
descriptor.addDirectMapping("description", "getDescription", "setDescription", "DESCRIP");
DirectToFieldMapping durationMapping = new DirectToFieldMapping();
durationMapping.setAttributeName("duration");
durationMapping.setGetMethodName("getDuration");
durationMapping.setSetMethodName("setDuration");
durationMapping.setFieldName("DUR");
durationMapping.setAttributeClassification(Float.class);
descriptor.addMapping(durationMapping);
return descriptor;
}
public TableDefinition programTable() {
TableDefinition table = new TableDefinition();
table.setName("TV_PROG");
table.addPrimaryKeyField("NAME", String.class, 20);
table.addField("PG_TYPE", Character.class);
table.addField("DESCRIP", String.class, 200);
table.addField("DUR", Double.class);
return table;
}
public RelationalDescriptor scheduleDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClass(TVSchedule.class);
descriptor.setTableName("TV_SCED");
descriptor.setPrimaryKeyFieldName("ID");
descriptor.setSequenceNumberName("SCED_SEQ");
descriptor.setSequenceNumberFieldName("ID");
descriptor.addDirectMapping("timeSpot", "TM_SPOT");
descriptor.addDirectMapping("id", "ID");
OneToOneMapping broadcastorMapping = new OneToOneMapping();
broadcastorMapping.setAttributeName("broadcastor");
broadcastorMapping.setReferenceClass(Network.class);
broadcastorMapping.setForeignKeyFieldName("NET_NAME");
broadcastorMapping.dontUseIndirection();
descriptor.addMapping(broadcastorMapping);
ManyToManyMapping segmentsMapping = new ManyToManyMapping();
segmentsMapping.setAttributeName("segments");
segmentsMapping.setReferenceClass(Program.class);
segmentsMapping.setRelationTableName("TV_SCPG");
segmentsMapping.setSourceRelationKeyFieldName("SC_ID");
segmentsMapping.setTargetRelationKeyFieldName("PG_NAME");
segmentsMapping.dontUseIndirection();
descriptor.addMapping(segmentsMapping);
return descriptor;
}
public TableDefinition scheduleProgramTable() {
TableDefinition table = new TableDefinition();
table.setName("TV_SCPG");
table.addField("SC_ID", Double.class);
table.addField("PG_NAME", String.class, 20);
return table;
}
public TableDefinition scheduleTable() {
TableDefinition table = new TableDefinition();
table.setName("TV_SCED");
table.addField("ID", Double.class);
table.addField("TM_SPOT", java.sql.Timestamp.class);
table.addField("NET_NAME", String.class, 20);
table.addForeignKeyConstraint("TV_SCED_TV_NET", "NET_NAME", "NAME", "TV_NET");
return table;
}
public RelationalDescriptor showDescriptor() {
RelationalDescriptor descriptor = new RelationalDescriptor();
descriptor.setJavaClass(Show.class);
descriptor.getInheritancePolicy().setParentClass(Program.class);
return descriptor;
}
}