Ejemplo n.º 1
0
  /**
   * Store the contents of a OBlockManager.
   *
   * @param o Object to store, of type BlockManager
   * @return Element containing the complete info
   */
  public Element store(Object o) {
    Element blocks = new Element("oblocks");
    blocks.setAttribute("class", "jmri.jmrit.logix.configurexml.OBlockManagerXml");
    OBlockManager manager = (OBlockManager) o;
    Iterator<String> iter = manager.getSystemNameList().iterator();
    while (iter.hasNext()) {
      String sname = iter.next();
      OBlock block = manager.getBySystemName(sname);
      String uname = block.getUserName();
      if (log.isDebugEnabled()) {
        log.debug("OBlock: sysName= " + sname + ", userName= "******"oblock");
      elem.setAttribute("systemName", sname);
      if (uname != null && uname.length() > 0) {
        elem.setAttribute("userName", uname); // doing this for compatibility during 2.9.* series
        elem.addContent(new Element("userName").addContent(uname));
      }
      String comment = block.getComment();
      if (comment != null) {
        Element c = new Element("comment");
        c.addContent(comment);
        elem.addContent(c);
      }
      elem.setAttribute("length", "" + block.getLengthMm());
      elem.setAttribute("units", block.isMetric() ? "true" : "false");
      elem.setAttribute("curve", "" + block.getCurvature());
      if (block.getNamedSensor() != null) {
        Element se = new Element("sensor");
        se.setAttribute("systemName", block.getNamedSensor().getName());
        elem.addContent(se);
      }
      if (block.getNamedErrorSensor() != null) {
        Element se = new Element("errorSensor");
        se.setAttribute("systemName", block.getNamedErrorSensor().getName());
        elem.addContent(se);
      }
      if (block.getReporter() != null) {
        Element se = new Element("reporter");
        se.setAttribute("systemName", block.getReporter().getSystemName());
        se.setAttribute("reportCurrent", block.isReportingCurrent() ? "true" : "false");
        elem.addContent(se);
      }
      elem.setAttribute("permissive", block.getPermissiveWorking() ? "true" : "false");
      elem.setAttribute("speedNotch", block.getBlockSpeed());

      List<Path> paths = block.getPaths();
      for (int j = 0; j < paths.size(); j++) {
        elem.addContent(storePath((OPath) paths.get(j)));
      }
      List<Portal> portals = block.getPortals();
      for (int i = 0; i < portals.size(); i++) {
        elem.addContent(storePortal(portals.get(i)));
      }
      // and put this element out
      blocks.addContent(elem);
    }

    return blocks;
  }
Ejemplo n.º 2
0
  @Override
  public void setValueAt(Object value, int row, int col) {
    if (log.isDebugEnabled()) {
      log.debug("setValueAt: row= " + row + ", col= " + col + ", value= " + value);
    }
    if (super.getRowCount() == row) {
      switch (col) {
        case SYSNAMECOL:
          OBlock block = _manager.createNewOBlock((String) value, tempRow[USERNAMECOL]);
          if (block == null) {
            block = _manager.getOBlock(tempRow[USERNAMECOL]);
            String name = (String) value + " / " + tempRow[USERNAMECOL];
            if (block != null) {
              name = block.getDisplayName();
            } else {
              block = _manager.getOBlock((String) value);
              if (block != null) {
                name = block.getDisplayName();
              }
            }
            JOptionPane.showMessageDialog(
                null,
                Bundle.getMessage("CreateDuplBlockErr", name),
                Bundle.getMessage("ErrorTitle"),
                JOptionPane.WARNING_MESSAGE);
            return;
          }
          if (tempRow[SENSORCOL] != null) {
            if (!sensorExists(tempRow[SENSORCOL])) {
              JOptionPane.showMessageDialog(
                  null,
                  Bundle.getMessage("NoSuchSensorErr", tempRow[SENSORCOL]),
                  Bundle.getMessage("ErrorTitle"),
                  JOptionPane.WARNING_MESSAGE);
            }
          }
          block.setComment(tempRow[COMMENTCOL]);
          float len = 0.0f;
          try {
            len = IntlUtilities.floatValue(tempRow[LENGTHCOL]);
          } catch (ParseException e) {
            JOptionPane.showMessageDialog(
                null,
                Bundle.getMessage("BadNumber", tempRow[LENGTHCOL]),
                Bundle.getMessage("ErrorTitle"),
                JOptionPane.WARNING_MESSAGE);
          }
          if (tempRow[UNITSCOL].equals(Bundle.getMessage("cm"))) {
            block.setLength(len * 10.0f);
            block.setMetricUnits(true);
          } else {
            block.setLength(len * 25.4f);
            block.setMetricUnits(false);
          }
          if (tempRow[CURVECOL].equals(noneText)) {
            block.setCurvature(Block.NONE);
          } else if (tempRow[CURVECOL].equals(gradualText)) {
            block.setCurvature(Block.GRADUAL);
          } else if (tempRow[CURVECOL].equals(tightText)) {
            block.setCurvature(Block.TIGHT);
          } else if (tempRow[CURVECOL].equals(severeText)) {
            block.setCurvature(Block.SEVERE);
          }
          block.setPermissiveWorking(
              tempRow[PERMISSIONCOL].equals(Bundle.getMessage("Permissive")));
          block.setBlockSpeedName(tempRow[SPEEDCOL]);

          if (tempRow[ERR_SENSORCOL] != null) {
            if (tempRow[ERR_SENSORCOL].trim().length() > 0) {
              if (!sensorExists(tempRow[ERR_SENSORCOL])) {
                JOptionPane.showMessageDialog(
                    null,
                    Bundle.getMessage("NoSuchSensorErr", tempRow[ERR_SENSORCOL]),
                    Bundle.getMessage("ErrorTitle"),
                    JOptionPane.WARNING_MESSAGE);
              }
            }
          }
          if (tempRow[REPORTERCOL] != null) {
            Reporter rep = null;
            try {
              rep = InstanceManager.reporterManagerInstance().getReporter(tempRow[REPORTERCOL]);
              if (rep != null) {
                block.setReporter(rep);
                block.setReportingCurrent(
                    tempRow[REPORT_CURRENTCOL].equals(Bundle.getMessage("Current")));
              }
            } catch (Exception ex) {
              log.error(
                  "No Reporter named \""
                      + tempRow[REPORTERCOL]
                      + "\" found. threw exception: "
                      + ex);
            }
            if (rep == null) {
              JOptionPane.showMessageDialog(
                  null,
                  Bundle.getMessage("NoSuchReporterErr", tempRow[REPORTERCOL]),
                  Bundle.getMessage("ErrorTitle"),
                  JOptionPane.WARNING_MESSAGE);
            }
            block.setReporter(rep);
          }
          initTempRow();
          fireTableDataChanged();
          return;
        case DELETE_COL: // clear
          initTempRow();
          fireTableRowsUpdated(row, row);
          return;
        case LENGTHCOL:
          try {
            _tempLen = IntlUtilities.floatValue(value.toString());
            if (tempRow[UNITSCOL].equals(Bundle.getMessage("cm"))) {
              _tempLen *= 10f;
            } else {
              _tempLen *= 25.4f;
            }
          } catch (ParseException e) {
            JOptionPane.showMessageDialog(
                null,
                Bundle.getMessage("BadNumber", tempRow[LENGTHCOL]),
                Bundle.getMessage("ErrorTitle"),
                JOptionPane.WARNING_MESSAGE);
          }
          return;
        case UNITSCOL:
          if ((((Boolean) value).booleanValue())) {
            tempRow[UNITSCOL] = Bundle.getMessage("cm");
          } else {
            tempRow[UNITSCOL] = Bundle.getMessage("in");
          }
          fireTableRowsUpdated(row, row);
          return;
        case REPORT_CURRENTCOL:
          if (((Boolean) value).booleanValue()) { // toggle
            tempRow[REPORT_CURRENTCOL] = Bundle.getMessage("Current");
          } else {
            tempRow[REPORT_CURRENTCOL] = Bundle.getMessage("Last");
          }
          return;
        case PERMISSIONCOL:
          if (((Boolean) value).booleanValue()) { // toggle
            tempRow[PERMISSIONCOL] = Bundle.getMessage("Permissive");
          } else {
            tempRow[PERMISSIONCOL] = Bundle.getMessage("Absolute");
          }
          return;
      }
      tempRow[col] = (String) value;
      return;
    }
    String name = sysNameList.get(row);
    OBlock block = _manager.getBySystemName(name);
    switch (col) {
      case USERNAMECOL:
        OBlock b = _manager.getOBlock((String) value);
        if (b != null) {
          JOptionPane.showMessageDialog(
              null,
              Bundle.getMessage("CreateDuplBlockErr", block.getDisplayName()),
              Bundle.getMessage("ErrorTitle"),
              JOptionPane.WARNING_MESSAGE);
          return;
        }
        block.setUserName((String) value);
        fireTableRowsUpdated(row, row);
        return;
      case COMMENTCOL:
        block.setComment((String) value);
        fireTableRowsUpdated(row, row);
        return;
      case STATECOL:
        /* currently STATECOL is not editable.  Maybe allow it and (or not) set the sensor?  Why?
        int state = 0;
        try {
            state = Integer.valueOf((String) value);
        } catch (NumberFormatException nfe) {
        }
        if (state < 0) {
            state = -state;
        }
        block.setState(state % 255);
        fireTableRowsUpdated(row, row); */
        return;
      case SENSORCOL:
        if (!block.setSensor((String) value)) {
          JOptionPane.showMessageDialog(
              null,
              Bundle.getMessage("NoSuchSensorErr", (String) value),
              Bundle.getMessage("ErrorTitle"),
              JOptionPane.WARNING_MESSAGE);
        }
        fireTableRowsUpdated(row, row);
        return;
      case LENGTHCOL:
        try {
          float len = IntlUtilities.floatValue(value.toString());
          if (block.isMetric()) {
            block.setLength(len * 10.0f);
          } else {
            block.setLength(len * 25.4f);
          }
          fireTableRowsUpdated(row, row);
        } catch (ParseException e) {
          JOptionPane.showMessageDialog(
              null,
              Bundle.getMessage("BadNumber", value),
              Bundle.getMessage("ErrorTitle"),
              JOptionPane.WARNING_MESSAGE);
        }
        return;
      case UNITSCOL:
        block.setMetricUnits(((Boolean) value).booleanValue());
        fireTableRowsUpdated(row, row);
        return;
      case CURVECOL:
        String cName = (String) value;
        if (cName.equals(noneText)) {
          block.setCurvature(Block.NONE);
        } else if (cName.equals(gradualText)) {
          block.setCurvature(Block.GRADUAL);
        } else if (cName.equals(tightText)) {
          block.setCurvature(Block.TIGHT);
        } else if (cName.equals(severeText)) {
          block.setCurvature(Block.SEVERE);
        }
        fireTableRowsUpdated(row, row);
        return;
      case ERR_SENSORCOL:
        boolean err = false;
        try {
          if (((String) value).trim().length() == 0) {
            block.setErrorSensor(null);
            err = true;
          } else {
            err = block.setErrorSensor((String) value);
            fireTableRowsUpdated(row, row);
          }
        } catch (Exception ex) {
          log.error("getSensor(" + (String) value + ") threw exception: " + ex);
        }
        if (err) {
          JOptionPane.showMessageDialog(
              null,
              Bundle.getMessage("NoSuchSensorErr", (String) value),
              Bundle.getMessage("ErrorTitle"),
              JOptionPane.WARNING_MESSAGE);
        }
        fireTableRowsUpdated(row, row);
        return;
      case REPORTERCOL:
        Reporter rep = null;
        try {
          rep = InstanceManager.reporterManagerInstance().getReporter((String) value);
          if (rep != null) {
            block.setReporter(rep);
            fireTableRowsUpdated(row, row);
          }
        } catch (Exception ex) {
          log.error("No Reporter named \"" + (String) value + "\" found. threw exception: " + ex);
        }
        if (rep == null) {
          JOptionPane.showMessageDialog(
              null,
              Bundle.getMessage("NoSuchReporterErr", tempRow[REPORTERCOL]),
              Bundle.getMessage("ErrorTitle"),
              JOptionPane.WARNING_MESSAGE);
        }
        block.setReporter(rep);
        fireTableRowsUpdated(row, row);
        return;
      case REPORT_CURRENTCOL:
        if (block.getReporter() != null) {
          block.setReportingCurrent(((Boolean) value).booleanValue());
          fireTableRowsUpdated(row, row);
        }
        return;
      case PERMISSIONCOL:
        block.setPermissiveWorking(((Boolean) value).booleanValue());
        fireTableRowsUpdated(row, row);
        return;
      case SPEEDCOL:
        block.setBlockSpeedName((String) value);
        fireTableRowsUpdated(row, row);
        return;
      case EDIT_COL:
        _parent.openBlockPathFrame(block.getSystemName());
        return;
      case DELETE_COL:
        deleteBean(block);
        block = null;
        return;
    }
    super.setValueAt(value, row, col);
  }
Ejemplo n.º 3
0
 @Override
 public Object getValueAt(int row, int col) {
   if (row > sysNameList.size()) {
     return "";
   }
   OBlock b = null;
   if (row < sysNameList.size()) {
     String name = sysNameList.get(row);
     b = _manager.getBySystemName(name);
   }
   switch (col) {
     case SYSNAMECOL:
       if (b != null) {
         return b.getSystemName();
       }
       return tempRow[col];
     case USERNAMECOL:
       if (b != null) {
         return b.getUserName();
       }
       return tempRow[col];
     case COMMENTCOL:
       if (b != null) {
         return b.getComment();
       }
       return tempRow[col];
     case STATECOL:
       if (b != null) {
         int state = b.getState();
         int num = Integer.numberOfLeadingZeros(state) - 24;
         if (num >= 0) {
           return ZEROS.substring(0, num) + Integer.toBinaryString(state);
         }
       }
       return ZEROS;
     case SENSORCOL:
       if (b != null) {
         Sensor s = b.getSensor();
         if (s == null) {
           return "";
         }
         return s.getDisplayName();
       }
       return tempRow[col];
     case LENGTHCOL:
       if (b != null) {
         if (b.isMetric()) {
           return (twoDigit.format(b.getLengthCm()));
         }
         return (twoDigit.format(b.getLengthIn()));
       }
       if (tempRow[UNITSCOL].equals(Bundle.getMessage("cm"))) {
         return (twoDigit.format(_tempLen / 10));
       }
       return (twoDigit.format(_tempLen / 25.4f));
     case UNITSCOL:
       if (b != null) {
         if (log.isDebugEnabled()) {
           log.debug(
               "getValueAt: row= "
                   + row
                   + ", col= "
                   + col
                   + ", "
                   + b.getDisplayName()
                   + " isMetric= "
                   + b.isMetric());
         }
         return b.isMetric();
       }
       if (log.isDebugEnabled()) {
         log.debug(
             "getValueAt: row= "
                 + row
                 + ", col= "
                 + col
                 + ", is cm= "
                 + tempRow[UNITSCOL].equals(Bundle.getMessage("cm")));
       }
       return Boolean.valueOf(tempRow[UNITSCOL].equals(Bundle.getMessage("cm")));
     case CURVECOL:
       if (b != null) {
         String c = "";
         if (b.getCurvature() == Block.NONE) {
           c = noneText;
         } else if (b.getCurvature() == Block.GRADUAL) {
           c = gradualText;
         } else if (b.getCurvature() == Block.TIGHT) {
           c = tightText;
         } else if (b.getCurvature() == Block.SEVERE) {
           c = severeText;
         }
         return c;
       }
       return tempRow[col];
     case ERR_SENSORCOL:
       if (b != null) {
         Sensor s = b.getErrorSensor();
         if (s == null) {
           return "";
         }
         return s.getDisplayName();
       }
       return tempRow[col];
     case REPORTERCOL:
       if (b != null) {
         Reporter r = b.getReporter();
         if (r == null) {
           return "";
         }
         return r.getDisplayName();
       }
       return tempRow[col];
     case REPORT_CURRENTCOL:
       if (b != null) {
         if (b.getReporter() != null) {
           return b.isReportingCurrent();
         }
         return "";
       }
       return Boolean.valueOf(tempRow[REPORT_CURRENTCOL].equals(Bundle.getMessage("Current")));
     case PERMISSIONCOL:
       if (b != null) {
         return b.getPermissiveWorking();
       }
       return Boolean.valueOf(tempRow[PERMISSIONCOL].equals(Bundle.getMessage("Permissive")));
     case SPEEDCOL:
       if (b != null) {
         return b.getBlockSpeed();
       }
       return tempRow[col];
     case EDIT_COL:
       if (b != null) {
         return Bundle.getMessage("ButtonEditPath");
       }
       return "";
     case DELETE_COL:
       if (b != null) {
         return Bundle.getMessage("ButtonDelete");
       }
       return Bundle.getMessage("ButtonClear");
   }
   return super.getValueAt(row, col);
 }