blob: 2b3d2314cf91b8b8f943c9a09442191f996ebf31 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 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:
* David McCann - 2.4 - Initial implementation
******************************************************************************/
package org.eclipse.persistence.internal.xr;
import java.util.List;
/**
* For use with a batch SQL query, i.e. two or more SQL statements that
* are to be executed against the database in order. The result will
* be either 0 (success) or 1 (failure). Note that if a statement
* fails, i.e. an exception is thrown upon executing a given SQL
* statement, none of the remaining statements are executed.
*
* Warning: the SQL is assumed to be valid and well formed, and no
* roll back or any type of error handling is performed.
*
*/
public class BatchQueryOperation extends QueryOperation {
protected List<String> batchSql;
/**
* Return the List of SQL statements to be executed for this operation.
*/
public List<String> getBatchSql() {
return batchSql;
}
/**
* Set the List of SQL statements to be executed for this operation.
*/
public void setBatchSql(List<String> batchSql) {
this.batchSql = batchSql;
}
/**
* Invoke the SQL statements in order against the database.
* The returned ValueOject will hold either 0 (success) or
* 1 (failure).
*
* @Override
*/
public Object invoke(XRServiceAdapter xrService, Invocation invocation) {
ValueObject v = new ValueObject();
for (String sqlString : batchSql) {
try {
xrService.getORSession().executeNonSelectingSQL(sqlString);
} catch (Exception x) {
try {
xrService.getORSession().executeSQL(sqlString);
} catch (Exception xx) {
v.value = 1;
return v;
}
}
}
v.value = 0;
return v;
}
/**
* No validation can be done for a batch query operation.
*
* @Override
*/
public void validate(XRServiceAdapter xrService) {}
/**
* The initialize method will add an XMLDesctriptor for
* org.eclipse.persistence.internal.xr.ValueObject to
* the OX project. This class is used to hold the
* result of the batch SQL execution.
*
* @Override
*/
public void initialize(XRServiceAdapter xrService) {
addValueObjectDescriptor(xrService);
}
}