Ejemplo n.º 1
0
  void loadBlock(Element elem) {
    if (elem.getAttribute("systemName") == null) {
      log.error("unexpected null in systemName " + elem + " " + elem.getAttributes());
      return;
    }
    String sysName = elem.getAttribute("systemName").getValue();
    String userName = null;
    if (elem.getAttribute("userName") != null) {
      userName = elem.getAttribute("userName").getValue();
    }
    if (log.isDebugEnabled()) {
      log.debug("Load block sysName= " + sysName + " userName= "******"Null block!! sysName= " + sysName + ", userName= "******"comment");
    if (c != null) {
      block.setComment(c);
    }
    if (elem.getAttribute("units") != null) {
      block.setMetricUnits(elem.getAttribute("units").getValue().equals("true"));
    } else {
      block.setMetricUnits(false);
    }
    if (elem.getAttribute("length") != null) {
      block.setLength(Float.valueOf(elem.getAttribute("length").getValue()).floatValue());
    }
    if (elem.getAttribute("curve") != null) {
      block.setCurvature(Integer.parseInt((elem.getAttribute("curve")).getValue()));
    }
    List<Element> sensors = elem.getChildren("sensor");
    if (sensors.size() > 1) {
      log.error("More than one sensor present: " + sensors.size());
    }
    if (sensors.size() > 0) {
      // sensor
      String name = sensors.get(0).getAttribute("systemName").getValue();
      block.setSensor(name);
    }
    Element errSensor = elem.getChild("errorSensor");
    if (errSensor != null) {
      // sensor
      String name = errSensor.getAttribute("systemName").getValue();
      // Sensor sensor = InstanceManager.sensorManagerInstance().provideSensor(name);
      block.setErrorSensor(name);
    }
    Element reporter = elem.getChild("reporter");
    if (reporter != null) {
      // sensor
      String name = reporter.getAttribute("systemName").getValue();
      // Sensor sensor = InstanceManager.sensorManagerInstance().provideSensor(name);
      try {
        Reporter rep = InstanceManager.reporterManagerInstance().getReporter(name);
        if (rep != null) {
          block.setReporter(rep);
        }
      } catch (Exception ex) {
        log.error("No Reporter named \"" + name + "\" found. threw exception: " + ex);
      }
      if (reporter.getAttribute("reportCurrent") != null) {
        block.setReportingCurrent(reporter.getAttribute("reportCurrent").getValue().equals("true"));
      } else {
        block.setReportingCurrent(false);
      }
    }
    if (elem.getAttribute("permissive") != null) {
      block.setPermissiveWorking(elem.getAttribute("permissive").getValue().equals("true"));
    } else {
      block.setPermissiveWorking(false);
    }
    if (elem.getAttribute("speedNotch") != null) {
      try {
        block.setBlockSpeed(elem.getAttribute("speedNotch").getValue());
      } catch (jmri.JmriException ex) {
        JOptionPane.showMessageDialog(
            null, ex.getMessage() + "\n" + elem.getAttribute("speedNotch").getValue());
      }
    }

    List<Element> portals = elem.getChildren("portal");
    for (int k = 0; k < portals.size(); k++) {
      block.addPortal(loadPortal(portals.get(k)));
    }

    List<Element> paths = elem.getChildren("path");
    for (int j = 0; j < paths.size(); j++) {
      if (!block.addPath(loadPath(paths.get(j), block))) {
        log.error(
            "load: block \""
                + sysName
                + "\" failed to add path \""
                + paths.get(j).getName()
                + "\" in block \""
                + block.getSystemName()
                + "\"");
      }
    }
  }