public static Automobile parseProperties(Properties properObj) { Automobile autoObj = new Automobile(); autoObj.setModelName(properObj.getProperty("CarModel")); properObj.remove("CarModel"); autoObj.setMaker(properObj.getProperty("CarMake")); properObj.remove("CarMake"); autoObj.setBasePrice(Float.parseFloat(properObj.getProperty("CarPrice"))); properObj.remove("CarPrice"); int i = 1; String key = "Option"; while (!properObj.isEmpty()) { String optionsetName = properObj.getProperty(key + i); autoObj.setOptionset(optionsetName); properObj.remove(key + i); int j = 1; while (properObj.containsKey(key + i + "Value" + j)) { float optionPrice = 0; String optionName = properObj.getProperty(key + i + "Value" + j); properObj.remove(key + i + "Value" + j); if (properObj.containsKey(key + i + "Value" + j + "price")) { optionPrice = Float.parseFloat(properObj.getProperty(key + i + "Value" + j + "price")); properObj.remove(key + i + "Value" + j + "price"); } autoObj.setOption(optionsetName, optionName, optionPrice); j++; } i++; } return autoObj; }
/** * buildAutoObject() reads the data from the file to Automotive object * * @param filename * @return * @throws FileNotFoundException * @throws FixProblems * @throws IOException * @throws NumberFormatException */ public Automobile buildAutoObject(String filename) throws FixProblems { String currentStep = ""; try { BufferedReader bufferedReader = null; currentStep = "FILE_READ"; bufferedReader = new BufferedReader(new FileReader(filename)); String line = null; a = new Automobile("Ford's Wagon ZTW", 5, 18445); int count = 0; int cost = 0; int optionCount = 0, optionSetCount = 0; while ((line = bufferedReader.readLine()) != null) { if (!line.contains(":")) { continue; } String optionSetName = null; StringTokenizer st = new StringTokenizer(line, ":"); String s = st.nextToken(); if ((s).equals("keys")) { currentStep = "OPTION SET"; optionSetName = st.nextToken(); count = Integer.parseInt(st.nextToken().trim()); a.setOptionSet(optionSetName, count, optionSetCount); optionSetCount++; optionCount = 0; } else if (!(s).equals("keys")) { if (optionCount < count) { currentStep = "OPTION PRICE"; cost = Integer.parseInt(st.nextToken().trim()); a.setOption(optionSetName, s, cost, optionCount, optionSetCount - 1, count); optionCount++; } else { System.out.println("Array out of Bounds"); } } } a.print(); } catch (Exception ex) { throw new FixProblems(ex, currentStep); // throw new FixProblems(101); } return a; }
public static Automobile buildAutoObject(String fileName) throws AutoException { Automobile model = new Automobile(); try { FileReader file = new FileReader(fileName); BufferedReader buff = new BufferedReader(file); boolean eof = false; String line; for (int i = 0; i < 3; i++) { line = buff.readLine(); if (line == null) { eof = true; } else { String[] array = line.split(": "); try { if (array.length == 2) { if (i == 0) { model.setModelName(array[1]); } else if (i == 1) { try { float basePrice = NumberFormat.getNumberInstance(java.util.Locale.US) .parse(array[1]) .floatValue(); model.setBasePrice(basePrice); } catch (ParseException e) { e.printStackTrace(); } } else if (i == 2) { model.setMaker(array[1]); } } else { if (i == 0) { throw new AutoException(ModelError.MISSING_MODEL_NAME); } else if (i == 1) { throw new AutoException(ModelError.MISSING_MODEL_PRICE); } } } catch (AutoException e) { e.fix(e.getErrorCode().getNumber(), model); } } } int i = 0; // number of line while (!eof) { line = buff.readLine(); if (line == null) { eof = true; } else { String[] optionSet = line.split(": "); // setName + options try { if (optionSet.length != 2 || optionSet[0].isEmpty() || optionSet[1].isEmpty()) { throw new AutoException(ModelError.MISSING_OPTIONSET_DATA); } else { String[] options = optionSet[1].split("; "); // (optionName + price)*n model.setOptionset(optionSet[0]); for (int j = 0; j < options.length; j++) { String[] option = options[j].split(", "); // optionName + price if (option.length < 2) { throw new AutoException(ModelError.MISSING_OPTION_DATA); } else { try { float price = NumberFormat.getNumberInstance(java.util.Locale.US) .parse(option[1]) .floatValue(); model.setOption(i, option[0], price); } catch (ParseException e) { e.printStackTrace(); } } } } } catch (AutoException e) { e.fix(e.getErrorCode().getNumber(), model); } } i++; } buff.close(); } catch (IOException e) { System.out.println("Error -- " + e.toString()); } return model; }