blob: 4829ecb4637f1afc8832716b3f9ec8e4f90e950c [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.aggregate;
import org.eclipse.persistence.sessions.*;
import org.eclipse.persistence.tools.schemaframework.*;
import org.eclipse.persistence.testing.framework.*;
import org.eclipse.persistence.testing.models.aggregate.nested.*;
public class AggregateSystem extends TestSystem {
// The new apis added to AggregateCollectionMapping
// in order to support jpa 2.0 element collections currently
// are not compatible with project.xml
// The flag provided so that AggregateWorkbenchIntegrationSystem
// could remove all the setup that uses this new feature.
protected boolean useNewAggregateCollection = true;
public AggregateSystem() {
this(true);
}
public AggregateSystem(boolean useNewAggregateCollection) {
this.useNewAggregateCollection = useNewAggregateCollection;
project = new AggregateProject(useNewAggregateCollection);
}
@Override
public void addDescriptors(DatabaseSession session) {
if (project == null) {
project = new AggregateProject(useNewAggregateCollection);
}
session.addDescriptors(project);
project = new Project_case2();
session.addDescriptors(project);
project = new NestedAggregateProject();
session.addDescriptors(project);
project = new SwitchProject();
session.addDescriptors(project);
project = new AggregateRelationshipsProject();
session.addDescriptors(project);
}
@Override
public void createTables(DatabaseSession session) {
SchemaManager schemaManager = new SchemaManager(session);
schemaManager.replaceObject(Worker.tableDefinition());
schemaManager.replaceObject(Address.tableDefinition());
schemaManager.replaceObject(Client.tableDefinition());
schemaManager.replaceObject(EvaluationClient.tableDefinition());
schemaManager.replaceObject(Computer.tableDefinition());
schemaManager.replaceObject(Employee.tableDefinition());
schemaManager.replaceObject(Language.tableDefinition());
schemaManager.replaceObject(EvaluationClient.tableDefinition());
schemaManager.replaceObject(Responsibility.tableDefinition());
// Added May 5, 2000 - Jon D. for pr381
schemaManager.replaceObject(Vehicle.tableDefinition());
//the added tables for aggregate 1:m testing
schemaManager.replaceObject(Agent.tableDefinition());
schemaManager.replaceObject(Customer.tableDefinition());
schemaManager.replaceObject(House.tableDefinition());
schemaManager.replaceObject(Dependant.tableDefinition());
schemaManager.replaceObject(Company.tableDefinition());
schemaManager.replaceObject(SingleHouse.tableDefinition());
schemaManager.replaceObject(SellingPoint.tableDefinition());
// the added tables for jpa 2.0 aggregate testing
if(useNewAggregateCollection) {
schemaManager.replaceObject(Builder.tableDefinition());
schemaManager.replaceObject(Builder.houseTableDefinition());
schemaManager.replaceObject(Builder.singleHouseTableDefinition());
schemaManager.replaceObject(Builder.sellingPointTableDefinition());
schemaManager.replaceObject(Builder.customerTableDefinition());
schemaManager.replaceObject(Builder.dependantTableDefinition());
schemaManager.replaceObject(Builder.vehicleTableDefinition());
}
TableDefinition table = Employee1.tableDefinition();
schemaManager.buildFieldTypes(table);
schemaManager.replaceObject(table);
schemaManager.replaceObject(getRelationTable());
schemaManager.createSequences();
// NESTED AGGREGATES
schemaManager.replaceObject(NestedAggregateTableCreator.tableDefinition());
//bug 3920154 - build field types to make the types generic.
table = GolfClub.buildGOLF_CLUBTable();
schemaManager.buildFieldTypes(table);
schemaManager.replaceObject(table);
table = Manufacturer.buildMANUFACTURERTable();
schemaManager.buildFieldTypes(table);
schemaManager.replaceObject(table);
(new SwitchTableCreator()).replaceTables(session);
new AggregateRelationshipsTableCreator().replaceTables(session);
}
/**
* Return a platform independant definition of the database table.
*/
public TableDefinition getRelationTable() {
TableDefinition definition = new TableDefinition();
definition.setName("EMP_LAN");
definition.addField("EMP_ID", java.math.BigDecimal.class);
definition.addField("LAN_ID", java.math.BigDecimal.class);
return definition;
}
@Override
public void populate(DatabaseSession session) {
Object instance;
PopulationManager manager = PopulationManager.getDefaultManager();
instance = Employee1.example1();
session.writeObject(instance);
manager.registerObject(instance, "example1");
instance = Employee1.example2();
session.writeObject(instance);
manager.registerObject(instance, "example2");
// ==============================
instance = Language.example1();
session.writeObject(instance);
manager.registerObject(instance, "example1");
instance = Language.example2();
session.writeObject(instance);
manager.registerObject(instance, "example2");
instance = Language.example3();
session.writeObject(instance);
manager.registerObject(instance, "example3");
instance = Language.example4();
session.writeObject(instance);
manager.registerObject(instance, "example4");
instance = Language.example5();
session.writeObject(instance);
manager.registerObject(instance, "example5");
instance = Language.example6();
session.writeObject(instance);
manager.registerObject(instance, "example6");
instance = Employee.example1();
session.writeObject(instance);
manager.registerObject(instance, "example1");
instance = Employee.example2();
session.writeObject(instance);
manager.registerObject(instance, "example2");
instance = Employee.example3();
session.writeObject(instance);
manager.registerObject(instance, "example3");
instance = Client.example1();
session.writeObject(instance);
manager.registerObject(instance, "example1");
instance = Client.example2();
session.writeObject(instance);
manager.registerObject(instance, "example2");
instance = Client.example3();
session.writeObject(instance);
manager.registerObject(instance, "example3");
instance = EvaluationClient.example1();
session.writeObject(instance);
manager.registerObject(instance, "example1");
instance = EvaluationClient.example2();
session.writeObject(instance);
manager.registerObject(instance, "example2");
instance = EvaluationClient.example3();
session.writeObject(instance);
manager.registerObject(instance, "example3");
//populate tables for 1:m testing purpose
instance = Agent.example1();
//use uow to ensure that all parts get inserted not just privately owned parts
UnitOfWork uow = session.acquireUnitOfWork();
uow.registerObject(instance);
uow.commit();
manager.registerObject(instance, "example1");
// Added May 5, 2000 - Jon D. for pr381
Vehicle.loadTables(session);
if(useNewAggregateCollection) {
instance = Builder.example1();
//use uow to ensure that all parts get inserted not just privately owned parts
uow = session.acquireUnitOfWork();
uow.registerObject(instance);
uow.commit();
manager.registerObject(instance, "example1");
}
}
}