| /* |
| * 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.models.plsql; |
| |
| import java.math.BigDecimal; |
| |
| import org.eclipse.persistence.mappings.DirectToFieldMapping; |
| import org.eclipse.persistence.mappings.structures.ObjectArrayMapping; |
| import org.eclipse.persistence.mappings.structures.ObjectRelationalDataTypeDescriptor; |
| import org.eclipse.persistence.mappings.structures.StructureMapping; |
| import org.eclipse.persistence.platform.database.jdbc.JDBCTypes; |
| import org.eclipse.persistence.platform.database.oracle.plsql.OraclePLSQLTypes; |
| import org.eclipse.persistence.platform.database.oracle.plsql.PLSQLStoredFunctionCall; |
| import org.eclipse.persistence.platform.database.oracle.plsql.PLSQLStoredProcedureCall; |
| import org.eclipse.persistence.platform.database.oracle.plsql.PLSQLCollection; |
| import org.eclipse.persistence.platform.database.oracle.plsql.PLSQLrecord; |
| import org.eclipse.persistence.queries.DataModifyQuery; |
| import org.eclipse.persistence.queries.DataReadQuery; |
| import org.eclipse.persistence.queries.DatabaseQuery; |
| import org.eclipse.persistence.queries.StoredProcedureCall; |
| import org.eclipse.persistence.sessions.Project; |
| |
| /** |
| * EclipseLink mapping project for PLSQL data structures. |
| * |
| * @author James |
| */ |
| public class PLSQLProject extends Project { |
| public PLSQLProject() { |
| setName("PLSQLProject"); |
| |
| buildAddressDescriptor(); |
| buildPhoneDescriptor(); |
| buildEmployeeDescriptor(); |
| } |
| |
| protected PLSQLrecord buildAddressRowTypeRecord() { |
| PLSQLrecord record = buildAddressRowTypeDataRecord(); |
| record.setCompatibleType("PLSQL_P_PLSQL_ADDRESS_REC"); |
| record.setJavaType(Address.class); |
| return record; |
| } |
| |
| protected PLSQLrecord buildAddressRowTypeDataRecord() { |
| PLSQLrecord record = new PLSQLrecord(); |
| record.setTypeName("PLSQL_ADDRESS%ROWTYPE"); |
| record.addField("ADDRESS_ID", JDBCTypes.NUMERIC_TYPE, 10, 0); |
| record.addField("STREET_NUM", JDBCTypes.NUMERIC_TYPE, 10, 0); |
| record.addField("STREET", JDBCTypes.VARCHAR_TYPE, 30); |
| record.addField("CITY", JDBCTypes.VARCHAR_TYPE, 30); |
| record.addField("STATE", JDBCTypes.VARCHAR_TYPE, 30); |
| return record; |
| } |
| |
| protected PLSQLrecord buildAddressRecord() { |
| PLSQLrecord record = new PLSQLrecord(); |
| record.setTypeName("PLSQL_P.PLSQL_ADDRESS_REC"); |
| record.setCompatibleType("PLSQL_P_PLSQL_ADDRESS_REC"); |
| record.addField("ADDRESS_ID", JDBCTypes.NUMERIC_TYPE, 10, 0); |
| record.addField("STREET_NUM", JDBCTypes.NUMERIC_TYPE, 10, 0); |
| record.addField("STREET", JDBCTypes.VARCHAR_TYPE, 30); |
| record.addField("CITY", JDBCTypes.VARCHAR_TYPE, 30); |
| record.addField("STATE", JDBCTypes.VARCHAR_TYPE, 30); |
| record.setJavaType(Address.class); |
| return record; |
| } |
| |
| protected PLSQLrecord buildPhoneRecord() { |
| PLSQLrecord record = new PLSQLrecord(); |
| record.setTypeName("PLSQL_P.PLSQL_PHONE_REC"); |
| record.setCompatibleType("PLSQL_P_PLSQL_PHONE_REC"); |
| record.addField("AREA_CODE", JDBCTypes.VARCHAR_TYPE, 3); |
| record.addField("P_NUM", JDBCTypes.VARCHAR_TYPE, 7); |
| record.setJavaType(Phone.class); |
| return record; |
| } |
| |
| protected DatabaseQuery buildSimpleInQuery() { |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_SIMPLE_IN"); |
| call.addNamedArgument("P_VARCHAR", JDBCTypes.VARCHAR_TYPE, 30); |
| call.addNamedArgument("P_BOOLEAN", OraclePLSQLTypes.PLSQLBoolean); |
| call.addNamedArgument("P_BINARY_INTEGER", OraclePLSQLTypes.BinaryInteger); |
| call.addNamedArgument("P_DEC", OraclePLSQLTypes.Dec); |
| call.addNamedArgument("P_INT", OraclePLSQLTypes.Int); |
| call.addNamedArgument("P_NATURAL", OraclePLSQLTypes.Natural); |
| call.addNamedArgument("P_NATURALN", OraclePLSQLTypes.NaturalN); |
| call.addNamedArgument("P_PLS_INTEGER", OraclePLSQLTypes.PLSQLInteger); |
| call.addNamedArgument("P_POSITIVE", OraclePLSQLTypes.Positive); |
| call.addNamedArgument("P_POSITIVEN", OraclePLSQLTypes.PositiveN); |
| call.addNamedArgument("P_SIGNTYPE", OraclePLSQLTypes.SignType); |
| call.addNamedArgument("P_NUMBER", JDBCTypes.NUMERIC_TYPE, 10, 2); |
| DataModifyQuery query = new DataModifyQuery(); |
| query.addArgument("P_VARCHAR", String.class); |
| query.addArgument("P_BOOLEAN", Integer.class); |
| query.addArgument("P_BINARY_INTEGER", Integer.class); |
| query.addArgument("P_DEC", Integer.class); |
| query.addArgument("P_INT", Integer.class); |
| query.addArgument("P_NATURAL", Integer.class); |
| query.addArgument("P_NATURALN", Integer.class); |
| query.addArgument("P_PLS_INTEGER", Integer.class); |
| query.addArgument("P_POSITIVE", Integer.class); |
| query.addArgument("P_POSITIVEN", Integer.class); |
| query.addArgument("P_SIGNTYPE", BigDecimal.class); |
| query.addArgument("P_NUMBER", BigDecimal.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildSimpleInDefaults2Query() { |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_SIMPLE_IN_DEFAULTS"); |
| call.addNamedArgument("P_VARCHAR", JDBCTypes.VARCHAR_TYPE, 30); |
| call.addNamedArgument("P_BOOLEAN", OraclePLSQLTypes.PLSQLBoolean); |
| call.addNamedArgument("P_BINARY_INTEGER", OraclePLSQLTypes.BinaryInteger); |
| call.addNamedArgument("P_DEC", OraclePLSQLTypes.Dec); |
| call.addNamedArgument("P_INT", OraclePLSQLTypes.Int); |
| call.addNamedArgument("P_NATURAL", OraclePLSQLTypes.Natural); |
| call.addNamedArgument("P_NATURALN", OraclePLSQLTypes.NaturalN); |
| call.addNamedArgument("P_PLS_INTEGER", OraclePLSQLTypes.PLSQLInteger); |
| call.addNamedArgument("P_POSITIVE", OraclePLSQLTypes.Positive); |
| call.addNamedArgument("P_POSITIVEN", OraclePLSQLTypes.PositiveN); |
| call.addNamedArgument("P_SIGNTYPE", OraclePLSQLTypes.SignType); |
| call.addNamedArgument("P_NUMBER", JDBCTypes.NUMERIC_TYPE, 10, 2); |
| |
| call.addOptionalArgument("P_VARCHAR"); |
| call.addOptionalArgument("P_BOOLEAN"); |
| call.addOptionalArgument("P_BINARY_INTEGER"); |
| call.addOptionalArgument("P_DEC"); |
| call.addOptionalArgument("P_INT"); |
| call.addOptionalArgument("P_NATURAL"); |
| call.addOptionalArgument("P_NATURALN"); |
| call.addOptionalArgument("P_PLS_INTEGER"); |
| call.addOptionalArgument("P_POSITIVE"); |
| call.addOptionalArgument("P_POSITIVEN"); |
| call.addOptionalArgument("P_SIGNTYPE"); |
| call.addOptionalArgument("P_NUMBER"); |
| |
| DataModifyQuery query = new DataModifyQuery(); |
| query.addArgument("P_VARCHAR", String.class, true); |
| query.addArgument("P_BOOLEAN", Integer.class, true); |
| query.addArgument("P_BINARY_INTEGER", Integer.class, true); |
| query.addArgument("P_DEC", Integer.class, true); |
| query.addArgument("P_INT", Integer.class, true); |
| query.addArgument("P_NATURAL", Integer.class, true); |
| query.addArgument("P_NATURALN", Integer.class, true); |
| query.addArgument("P_PLS_INTEGER", Integer.class, true); |
| query.addArgument("P_POSITIVE", Integer.class, true); |
| query.addArgument("P_POSITIVEN", Integer.class, true); |
| query.addArgument("P_SIGNTYPE", BigDecimal.class, true); |
| query.addArgument("P_NUMBER", BigDecimal.class, true); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildSimpleInFuncQuery() { |
| PLSQLStoredFunctionCall call = new PLSQLStoredFunctionCall(OraclePLSQLTypes.PLSQLBoolean); |
| call.setProcedureName("PLSQL_SIMPLE_IN_Func"); |
| call.addNamedArgument("P_VARCHAR", JDBCTypes.VARCHAR_TYPE, 30); |
| call.addNamedArgument("P_BOOLEAN", OraclePLSQLTypes.PLSQLBoolean); |
| call.addNamedArgument("P_BINARY_INTEGER", OraclePLSQLTypes.BinaryInteger); |
| call.addNamedArgument("P_DEC", OraclePLSQLTypes.Dec); |
| call.addNamedArgument("P_INT", OraclePLSQLTypes.Int); |
| call.addNamedArgument("P_NATURAL", OraclePLSQLTypes.Natural); |
| call.addNamedArgument("P_NATURALN", OraclePLSQLTypes.NaturalN); |
| call.addNamedArgument("P_PLS_INTEGER", OraclePLSQLTypes.PLSQLInteger); |
| call.addNamedArgument("P_POSITIVE", OraclePLSQLTypes.Positive); |
| call.addNamedArgument("P_POSITIVEN", OraclePLSQLTypes.PositiveN); |
| call.addNamedArgument("P_SIGNTYPE", OraclePLSQLTypes.SignType); |
| call.addNamedArgument("P_NUMBER", JDBCTypes.NUMERIC_TYPE, 10, 2); |
| DataModifyQuery query = new DataModifyQuery(); |
| query.addArgument("P_VARCHAR", String.class); |
| query.addArgument("P_BOOLEAN", Integer.class); |
| query.addArgument("P_BINARY_INTEGER", Integer.class); |
| query.addArgument("P_DEC", Integer.class); |
| query.addArgument("P_INT", Integer.class); |
| query.addArgument("P_NATURAL", Integer.class); |
| query.addArgument("P_NATURALN", Integer.class); |
| query.addArgument("P_PLS_INTEGER", Integer.class); |
| query.addArgument("P_POSITIVE", Integer.class); |
| query.addArgument("P_POSITIVEN", Integer.class); |
| query.addArgument("P_SIGNTYPE", BigDecimal.class); |
| query.addArgument("P_NUMBER", BigDecimal.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildSimpleInDefaultsQuery() { |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_SIMPLE_IN"); |
| call.addNamedArgument("P_BOOLEAN", OraclePLSQLTypes.PLSQLBoolean); |
| call.addNamedArgument("P_BINARY_INTEGER", OraclePLSQLTypes.BinaryInteger); |
| call.addNamedArgument("P_DEC", OraclePLSQLTypes.Dec); |
| call.addNamedArgument("P_INT", OraclePLSQLTypes.Int); |
| call.addNamedArgument("P_NATURAL", OraclePLSQLTypes.Natural); |
| call.addNamedArgument("P_NATURALN", OraclePLSQLTypes.NaturalN); |
| call.addNamedArgument("P_PLS_INTEGER", OraclePLSQLTypes.PLSQLInteger); |
| call.addNamedArgument("P_POSITIVE", OraclePLSQLTypes.Positive); |
| call.addNamedArgument("P_POSITIVEN", OraclePLSQLTypes.PositiveN); |
| call.addNamedArgument("P_SIGNTYPE", OraclePLSQLTypes.SignType); |
| call.addNamedArgument("P_NUMBER", JDBCTypes.NUMERIC_TYPE, 10, 2); |
| DataModifyQuery query = new DataModifyQuery(); |
| query.addArgument("P_BOOLEAN", Integer.class); |
| query.addArgument("P_BINARY_INTEGER", Integer.class); |
| query.addArgument("P_DEC", Integer.class); |
| query.addArgument("P_INT", Integer.class); |
| query.addArgument("P_NATURAL", Integer.class); |
| query.addArgument("P_NATURALN", Integer.class); |
| query.addArgument("P_PLS_INTEGER", Integer.class); |
| query.addArgument("P_POSITIVE", Integer.class); |
| query.addArgument("P_POSITIVEN", Integer.class); |
| query.addArgument("P_SIGNTYPE", BigDecimal.class); |
| query.addArgument("P_NUMBER", BigDecimal.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildSimpleInOutQuery() { |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_SIMPLE_INOUT"); |
| call.addNamedInOutputArgument("P_VARCHAR", JDBCTypes.VARCHAR_TYPE, 30); |
| call.addNamedInOutputArgument("P_BOOLEAN", OraclePLSQLTypes.PLSQLBoolean); |
| call.addNamedInOutputArgument("P_BINARY_INTEGER", OraclePLSQLTypes.BinaryInteger); |
| call.addNamedInOutputArgument("P_DEC", OraclePLSQLTypes.Dec); |
| call.addNamedInOutputArgument("P_INT", OraclePLSQLTypes.Int); |
| call.addNamedInOutputArgument("P_NATURAL", OraclePLSQLTypes.Natural); |
| call.addNamedInOutputArgument("P_NATURALN", OraclePLSQLTypes.NaturalN); |
| call.addNamedInOutputArgument("P_PLS_INTEGER", OraclePLSQLTypes.PLSQLInteger); |
| call.addNamedInOutputArgument("P_POSITIVE", OraclePLSQLTypes.Positive); |
| call.addNamedInOutputArgument("P_POSITIVEN", OraclePLSQLTypes.PositiveN); |
| call.addNamedInOutputArgument("P_SIGNTYPE", OraclePLSQLTypes.SignType); |
| call.addNamedInOutputArgument("P_NUMBER", JDBCTypes.NUMERIC_TYPE, 10, 2); |
| DataModifyQuery query = new DataModifyQuery(); |
| query.addArgument("P_VARCHAR", String.class); |
| query.addArgument("P_BOOLEAN", Integer.class); |
| query.addArgument("P_BINARY_INTEGER", Integer.class); |
| query.addArgument("P_DEC", Integer.class); |
| query.addArgument("P_INT", Integer.class); |
| query.addArgument("P_NATURAL", Integer.class); |
| query.addArgument("P_NATURALN", Integer.class); |
| query.addArgument("P_PLS_INTEGER", Integer.class); |
| query.addArgument("P_POSITIVE", Integer.class); |
| query.addArgument("P_POSITIVEN", Integer.class); |
| query.addArgument("P_SIGNTYPE", BigDecimal.class); |
| query.addArgument("P_NUMBER", BigDecimal.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildSimpleOutQuery() { |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_SIMPLE_OUT"); |
| call.addNamedOutputArgument("P_VARCHAR", JDBCTypes.VARCHAR_TYPE, 30); |
| call.addNamedOutputArgument("P_BOOLEAN", OraclePLSQLTypes.PLSQLBoolean); |
| call.addNamedOutputArgument("P_BINARY_INTEGER", OraclePLSQLTypes.BinaryInteger); |
| call.addNamedOutputArgument("P_DEC", OraclePLSQLTypes.Dec); |
| call.addNamedOutputArgument("P_INT", OraclePLSQLTypes.Int); |
| call.addNamedOutputArgument("P_NATURAL", OraclePLSQLTypes.Natural); |
| // TODO: NATURALN not working for outputs, get conversion error? |
| //call.addNamedOutputArgument("P_NATURALN", OraclePLSQLTypes.NaturalN); |
| call.addNamedOutputArgument("P_PLS_INTEGER", OraclePLSQLTypes.PLSQLInteger); |
| call.addNamedOutputArgument("P_POSITIVE", OraclePLSQLTypes.Positive); |
| //call.addNamedOutputArgument("P_POSITIVEN", OraclePLSQLTypes.PositiveN); |
| call.addNamedOutputArgument("P_SIGNTYPE", OraclePLSQLTypes.SignType); |
| call.addNamedOutputArgument("P_NUMBER", JDBCTypes.NUMERIC_TYPE, 10, 2); |
| DataModifyQuery query = new DataModifyQuery(); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildAddressInOutObjectQuery() { |
| PLSQLrecord record = buildAddressRowTypeRecord(); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_ADDRESS_INOUT"); |
| call.addNamedInOutputArgument("P_ADDRESS", record); |
| DataReadQuery query = new DataReadQuery(); |
| query.addArgument("P_ADDRESS", Address.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildAddressInOutDataQuery() { |
| PLSQLrecord record = buildAddressRowTypeDataRecord(); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_ADDRESS_INOUT_DATA"); |
| call.addNamedInOutputArgument("P_ADDRESS", record); |
| call.addNamedInOutputArgument("P_LOCAL", JDBCTypes.VARCHAR_TYPE, 30); |
| DataReadQuery query = new DataReadQuery(); |
| query.addArgument("ADDRESS_ID", BigDecimal.class); |
| query.addArgument("STREET_NUM", Integer.class); |
| query.addArgument("STREET", String.class); |
| query.addArgument("CITY", String.class); |
| query.addArgument("STATE", String.class); |
| query.addArgument("P_LOCAL", String.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildAddressInObjectQuery() { |
| PLSQLrecord record = buildAddressRowTypeRecord(); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_ADDRESS_IN"); |
| call.addNamedArgument("P_ADDRESS", record); |
| DataModifyQuery query = new DataModifyQuery(); |
| query.addArgument("P_ADDRESS", Address.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildAddressInDataQuery() { |
| PLSQLrecord record = buildAddressRowTypeDataRecord(); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_ADDRESS_IN_DATA"); |
| call.addNamedArgument("P_LOCAL", JDBCTypes.VARCHAR_TYPE, 30); |
| call.addNamedArgument("P_ADDRESS", record); |
| DataModifyQuery query = new DataModifyQuery(); |
| query.addArgument("ADDRESS_ID", BigDecimal.class); |
| query.addArgument("STREET_NUM", Integer.class); |
| query.addArgument("STREET", String.class); |
| query.addArgument("CITY", String.class); |
| query.addArgument("STATE", String.class); |
| query.addArgument("P_LOCAL", String.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildAddressOutObjectQuery() { |
| PLSQLrecord record = buildAddressRowTypeRecord(); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_ADDRESS_OUT"); |
| call.addNamedOutputArgument("P_ADDRESS", record); |
| DataReadQuery query = new DataReadQuery(); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildAddressOutObjectFuncQuery() { |
| PLSQLrecord record = buildAddressRowTypeRecord(); |
| |
| PLSQLStoredFunctionCall call = new PLSQLStoredFunctionCall(record); |
| call.setProcedureName("PLSQL_ADDRESS_OUT_FUNC"); |
| DataReadQuery query = new DataReadQuery(); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildBadAddressOutObjectQuery() { |
| PLSQLrecord record = buildAddressRowTypeRecord(); |
| record.setTypeName(null); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_ADDRESS_INOUT"); |
| call.addNamedOutputArgument("P_ADDRESS", record); |
| DataReadQuery query = new DataReadQuery(); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildAddressOutDataQuery() { |
| PLSQLrecord record = buildAddressRowTypeDataRecord(); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_ADDRESS_OUT_DATA"); |
| call.addNamedOutputArgument("P_ADDRESS", record); |
| call.addNamedOutputArgument("P_LOCAL", JDBCTypes.VARCHAR_TYPE, 30); |
| DataReadQuery query = new DataReadQuery(); |
| query.dontMaintainCache(); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildCityListInQuery() { |
| PLSQLCollection collection = new PLSQLCollection(); |
| collection.setTypeName("PLSQL_P.PLSQL_CITY_LIST"); |
| collection.setCompatibleType("PLSQL_P_PLSQL_CITY_LIST"); |
| collection.setNestedType(JDBCTypes.VARCHAR_TYPE); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_P.PLSQL_CITY_LIST_IN"); |
| call.addNamedArgument("P_CITY_LIST", collection); |
| call.addNamedArgument("P_CITY", JDBCTypes.VARCHAR_TYPE); |
| DataModifyQuery query = new DataModifyQuery(); |
| query.addArgument("P_CITY_LIST", java.sql.Array.class); |
| query.addArgument("P_CITY", String.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildCityListOutQuery() { |
| PLSQLCollection collection = new PLSQLCollection(); |
| collection.setTypeName("PLSQL_P.PLSQL_CITY_LIST"); |
| collection.setCompatibleType("PLSQL_P_PLSQL_CITY_LIST"); |
| collection.setNestedType(JDBCTypes.VARCHAR_TYPE); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_P.PLSQL_CITY_LIST_OUT"); |
| call.addNamedOutputArgument("P_CITY_LIST", collection); |
| call.addNamedOutputArgument("P_CITY", JDBCTypes.VARCHAR_TYPE); |
| DataReadQuery query = new DataReadQuery(); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildCityListInOutQuery() { |
| PLSQLCollection collection = new PLSQLCollection(); |
| collection.setTypeName("PLSQL_P.PLSQL_CITY_LIST"); |
| collection.setCompatibleType("PLSQL_P_PLSQL_CITY_LIST"); |
| collection.setNestedType(JDBCTypes.VARCHAR_TYPE); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_P.PLSQL_CITY_LIST_INOUT"); |
| call.addNamedInOutputArgument("P_CITY_LIST", collection); |
| call.addNamedInOutputArgument("P_CITY", JDBCTypes.VARCHAR_TYPE); |
| DataReadQuery query = new DataReadQuery(); |
| query.addArgument("P_CITY_LIST", java.sql.Array.class); |
| query.addArgument("P_CITY", String.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildAddressListInQuery() { |
| PLSQLrecord record = buildAddressRecord(); |
| |
| PLSQLCollection collection = new PLSQLCollection(); |
| collection.setTypeName("PLSQL_P.PLSQL_ADDRESS_LIST"); |
| collection.setCompatibleType("PLSQL_P_PLSQL_ADDRESS_LIST"); |
| collection.setNestedType(record); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_P.PLSQL_ADDRESS_LIST_IN"); |
| call.addNamedArgument("P_ADDRESS_LIST", collection); |
| call.addNamedArgument("P_CITY", JDBCTypes.VARCHAR_TYPE); |
| DataModifyQuery query = new DataModifyQuery(); |
| query.addArgument("P_ADDRESS_LIST", java.sql.Array.class); |
| query.addArgument("P_CITY", String.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildMissingTypeAddressListOutQuery() { |
| PLSQLrecord record = buildAddressRecord(); |
| |
| PLSQLCollection collection = new PLSQLCollection(); |
| collection.setTypeName("PLSQL_P.PLSQL_ADDRESS_LIST"); |
| collection.setNestedType(record); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_P.PLSQL_ADDRESS_LIST_OUT"); |
| call.addNamedOutputArgument("P_ADDRESS_LIST", collection); |
| call.addNamedOutputArgument("P_CITY", JDBCTypes.VARCHAR_TYPE); |
| DataReadQuery query = new DataReadQuery(); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildAddressListOutQuery() { |
| PLSQLrecord record = buildAddressRecord(); |
| |
| PLSQLCollection collection = new PLSQLCollection(); |
| collection.setTypeName("PLSQL_P.PLSQL_ADDRESS_LIST"); |
| collection.setCompatibleType("PLSQL_P_PLSQL_ADDRESS_LIST"); |
| collection.setNestedType(record); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_P.PLSQL_ADDRESS_LIST_OUT"); |
| call.addNamedOutputArgument("P_ADDRESS_LIST", collection); |
| call.addNamedOutputArgument("P_CITY", JDBCTypes.VARCHAR_TYPE); |
| DataReadQuery query = new DataReadQuery(); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildAddressOutCursorQuery() { |
| |
| StoredProcedureCall call = new StoredProcedureCall(); |
| call.setProcedureName("PLSQL_P.PLSQL_ADDRESS_CUR_OUT"); |
| call.useNamedCursorOutputAsResultSet("P_ADDRESS"); |
| DataReadQuery query = new DataReadQuery(); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildAddressRecOutCursorQuery() { |
| |
| StoredProcedureCall call = new StoredProcedureCall(); |
| call.setProcedureName("PLSQL_P.PLSQL_ADDRESS_REC_CUR_OUT"); |
| call.useNamedCursorOutputAsResultSet("P_ADDRESS"); |
| DataReadQuery query = new DataReadQuery(); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildAddressListInOutQuery() { |
| PLSQLrecord record = buildAddressRecord(); |
| |
| PLSQLCollection collection = new PLSQLCollection(); |
| collection.setTypeName("PLSQL_P.PLSQL_ADDRESS_LIST"); |
| collection.setCompatibleType("PLSQL_P_PLSQL_ADDRESS_LIST"); |
| collection.setNestedType(record); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_P.PLSQL_ADDRESS_LIST_INOUT"); |
| call.addNamedInOutputArgument("P_ADDRESS_LIST", collection); |
| call.addNamedInOutputArgument("P_CITY", JDBCTypes.VARCHAR_TYPE); |
| DataReadQuery query = new DataReadQuery(); |
| query.addArgument("P_ADDRESS_LIST", java.sql.Array.class); |
| query.addArgument("P_CITY", String.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected PLSQLrecord buildEmployeeRecord() { |
| PLSQLrecord record = new PLSQLrecord(); |
| record.setTypeName("PLSQL_P.PLSQL_EMP_REC"); |
| record.setCompatibleType("PLSQL_P_PLSQL_EMP_REC"); |
| record.addField("EMP_ID", JDBCTypes.NUMERIC_TYPE, 10, 0); |
| record.addField("NAME", JDBCTypes.VARCHAR_TYPE, 30); |
| record.addField("ACTIVE", OraclePLSQLTypes.PLSQLBoolean, 30); |
| record.addField("ADDRESS", buildAddressRecord()); |
| record.setJavaType(Employee.class); |
| |
| PLSQLCollection collection = new PLSQLCollection(); |
| collection.setTypeName("PLSQL_P.PLSQL_PHONE_LIST"); |
| collection.setCompatibleType("PLSQL_P_PLSQL_PHONE_LIST"); |
| collection.setNestedType(buildPhoneRecord()); |
| |
| record.addField("PHONES", collection); |
| |
| return record; |
| } |
| |
| protected DatabaseQuery buildEmployeeListInQuery() { |
| PLSQLrecord record = buildEmployeeRecord(); |
| |
| PLSQLCollection collection = new PLSQLCollection(); |
| collection.setTypeName("PLSQL_P.PLSQL_EMP_LIST"); |
| collection.setCompatibleType("PLSQL_P_PLSQL_EMP_LIST"); |
| collection.setNestedType(record); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_P.PLSQL_EMP_LIST_IN"); |
| call.addNamedArgument("P_EMP_LIST", collection); |
| call.addNamedArgument("P_CITY", JDBCTypes.VARCHAR_TYPE); |
| DataModifyQuery query = new DataModifyQuery(); |
| query.addArgument("P_EMP_LIST", java.sql.Array.class); |
| query.addArgument("P_CITY", String.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildEmployeeListOutQuery() { |
| PLSQLrecord record = buildEmployeeRecord(); |
| |
| PLSQLCollection collection = new PLSQLCollection(); |
| collection.setTypeName("PLSQL_P.PLSQL_EMP_LIST"); |
| collection.setCompatibleType("PLSQL_P_PLSQL_EMP_LIST"); |
| collection.setNestedType(record); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_P.PLSQL_EMP_LIST_OUT"); |
| call.addNamedOutputArgument("P_EMP_LIST", collection); |
| call.addNamedOutputArgument("P_CITY", JDBCTypes.VARCHAR_TYPE); |
| DataReadQuery query = new DataReadQuery(); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildEmployeeListInOutQuery() { |
| PLSQLrecord record = buildEmployeeRecord(); |
| |
| PLSQLCollection collection = new PLSQLCollection(); |
| collection.setTypeName("PLSQL_P.PLSQL_EMP_LIST"); |
| collection.setCompatibleType("PLSQL_P_PLSQL_EMP_LIST"); |
| collection.setNestedType(record); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_P.PLSQL_EMP_LIST_INOUT"); |
| call.addNamedInOutputArgument("P_EMP_LIST", collection); |
| call.addNamedInOutputArgument("P_CITY", JDBCTypes.VARCHAR_TYPE); |
| DataReadQuery query = new DataReadQuery(); |
| query.addArgument("P_EMP_LIST", java.sql.Array.class); |
| query.addArgument("P_CITY", String.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildEmployeeInQuery() { |
| PLSQLrecord record = buildEmployeeRecord(); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_P.PLSQL_EMP_IN"); |
| call.addNamedArgument("P_EMP", record); |
| call.addNamedArgument("P_CITY", JDBCTypes.VARCHAR_TYPE); |
| DataModifyQuery query = new DataModifyQuery(); |
| query.addArgument("P_EMP", Employee.class); |
| query.addArgument("P_CITY", String.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildEmployeeOutQuery() { |
| PLSQLrecord record = buildEmployeeRecord(); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_P.PLSQL_EMP_OUT"); |
| call.addNamedOutputArgument("P_EMP", record); |
| call.addNamedOutputArgument("P_CITY", JDBCTypes.VARCHAR_TYPE); |
| DataReadQuery query = new DataReadQuery(); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected DatabaseQuery buildEmployeeInOutQuery() { |
| PLSQLrecord record = buildEmployeeRecord(); |
| |
| PLSQLStoredProcedureCall call = new PLSQLStoredProcedureCall(); |
| call.setProcedureName("PLSQL_P.PLSQL_EMP_INOUT"); |
| call.addNamedInOutputArgument("P_EMP", record); |
| call.addNamedInOutputArgument("P_CITY", JDBCTypes.VARCHAR_TYPE); |
| DataReadQuery query = new DataReadQuery(); |
| query.addArgument("P_EMP", Employee.class); |
| query.addArgument("P_CITY", String.class); |
| query.setCall(call); |
| |
| return query; |
| } |
| |
| protected void buildAddressDescriptor() { |
| ObjectRelationalDataTypeDescriptor descriptor = new ObjectRelationalDataTypeDescriptor(); |
| descriptor.setJavaClass(Address.class); |
| descriptor.setTableName("PLSQL_ADDRESS"); |
| descriptor.setStructureName("PLSQL_P_PLSQL_ADDRESS_REC"); |
| descriptor.descriptorIsAggregate(); |
| |
| descriptor.getQueryManager().addQuery("SimpleIn", buildSimpleInQuery()); |
| descriptor.getQueryManager().addQuery("SimpleInDefaults", buildSimpleInDefaultsQuery()); |
| descriptor.getQueryManager().addQuery("SimpleInDefaults2", buildSimpleInDefaults2Query()); |
| descriptor.getQueryManager().addQuery("SimpleInFunc", buildSimpleInFuncQuery()); |
| descriptor.getQueryManager().addQuery("SimpleOut", buildSimpleOutQuery()); |
| descriptor.getQueryManager().addQuery("SimpleInOut", buildSimpleInOutQuery()); |
| descriptor.getQueryManager().addQuery("AddressInOutObject", buildAddressInOutObjectQuery()); |
| descriptor.getQueryManager().addQuery("AddressInOutData", buildAddressInOutDataQuery()); |
| descriptor.getQueryManager().addQuery("AddressOutObject", buildAddressOutObjectQuery()); |
| descriptor.getQueryManager().addQuery("AddressOutObjectFunc", buildAddressOutObjectFuncQuery()); |
| descriptor.getQueryManager().addQuery("AddressOutData", buildAddressOutDataQuery()); |
| descriptor.getQueryManager().addQuery("AddressInObject", buildAddressInObjectQuery()); |
| descriptor.getQueryManager().addQuery("AddressInData", buildAddressInDataQuery()); |
| descriptor.getQueryManager().addQuery("CityListIn", buildCityListInQuery()); |
| descriptor.getQueryManager().addQuery("CityListOut", buildCityListOutQuery()); |
| descriptor.getQueryManager().addQuery("CityListInOut", buildCityListInOutQuery()); |
| descriptor.getQueryManager().addQuery("AddressListIn", buildAddressListInQuery()); |
| descriptor.getQueryManager().addQuery("AddressListOut", buildAddressListOutQuery()); |
| descriptor.getQueryManager().addQuery("AddressListInOut", buildAddressListInOutQuery()); |
| descriptor.getQueryManager().addQuery("BadAddressOut", buildBadAddressOutObjectQuery()); |
| descriptor.getQueryManager().addQuery("MissingTypeAddressListOut", buildMissingTypeAddressListOutQuery()); |
| descriptor.getQueryManager().addQuery("AddressOutCursor", buildAddressOutCursorQuery()); |
| descriptor.getQueryManager().addQuery("AddressRecOutCursor", buildAddressRecOutCursorQuery()); |
| |
| descriptor.addFieldOrdering("ADDRESS_ID"); |
| DirectToFieldMapping idMapping = new DirectToFieldMapping(); |
| idMapping.setAttributeName("id"); |
| idMapping.setFieldName("ADDRESS_ID"); |
| descriptor.addMapping(idMapping); |
| |
| descriptor.addFieldOrdering("STREET_NUM"); |
| DirectToFieldMapping numberMapping = new DirectToFieldMapping(); |
| numberMapping.setAttributeName("number"); |
| numberMapping.setFieldName("STREET_NUM"); |
| descriptor.addMapping(numberMapping); |
| |
| descriptor.addFieldOrdering("STREET"); |
| DirectToFieldMapping streetMapping = new DirectToFieldMapping(); |
| streetMapping.setAttributeName("street"); |
| streetMapping.setFieldName("STREET"); |
| descriptor.addMapping(streetMapping); |
| |
| descriptor.addFieldOrdering("CITY"); |
| DirectToFieldMapping cityMapping = new DirectToFieldMapping(); |
| cityMapping.setAttributeName("city"); |
| cityMapping.setFieldName("CITY"); |
| descriptor.addMapping(cityMapping); |
| |
| descriptor.addFieldOrdering("STATE"); |
| DirectToFieldMapping stateMapping = new DirectToFieldMapping(); |
| stateMapping.setAttributeName("state"); |
| stateMapping.setFieldName("STATE"); |
| descriptor.addMapping(stateMapping); |
| |
| addDescriptor(descriptor); |
| } |
| |
| |
| protected void buildPhoneDescriptor() { |
| ObjectRelationalDataTypeDescriptor descriptor = new ObjectRelationalDataTypeDescriptor(); |
| descriptor.setJavaClass(Phone.class); |
| descriptor.setStructureName("PLSQL_P_PLSQL_PHONE_REC"); |
| descriptor.descriptorIsAggregate(); |
| |
| descriptor.addFieldOrdering("AREA_CODE"); |
| DirectToFieldMapping areaCodeMapping = new DirectToFieldMapping(); |
| areaCodeMapping.setAttributeName("areaCode"); |
| areaCodeMapping.setFieldName("AREA_CODE"); |
| descriptor.addMapping(areaCodeMapping); |
| |
| descriptor.addFieldOrdering("P_NUM"); |
| DirectToFieldMapping numberMapping = new DirectToFieldMapping(); |
| numberMapping.setAttributeName("number"); |
| numberMapping.setFieldName("P_NUM"); |
| descriptor.addMapping(numberMapping); |
| |
| addDescriptor(descriptor); |
| } |
| |
| protected void buildEmployeeDescriptor() { |
| ObjectRelationalDataTypeDescriptor descriptor = new ObjectRelationalDataTypeDescriptor(); |
| descriptor.setJavaClass(Employee.class); |
| descriptor.setTableName("PLSQL_EMP"); |
| descriptor.setStructureName("PLSQL_P_PLSQL_EMP_REC"); |
| descriptor.descriptorIsAggregate(); |
| |
| descriptor.getQueryManager().addQuery("EmployeeListIn", buildEmployeeListInQuery()); |
| descriptor.getQueryManager().addQuery("EmployeeListOut", buildEmployeeListOutQuery()); |
| descriptor.getQueryManager().addQuery("EmployeeListInOut", buildEmployeeListInOutQuery()); |
| descriptor.getQueryManager().addQuery("EmployeeInObject", buildEmployeeInQuery()); |
| descriptor.getQueryManager().addQuery("EmployeeOutObject", buildEmployeeOutQuery()); |
| descriptor.getQueryManager().addQuery("EmployeeInOutObject", buildEmployeeInOutQuery()); |
| |
| descriptor.addFieldOrdering("EMP_ID"); |
| DirectToFieldMapping idMapping = new DirectToFieldMapping(); |
| idMapping.setAttributeName("id"); |
| idMapping.setFieldName("EMP_ID"); |
| descriptor.addMapping(idMapping); |
| |
| descriptor.addFieldOrdering("NAME"); |
| DirectToFieldMapping nameMapping = new DirectToFieldMapping(); |
| nameMapping.setAttributeName("name"); |
| nameMapping.setFieldName("NAME"); |
| descriptor.addMapping(nameMapping); |
| |
| descriptor.addFieldOrdering("ACTIVE"); |
| DirectToFieldMapping activeMapping = new DirectToFieldMapping(); |
| activeMapping.setAttributeName("active"); |
| activeMapping.setFieldName("ACTIVE"); |
| descriptor.addMapping(activeMapping); |
| |
| descriptor.addFieldOrdering("ADDRESS"); |
| StructureMapping addressMapping = new StructureMapping(); |
| addressMapping.setAttributeName("address"); |
| addressMapping.setFieldName("ADDRESS"); |
| addressMapping.setReferenceClass(Address.class); |
| descriptor.addMapping(addressMapping); |
| |
| descriptor.addFieldOrdering("PHONES"); |
| ObjectArrayMapping phonesMapping = new ObjectArrayMapping(); |
| phonesMapping.setStructureName("PLSQL_P_PLSQL_PHONE_LIST"); |
| phonesMapping.setAttributeName("phones"); |
| phonesMapping.setFieldName("PHONES"); |
| phonesMapping.setReferenceClass(Phone.class); |
| descriptor.addMapping(phonesMapping); |
| |
| addDescriptor(descriptor); |
| } |
| } |