/******************************************************************************* * Copyright (c) 1998, 2015 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.conversion; import org.eclipse.persistence.sessions.*; import org.eclipse.persistence.descriptors.ClassDescriptor; import org.eclipse.persistence.internal.databaseaccess.*; import org.eclipse.persistence.tools.schemaframework.*; import org.eclipse.persistence.testing.framework.*; public class ConversionManagerSystem extends TestSystem { public ConversionManagerSystem() { project = new ConversionManagerProject(); } public void addDescriptors(DatabaseSession session) { if (project == null) { project = new ConversionManagerProject(); } DatabasePlatform platform = session.getLogin().getPlatform(); // If on Access, Oracle or DB2, remove the byte array mapping if (platform.isAccess() || platform.isOracle()) { ClassDescriptor objDescriptor = (project.getDescriptors().get(ConversionDataObject.class)); objDescriptor.getMappings().removeElement(objDescriptor.getMappingForAttributeName("aPByteArray")); } if (platform.isDB2()) { // Bug 2719624 - This mapping is added so we can use DB2 to test our handling of Nanoseconds // DB2 handles nanoseconds at a level of precision and consistency that allows us to easily test. ClassDescriptor objDescriptor = (project.getDescriptors().get(ConversionDataObject.class)); // SECTION: DIRECTTOFIELDMAPPING org.eclipse.persistence.mappings.DirectToFieldMapping directtofieldmapping28 = new org.eclipse.persistence.mappings.DirectToFieldMapping(); directtofieldmapping28.setAttributeName("dateToTimestamp"); directtofieldmapping28.setIsReadOnly(false); directtofieldmapping28.setFieldName("CM_OBJ.DATE2TIMESTAMP"); objDescriptor.addMapping(directtofieldmapping28); } session.addDescriptors(project); } public void createTables(DatabaseSession session) { SchemaManager schemaManager = new SchemaManager(session); TableDefinition definition = ConversionDataObject.tableDefinition(); DatabasePlatform platform = session.getLogin().getPlatform(); // Only add this field if NOT on Access or DB2 if (!(platform.isAccess() || platform.isOracle())) { definition.addField("A_PBYTE_A", Byte[].class); } schemaManager.replaceObject(definition); schemaManager.createSequences(); } public void populate(DatabaseSession session) { Object instance; PopulationManager manager = PopulationManager.getDefaultManager(); instance = ConversionDataObject.example1(); session.writeObject(instance); manager.registerObject(instance, "example1"); instance = ConversionDataObject.example2(); session.writeObject(instance); manager.registerObject(instance, "example2"); instance = ConversionDataObject.example3(); session.writeObject(instance); manager.registerObject(instance, "example3"); } }