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); | |
} | |
} |