blob: 51f32525813de867ba41967b870f2c3d3df7dee8 [file] [log] [blame]
/*
* 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;
}
}