/** * Returns a manufacturer for the given name. The manufacturer is searched for within the * manufacturers and if a match is found the corresponding object is returned. If not, a new * manufacturer is returned with display and simple name the name specified. Subsequent requests * for the same (or corresponding) manufacturer name will return the same object. * * @param name the manufacturer name to search for. * @return the Manufacturer object corresponding the name. */ public static Manufacturer getManufacturer(String name) { String searchString = generateSearchString(name); Manufacturer m = manufacturers.get(searchString); if (m != null) { return m; } m = new Manufacturer(name.trim(), name.trim(), Motor.Type.UNKNOWN); // We need some additional external synchronization here so we lock on the manufacturers. synchronized (manufacturers) { Manufacturer retest = manufacturers.get(searchString); if (retest != null) { // it exists now. return retest; } manufacturers.add(m); } return m; }
static { // AeroTech has many name combinations... List<String> names = new ArrayList<String>(); for (String s : new String[] {"A", "AT", "AERO", "AEROT", "AEROTECH"}) { names.add(s); names.add(s + "-RMS"); names.add(s + "-RCS"); names.add("RCS-" + s); names.add(s + "-APOGEE"); } names.add("ISP"); // Aerotech has single-use, reload and hybrid motors manufacturers.add( new Manufacturer("AeroTech", "AeroTech", Motor.Type.UNKNOWN, names.toArray(new String[0]))); manufacturers.add( new Manufacturer( "Alpha Hybrid Rocketry LLC", "Alpha Hybrid Rocketry", Motor.Type.HYBRID, "AHR", "ALPHA", "ALPHA HYBRID", "ALPHA HYBRIDS", "ALPHA HYBRIDS ROCKETRY")); // TODO: HIGH: AMW/ProX - how to classify? manufacturers.add( new Manufacturer( "Animal Motor Works", "Animal Motor Works", Motor.Type.RELOAD, "AMW", "AW", "ANIMAL")); manufacturers.add(new Manufacturer("Apogee", "Apogee", Motor.Type.SINGLE, "AP", "APOG", "P")); manufacturers.add( new Manufacturer( "Cesaroni Technology Inc.", "Cesaroni Technology", Motor.Type.RELOAD, "CES", "CESARONI", "CESARONI TECHNOLOGY INCORPORATED", "CTI", "CS", "CSR", "PRO38", "ABC")); manufacturers.add( new Manufacturer( "Contrail Rockets", "Contrail Rockets", Motor.Type.HYBRID, "CR", "CONTR", "CONTRAIL", "CONTRAIL ROCKET")); manufacturers.add(new Manufacturer("Estes", "Estes", Motor.Type.SINGLE, "E", "ES")); // Ellis Mountain has both single-use and reload motors manufacturers.add( new Manufacturer( "Ellis Mountain", "Ellis Mountain", Motor.Type.UNKNOWN, "EM", "ELLIS", "ELLIS MOUNTAIN ROCKET", "ELLIS MOUNTAIN ROCKETS")); manufacturers.add( new Manufacturer( "Gorilla Rocket Motors", "Gorilla Rocket Motors", Motor.Type.RELOAD, "GR", "GORILLA", "GORILLA ROCKET", "GORILLA ROCKETS", "GORILLA MOTOR", "GORILLA MOTORS", "GORILLA ROCKET MOTOR")); manufacturers.add( new Manufacturer("HyperTEK", "HyperTEK", Motor.Type.HYBRID, "H", "HT", "HYPER")); manufacturers.add( new Manufacturer( "Kosdon by AeroTech", "Kosdon by AeroTech", Motor.Type.RELOAD, "K", "KBA", "K-AT", "KOS", "KOSDON", "KOSDON/AT", "KOSDON/AEROTECH")); manufacturers.add( new Manufacturer("Loki Research", "Loki Research", Motor.Type.RELOAD, "LOKI", "LR")); manufacturers.add( new Manufacturer( "Public Missiles, Ltd.", "Public Missiles", Motor.Type.SINGLE, "PM", "PML", "PUBLIC MISSILES LIMITED")); manufacturers.add( new Manufacturer( "Propulsion Polymers", "Propulsion Polymers", Motor.Type.HYBRID, "PP", "PROP", "PROPULSION")); manufacturers.add(new Manufacturer("Quest", "Quest", Motor.Type.SINGLE, "Q", "QU")); manufacturers.add( new Manufacturer("RATT Works", "RATT Works", Motor.Type.HYBRID, "RATT", "RT", "RTW")); manufacturers.add( new Manufacturer( "Roadrunner Rocketry", "Roadrunner Rocketry", Motor.Type.SINGLE, "RR", "ROADRUNNER")); manufacturers.add( new Manufacturer("Rocketvision", "Rocketvision", Motor.Type.SINGLE, "RV", "ROCKET VISION")); manufacturers.add( new Manufacturer( "Sky Ripper Systems", "Sky Ripper Systems", Motor.Type.HYBRID, "SR", "SRS", "SKYR", "SKYRIPPER", "SKY RIPPER", "SKYRIPPER SYSTEMS")); manufacturers.add( new Manufacturer( "West Coast Hybrids", "West Coast Hybrids", Motor.Type.HYBRID, "WCH", "WCR", "WEST COAST", "WEST COAST HYBRID")); // German WECO Feuerwerk, previously Sachsen Feuerwerk manufacturers.add( new Manufacturer( "WECO Feuerwerk", "WECO Feuerwerk", Motor.Type.SINGLE, "WECO", "WECO FEUERWERKS", "SF", "SACHSEN", "SACHSEN FEUERWERK", "SACHSEN FEUERWERKS")); }