package com.teamkonzept.webman.mainint.db.queries;
import com.teamkonzept.db.*;
import java.sql.*;
import com.teamkonzept.webman.mainint.WebmanExceptionHandler;
import com.teamkonzept.webman.mainint.db.queries.content.*;
/**
*
* @author
* @version
*/
public class TKDBContentNewVersionByVersionId extends TKExtendedPrepQuery
{
public final static boolean ISPREPARED = true;
public final static String[] ORDER = {
"INSTANCE_ID", "VERSION_ID", "STATUS_ID", "VERS_INFO", "VERS_AUTHOR"
};
public final static Object[][] TYPES =
{
{"VERS_INFO", new Integer(Types.VARCHAR)},
{"VERS_AUTHOR", new Integer(Types.VARCHAR)}
};
public final static boolean[] SETRELEVANTS = { false };
protected static Class[] queryClasses = {
SelectContentIDFromContentVersion.class,
SelectMaxContentVersion.class,
InsertContentVersion.class
};
public boolean execute()
{
try
{
init(queryClasses); // init query objects
boolean isNotOpen = aTKDBConnection.isAutoCommit();
if (isNotOpen)
{
TKDBManager.beginTransaction();
}
int cont_id = 0;
// SELECT @CONT_ID= (SELECT CONTENT_ID FROM CONTENT_VERSION WHERE VERSION_ID = @VERS_ID)
// PARAMS: VERSION_ID
queries[0].setQueryParams("VERSION_ID", queryParams.get("VERSION_ID"));
queries[0].execute();
ResultSet rs = queries[0].fetchResultSet();
if (rs != null && rs.next())
{
cont_id = rs.getInt(1);
}
int new_vers_id = 1;
// SELECT @NEW_VERS_ID=ISNULL(MAX(VERSION_ID)+1, 1) FROM CONTENT_VERSION
queries[1].execute();
rs = queries[1].fetchResultSet();
if (rs != null && rs.next())
{
new_vers_id = rs.getInt(1) + 1;
}
// INSERT INTO CONTENT_VERSION (VERSION_ID, INSTANCE_ID, CONTENT_ID, STATUS_ID, DATE, INFO, AUTHOR)
// VALUES (@NEW_VERS_ID, @INST_ID, @CONT_ID, ?, {fn NOW()}, ?, ?)
// PARAMS: VERSION_ID, INSTANCE_ID, CONTENT_ID, STATUS_ID, DATE, VERS_INFO, VERS_AUTHOR
// TYPES: VERS_INFO: Types.VARCHAR, VERS_AUTHOR: Types.VARCHAR
queries[2].setQueryParams("VERSION_ID", new Integer(new_vers_id));
queries[2].setQueryParams("INSTANCE_ID",
queryParams.get("INSTANCE_ID"));
queries[2].setQueryParams("CONTENT_ID", new Integer(cont_id));
queries[2].setQueryParams("STATUS_ID",
queryParams.get("STATUS_ID"));
queries[2].setQueryParams("DATE",
new java.sql.Timestamp(System.
currentTimeMillis
()));
queries[2].setQueryParams("VERS_INFO",
queryParams.get("VERS_INFO"));
queries[2].setQueryParams("VERS_AUTHOR",
queryParams.get("VERS_AUTHOR"));
queries[2].execute();
if (isNotOpen)
{
aTKDBConnection.commitTransaction(); // commit all changes
}
}
catch(Throwable t)
{
TKDBManager.safeRollbackTransaction(t);
}
return hasResults();
}
public void initQuery(Connection con)
{
super.initQuery(con, ISPREPARED, ORDER, TYPES, SETRELEVANTS, null);
}
}
|