/******************************************************************************* * 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.inheritance; import org.eclipse.persistence.sessions.*; import org.eclipse.persistence.descriptors.*; import org.eclipse.persistence.mappings.*; public class STI_EmployeeProject extends org.eclipse.persistence.sessions.Project { public STI_EmployeeProject() { setName("STI_Employee"); applyLogin(); addDescriptor(buildEmployeeDescriptor()); addDescriptor(buildProjectDescriptor()); addDescriptor(buildSmallProjectDescriptor()); addDescriptor(buildLargeProjectDescriptor()); } public void applyLogin() { DatabaseLogin login = new DatabaseLogin(); login.usePlatform(new org.eclipse.persistence.platform.database.OraclePlatform()); login.setDriverClassName("oracle.jdbc.OracleDriver"); login.setConnectionString("jdbc:oracle:thin:@localhost:1521:orcl"); login.setUserName("scott"); login.setEncryptedPassword("3E20F8982C53F4ABA825E30206EC8ADE"); // Configuration Properties. login.setShouldBindAllParameters(false); login.setShouldCacheAllStatements(false); login.setUsesByteArrayBinding(true); login.setUsesStringBinding(false); if (login.shouldUseByteArrayBinding()) {// Can only be used with binding. login.setUsesStreamsForBinding(false); } login.setShouldForceFieldNamesToUpperCase(false); login.setShouldOptimizeDataConversion(true); login.setShouldTrimStrings(true); login.setUsesExternalConnectionPooling(false); login.setUsesExternalTransactionController(false); setDatasourceLogin(login); } public ClassDescriptor buildEmployeeDescriptor() { RelationalDescriptor descriptor = new RelationalDescriptor(); descriptor.setJavaClass(STI_Employee.class); descriptor.addTableName("STI_EMPLOYEE"); descriptor.addPrimaryKeyFieldName("STI_EMPLOYEE.EMP_ID"); // Descriptor Properties. descriptor.useSoftCacheWeakIdentityMap(); descriptor.setIdentityMapSize(100); descriptor.setSequenceNumberFieldName("STI_EMPLOYEE.EMP_ID"); descriptor.setSequenceNumberName("STI_EMP_SEQ"); VersionLockingPolicy lockingPolicy = new VersionLockingPolicy(); lockingPolicy.setWriteLockFieldName("STI_EMPLOYEE.VERSION"); descriptor.setOptimisticLockingPolicy(lockingPolicy); descriptor.setAlias("STI_Employee"); // Cache Invalidation Policy // Query Manager. descriptor.getQueryManager().checkCacheForDoesExist(); // Named Queries. // Event Manager. // Mappings. DirectToFieldMapping firstNameMapping = new DirectToFieldMapping(); firstNameMapping.setAttributeName("firstName"); firstNameMapping.setFieldName("STI_EMPLOYEE.F_NAME"); firstNameMapping.setNullValue(""); descriptor.addMapping(firstNameMapping); DirectToFieldMapping idMapping = new DirectToFieldMapping(); idMapping.setAttributeName("id"); idMapping.setFieldName("STI_EMPLOYEE.EMP_ID"); descriptor.addMapping(idMapping); DirectToFieldMapping lastNameMapping = new DirectToFieldMapping(); lastNameMapping.setAttributeName("lastName"); lastNameMapping.setFieldName("STI_EMPLOYEE.L_NAME"); lastNameMapping.setNullValue(""); descriptor.addMapping(lastNameMapping); //Joel:EJBQLTesting OneToOneMapping managerMapping = new OneToOneMapping(); managerMapping.setAttributeName("manager"); managerMapping.setReferenceClass(STI_Employee.class); managerMapping.useBasicIndirection(); managerMapping.addForeignKeyFieldName("STI_EMPLOYEE.MANAGER_ID", "STI_EMPLOYEE.EMP_ID"); descriptor.addMapping(managerMapping); OneToManyMapping managedEmployeesMapping = new OneToManyMapping(); managedEmployeesMapping.setAttributeName("managedEmployees"); managedEmployeesMapping.setReferenceClass(STI_Employee.class); managedEmployeesMapping.useBasicIndirection(); managedEmployeesMapping.addTargetForeignKeyFieldName("STI_EMPLOYEE.MANAGER_ID", "STI_EMPLOYEE.EMP_ID"); descriptor.addMapping(managedEmployeesMapping); ManyToManyMapping projectsMapping = new ManyToManyMapping(); projectsMapping.setAttributeName("projects"); projectsMapping.setReferenceClass(STI_Project.class); projectsMapping.useBasicIndirection(); projectsMapping.setRelationTableName("STI_PROJ_EMP"); projectsMapping.addSourceRelationKeyFieldName("STI_PROJ_EMP.EMP_ID", "STI_EMPLOYEE.EMP_ID"); projectsMapping.addTargetRelationKeyFieldName("STI_PROJ_EMP.PROJ_ID", "STI_PROJECT.PROJ_ID"); descriptor.addMapping(projectsMapping); return descriptor; } public ClassDescriptor buildProjectDescriptor() { RelationalDescriptor descriptor = new RelationalDescriptor(); descriptor.setJavaClass(STI_Project.class); descriptor.addTableName("STI_PROJECT"); descriptor.addPrimaryKeyFieldName("STI_PROJECT.PROJ_ID"); // Inheritance Properties. descriptor.getInheritancePolicy().setClassIndicatorFieldName("STI_PROJECT.PROJ_TYPE"); descriptor.getInheritancePolicy().addClassIndicator(STI_SmallProject.class, "S"); descriptor.getInheritancePolicy().addClassIndicator(STI_LargeProject.class, "L"); // Descriptor Properties. descriptor.useSoftCacheWeakIdentityMap(); descriptor.setIdentityMapSize(100); descriptor.setSequenceNumberFieldName("STI_PROJECT.PROJ_ID"); descriptor.setSequenceNumberName("STI_PROJ_SEQ"); VersionLockingPolicy lockingPolicy = new VersionLockingPolicy(); lockingPolicy.setWriteLockFieldName("STI_PROJECT.VERSION"); descriptor.setOptimisticLockingPolicy(lockingPolicy); descriptor.setAlias("STI_Project"); // Cache Invalidation Policy // Query Manager. descriptor.getQueryManager().checkCacheForDoesExist(); // Named Queries. // Event Manager. // Mappings. DirectToFieldMapping descriptionMapping = new DirectToFieldMapping(); descriptionMapping.setAttributeName("description"); descriptionMapping.setFieldName("STI_PROJECT.DESCRIP"); descriptionMapping.setNullValue(""); descriptor.addMapping(descriptionMapping); DirectToFieldMapping idMapping = new DirectToFieldMapping(); idMapping.setAttributeName("id"); idMapping.setFieldName("STI_PROJECT.PROJ_ID"); descriptor.addMapping(idMapping); DirectToFieldMapping nameMapping = new DirectToFieldMapping(); nameMapping.setAttributeName("name"); nameMapping.setFieldName("STI_PROJECT.PROJ_NAME"); nameMapping.setNullValue(""); descriptor.addMapping(nameMapping); OneToOneMapping teamLeaderMapping = new OneToOneMapping(); teamLeaderMapping.setAttributeName("teamLeader"); teamLeaderMapping.setReferenceClass(STI_Employee.class); teamLeaderMapping.useBasicIndirection(); teamLeaderMapping.addForeignKeyFieldName("STI_PROJECT.LEADER_ID", "STI_EMPLOYEE.EMP_ID"); descriptor.addMapping(teamLeaderMapping); ManyToManyMapping teamMembersMapping = new ManyToManyMapping(); teamMembersMapping.setAttributeName("teamMembers"); teamMembersMapping.setReferenceClass(STI_Employee.class); teamMembersMapping.useBasicIndirection(); teamMembersMapping.setRelationTableName("STI_PROJ_EMP"); teamMembersMapping.addSourceRelationKeyFieldName("STI_PROJ_EMP.PROJ_ID", "STI_PROJECT.PROJ_ID"); teamMembersMapping.addTargetRelationKeyFieldName("STI_PROJ_EMP.EMP_ID", "STI_EMPLOYEE.EMP_ID"); teamMembersMapping.readOnly(); descriptor.addMapping(teamMembersMapping); return descriptor; } public ClassDescriptor buildSmallProjectDescriptor() { RelationalDescriptor descriptor = new RelationalDescriptor(); descriptor.setJavaClass(STI_SmallProject.class); // Inheritance Properties. descriptor.getInheritancePolicy().setParentClass(STI_Project.class); descriptor.getInheritancePolicy().dontReadSubclassesOnQueries(); // Descriptor Properties. descriptor.setAlias("STI_SmallProject"); // Cache Invalidation Policy // Query Manager. descriptor.getQueryManager().checkCacheForDoesExist(); // Named Queries. // Event Manager. return descriptor; } public ClassDescriptor buildLargeProjectDescriptor() { RelationalDescriptor descriptor = new RelationalDescriptor(); descriptor.setJavaClass(STI_LargeProject.class); // Inheritance Properties. descriptor.getInheritancePolicy().setParentClass(STI_Project.class); descriptor.getInheritancePolicy().dontReadSubclassesOnQueries(); // Descriptor Properties. descriptor.setAlias("STI_LargeProject"); // Cache Invalidation Policy // Query Manager. descriptor.getQueryManager().checkCacheForDoesExist(); // Named Queries. // Event Manager. // Mappings. DirectToFieldMapping budgetMapping = new DirectToFieldMapping(); budgetMapping.setAttributeName("budget"); budgetMapping.setFieldName("STI_PROJECT.BUDGET"); descriptor.addMapping(budgetMapping); return descriptor; } }