Author: [log in to unmask] Date: Thu Oct 8 22:14:01 2015 New Revision: 3673 Log: Prevent the map of IDs to detector elements from returning a null ref. Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/DetectorElementIdentifierHash.java Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/DetectorElementIdentifierHash.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/DetectorElementIdentifierHash.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/DetectorElementIdentifierHash.java Thu Oct 8 22:14:01 2015 @@ -6,61 +6,60 @@ import org.lcsim.detector.identifier.IIdentifier; -public class DetectorElementIdentifierHash -{ - private Map<Long, IDetectorElementContainer> idhash = new HashMap<Long, IDetectorElementContainer>(); - - public void put(IDetectorElement de) - { - IIdentifier id = de.getIdentifier(); - - // Ignore null id. - if (id == null) - { - return; - } - - // Ignore invalid id. - if (!id.isValid()) - { - return; - } - - Long rawid = id.getValue(); - - // Create list if doesn't exist. - if (idhash.get(rawid) == null) - { - idhash.put(rawid, new DetectorElementContainer()); - } - - // Add a hash from id to DetectorElement. - idhash.get(rawid).add(de); - } - - public IDetectorElementContainer get(IIdentifier id) - { - return idhash.get(id.getValue()); - } - - public IDetectorElementContainer get(Long rawid) - { - return idhash.get(rawid); - } - - public IDetectorElementContainer get(List<IIdentifier> ids) - { - IDetectorElementContainer ret = new DetectorElementContainer(); - for (IIdentifier id : ids) - { - IDetectorElementContainer src = get(id); - ret.addAll(src); - } - return ret; - } - - public void clear() - { - idhash.clear(); - } +public class DetectorElementIdentifierHash { + + private Map<Long, IDetectorElementContainer> idhash = new HashMap<Long, IDetectorElementContainer>(); + + public void put(IDetectorElement de) { + + IIdentifier id = de.getIdentifier(); + + // Ignore null id. + if (id == null) { + return; + } + + // Ignore invalid id. + if (!id.isValid()) { + System.out.println("ignoring invalid ID " + de.getIdentifier().getValue() + " from " + de.getName()); + return; + } + + Long rawid = id.getValue(); + + // Create list if doesn't exist. + if (idhash.get(rawid) == null) { + idhash.put(rawid, new DetectorElementContainer()); + } else { + System.out.println("WARNING: already have container for ID " + rawid); + } + + // Add a hash from id to DetectorElement. + idhash.get(rawid).add(de); + } + + public IDetectorElementContainer get(IIdentifier id) { + return get(id.getValue()); + } + + public IDetectorElementContainer get(Long rawid) { + IDetectorElementContainer container = idhash.get(rawid); + if (container == null) { + container = new DetectorElementContainer(); + } + return container; + } + + public IDetectorElementContainer get(List<IIdentifier> ids) { + IDetectorElementContainer ret = new DetectorElementContainer(); + for (IIdentifier id : ids) { + IDetectorElementContainer src = get(id); + ret.addAll(src); + } + return ret; + } + + public void clear() { + idhash.clear(); + } } ######################################################################## Use REPLY-ALL to reply to list To unsubscribe from the LCDET-SVN list, click the following link: https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCDET-SVN&A=1