package uk.org.smithfamily.mslogger.ecuDef.gen; import java.util.HashMap; import java.util.Map; import uk.org.smithfamily.mslogger.ecuDef.MSECUInterface; public enum ECURegistry { INSTANCE; private Map<String,Class<? extends MSECUInterface> > ecus = new HashMap<String,Class<? extends MSECUInterface> >(); ECURegistry() { <LIST> } private void registerEcu(Class<? extends MSECUInterface> cls, String sig) { ecus.put(sig, cls); } public Class<? extends MSECUInterface> findEcu(String sig) { Class<? extends MSECUInterface> ecu = ecus.get(sig); if (ecu != null) { return ecu; } for (int i = sig.length() - 1; i > sig.length() / 2 && i > 3 && ecu == null; i--) { String fuzzySig = sig.substring(0, i); for (String classSig : ecus.keySet()) { if (classSig.startsWith(fuzzySig)) { ecu = ecus.get(classSig); } } } return ecu; } }