| /* |
| * Copyright (c) 2018, 2020 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 |
| */ |
| |
| package org.eclipse.persistence.testing.tests.plsqlrecord; |
| |
| // javase imports |
| import java.lang.reflect.Field; |
| import java.math.BigDecimal; |
| import java.util.Properties; |
| |
| // JUnit imports |
| import static org.junit.Assert.fail; |
| |
| // EclipseLink imports |
| import org.eclipse.persistence.internal.descriptors.TransformerBasedFieldTransformation; |
| import org.eclipse.persistence.internal.sessions.factories.ObjectPersistenceWorkbenchXMLProject; |
| import org.eclipse.persistence.mappings.DirectToFieldMapping; |
| import org.eclipse.persistence.mappings.structures.ObjectRelationalDataTypeDescriptor; |
| import org.eclipse.persistence.mappings.transformers.ConstantTransformer; |
| import org.eclipse.persistence.oxm.mappings.XMLTransformationMapping; |
| import org.eclipse.persistence.platform.database.oracle.Oracle10Platform; |
| import org.eclipse.persistence.platform.xml.XMLComparer; |
| import org.eclipse.persistence.platform.xml.XMLParser; |
| import org.eclipse.persistence.platform.xml.XMLPlatformFactory; |
| import org.eclipse.persistence.sessions.DatabaseLogin; |
| import org.eclipse.persistence.sessions.Project; |
| |
| public class PLSQLrecordTestHelper { |
| |
| public static XMLComparer comparer = new XMLComparer(); |
| public static XMLParser xmlParser = |
| XMLPlatformFactory.getInstance().getXMLPlatform().newXMLParser(); |
| |
| public final static String TEST_DOT_PROPERTIES_KEY = "test.properties"; |
| public final static String DATABASE_USERNAME_KEY = "db.user"; |
| public final static String DATABASE_PASSWORD_KEY = "db.pwd"; |
| public final static String DATABASE_URL_KEY = "db.url"; |
| public final static String DATABASE_DRIVER_KEY = "db.driver"; |
| public final static String CONSTANT_PROJECT_BUILD_VERSION = |
| "Eclipse Persistence Services - @VERSION@ (Build @BUILD_NUMBER@)"; |
| |
| public static Project buildTestProject(Properties p) { |
| String username = p.getProperty(DATABASE_USERNAME_KEY); |
| if (username == null) { |
| fail("error retrieving database username"); |
| } |
| String password = p.getProperty(DATABASE_PASSWORD_KEY); |
| if (password == null) { |
| fail("error retrieving database password"); |
| } |
| String url = p.getProperty(DATABASE_URL_KEY); |
| if (url == null) { |
| fail("error retrieving database url"); |
| } |
| String driver = p.getProperty(DATABASE_DRIVER_KEY); |
| if (driver == null) { |
| fail("error retrieving database driver"); |
| } |
| Project project = new Project(); |
| project.setName("PLSQLrecordProject"); |
| ObjectRelationalDataTypeDescriptor plsqlempORDescriptor = |
| new ObjectRelationalDataTypeDescriptor(); |
| plsqlempORDescriptor.setJavaClass(PLSQLEmployeeType.class); |
| plsqlempORDescriptor.setTableName("EMP"); |
| plsqlempORDescriptor.setStructureName("EMP_TYPE"); |
| |
| plsqlempORDescriptor.addPrimaryKeyFieldName("EMPNO"); |
| plsqlempORDescriptor.addFieldOrdering("EMPNO"); |
| DirectToFieldMapping employeeNumberMapping = new DirectToFieldMapping(); |
| employeeNumberMapping.setAttributeName("employeeNumber"); |
| employeeNumberMapping.setFieldName("EMPNO"); |
| employeeNumberMapping.setAttributeClassification(BigDecimal.class); |
| plsqlempORDescriptor.addMapping(employeeNumberMapping); |
| |
| plsqlempORDescriptor.addFieldOrdering("ENAME"); |
| DirectToFieldMapping nameMapping = new DirectToFieldMapping(); |
| nameMapping.setAttributeName("name"); |
| nameMapping.setFieldName("ENAME"); |
| plsqlempORDescriptor.addMapping(nameMapping); |
| |
| plsqlempORDescriptor.addFieldOrdering("JOB"); |
| DirectToFieldMapping jobMapping = new DirectToFieldMapping(); |
| jobMapping.setAttributeName("job"); |
| jobMapping.setFieldName("JOB"); |
| plsqlempORDescriptor.addMapping(jobMapping); |
| |
| plsqlempORDescriptor.addFieldOrdering("MGR"); |
| DirectToFieldMapping managerMapping = new DirectToFieldMapping(); |
| managerMapping.setAttributeName("manager"); |
| managerMapping.setFieldName("MGR"); |
| managerMapping.setAttributeClassification(BigDecimal.class); |
| plsqlempORDescriptor.addMapping(managerMapping); |
| |
| plsqlempORDescriptor.addFieldOrdering("HIREDATE"); |
| DirectToFieldMapping hireDateMapping = new DirectToFieldMapping(); |
| hireDateMapping.setAttributeName("hireDate"); |
| hireDateMapping.setFieldName("HIREDATE"); |
| plsqlempORDescriptor.addMapping(hireDateMapping); |
| |
| plsqlempORDescriptor.addFieldOrdering("SAL"); |
| DirectToFieldMapping salaryMapping = new DirectToFieldMapping(); |
| salaryMapping.setAttributeName("salary"); |
| salaryMapping.setFieldName("SAL"); |
| salaryMapping.setAttributeClassification(Float.class); |
| plsqlempORDescriptor.addMapping(salaryMapping); |
| |
| plsqlempORDescriptor.addFieldOrdering("COMM"); |
| DirectToFieldMapping commissionMapping = new DirectToFieldMapping(); |
| commissionMapping.setAttributeName("commission"); |
| commissionMapping.setFieldName("COMM"); |
| commissionMapping.setAttributeClassification(Float.class); |
| plsqlempORDescriptor.addMapping(commissionMapping); |
| |
| plsqlempORDescriptor.addFieldOrdering("DEPTNO"); |
| DirectToFieldMapping departmentMapping = new DirectToFieldMapping(); |
| departmentMapping.setAttributeName("department"); |
| departmentMapping.setFieldName("DEPTNO"); |
| departmentMapping.setAttributeClassification(BigDecimal.class); |
| plsqlempORDescriptor.addMapping(departmentMapping); |
| project.addDescriptor(plsqlempORDescriptor); |
| DatabaseLogin login = new DatabaseLogin(); |
| login.setUserName(username); |
| login.setPassword(password); |
| login.setConnectionString(url); |
| login.setDriverClassName(driver); |
| login.setDatasourcePlatform(new Oracle10Platform()); |
| project.setDatasourceLogin(login); |
| return project; |
| } |
| |
| public static ObjectPersistenceWorkbenchXMLProject buildWorkbenchXMLProject() { |
| |
| ObjectPersistenceWorkbenchXMLProject workbenchXMLProject = null; |
| try { |
| workbenchXMLProject = new ObjectPersistenceWorkbenchXMLProject(); |
| XMLTransformationMapping versionMapping = |
| (XMLTransformationMapping)workbenchXMLProject.getDescriptor(Project.class). |
| getMappings().firstElement(); |
| TransformerBasedFieldTransformation versionTransformer = |
| (TransformerBasedFieldTransformation)versionMapping.getFieldTransformations().get(0); |
| Field transformerField = |
| TransformerBasedFieldTransformation.class.getDeclaredField("transformer"); |
| transformerField.setAccessible(true); |
| ConstantTransformer constantTransformer = |
| (ConstantTransformer)transformerField.get(versionTransformer); |
| constantTransformer.setValue(CONSTANT_PROJECT_BUILD_VERSION); |
| } |
| catch (Exception e) { |
| e.printStackTrace(); |
| } |
| return workbenchXMLProject; |
| } |
| } |