public void resetMoves() { Enumeration<String> en = _hashTable.keys(); while (en.hasMoreElements()) { RollingStock rs = getById(en.nextElement()); rs.setMoves(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; }
/** * 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; }
/** * 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; }
/** 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())); }
/** * 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); }
/** * 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; }
public void changeId(RollingStock rs, String road, String number) { _hashTable.remove(rs.getId()); rs._id = RollingStock.createId(road, number); register(rs); }
/** 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())); }
/** 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())); }