From 731ef6bfe72c4070618ccceb5a7365597cd54afb Mon Sep 17 00:00:00 2001
From: Marcel Loose <loose@astron.nl>
Date: Wed, 14 Feb 2007 15:59:48 +0000
Subject: [PATCH] BugId: 991

* Added operation() method to BBSSingleStep and its child classes to query the
  BBSSingleStep for the type of operation it will perform.

* Do not use PSQL arrays anymore. They caused "major" headaches when quoting
  array of strings. An array of strings is now stored as a normal string
  delimited by '[' and ']', just as in a ParameterSet.
---
 CEP/BB/BBSControl/src/BBSCorrectStep.cc       |  6 +++++
 CEP/BB/BBSControl/src/BBSPredictStep.cc       |  7 +++++-
 CEP/BB/BBSControl/src/BBSRefitStep.cc         |  7 +++++-
 CEP/BB/BBSControl/src/BBSShiftStep.cc         |  7 +++++-
 CEP/BB/BBSControl/src/BBSSolveStep.cc         | 23 ++++++++++++-------
 .../BBSControl/src/BBSSolverProcessControl.cc |  2 +-
 CEP/BB/BBSControl/src/BBSStep.cc              |  6 +----
 CEP/BB/BBSControl/src/BBSStrategy.cc          | 10 ++------
 CEP/BB/BBSControl/src/BBSSubtractStep.cc      |  7 +++++-
 CEP/BB/BBSControl/src/SolverProcessControl.cc |  2 +-
 10 files changed, 50 insertions(+), 27 deletions(-)

diff --git a/CEP/BB/BBSControl/src/BBSCorrectStep.cc b/CEP/BB/BBSControl/src/BBSCorrectStep.cc
index cf119b1d600..636649fb153 100644
--- a/CEP/BB/BBSControl/src/BBSCorrectStep.cc
+++ b/CEP/BB/BBSControl/src/BBSCorrectStep.cc
@@ -37,6 +37,12 @@ namespace LOFAR
     }
 
 
+    const string& BBSCorrectStep::operation() const 
+    {
+      static string theOperation("Correct");
+      return theOperation;
+    }
+  
     const string& BBSCorrectStep::classType() const 
     {
       static string theType("BBSCorrectStep");
diff --git a/CEP/BB/BBSControl/src/BBSPredictStep.cc b/CEP/BB/BBSControl/src/BBSPredictStep.cc
index 4fc5f5f3222..85c3c46a59c 100644
--- a/CEP/BB/BBSControl/src/BBSPredictStep.cc
+++ b/CEP/BB/BBSControl/src/BBSPredictStep.cc
@@ -36,7 +36,12 @@ namespace LOFAR
 	registerClass<BBSPredictStep>("BBSPredictStep");
     }
 
-
+    const string& BBSPredictStep::operation() const 
+    {
+      static string theOperation("Predict");
+      return theOperation;
+    }
+  
     const string& BBSPredictStep::classType() const 
     {
       static string theType("BBSPredictStep");
diff --git a/CEP/BB/BBSControl/src/BBSRefitStep.cc b/CEP/BB/BBSControl/src/BBSRefitStep.cc
index 208cbe65a31..87ab70cdde2 100644
--- a/CEP/BB/BBSControl/src/BBSRefitStep.cc
+++ b/CEP/BB/BBSControl/src/BBSRefitStep.cc
@@ -36,7 +36,12 @@ namespace LOFAR
 	registerClass<BBSRefitStep>("BBSRefitStep");
     }
 
-
+    const string& BBSRefitStep::operation() const 
+    {
+      static string theOperation("Refit");
+      return theOperation;
+    }
+  
     const string& BBSRefitStep::classType() const 
     {
       static string theType("BBSRefitStep");
diff --git a/CEP/BB/BBSControl/src/BBSShiftStep.cc b/CEP/BB/BBSControl/src/BBSShiftStep.cc
index 6404b5401c9..464d23b6809 100644
--- a/CEP/BB/BBSControl/src/BBSShiftStep.cc
+++ b/CEP/BB/BBSControl/src/BBSShiftStep.cc
@@ -36,7 +36,12 @@ namespace LOFAR
 	registerClass<BBSShiftStep>("BBSShiftStep");
     }
 
-
+    const string& BBSShiftStep::operation() const 
+    {
+      static string theOperation("Shift");
+      return theOperation;
+    }
+  
     const string& BBSShiftStep::classType() const 
     {
       static string theType("BBSShiftStep");
diff --git a/CEP/BB/BBSControl/src/BBSSolveStep.cc b/CEP/BB/BBSControl/src/BBSSolveStep.cc
index 3e594117efb..5a544b0aae3 100644
--- a/CEP/BB/BBSControl/src/BBSSolveStep.cc
+++ b/CEP/BB/BBSControl/src/BBSSolveStep.cc
@@ -105,6 +105,21 @@ namespace LOFAR
     }
 
 
+    const string& BBSSolveStep::operation() const 
+    {
+      static string theOperation("Solve");
+      return theOperation;
+    }
+  
+
+    const string& BBSSolveStep::classType() const
+    {
+      LOG_TRACE_LIFETIME(TRACE_LEVEL_RTTI, "");
+      static const string theType("BBSSolveStep");
+      return theType;
+    }
+
+
     //##--------   P r i v a t e   m e t h o d s   --------##//
 
     void BBSSolveStep::write(BlobOStream& bos) const
@@ -133,14 +148,6 @@ namespace LOFAR
     }
 
 
-    const string& BBSSolveStep::classType() const
-    {
-      LOG_TRACE_LIFETIME(TRACE_LEVEL_RTTI, "");
-      static const string theType("BBSSolveStep");
-      return theType;
-    }
-
-
   } // namespace BBS
 
 } // namespace LOFAR
diff --git a/CEP/BB/BBSControl/src/BBSSolverProcessControl.cc b/CEP/BB/BBSControl/src/BBSSolverProcessControl.cc
index ff155c7d810..df63b2f2630 100644
--- a/CEP/BB/BBSControl/src/BBSSolverProcessControl.cc
+++ b/CEP/BB/BBSControl/src/BBSSolverProcessControl.cc
@@ -259,7 +259,7 @@ namespace BBS
         Domain &domain = itsRegisteredDomains[request->getDomainIndex()];
         domain.index = request->getDomainIndex();
         domain.unknowns = request->getUnknowns();
-        domain.solver.set(domain.unknowns.size());
+        domain.solver.set(casa::uInt(domain.unknowns.size()));
         domain.epsilon = request->getEpsilon();
         // Set new value solution test
         //domain.solver.setEpsValue(request->getEpsilon());
diff --git a/CEP/BB/BBSControl/src/BBSStep.cc b/CEP/BB/BBSControl/src/BBSStep.cc
index 0544bdb586d..abf1d361aab 100644
--- a/CEP/BB/BBSControl/src/BBSStep.cc
+++ b/CEP/BB/BBSControl/src/BBSStep.cc
@@ -190,11 +190,7 @@ namespace LOFAR
       // If defined, get the correlation selection (ALL, AUTO, or CROSS), and
       // type (e.g., ["XX", "XY", "YX", "YY"]
       try {
-	string sel = ps.getString("Correlation.Selection");
-	if (sel == "ALL" || sel == "AUTO" || sel == "CROSS") 
-	  itsCorrelation.selection = sel;
-	else THROW(BBSControlException, 
-		   "Invalid correlation selection " << sel);
+	itsCorrelation.selection = ps.getString("Correlation.Selection");
 	itsCorrelation.type = ps.getStringVector("Correlation.Type");
       } catch (APSException&) {}
 
diff --git a/CEP/BB/BBSControl/src/BBSStrategy.cc b/CEP/BB/BBSControl/src/BBSStrategy.cc
index d7f3b0b377d..89ae2bac442 100644
--- a/CEP/BB/BBSControl/src/BBSStrategy.cc
+++ b/CEP/BB/BBSControl/src/BBSStrategy.cc
@@ -86,8 +86,7 @@ namespace LOFAR
       itsInputData = ps.getString("InputData");
 
       // Get the region of interest (optional)
-      try
-      {
+      try {
           itsRegionOfInterest = ps.getDoubleVector("RegionOfInterest");
       } catch (APSException&) {}
       
@@ -96,12 +95,7 @@ namespace LOFAR
       itsDomainSize.timeInterval = ps.getDouble("WorkDomainSize.Time");
 
       // Get the correlation product selection (ALL, AUTO, or CROSS)
-      string sel = ps.getString("Correlation.Selection");
-      if (sel == "ALL" || sel == "AUTO" || sel == "CROSS")
-	itsCorrelation.selection = sel;
-      else
-      	THROW(BBSControlException, 
-		 "Invalid correlation selection " << sel);
+      itsCorrelation.selection = ps.getString("Correlation.Selection");
       itsCorrelation.type = ps.getStringVector("Correlation.Type");
 
       // Get the integration intervals in frequency (Hz) and time (s).
diff --git a/CEP/BB/BBSControl/src/BBSSubtractStep.cc b/CEP/BB/BBSControl/src/BBSSubtractStep.cc
index 111fc8219a3..687423a75de 100644
--- a/CEP/BB/BBSControl/src/BBSSubtractStep.cc
+++ b/CEP/BB/BBSControl/src/BBSSubtractStep.cc
@@ -36,7 +36,12 @@ namespace LOFAR
 	registerClass<BBSSubtractStep>("BBSSubtractStep");
     }
 
-
+    const string& BBSSubtractStep::operation() const 
+    {
+      static string theOperation("Subtract");
+      return theOperation;
+    }
+  
     const string& BBSSubtractStep::classType() const 
     {
       static string theType("BBSSubtractStep");
diff --git a/CEP/BB/BBSControl/src/SolverProcessControl.cc b/CEP/BB/BBSControl/src/SolverProcessControl.cc
index ff155c7d810..df63b2f2630 100644
--- a/CEP/BB/BBSControl/src/SolverProcessControl.cc
+++ b/CEP/BB/BBSControl/src/SolverProcessControl.cc
@@ -259,7 +259,7 @@ namespace BBS
         Domain &domain = itsRegisteredDomains[request->getDomainIndex()];
         domain.index = request->getDomainIndex();
         domain.unknowns = request->getUnknowns();
-        domain.solver.set(domain.unknowns.size());
+        domain.solver.set(casa::uInt(domain.unknowns.size()));
         domain.epsilon = request->getEpsilon();
         // Set new value solution test
         //domain.solver.setEpsValue(request->getEpsilon());
-- 
GitLab