blob: 586a87c33147c9b2173ced03d72ee759040da7eb [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
// Dies Koper - use the default sequence name from the platform
package org.eclipse.persistence.testing.models.interfaces;
import org.eclipse.persistence.sessions.*;
import org.eclipse.persistence.testing.framework.*;
import org.eclipse.persistence.tools.schemaframework.*;
public class InterfaceWithoutTablesSystem extends TestSystem {
public InterfaceWithoutTablesSystem() {
project = new InterfaceWithoutTablesProject();
}
@Override
public void addDescriptors(DatabaseSession session) {
Admendments.addToManagerialJobDescriptor(project.getDescriptors().get(ManagerialJob.class));
session.addDescriptors(project);
}
@Override
public void createTables(DatabaseSession session) {
SchemaManager schemaManager = new SchemaManager(session);
schemaManager.replaceObject(Secretary.secretaryTable());
schemaManager.replaceObject(Receptionist.receptionistTable());
schemaManager.replaceObject(ProductManager.productManagerTable());
schemaManager.replaceObject(PersonnelManager.personnelManagerTable());
schemaManager.replaceObject(ProductDeveloper.productDeveloperTable());
schemaManager.replaceObject(CourseDeveloper.courseDeveloperTable());
schemaManager.replaceObject(DevelopmentJob.developmentJobTable());
schemaManager.replaceObject(AdministrativeJob.administrativeJobTable());
schemaManager.replaceObject(Employee.tableDefinition());
schemaManager.replaceObject(Company.tableDefinition());
schemaManager.replaceObject(Email.tableDefinition());
schemaManager.replaceObject(Phone.tableDefinition());
schemaManager.replaceObject(Computer.tableDefinition());
schemaManager.replaceObject(Vehicle.tableDefinition());
schemaManager.replaceObject(Actor.actorTable());
schemaManager.replaceObject(Documentary.documentaryTable());
schemaManager.replaceObject(Film.filmTable());
/**
* This hard coded SQL is to ensure that email and phone will have instances with the same primary key
* This is important to test the type field fix in 2.5.0.5.
* There is no possibility of existing instances being messed up, because all the tables are dropped
* here as well
*/
String sequenceTableName = "SEQUENCE";
if (session.getPlatform().getDefaultSequence().isTable()) {
sequenceTableName = session.getPlatform().getQualifiedSequenceTableName();
}
session.executeNonSelectingCall(new org.eclipse.persistence.queries.SQLCall("DELETE FROM " + sequenceTableName + " WHERE SEQ_NAME = 'EMAIL_SEQ'"));
session.executeNonSelectingCall(new org.eclipse.persistence.queries.SQLCall("DELETE FROM " + sequenceTableName + " WHERE SEQ_NAME = 'PHONE_SEQ'"));
schemaManager.createSequences();
}
@Override
public void populate(DatabaseSession session) {
PopulationManager manager = PopulationManager.getDefaultManager();
UnitOfWork unitOfWork = session.acquireUnitOfWork();
/***************************************/
Film film1 = Film.example1();
Film film3 = Film.example3();
Documentary documentary1 = Documentary.example1();
Actor actor4 = Actor.example4();
unitOfWork.registerObject(film1);
unitOfWork.registerObject(film3);
unitOfWork.registerObject(documentary1);
unitOfWork.registerObject(actor4);
manager.registerObject(film1, "example1");
manager.registerObject(film3, "example3");
manager.registerObject(documentary1, "example1");
manager.registerObject(actor4, "example4");
/***************************************/
PersonnelManager personnelManager1 = PersonnelManager.example1();
PersonnelManager personnelManager2 = PersonnelManager.example2();
PersonnelManager personnelManager3 = PersonnelManager.example3();
unitOfWork.registerObject(personnelManager1);
unitOfWork.registerObject(personnelManager2);
unitOfWork.registerObject(personnelManager3);
manager.registerObject(personnelManager1, "example1");
manager.registerObject(personnelManager2, "example2");
manager.registerObject(personnelManager3, "example3");
/***************************************/
ProductManager productManager1 = ProductManager.example1();
ProductManager productManager2 = ProductManager.example2();
ProductManager productManager3 = ProductManager.example3();
unitOfWork.registerObject(productManager1);
unitOfWork.registerObject(productManager2);
unitOfWork.registerObject(productManager3);
manager.registerObject(productManager1, "example1");
manager.registerObject(productManager2, "example2");
manager.registerObject(productManager3, "example3");
/***************************************/
ProductDeveloper productDeveloper1 = ProductDeveloper.example1();
ProductDeveloper productDeveloper2 = ProductDeveloper.example2();
ProductDeveloper productDeveloper3 = ProductDeveloper.example3();
unitOfWork.registerObject(productDeveloper1);
unitOfWork.registerObject(productDeveloper2);
unitOfWork.registerObject(productDeveloper3);
manager.registerObject(productDeveloper1, "example1");
manager.registerObject(productDeveloper2, "example2");
manager.registerObject(productDeveloper3, "example3");
/***************************************/
CourseDeveloper courseDeveloper1 = CourseDeveloper.example1();
CourseDeveloper courseDeveloper2 = CourseDeveloper.example2();
CourseDeveloper courseDeveloper3 = CourseDeveloper.example3();
unitOfWork.registerObject(courseDeveloper1);
unitOfWork.registerObject(courseDeveloper2);
unitOfWork.registerObject(courseDeveloper3);
manager.registerObject(courseDeveloper1, "example1");
manager.registerObject(courseDeveloper2, "example2");
manager.registerObject(courseDeveloper3, "example3");
/***************************************/
Secretary secretary1 = Secretary.example1();
Secretary secretary2 = Secretary.example2();
Secretary secretary3 = Secretary.example3();
unitOfWork.registerObject(secretary1);
unitOfWork.registerObject(secretary2);
unitOfWork.registerObject(secretary3);
manager.registerObject(secretary1, "example1");
manager.registerObject(secretary2, "example2");
manager.registerObject(secretary3, "example3");
/***************************************/
Receptionist receptionist1 = Receptionist.example1();
Receptionist receptionist2 = Receptionist.example2();
Receptionist receptionist3 = Receptionist.example3();
unitOfWork.registerObject(receptionist1);
unitOfWork.registerObject(receptionist2);
unitOfWork.registerObject(receptionist3);
manager.registerObject(receptionist1, "example1");
manager.registerObject(receptionist2, "example2");
manager.registerObject(receptionist3, "example3");
/***************************************/
/* Enumeration enum1 = personnelManager1.getManagedEmployees().elements();
while (enum1.hasMoreElements()) {
manager.registerObject(enum1.nextElement(), "example1");
}
Enumeration enum2 = personnelManager2.getManagedEmployees().elements();
while (enum2.hasMoreElements()) {
manager.registerObject(enum2.nextElement(), "example2");
}
Enumeration enum3 = personnelManager3.getManagedEmployees().elements();
while (enum3.hasMoreElements()) {
manager.registerObject(enum3.nextElement(), "example3");
}
*/
unitOfWork.commit();
/***************************************/
Employee employee1 = Employee.example1();
Employee employee2 = Employee.example2();
Employee employee3 = Employee.example3();
Employee employee4 = Employee.example4();
UnitOfWork uow = session.acquireUnitOfWork();
uow.registerObject(employee1);
uow.registerObject(employee3);
uow.registerObject(employee2);
uow.registerObject(employee4);
uow.commit();
manager.registerObject(employee1, "example1");
manager.registerObject(employee2, "example2");
manager.registerObject(employee3, "example3");
manager.registerObject(employee4, "example4");
/***************************************/
Company company1 = Company.example1();
Company company2 = Company.example2();
Company company3 = Company.example3();
session.writeObject(company1);
session.writeObject(company2);
session.writeObject(company3);
manager.registerObject(company1, "example1");
manager.registerObject(company2, "example2");
manager.registerObject(company3, "example3");
/***************************************/
Email email1 = Email.example1();
Email email2 = Email.example2();
Email email3 = Email.example3();
session.writeObject(email1);
session.writeObject(email2);
session.writeObject(email3);
manager.registerObject(email1, "example1");
manager.registerObject(email2, "example2");
manager.registerObject(email3, "example3");
/***************************************/
Phone phone1 = Phone.example1();
Phone phone2 = Phone.example2();
Phone phone3 = Phone.example3();
session.writeObject(phone1);
session.writeObject(phone2);
session.writeObject(phone3);
manager.registerObject(phone1, "example1");
manager.registerObject(phone2, "example2");
manager.registerObject(phone3, "example3");
/***************************************/
}
}