package de.webman.content.workflow.db.queries;
import java.sql.*;
import com.teamkonzept.db.*;
import com.teamkonzept.webman.mainint.WebmanExceptionHandler;
import de.webman.content.workflow.db.queries.SelectMaxVersionStatus;
import de.webman.content.workflow.db.queries.InsertVersionStatus;
import de.webman.content.workflow.db.queries.SelectVersionStatus;
/*
*
* erzeugt neuen Eintrag in VERSION_STATUS
*
* @author
* @version
*/
public class InsertStatus extends TKExtendedPrepQuery
{
public final static boolean ISPREPARED = true;
public final static String[] ORDER = { "STATUS", "STATUS_ATTRIBUTES" };
public final static Object[][] TYPES = null;
public final static boolean[] SETRELEVANTS = { true };
protected static Class[] queryClasses = {
SelectMaxVersionStatus.class,
InsertVersionStatus.class,
SelectVersionStatus.class
};
public boolean execute()
{
try
{
init(queryClasses);
boolean isNotOpen = aTKDBConnection.isAutoCommit();
if (isNotOpen)
{
TKDBManager.beginTransaction();
}
// SELECT MAX(STATUS_ID) FROM VERSION_STATUS
queries[0].execute();
int status_id = 1;
ResultSet rs = queries[0].fetchResultSet();
if (rs != null && rs.next())
{
status_id = rs.getInt(1) + 1;
}
Integer statusId = new Integer(status_id);
// INSERT INTO VERSION_STATUS (STATUS_ID, STATUS, STATUS_ATTRIBUTES) VALUES (?, ?, ?)
queries[1].setQueryParams("STATUS_ID", statusId);
queries[1].setQueryParams("STATUS",
queryParams.get("STATUS"));
queries[1].setQueryParams("STATUS_ATTRIBUTES",
queryParams.
get("STATUS_ATTRIBUTES"));
queries[1].execute();
// SELECT * FROM VERSION_STATUS WHERE STATUS_ID = ?
queries[2].setQueryParams("STATUS_ID", statusId);
queries[2].execute();
addResult(queries[2].fetchResultSet());
if (isNotOpen)
{
TKDBManager.commitTransaction();
}
}
catch(Throwable t)
{
TKDBManager.safeRollbackTransaction(t);
}
return hasResults();
}
public void initQuery(Connection con)
{
super.initQuery(con, ISPREPARED, ORDER, TYPES, SETRELEVANTS, null);
}
}
|