| /* |
| * 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.tests.distributedservers; |
| |
| import org.eclipse.persistence.internal.sessions.DatabaseSessionImpl; |
| import org.eclipse.persistence.sessions.DatabaseSession; |
| import org.eclipse.persistence.sessions.UnitOfWork; |
| import org.eclipse.persistence.testing.framework.TestSystem; |
| import org.eclipse.persistence.tools.schemaframework.SchemaManager; |
| |
| |
| /** |
| * <b>Purpose</b>: To define system behavior. |
| * <p><b>Responsibilities</b>: <ul> |
| * <li> Login and return an initialize database session. |
| * <li> Create and populate the database. |
| * </ul> |
| */ |
| public class |
| |
| DistributedSystem extends TestSystem { |
| /** |
| * Use the default EmployeeProject. |
| */ |
| public |
| |
| DistributedSystem() { |
| project = new DistributedProject(); |
| } |
| |
| @Override |
| public void addDescriptors(DatabaseSession session) { |
| session.logMessage("Project is from generated code"); |
| (session).addDescriptors(project); |
| } |
| |
| @Override |
| public void createTables(DatabaseSession session) { |
| SchemaManager schemaManager = new SchemaManager(session); |
| |
| // Start Build fieldTypes |
| schemaManager.buildFieldTypes(Dist_Employee.tableDefinition()); |
| schemaManager.buildFieldTypes(Company.tableDefinition()); |
| schemaManager.buildFieldTypes(Item.tableDefinition()); |
| // end build fieldTypes |
| |
| //start drop constraints |
| try { |
| schemaManager.dropConstraints(Dist_Employee.tableDefinition()); |
| schemaManager.dropConstraints(Company.tableDefinition()); |
| schemaManager.dropConstraints(Item.tableDefinition()); |
| } catch (org.eclipse.persistence.exceptions.DatabaseException dbE) { |
| //ignore |
| } |
| //end drop constraints |
| |
| //start replace tables |
| schemaManager.replaceObject(Dist_Employee.tableDefinition()); |
| schemaManager.replaceObject(Company.tableDefinition()); |
| schemaManager.replaceObject(Item.tableDefinition()); |
| |
| //end replace tables |
| |
| //start create constraints |
| schemaManager.createConstraints(Dist_Employee.tableDefinition()); |
| schemaManager.createConstraints(Company.tableDefinition()); |
| schemaManager.createConstraints(Item.tableDefinition()); |
| //end create constraints |
| |
| schemaManager.createSequences(); |
| } |
| |
| /** |
| * Return a connected session using the default login. |
| */ |
| @Override |
| public DatabaseSession login() { |
| DatabaseSession session; |
| |
| session = new DatabaseSessionImpl(project); |
| session.login(); |
| |
| return session; |
| } |
| |
| /** |
| * This method will instantiate all of the example instances and insert them into the database |
| * using the given session. |
| */ |
| @Override |
| public void populate(DatabaseSession session) { |
| UnitOfWork unitOfWork = session.acquireUnitOfWork(); |
| |
| unitOfWork.registerObject(Dist_Employee.example1()); |
| unitOfWork.registerObject(Company.example1()); |
| unitOfWork.commit(); |
| } |
| } |