/******************************************************************************* | |
* Copyright (c) 1998, 2013 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.tests.schemaframework; | |
import org.eclipse.persistence.queries.*; | |
import org.eclipse.persistence.testing.framework.*; | |
/** | |
* Author: Edwin Tang | |
* The test executes and verifies the stored procedures in the database | |
* generated by SPGGenerateAmendmentClassTest. | |
*/ | |
public class SPGExecuteStoredProcedureTest extends TestCase { | |
boolean shouldBindAllParameters; | |
int insertSuccess = 1; | |
int updateSuccess = 1; | |
int deleteSuccess = 1; | |
String parameterNamePrefix; | |
boolean shouldUseNamedArguments; | |
static final Integer menuID = new Integer(99); | |
static final Integer restaurantID = new Integer(100); | |
static final Integer dinerID = new Integer(101); | |
static final Integer personID = new Integer(102); | |
static final Integer locationID = new Integer(103); | |
static final Integer waiterID = new Integer(104); | |
static final Integer menuItemID = new Integer(105); | |
static final String menuType = "Lunch"; | |
static final String menuTypeUpdate = "Dinner"; | |
static final String dinerFirstName = "Steve"; | |
static final String dinerFirstNameUpdate = "Stephen"; | |
static final String dinerLastName = "McDonald"; | |
static final String dinerClass = "B"; | |
static final String personFirstName = "Dan"; | |
static final String personFirstNameUpdate = "Danial"; | |
static final String personLastName = "Smith"; | |
static final String personClass = "A"; | |
static final String locationArea = "Downtown"; | |
static final String locationAreaUpdate = "Southeastern"; | |
static final String locationCity = "Ottawa"; | |
static final String waiterFirstName = "Joel"; | |
static final String waiterLastName = "Clark"; | |
static final String waiterSpeciality = "Speaking Spanish"; | |
static final String waiterSpecialityUpdate = "Speaking Spanish and Italian"; | |
static final String waiterClass = "A"; | |
static final String menuItemName = "Roasted beef and potato"; | |
static final Float menuItemPrice = new Float(20.99f); | |
static final Float menuItemPriceUpdate = new Float(22.99f); | |
static final String restaurantName = "May Flower"; | |
static final String restaurantNameUpdate = "Great Wall Restaurant"; | |
public SPGExecuteStoredProcedureTest() { | |
} | |
public void setup() { | |
shouldUseNamedArguments = !getSession().getDatasourcePlatform().isMySQL(); | |
if(shouldUseNamedArguments) { | |
if(getSession().getDatasourcePlatform().isOracle()) { | |
parameterNamePrefix = "P_"; | |
} else { | |
parameterNamePrefix = ""; | |
} | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("INS_Menu"); | |
addArgumentValue(call, "ID",menuID); | |
addArgumentValue(call, "REST_ID",restaurantID); | |
addArgumentValue(call, "TYPE",menuType); | |
insertSuccess = insertSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("INS_Diner"); | |
addArgumentValue(call, "ID",dinerID); | |
addArgumentValue(call, "F_NAME",dinerFirstName); | |
addArgumentValue(call, "CLASS",dinerClass); | |
addArgumentValue(call, "L_NAME",dinerLastName); | |
insertSuccess = insertSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("INS_Person"); | |
addArgumentValue(call, "ID",personID); | |
addArgumentValue(call, "F_NAME",personFirstName); | |
addArgumentValue(call, "CLASS",personClass); | |
addArgumentValue(call, "L_NAME",personLastName); | |
insertSuccess = insertSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("INS_Location"); | |
addArgumentValue(call, "AREA",locationArea); | |
addArgumentValue(call, "ID",locationID); | |
addArgumentValue(call, "CITY",locationCity); | |
insertSuccess = insertSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("INS_Waiter"); | |
addArgumentValue(call, "ID",waiterID); | |
addArgumentValue(call, "F_NAME",waiterFirstName); | |
addArgumentValue(call, "SPECIALT",waiterSpeciality); | |
addArgumentValue(call, "CLASS",waiterClass); | |
addArgumentValue(call, "W_RST_ID",restaurantID); | |
addArgumentValue(call, "L_NAME",waiterLastName); | |
insertSuccess = insertSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("INS_MenuItem"); | |
addArgumentValue(call, "ID",menuItemID); | |
addArgumentValue(call, "MENU_ID",menuID); | |
addArgumentValue(call, "PRICE",menuItemPrice); | |
addArgumentValue(call, "NAME",menuItemName); | |
insertSuccess = insertSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("INS_Restaurant"); | |
addArgumentValue(call, "ID",restaurantID); | |
addArgumentValue(call, "NAME",restaurantName); | |
insertSuccess = insertSuccess * getSession().executeNonSelectingCall(call); | |
} | |
} | |
public void test() { | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("UPD_Menu"); | |
addArgumentValue(call, "ID",menuID); | |
addArgumentValue(call, "REST_ID",restaurantID); | |
addArgumentValue(call, "TYPE",menuTypeUpdate); | |
updateSuccess = updateSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("UPD_Diner"); | |
addArgumentValue(call, "ID",dinerID); | |
addArgumentValue(call, "F_NAME",dinerFirstNameUpdate); | |
addArgumentValue(call, "CLASS",dinerClass); | |
addArgumentValue(call, "L_NAME",dinerLastName); | |
updateSuccess = updateSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("UPD_Person"); | |
addArgumentValue(call, "ID",personID); | |
addArgumentValue(call, "F_NAME",personFirstNameUpdate); | |
addArgumentValue(call, "CLASS",personClass); | |
addArgumentValue(call, "L_NAME",personLastName); | |
updateSuccess = updateSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("UPD_Location"); | |
addArgumentValue(call, "AREA",locationAreaUpdate); | |
addArgumentValue(call, "ID",locationID); | |
addArgumentValue(call, "CITY",locationCity); | |
updateSuccess = updateSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("UPD_Waiter"); | |
addArgumentValue(call, "ID",waiterID); | |
addArgumentValue(call, "F_NAME",waiterFirstName); | |
addArgumentValue(call, "SPECIALT",waiterSpecialityUpdate); | |
addArgumentValue(call, "CLASS",waiterClass); | |
addArgumentValue(call, "W_RST_ID",restaurantID); | |
addArgumentValue(call, "L_NAME",waiterLastName); | |
updateSuccess = updateSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("UPD_MenuItem"); | |
addArgumentValue(call, "ID",menuItemID); | |
addArgumentValue(call, "MENU_ID",menuID); | |
addArgumentValue(call, "PRICE",menuItemPriceUpdate); | |
addArgumentValue(call, "NAME",menuItemName); | |
updateSuccess = updateSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("UPD_Restaurant"); | |
addArgumentValue(call, "ID",restaurantID); | |
addArgumentValue(call, "NAME",restaurantNameUpdate); | |
updateSuccess = updateSuccess * getSession().executeNonSelectingCall(call); | |
} | |
} | |
public void reset() { | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("DEL_Menu"); | |
addArgumentValue(call, "ID",menuID); | |
deleteSuccess = deleteSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("D_1M_Menu_items"); | |
addArgumentValue(call, "ID",menuID); | |
deleteSuccess = deleteSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("DEL_Diner"); | |
addArgumentValue(call, "ID",dinerID); | |
deleteSuccess = deleteSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("DEL_Person"); | |
addArgumentValue(call, "ID",personID); | |
deleteSuccess = deleteSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("DEL_Location"); | |
addArgumentValue(call, "ID",locationID); | |
deleteSuccess = deleteSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("DEL_Waiter"); | |
addArgumentValue(call, "ID",waiterID); | |
deleteSuccess = deleteSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("DEL_MenuItem"); | |
addArgumentValue(call, "ID",menuItemID); | |
deleteSuccess = deleteSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("DEL_Restaurant"); | |
addArgumentValue(call, "ID",restaurantID); | |
deleteSuccess = deleteSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("D_1M_Restaurant_waiters"); | |
addArgumentValue(call, "ID",restaurantID); | |
deleteSuccess = deleteSuccess * getSession().executeNonSelectingCall(call); | |
} | |
{ | |
StoredProcedureCall call = new StoredProcedureCall(); | |
call.setProcedureName("D_1M_Restaurant_menus"); | |
addArgumentValue(call, "ID",restaurantID); | |
deleteSuccess = deleteSuccess * getSession().executeNonSelectingCall(call); | |
} | |
} | |
public void verify() { | |
if(insertSuccess * updateSuccess * deleteSuccess == 0 ) { | |
throw new TestErrorException("Failed to call stored procedures.") ; | |
} | |
} | |
protected void addArgumentValue(StoredProcedureCall call, String name, Object value) { | |
if(shouldUseNamedArguments) { | |
call.addNamedArgumentValue(parameterNamePrefix + name, value); | |
} else { | |
call.addUnamedArgumentValue(value); | |
} | |
} | |
} |