From b56012aace949f327ba64d0e3f16d124ff58aa76 Mon Sep 17 00:00:00 2001 From: pompert <sdos@astron.nl> Date: Mon, 12 Jun 2006 14:30:08 +0000 Subject: [PATCH] BugID: 701 Additions: -Added updateData() code for adding lines. todo: remove line and update line -Added generic methods to fetch parmdb values and convert them to the plotter LinkedList model Mods: -Modified retrieveData() to call the new generic helper methods --- .../jparmfacade/PlotDataAccessParmDBImpl.java | 332 +++++++++--------- .../plotter/PlotDataAccessParmDBImpl.java | 332 +++++++++--------- 2 files changed, 350 insertions(+), 314 deletions(-) diff --git a/JAVA/CEP/jParmFacade/src/nl/astron/lofar/java/cep/jparmfacade/PlotDataAccessParmDBImpl.java b/JAVA/CEP/jParmFacade/src/nl/astron/lofar/java/cep/jparmfacade/PlotDataAccessParmDBImpl.java index 2632c0613c4..e97e5f84b34 100644 --- a/JAVA/CEP/jParmFacade/src/nl/astron/lofar/java/cep/jparmfacade/PlotDataAccessParmDBImpl.java +++ b/JAVA/CEP/jParmFacade/src/nl/astron/lofar/java/cep/jparmfacade/PlotDataAccessParmDBImpl.java @@ -23,7 +23,6 @@ package nl.astron.lofar.java.cep.jparmfacade; -import java.rmi.Naming; import java.util.Calendar; import java.util.Date; import java.util.HashMap; @@ -107,23 +106,7 @@ public class PlotDataAccessParmDBImpl implements IPlotDataAccess{ if(parmDB != null){ - Vector names; - - try{ - - names = parmDB.getNames(constraintsArray[0]); - - } catch (Exception ex) { - - //TODO LOG! - - PlotterDataAccessException exx = new PlotterDataAccessException("An invalid getNames() call was made to the ParmDB interface. Please check that all variables seem OK. Root cause: "+ex.getMessage()); - - exx.initCause(ex); - - throw exx; - - } + Vector names = getNames(constraintsArray[0]); if(names != null && names.size()>=1 && constraintsArray.length == this.requiredDataConstraints){ @@ -165,141 +148,7 @@ public class PlotDataAccessParmDBImpl implements IPlotDataAccess{ returnMap.put(PlotConstants.DATASET_YAXISTYPE,"SPATIAL"); - - - //Every parameter - - for(int n = 0; n < names.size();n++){ - - Vector paramValues; - - try{ - - paramValues = parmDB.getRange(names.get(n).toString()); - - } catch (Exception ex) { - - //TODO LOG! - - PlotterDataAccessException exx = new PlotterDataAccessException("An invalid getRange() call was made to the ParmDB interface. Please check that all variables seem OK. Root cause: "+ex.getMessage()); - - exx.initCause(ex); - - throw exx; - - } - - double startx = Double.parseDouble(constraintsArray[1]); - - double endx = Double.parseDouble(constraintsArray[2]); - - double starty = Double.parseDouble(constraintsArray[4]); - - double endy = Double.parseDouble(constraintsArray[5]); - - int numx = Integer.parseInt(constraintsArray[3]); - - int numy = Integer.parseInt(constraintsArray[6]); - - - - if(paramValues != null && paramValues.size()==4){ - - //startx = Double.parseDouble(paramValues.get(0).toString()); - - //endx =Double.parseDouble(paramValues.get(1).toString()); - - //starty = Double.parseDouble(paramValues.get(2).toString()); - - //endy = Double.parseDouble(paramValues.get(3).toString()); - - //System.out.println("Parameter Range : startx:"+startx+" endx:" +endx+ " starty: "+starty+" endy:"+endy ); - - } - - - /* - returnMap.put(PlotConstants.DATASET_XAXIS_RANGE_START,Double.toString(startx)); - - returnMap.put(PlotConstants.DATASET_XAXIS_RANGE_END,Double.toString(endx)); - - returnMap.put(PlotConstants.DATASET_YAXIS_RANGE_START,Double.toString(starty)); - - returnMap.put(PlotConstants.DATASET_YAXIS_RANGE_END,Double.toString(endy)); - */ - - - HashMap<String, Vector<Double>> values = new HashMap<String,Vector<Double>>(); - - try { - - values = parmDB.getValues((String) names.get(n), startx, endx, numx, starty, endy, numy); - - } catch (Exception ex) { - - //TODO LOG! - - PlotterDataAccessException exx = new PlotterDataAccessException("An invalid getValues() call was made to the ParmDB interface. Please check that all variables seem OK. Root cause: "+ex.getMessage()); - - exx.initCause(ex); - - throw exx; - - } - - //Every parameter value - - Iterator anIterator = values.keySet().iterator(); - - while(anIterator.hasNext()){ - - HashMap<String,Object> aValueMap = new HashMap<String,Object>(); - - - - String aValue = (String)anIterator.next(); - - //System.out.println("Parameter Value Found: "+aValue); - - - - aValueMap.put(PlotConstants.DATASET_VALUELABEL,aValue); - - - - Vector<Double> valueDoubles = (Vector<Double>)values.get(aValue); - - //System.out.println("Parameter doubles inside " +aValue+": "+valueDoubles.size()+"x"); - - double[] xArray = new double[valueDoubles.size()]; - - double[] yArray = new double[valueDoubles.size()]; - - - - //Every parameter value double inside the vector - - for(int i = 0;(i<valueDoubles.size());i++){ - - xArray[i] = startx + (endx-startx) / valueDoubles.size()*(i+0.5); - - yArray[i] = valueDoubles.get(i); - - } - - aValueMap.put(PlotConstants.DATASET_XVALUES,xArray); - - aValueMap.put(PlotConstants.DATASET_YVALUES,yArray); - - returnValues.add(aValueMap); - - } - - - - } - - returnMap.put(PlotConstants.DATASET_VALUES,returnValues); + returnMap.put(PlotConstants.DATASET_VALUES,getParmValues(names,constraintsArray)); @@ -354,10 +203,41 @@ public class PlotDataAccessParmDBImpl implements IPlotDataAccess{ this.initiateConnectionToParmDB(constraints); } + //try{ + + LinkedList<HashMap> currentValuesInPlot = (LinkedList<HashMap>)currentData.get(PlotConstants.DATASET_VALUES); + + HashMap<String,Object> operatorsOnDataset = (HashMap<String,Object>)constraints; + + if(operatorsOnDataset.containsKey(PlotConstants.DATASET_OPERATOR_ADD)){ + HashMap<String,Object> addDataSet = (HashMap<String,Object>)operatorsOnDataset.get(PlotConstants.DATASET_OPERATOR_ADD); + String[] constraintsArray = (String[])addDataSet.get("PARMDBCONSTRAINTS"); + Vector names = getNames(constraintsArray[0]); + + if(names != null && names.size()>=1 && constraintsArray.length == this.requiredDataConstraints){ + //Every parameter + currentValuesInPlot.addAll(getParmValues(names,constraintsArray)); + } + } + if(operatorsOnDataset.containsKey(PlotConstants.DATASET_OPERATOR_MODIFY)){ + + String[] constraintsArray = (String[])operatorsOnDataset.get(PlotConstants.DATASET_OPERATOR_MODIFY); + //TODO: IMPLEMENT + + } + if(operatorsOnDataset.containsKey(PlotConstants.DATASET_OPERATOR_DELETE)){ + + String[] toBeDeletedValues = (String[])operatorsOnDataset.get(PlotConstants.DATASET_OPERATOR_DELETE); + //TODO: IMPLEMENT + + } + //}catch(Exception e){ + // PlotterDataAccessException ex = new PlotterDataAccessException("An error occurred while updating dataset "+currentData.hashCode()); + // ex.initCause(e); + // throw ex; + //} - throw new PlotterDataAccessException("Modifying existing datasets is not supported in "+this.getClass().getName().toString()); - - //Todo: implement! + return currentData; } @@ -396,4 +276,142 @@ public class PlotDataAccessParmDBImpl implements IPlotDataAccess{ } } -} \ No newline at end of file + + private Vector getNames(String namefilter) throws PlotterDataAccessException{ + Vector names; + + try{ + + names = parmDB.getNames(namefilter); + + } catch (Exception ex) { + + //TODO LOG! + + PlotterDataAccessException exx = new PlotterDataAccessException("An invalid getNames() call was made to the ParmDB interface. Please check that all variables seem OK. Root cause: "+ex.getMessage()); + + exx.initCause(ex); + + throw exx; + + } + return names; + } + + + private LinkedList<HashMap> getParmValues(Vector names, String[] constraintsArray) throws PlotterDataAccessException{ + LinkedList<HashMap> returnList = new LinkedList<HashMap>(); + + for(int n = 0; n < names.size();n++){ + + Vector paramValues; + + try{ + + paramValues = parmDB.getRange(names.get(n).toString()); + + + } catch (Exception ex) { + + //TODO LOG! + + PlotterDataAccessException exx = new PlotterDataAccessException("An invalid getRange() call was made to the ParmDB interface. Please check that all variables seem OK. Root cause: "+ex.getMessage()); + + exx.initCause(ex); + + throw exx; + + } + + double startx = Double.parseDouble(constraintsArray[1]); + + double endx = Double.parseDouble(constraintsArray[2]); + + double starty = Double.parseDouble(constraintsArray[4]); + + double endy = Double.parseDouble(constraintsArray[5]); + + int numx = Integer.parseInt(constraintsArray[3]); + + int numy = Integer.parseInt(constraintsArray[6]); + + + /* + returnMap.put(PlotConstants.DATASET_XAXIS_RANGE_START,Double.toString(startx)); + + returnMap.put(PlotConstants.DATASET_XAXIS_RANGE_END,Double.toString(endx)); + + returnMap.put(PlotConstants.DATASET_YAXIS_RANGE_START,Double.toString(starty)); + + returnMap.put(PlotConstants.DATASET_YAXIS_RANGE_END,Double.toString(endy)); + */ + + + HashMap<String, Vector<Double>> values = new HashMap<String,Vector<Double>>(); + + try { + + values = parmDB.getValues((names.get(n)).toString(), startx, endx, numx, starty, endy, numy); + + } catch (Exception ex) { + + //TODO LOG! + + PlotterDataAccessException exx = new PlotterDataAccessException("An invalid getValues() call was made to the ParmDB interface. Please check that all variables seem OK. Root cause: "+ex.getMessage()); + + exx.initCause(ex); + + throw exx; + + } + + //Every parameter value + + Iterator anIterator = values.keySet().iterator(); + + while(anIterator.hasNext()){ + + HashMap<String,Object> aValueMap = new HashMap<String,Object>(); + + String aValue = (String)anIterator.next(); + + //System.out.println("Parameter Value Found: "+aValue); + + + aValueMap.put(PlotConstants.DATASET_VALUELABEL,aValue); + + + + Vector<Double> valueDoubles = (Vector<Double>)values.get(aValue); + + //System.out.println("Parameter doubles inside " +aValue+": "+valueDoubles.size()+"x"); + + double[] xArray = new double[valueDoubles.size()]; + + double[] yArray = new double[valueDoubles.size()]; + + + + //Every parameter value double inside the vector + + for(int i = 0;(i<valueDoubles.size());i++){ + + xArray[i] = startx + (endx-startx) / valueDoubles.size()*(i+0.5); + + yArray[i] = valueDoubles.get(i); + + } + + aValueMap.put(PlotConstants.DATASET_XVALUES,xArray); + + aValueMap.put(PlotConstants.DATASET_YVALUES,yArray); + + returnList.add(aValueMap); + + } + + } + return returnList; + } + +} diff --git a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/util/plotter/PlotDataAccessParmDBImpl.java b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/util/plotter/PlotDataAccessParmDBImpl.java index 2632c0613c4..e97e5f84b34 100644 --- a/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/util/plotter/PlotDataAccessParmDBImpl.java +++ b/SAS/OTB/OTB/src/nl/astron/lofar/sas/otb/util/plotter/PlotDataAccessParmDBImpl.java @@ -23,7 +23,6 @@ package nl.astron.lofar.java.cep.jparmfacade; -import java.rmi.Naming; import java.util.Calendar; import java.util.Date; import java.util.HashMap; @@ -107,23 +106,7 @@ public class PlotDataAccessParmDBImpl implements IPlotDataAccess{ if(parmDB != null){ - Vector names; - - try{ - - names = parmDB.getNames(constraintsArray[0]); - - } catch (Exception ex) { - - //TODO LOG! - - PlotterDataAccessException exx = new PlotterDataAccessException("An invalid getNames() call was made to the ParmDB interface. Please check that all variables seem OK. Root cause: "+ex.getMessage()); - - exx.initCause(ex); - - throw exx; - - } + Vector names = getNames(constraintsArray[0]); if(names != null && names.size()>=1 && constraintsArray.length == this.requiredDataConstraints){ @@ -165,141 +148,7 @@ public class PlotDataAccessParmDBImpl implements IPlotDataAccess{ returnMap.put(PlotConstants.DATASET_YAXISTYPE,"SPATIAL"); - - - //Every parameter - - for(int n = 0; n < names.size();n++){ - - Vector paramValues; - - try{ - - paramValues = parmDB.getRange(names.get(n).toString()); - - } catch (Exception ex) { - - //TODO LOG! - - PlotterDataAccessException exx = new PlotterDataAccessException("An invalid getRange() call was made to the ParmDB interface. Please check that all variables seem OK. Root cause: "+ex.getMessage()); - - exx.initCause(ex); - - throw exx; - - } - - double startx = Double.parseDouble(constraintsArray[1]); - - double endx = Double.parseDouble(constraintsArray[2]); - - double starty = Double.parseDouble(constraintsArray[4]); - - double endy = Double.parseDouble(constraintsArray[5]); - - int numx = Integer.parseInt(constraintsArray[3]); - - int numy = Integer.parseInt(constraintsArray[6]); - - - - if(paramValues != null && paramValues.size()==4){ - - //startx = Double.parseDouble(paramValues.get(0).toString()); - - //endx =Double.parseDouble(paramValues.get(1).toString()); - - //starty = Double.parseDouble(paramValues.get(2).toString()); - - //endy = Double.parseDouble(paramValues.get(3).toString()); - - //System.out.println("Parameter Range : startx:"+startx+" endx:" +endx+ " starty: "+starty+" endy:"+endy ); - - } - - - /* - returnMap.put(PlotConstants.DATASET_XAXIS_RANGE_START,Double.toString(startx)); - - returnMap.put(PlotConstants.DATASET_XAXIS_RANGE_END,Double.toString(endx)); - - returnMap.put(PlotConstants.DATASET_YAXIS_RANGE_START,Double.toString(starty)); - - returnMap.put(PlotConstants.DATASET_YAXIS_RANGE_END,Double.toString(endy)); - */ - - - HashMap<String, Vector<Double>> values = new HashMap<String,Vector<Double>>(); - - try { - - values = parmDB.getValues((String) names.get(n), startx, endx, numx, starty, endy, numy); - - } catch (Exception ex) { - - //TODO LOG! - - PlotterDataAccessException exx = new PlotterDataAccessException("An invalid getValues() call was made to the ParmDB interface. Please check that all variables seem OK. Root cause: "+ex.getMessage()); - - exx.initCause(ex); - - throw exx; - - } - - //Every parameter value - - Iterator anIterator = values.keySet().iterator(); - - while(anIterator.hasNext()){ - - HashMap<String,Object> aValueMap = new HashMap<String,Object>(); - - - - String aValue = (String)anIterator.next(); - - //System.out.println("Parameter Value Found: "+aValue); - - - - aValueMap.put(PlotConstants.DATASET_VALUELABEL,aValue); - - - - Vector<Double> valueDoubles = (Vector<Double>)values.get(aValue); - - //System.out.println("Parameter doubles inside " +aValue+": "+valueDoubles.size()+"x"); - - double[] xArray = new double[valueDoubles.size()]; - - double[] yArray = new double[valueDoubles.size()]; - - - - //Every parameter value double inside the vector - - for(int i = 0;(i<valueDoubles.size());i++){ - - xArray[i] = startx + (endx-startx) / valueDoubles.size()*(i+0.5); - - yArray[i] = valueDoubles.get(i); - - } - - aValueMap.put(PlotConstants.DATASET_XVALUES,xArray); - - aValueMap.put(PlotConstants.DATASET_YVALUES,yArray); - - returnValues.add(aValueMap); - - } - - - - } - - returnMap.put(PlotConstants.DATASET_VALUES,returnValues); + returnMap.put(PlotConstants.DATASET_VALUES,getParmValues(names,constraintsArray)); @@ -354,10 +203,41 @@ public class PlotDataAccessParmDBImpl implements IPlotDataAccess{ this.initiateConnectionToParmDB(constraints); } + //try{ + + LinkedList<HashMap> currentValuesInPlot = (LinkedList<HashMap>)currentData.get(PlotConstants.DATASET_VALUES); + + HashMap<String,Object> operatorsOnDataset = (HashMap<String,Object>)constraints; + + if(operatorsOnDataset.containsKey(PlotConstants.DATASET_OPERATOR_ADD)){ + HashMap<String,Object> addDataSet = (HashMap<String,Object>)operatorsOnDataset.get(PlotConstants.DATASET_OPERATOR_ADD); + String[] constraintsArray = (String[])addDataSet.get("PARMDBCONSTRAINTS"); + Vector names = getNames(constraintsArray[0]); + + if(names != null && names.size()>=1 && constraintsArray.length == this.requiredDataConstraints){ + //Every parameter + currentValuesInPlot.addAll(getParmValues(names,constraintsArray)); + } + } + if(operatorsOnDataset.containsKey(PlotConstants.DATASET_OPERATOR_MODIFY)){ + + String[] constraintsArray = (String[])operatorsOnDataset.get(PlotConstants.DATASET_OPERATOR_MODIFY); + //TODO: IMPLEMENT + + } + if(operatorsOnDataset.containsKey(PlotConstants.DATASET_OPERATOR_DELETE)){ + + String[] toBeDeletedValues = (String[])operatorsOnDataset.get(PlotConstants.DATASET_OPERATOR_DELETE); + //TODO: IMPLEMENT + + } + //}catch(Exception e){ + // PlotterDataAccessException ex = new PlotterDataAccessException("An error occurred while updating dataset "+currentData.hashCode()); + // ex.initCause(e); + // throw ex; + //} - throw new PlotterDataAccessException("Modifying existing datasets is not supported in "+this.getClass().getName().toString()); - - //Todo: implement! + return currentData; } @@ -396,4 +276,142 @@ public class PlotDataAccessParmDBImpl implements IPlotDataAccess{ } } -} \ No newline at end of file + + private Vector getNames(String namefilter) throws PlotterDataAccessException{ + Vector names; + + try{ + + names = parmDB.getNames(namefilter); + + } catch (Exception ex) { + + //TODO LOG! + + PlotterDataAccessException exx = new PlotterDataAccessException("An invalid getNames() call was made to the ParmDB interface. Please check that all variables seem OK. Root cause: "+ex.getMessage()); + + exx.initCause(ex); + + throw exx; + + } + return names; + } + + + private LinkedList<HashMap> getParmValues(Vector names, String[] constraintsArray) throws PlotterDataAccessException{ + LinkedList<HashMap> returnList = new LinkedList<HashMap>(); + + for(int n = 0; n < names.size();n++){ + + Vector paramValues; + + try{ + + paramValues = parmDB.getRange(names.get(n).toString()); + + + } catch (Exception ex) { + + //TODO LOG! + + PlotterDataAccessException exx = new PlotterDataAccessException("An invalid getRange() call was made to the ParmDB interface. Please check that all variables seem OK. Root cause: "+ex.getMessage()); + + exx.initCause(ex); + + throw exx; + + } + + double startx = Double.parseDouble(constraintsArray[1]); + + double endx = Double.parseDouble(constraintsArray[2]); + + double starty = Double.parseDouble(constraintsArray[4]); + + double endy = Double.parseDouble(constraintsArray[5]); + + int numx = Integer.parseInt(constraintsArray[3]); + + int numy = Integer.parseInt(constraintsArray[6]); + + + /* + returnMap.put(PlotConstants.DATASET_XAXIS_RANGE_START,Double.toString(startx)); + + returnMap.put(PlotConstants.DATASET_XAXIS_RANGE_END,Double.toString(endx)); + + returnMap.put(PlotConstants.DATASET_YAXIS_RANGE_START,Double.toString(starty)); + + returnMap.put(PlotConstants.DATASET_YAXIS_RANGE_END,Double.toString(endy)); + */ + + + HashMap<String, Vector<Double>> values = new HashMap<String,Vector<Double>>(); + + try { + + values = parmDB.getValues((names.get(n)).toString(), startx, endx, numx, starty, endy, numy); + + } catch (Exception ex) { + + //TODO LOG! + + PlotterDataAccessException exx = new PlotterDataAccessException("An invalid getValues() call was made to the ParmDB interface. Please check that all variables seem OK. Root cause: "+ex.getMessage()); + + exx.initCause(ex); + + throw exx; + + } + + //Every parameter value + + Iterator anIterator = values.keySet().iterator(); + + while(anIterator.hasNext()){ + + HashMap<String,Object> aValueMap = new HashMap<String,Object>(); + + String aValue = (String)anIterator.next(); + + //System.out.println("Parameter Value Found: "+aValue); + + + aValueMap.put(PlotConstants.DATASET_VALUELABEL,aValue); + + + + Vector<Double> valueDoubles = (Vector<Double>)values.get(aValue); + + //System.out.println("Parameter doubles inside " +aValue+": "+valueDoubles.size()+"x"); + + double[] xArray = new double[valueDoubles.size()]; + + double[] yArray = new double[valueDoubles.size()]; + + + + //Every parameter value double inside the vector + + for(int i = 0;(i<valueDoubles.size());i++){ + + xArray[i] = startx + (endx-startx) / valueDoubles.size()*(i+0.5); + + yArray[i] = valueDoubles.get(i); + + } + + aValueMap.put(PlotConstants.DATASET_XVALUES,xArray); + + aValueMap.put(PlotConstants.DATASET_YVALUES,yArray); + + returnList.add(aValueMap); + + } + + } + return returnList; + } + +} -- GitLab