/*
* Copyright 2009 DuraSpace.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.mulgara.query.operation;
import org.mulgara.connection.Connection;
import org.mulgara.query.QueryException;
/**
* Indicates a UI request to automatically commit after executing a write operation.
* {@link #isOn()} indicates that a transaction is being closed.
*
* @created Aug 17, 2007
* @author Paulaa Gearon
* @copyright © 2007 <a href="mailto:pgearon@users.sourceforge.net">Paula Gearon</a>
* @licence <a href="{@docRoot}/../../LICENCE.txt">Open Software License v3.0</a>
*/
public class SetAutoCommit extends BooleanSetCommand implements TxOp {
private static final String MESSAGE = "Auto commit is ";
/**
* Create a command to set autocommit on or off.
* @param option The value to set the time recording to.
*/
public SetAutoCommit(boolean option) {
super(option);
}
/**
* Set the autocommit state on a connection.
* @param conn The connection to set the state of.
* @return The resulting message text.
* @throws QueryException if unable to set the autocommit state.
*/
public Object execute(Connection conn) throws QueryException {
boolean on = isOn();
if (conn != null) conn.setAutoCommit(on);
return setResultMessage(MESSAGE + (on ? ON : OFF));
}
/**
* {@inheritDoc}
*/
public boolean stayInTx() {
// only stay in a transaction if autocommit is not on
return !isOn();
}
/**
* Sets message text relevant to the operation. Exposes this publicly, but only for internal use.
* @return The set text.
*/
public String setResultMessage(String resultMessage) {
return super.setResultMessage(resultMessage);
}
}