diff --git a/SAS/OTB/jOTDB3/src/nl_astron_lofar_sas_otb_jotdb3_jTreeMaintenance.cc b/SAS/OTB/jOTDB3/src/nl_astron_lofar_sas_otb_jotdb3_jTreeMaintenance.cc index 59e71b383d6778a12961f8e6a81b1b76d206c443..f61d86a7fdfbe207ce81fcbdb68443ccdaaebc0a 100644 --- a/SAS/OTB/jOTDB3/src/nl_astron_lofar_sas_otb_jotdb3_jTreeMaintenance.cc +++ b/SAS/OTB/jOTDB3/src/nl_astron_lofar_sas_otb_jotdb3_jTreeMaintenance.cc @@ -1060,15 +1060,13 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb3_jTreeMaintenance_ const char* ed = env->GetStringUTFChars (anEndTime, 0); const string startTime (bd); const string endTime (ed); - const ptime ts (time_from_string (startTime)); - const ptime te (time_from_string (endTime)); jboolean succes; try { - succes= ((TreeMaintenance*)getCObjectPtr(env,jTreeMaintenance,"_TreeMaintenance"))->setSchedule(treeID,ts,te); + succes= ((TreeMaintenance*)getCObjectPtr(env,jTreeMaintenance,"_TreeMaintenance"))->setSchedule(treeID,bd,ed); env->ReleaseStringUTFChars (aStartTime, bd); env->ReleaseStringUTFChars (anEndTime, ed); } catch (exception &ex) { - cout << "Exception during TreeMaintenance::setSchedule(" << treeID << "," << ts << "," << te << ") " << ex.what() << endl; + cout << "Exception during TreeMaintenance::setSchedule(" << treeID << "," << bd << "," << ed << ") " << ex.what() << endl; env->ReleaseStringUTFChars (aStartTime, bd); env->ReleaseStringUTFChars (anEndTime, ed); env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what()); diff --git a/SAS/OTDB/include/OTDB/TreeMaintenance.h b/SAS/OTDB/include/OTDB/TreeMaintenance.h index 134a51356dd6477942eb04827ed48b79750fa3ca..8d57d8223ea258f1774286a5b0198e908af31e2d 100644 --- a/SAS/OTDB/include/OTDB/TreeMaintenance.h +++ b/SAS/OTDB/include/OTDB/TreeMaintenance.h @@ -219,8 +219,8 @@ public: // Set the scheduling times of the tree bool setSchedule(treeIDType aTreeID, - const ptime& aStartTime, - const ptime& aStopTime); + const string& aStartTime, + const string& aStopTime); // Whenever an error occurs in one the OTDB functions the message can // be retrieved with this function. diff --git a/SAS/OTDB/sql/setSchedule_func.sql b/SAS/OTDB/sql/setSchedule_func.sql index 0d9b43e6d835397322a0ca8e829bb8f4fb0267bc..a99ef392d1509d016c5bc4b48f9871e9de6c6981 100644 --- a/SAS/OTDB/sql/setSchedule_func.sql +++ b/SAS/OTDB/sql/setSchedule_func.sql @@ -31,8 +31,8 @@ -- -- Types: none -- -CREATE OR REPLACE FUNCTION setSchedule(INT4, INT4, TIMESTAMP, TIMESTAMP) - RETURNS BOOLEAN AS ' +CREATE OR REPLACE FUNCTION setSchedule(INT4, INT4, VARCHAR(20), VARCHAR(20)) + RETURNS BOOLEAN AS $$ DECLARE vFunction INT2 := 1; TSactive CONSTANT INT2 := 600; @@ -42,14 +42,27 @@ CREATE OR REPLACE FUNCTION setSchedule(INT4, INT4, TIMESTAMP, TIMESTAMP) vCampaignID campaign.id%TYPE; vTreeType OTDBtree.treetype%TYPE; vState OTDBtree.state%TYPE; + vStartTime timestamp; + vStopTime timestamp; BEGIN + -- check Timestamps + IF $3 = '' THEN + vStartTime := NULL; + ELSE + vStartTime := $3; + END IF; + IF $4 = '' THEN + vStopTime := NULL; + ELSE + vStopTime := $4; + END IF; -- check authorisation(authToken, treeID, func, none) vIsAuth := FALSE; SELECT isAuthorized(vAuthToken, $2, vFunction, 0) INTO vIsAuth; IF NOT vIsAuth THEN - RAISE EXCEPTION \'Not authorized.\'; + RAISE EXCEPTION 'Not authorized.'; RETURN FALSE; END IF; @@ -60,30 +73,30 @@ CREATE OR REPLACE FUNCTION setSchedule(INT4, INT4, TIMESTAMP, TIMESTAMP) WHERE treeID = $2; IF vTreeType <> TThierarchy THEN - RAISE EXCEPTION \'Only VH trees can be scheduled.\'; + RAISE EXCEPTION 'Only VH trees can be scheduled.'; END IF; IF vState = TSactive THEN - RAISE EXCEPTION \'Tree may not be active\'; + RAISE EXCEPTION 'Tree may not be active'; END IF; -- Finally update tree UPDATE OTDBtree - SET starttime = $3, - stoptime = $4 + SET starttime = vStartTime, + stoptime = vStopTime WHERE treeID = $2; UPDATE vicHierarchy - SET value = $3 + SET value = vStartTime WHERE treeID = $2 - AND name LIKE \'%.Observation.startTime\'; + AND name LIKE '%.Observation.startTime'; UPDATE vicHierarchy - SET value = $4 + SET value = vStopTime WHERE treeID = $2 - AND name LIKE \'%.Observation.stopTime\'; + AND name LIKE '%.Observation.stopTime'; RETURN TRUE; END; -' LANGUAGE plpgsql; +$$ LANGUAGE plpgsql; diff --git a/SAS/OTDB/src/TreeMaintenance.cc b/SAS/OTDB/src/TreeMaintenance.cc index 0df883bdb890a0539569ca5d6c0f73cf20b0ccfc..13f5a32038a542ba99b4f300275ff9ac02af0d4a 100644 --- a/SAS/OTDB/src/TreeMaintenance.cc +++ b/SAS/OTDB/src/TreeMaintenance.cc @@ -1283,8 +1283,8 @@ bool TreeMaintenance::setDescription(treeIDType aTreeID, // // Set the Executiontime of a tree bool TreeMaintenance::setSchedule(treeIDType aTreeID, - const ptime& aStartTime, - const ptime& aStopTime) + const string& aStartTime, + const string& aStopTime) { // Check connection if (!itsConn->connect()) { @@ -1292,9 +1292,7 @@ bool TreeMaintenance::setSchedule(treeIDType aTreeID, return (false); } - LOG_TRACE_FLOW_STR("TM:setSchedule(" << aTreeID << "," - << to_simple_string(aStartTime) << "," - << to_simple_string(aStopTime) << ")"); + LOG_TRACE_FLOW_STR("TM:setSchedule(" << aTreeID << "," << aStartTime << "," << aStopTime << ")"); work xAction(*(itsConn->getConn()), "setSchedule"); try { @@ -1303,8 +1301,8 @@ bool TreeMaintenance::setSchedule(treeIDType aTreeID, formatString("SELECT setSchedule(%d,%d,'%s','%s')", itsConn->getAuthToken(), aTreeID, - to_simple_string(aStartTime).c_str(), - to_simple_string(aStopTime).c_str())); + aStartTime.c_str(), + aStopTime.c_str())); // Analyse result. bool succes; @@ -1321,19 +1319,6 @@ bool TreeMaintenance::setSchedule(treeIDType aTreeID, LOG_FATAL(itsError); return (false); } -#if 0 - // update Observation.startTime field - vector<OTDBnode> fieldList = getItemList(aTreeID, "%.Observation.startTime"); - ASSERTSTR (fieldList.size() == 1, "No uniq Observation.startTime field in tree " << aTreeID); - fieldList[0].limits = to_simple_string(aStartTime); - saveNode(fieldList[0]); - - // update Observation.stopTime field - fieldList = getItemList(aTreeID, "%.Observation.stopTime"); - ASSERTSTR (fieldList.size() == 1, "No uniq Observation.stopTime field in tree " << aTreeID); - fieldList[0].limits = to_simple_string(aStopTime); - saveNode(fieldList[0]); -#endif return (true); } diff --git a/SAS/OTDB/test/tVHvalue.cc b/SAS/OTDB/test/tVHvalue.cc index b7d1a1f6f8b75a93ad1b3849a589bf701f6e3521..7bfb095c59d1bc0272d0e3d0a2814388e14e9351 100644 --- a/SAS/OTDB/test/tVHvalue.cc +++ b/SAS/OTDB/test/tVHvalue.cc @@ -177,8 +177,7 @@ int main (int argc, char* argv[]) { LOG_INFO("Trying to set the schedule time to 2006-01-20 12:00:00.000"); LOG_INFO("THIS SHOULD FAIL BECAUSE STATUS IS ACTIVE"); - if (tm.setSchedule (treeID, time_from_string("2006-01-20 12:00:00.000"), - time_from_string("2006-01-20 14:53:12.000"))) { + if (tm.setSchedule (treeID, "2006-01-20 12:00:00.000", "2006-01-20 14:53:12.000")) { ASSERTSTR(false, "THIS SHOULD HAVE FAILED"); return(1); } @@ -190,8 +189,7 @@ int main (int argc, char* argv[]) { LOG_INFO_STR(treeInfo); LOG_INFO("Retrying to set the schedule time to 2006-01-20 12:00:00"); - tm.setSchedule (treeID, time_from_string("2006-01-20 12:00:00.000"), - time_from_string("2006-01-20 14:53:12.000")); + tm.setSchedule (treeID, "2006-01-20 12:00:00.000", "2006-01-20 14:53:12.000"); treeInfo = conn.getTreeInfo(treeID); LOG_INFO_STR(treeInfo);