Example #1
0
 public void resetMoves() {
   Enumeration<String> en = _hashTable.keys();
   while (en.hasMoreElements()) {
     RollingStock rs = getById(en.nextElement());
     rs.setMoves(0);
   }
 }
Example #2
0
 /**
  * Get a rolling stock by Radio Frequency Identification (RFID)
  *
  * @param rfid RollingStock's RFID.
  * @return the RollingStock with the specific RFID, or null if not found
  */
 public RollingStock getByRfid(String rfid) {
   Enumeration<String> en = _hashTable.keys();
   while (en.hasMoreElements()) {
     RollingStock rs = getById(en.nextElement());
     if (rs.getRfid().equals(rfid)) {
       return rs;
     }
   }
   return null;
 }
Example #3
0
 /**
  * Get a rolling stock by type and road. Used to test that rolling stock with a specific type and
  * road exists.
  *
  * @param type RollingStock type.
  * @param road RollingStock road.
  * @return the first RollingStock found with the specified type and road.
  */
 public RollingStock getByTypeAndRoad(String type, String road) {
   Enumeration<String> en = _hashTable.keys();
   while (en.hasMoreElements()) {
     RollingStock rs = getById(en.nextElement());
     if (rs.getTypeName().equals(type) && rs.getRoadName().equals(road)) {
       return rs;
     }
   }
   return null;
 }
Example #4
0
 /**
  * Return rolling stock of a specific type
  *
  * @param type type of rolling stock
  * @return list of RollingStock that are specific type
  */
 public List<RollingStock> getByTypeList(String type) {
   List<RollingStock> typeList = getByTypeList();
   List<RollingStock> out = new ArrayList<RollingStock>();
   for (RollingStock rs : typeList) {
     if (rs.getTypeName().equals(type)) {
       out.add(rs);
     }
   }
   return out;
 }
Example #5
0
 /** Remove all RollingStock from roster */
 public void deleteAll() {
   Integer oldSize = Integer.valueOf(_hashTable.size());
   Enumeration<String> en = _hashTable.keys();
   while (en.hasMoreElements()) {
     RollingStock rs = getById(en.nextElement());
     rs.dispose();
     _hashTable.remove(rs.getId());
   }
   firePropertyChange(LISTLENGTH_CHANGED_PROPERTY, oldSize, Integer.valueOf(_hashTable.size()));
 }
Example #6
0
 /**
  * Get rolling stock by road and number
  *
  * @param road RollingStock road
  * @param number RollingStock number
  * @return requested RollingStock object or null if none exists
  */
 public RollingStock getByRoadAndNumber(String road, String number) {
   String id = RollingStock.createId(road, number);
   return getById(id);
 }
Example #7
0
  /**
   * Sort by rolling stock number, number can be alphanumeric. RollingStock number can also be in
   * the format of nnnn-N, where the "-N" allows the user to enter RollingStock with similar
   * numbers.
   *
   * @return list of RollingStock ordered by number
   */
  public List<RollingStock> getByNumberList() {
    // first get by road list
    List<RollingStock> sortIn = getByRoadNameList();
    // now re-sort
    List<RollingStock> out = new ArrayList<RollingStock>();
    int rsNumber = 0;
    int outRsNumber = 0;

    for (RollingStock rs : sortIn) {
      boolean rsAdded = false;
      try {
        rsNumber = Integer.parseInt(rs.getNumber());
        rs.number = rsNumber;
      } catch (NumberFormatException e) {
        // maybe rolling stock number in the format nnnn-N
        try {
          String[] number = rs.getNumber().split("-");
          rsNumber = Integer.parseInt(number[0]);
          rs.number = rsNumber;
        } catch (NumberFormatException e2) {
          rs.number = NOT_INTEGER;
          // sort alphanumeric numbers at the end of the out list
          String numberIn = rs.getNumber();
          // log.debug("rolling stock in road number ("+numberIn+") isn't a number");
          for (int k = (out.size() - 1); k >= 0; k--) {
            String numberOut = out.get(k).getNumber();
            try {
              Integer.parseInt(numberOut);
              // done, place rolling stock with alphanumeric
              // number after rolling stocks with real numbers.
              out.add(k + 1, rs);
              rsAdded = true;
              break;
            } catch (NumberFormatException e3) {
              if (numberIn.compareToIgnoreCase(numberOut) >= 0) {
                out.add(k + 1, rs);
                rsAdded = true;
                break;
              }
            }
          }
          if (!rsAdded) {
            out.add(0, rs);
          }
          continue;
        }
      }

      int start = 0;
      // page to improve sort performance.
      int divisor = out.size() / PAGE_SIZE;
      for (int k = divisor; k > 0; k--) {
        outRsNumber = out.get((out.size() - 1) * k / divisor).number;
        if (outRsNumber == NOT_INTEGER) {
          continue;
        }
        if (rsNumber >= outRsNumber) {
          start = (out.size() - 1) * k / divisor;
          break;
        }
      }
      for (int j = start; j < out.size(); j++) {
        outRsNumber = out.get(j).number;
        if (outRsNumber == NOT_INTEGER) {
          try {
            outRsNumber = Integer.parseInt(out.get(j).getNumber());
          } catch (NumberFormatException e) {
            try {
              String[] number = out.get(j).getNumber().split("-");
              outRsNumber = Integer.parseInt(number[0]);
            } catch (NumberFormatException e2) {
              // force add
              outRsNumber = rsNumber + 1;
            }
          }
        }
        if (rsNumber < outRsNumber) {
          out.add(j, rs);
          rsAdded = true;
          break;
        }
      }
      if (!rsAdded) {
        out.add(rs);
      }
    }
    // log.debug("end rolling stock sort by number list");
    return out;
  }
Example #8
0
 public void changeId(RollingStock rs, String road, String number) {
   _hashTable.remove(rs.getId());
   rs._id = RollingStock.createId(road, number);
   register(rs);
 }
Example #9
0
 /** Unload RollingStock. */
 public void deregister(RollingStock rs) {
   rs.dispose();
   Integer oldSize = Integer.valueOf(_hashTable.size());
   _hashTable.remove(rs.getId());
   firePropertyChange(LISTLENGTH_CHANGED_PROPERTY, oldSize, Integer.valueOf(_hashTable.size()));
 }
Example #10
0
 /** Load RollingStock. */
 public void register(RollingStock rs) {
   Integer oldSize = Integer.valueOf(_hashTable.size());
   _hashTable.put(rs.getId(), rs);
   firePropertyChange(LISTLENGTH_CHANGED_PROPERTY, oldSize, Integer.valueOf(_hashTable.size()));
 }