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