/** * Metodo che salva i dati su disco. Si salvano in un unico file tutte le variabili. * * @throws IOException */ @SuppressWarnings("unchecked") private static void saveData(String path, String name) throws IOException { // si crea un oggetto json JSONObject json = new JSONObject(); json.put("project", name); LinkedHashMap<String, LinkedList<Double>> map_v = new LinkedHashMap<>(); LinkedHashMap<String, Double> X_map = new LinkedHashMap<>(); for (Variable v : data.getVariables().values()) { LinkedList<Double> ms = new LinkedList<>(); for (double m : v.getMeasures()) { ms.add(m); } map_v.put(v.getId(), ms); // Se c'è la x si aggiunge if (v instanceof VariableXY) { X_map.put(v.getId(), ((VariableXY) v).getX()); } } // mappa delle variabili json.put("variables", map_v); json.put("x_map", X_map); // si inseriscono i fitter LinkedHashMap<String, LinkedList<String>> map_f = new LinkedHashMap<>(); for (LinearFitter v : fitter_man.getFitters().values()) { LinkedList<String> ms = new LinkedList<>(); for (VariableXY va : v.getVariables().values()) { ms.add(va.getId()); } map_f.put(v.getId(), ms); } // mappa dei fitter json.put("fitters", map_f); String path_touse; // scrittura su file if (path.equals("")) { path_touse = System.getProperty("user.home") + File.separator + name + ".b9"; } else { path_touse = path + File.separator + name + ".b9"; } // si scrive l'oggetto FileWriter w = new FileWriter(path_touse); w.write(json.toJSONString()); w.close(); out.println("Progetto salvato in: " + path_touse); }
/** * Ciclo dei comandi per il fitting. * * @throws IOException */ private static void fit_cycle() throws IOException { boolean fit_cycle = true; while (fit_cycle) { out.print("fittin>> "); String cmd2 = in.readLine().trim(); if (cmd2.equals("exit")) { fit_cycle = false; out.println("exit fit menu...\n"); continue; } String[] p = cmd2.split(" "); // si stampano i fitters if (p[0].equals("fitters")) { for (LinearFitter fit : fitter_man.getFitters().values()) { out.print("\tID: " + fit.getId() + " - N: " + fit.getN()); for (Variable v : fit.getVariables().values()) { out.print("\n\t\tVariable: " + v.getId() + " - N: " + v.getN()); } out.println(); } continue; } if (p.length < 2) { out.println("\tInserire nome del fitter\n"); continue; } String f = p[1]; try { // comandi switch (p[0]) { case "create": fitter_man.addLinearFitter(f); out.println("\tCreato fitter: " + f + "\n"); break; case "add-variables": LinearFitter fitter = fitter_man.getLinearFitter(f); out.println("Inserire un id variabile e premere invio. (exit) per uscire..."); // si inseriscono i valori boolean ok = true; int i = 1; while (ok) { out.print("\tvalue-" + f + "-" + i + ">> "); String s = in.readLine(); if (s.equals("")) { continue; } if (s.equals("exit")) { ok = false; break; } if (data.containsVariable(s)) { Variable v = data.getVariable(s); if (v instanceof VariableXY) { // si aggiunte fitter.addVariable((VariableXY) v); } else { out.println("Inserire una variabile di tipo XY..."); } } else { out.println("Inserire un id variable valido..."); } i++; } out.println(); break; case "remove-variables": if (p.length < 3) { out.println( "data>> Inserire parametri:\n" + " id fitter, variabile-xy da rimuovere\n"); continue; } LinearFitter fitter1 = fitter_man.getLinearFitter(f); Variable v = data.getVariable(p[2]); if (v instanceof VariableXY) { double x = ((VariableXY) v).getX(); fitter_man.removeVariableFromFitter(f, x); out.println("Rimossa variabile " + p[2] + " da fitter: " + f); } else { out.println("Inserire una variabile di tipo XY..."); } break; case "remove-fitter": if (fitter_man.removeLinearFitter(f)) { out.println("Rimosso fitter: " + f); } else { out.println("Fitter non trovato: " + f); } case "fit-sigma-costant": // fitting con sigma per y costante // si legge il terzo parametro if (p.length < 3) { out.println( "data>> Inserire parametri:\n" + " id fitter, sigma da utilizzare per le Y\n"); continue; } double sigmay = Double.parseDouble(p[2]); // si effettua il fitting LinearFitter fitt = fitter_man.getLinearFitter(f); double[] e = fitt.fit_sigma_costant(sigmay); // si stampano i risultati out.println("A: ....................." + df.format(e[0])); out.println("B: ....................." + df.format(e[1])); out.println("Sigma-A: ..............." + df.format(e[2])); out.println("Sigma-B: ..............." + df.format(e[3])); out.println("Sigma-AB: .............." + df.format(e[4])); out.println(); break; case "fit": // fittin pesato con i sigma delle variabili // si effettua il fitting LinearFitter fitte = fitter_man.getLinearFitter(f); double[] g = fitte.fit(); // si stampano i risultati out.println("A: ....................." + df.format(g[0])); out.println("B: ....................." + df.format(g[1])); out.println("Sigma-A: ..............." + df.format(g[2])); out.println("Sigma-B: ..............." + df.format(g[3])); out.println("Sigma-AB: .............." + df.format(g[4])); out.println(); break; default: out.println("Inserire comando valido!"); } } catch (Exception e) { out.println(e.getMessage()); continue; } } }