blob: 09d7170328e98bd0c460b94b57599960f42f4b60 [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.optimisticlocking;
import java.util.*;
import org.eclipse.persistence.testing.framework.*;
import org.eclipse.persistence.sessions.*;
import org.eclipse.persistence.tools.schemaframework.*;
public class OptimisticLockingSystem extends TestSystem {
@Override
public void addDescriptors(DatabaseSession session) {
Vector descriptors = new Vector();
descriptors.addElement(LockInCache.descriptor());
descriptors.addElement(LockInObject.descriptor());
descriptors.addElement(TimestampInCache.descriptor());
descriptors.addElement(TimestampInObject.descriptor());
descriptors.addElement(TimestampVersion.descriptor());
descriptors.addElement(TimestampInAggregateObject.descriptor());
//
descriptors.addElement(ObjectVersion.descriptor());
descriptors.addElement(LockInAggregateObject.descriptor());
//
descriptors.addElement(ChangedRow.descriptor());
descriptors.addElement(ListItem.descriptor());
descriptors.addElement(ListHolder.descriptor());
(session).addDescriptors(descriptors);
(session).addDescriptors(new RockBandProject());
(session).addDescriptors(new AnimalProject());
session.addDescriptors(new GamesConsoleProject());
}
@Override
public void createTables(DatabaseSession session) {
SchemaManager schemaManager = new SchemaManager(session);
schemaManager.replaceObject(LockInCache.tableDefinition());
schemaManager.replaceObject(LockInObject.tableDefinition());
schemaManager.replaceObject(TimestampInObject.tableDefinition());
schemaManager.replaceObject(TimestampInAggregateObject.tableDefinition());
schemaManager.replaceObject(LockInAggregateObject.tableDefinition());
schemaManager.replaceObject(TimestampInCache.tableDefinition());
schemaManager.replaceObject(ChangedRow.tableDefinition());
schemaManager.replaceObject(ListItem.tableDefinition());
schemaManager.replaceObject(ListHolder.tableDefinition());
schemaManager.createSequences();
new RockBandTableCreator().replaceTables(session);
new AnimalTableCreator().replaceTables(session);
new GamesConsoleTableCreator().replaceTables(session);
}
@Override
public void populate(DatabaseSession session) {
Object instance;
PopulationManager manager = PopulationManager.getDefaultManager();
instance = LockInCache.example1();
session.writeObject(instance);
manager.registerObject(instance, "Cache example1");
instance = LockInCache.example2();
session.writeObject(instance);
manager.registerObject(instance, "Cache example2");
instance = LockInCache.example3();
session.writeObject(instance);
manager.registerObject(instance, "Cache example3");
instance = LockInObject.example1();
session.writeObject(instance);
manager.registerObject(instance, "Object example1");
instance = LockInObject.example2();
session.writeObject(instance);
manager.registerObject(instance, "Object example2");
instance = LockInObject.example3();
session.writeObject(instance);
manager.registerObject(instance, "Object example3");
instance = TimestampInCache.example1();
session.writeObject(instance);
manager.registerObject(instance, "Cache TS example1");
instance = TimestampInCache.example2();
session.writeObject(instance);
manager.registerObject(instance, "Cache TS example2");
instance = TimestampInCache.example3();
session.writeObject(instance);
manager.registerObject(instance, "Cache TS example3");
instance = TimestampInObject.example1();
session.writeObject(instance);
manager.registerObject(instance, "Object TS example1");
instance = TimestampInObject.example2();
session.writeObject(instance);
manager.registerObject(instance, "Object TS example2");
instance = TimestampInObject.example3();
session.writeObject(instance);
manager.registerObject(instance, "Object TS example3");
instance = ChangedRow.example1();
session.writeObject(instance);
manager.registerObject(instance, "ChangedRow example1");
instance = ChangedRow.example2();
session.writeObject(instance);
manager.registerObject(instance, "ChangedRow example2");
instance = ChangedRow.example3();
session.writeObject(instance);
manager.registerObject(instance, "ChangedRow example3");
instance = TimestampInAggregateObject.example1();
session.writeObject(instance);
manager.registerObject(instance, "Aggregate Object TS example1");
instance = TimestampInAggregateObject.example2();
session.writeObject(instance);
manager.registerObject(instance, "Aggregate Object TS example2");
instance = TimestampInAggregateObject.example3();
session.writeObject(instance);
manager.registerObject(instance, "Aggregate Object TS example3");
instance = LockInAggregateObject.example1();
session.writeObject(instance);
manager.registerObject(instance, "Lock Object TS example1");
instance = LockInAggregateObject.example2();
session.writeObject(instance);
manager.registerObject(instance, "Lock Object TS example2");
instance = LockInAggregateObject.example3();
session.writeObject(instance);
manager.registerObject(instance, "Lock Object TS example3");
UnitOfWork uow = session.acquireUnitOfWork();
instance = uow.registerObject(RockBand.example1());
manager.registerObject(instance, "RockBand example1");
instance = uow.registerObject(RockBand.example2());
manager.registerObject(instance, "RockBand example2");
uow.commit();
}
}