Advertisement
spiny94

Untitled

Sep 8th, 2015
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.12 KB | None | 0 0
  1. package ordini;
  2.  
  3. import java.util.*; import java.io.*;
  4.  
  5. public class Ordini {
  6. private TreeMap<String,Cliente> clienti = new TreeMap<String,Cliente>();
  7. private TreeMap<String,Prodotto> prodotti = new TreeMap<String,Prodotto>();
  8. private TreeMap<String,Fornitore> fornitori = new TreeMap<String,Fornitore>();
  9. private TreeMap<String,OrdineCliente> ordiniClienti = new TreeMap<String,OrdineCliente>();
  10. private TreeMap<String,OrdineFornitore> ordiniFornitori = new TreeMap<String,OrdineFornitore>();
  11.  
  12. // Anagrafica
  13. public void readAnagrafica(String fileName) {
  14.     try {
  15.  
  16.         String line1 = null;
  17.         BufferedReader in = new BufferedReader(new FileReader(fileName));  
  18.         line1 = in.readLine();
  19.         while (line1 != null) {
  20.             try {
  21.               String[] tokens = line1.split(",");
  22.               String t =  tokens[0];
  23.               String codice = tokens[1];
  24.               if (t.equals("C")) {
  25.                   if (clienti.containsKey(codice)) throw new Exception("codice esistente");
  26.                   clienti.put(codice,  new Cliente(codice));
  27.               } else if (t.equals("P")) {
  28.                   if (prodotti.containsKey(codice)) throw new Exception("codice esistente");
  29.                   int prezzo = Integer.parseInt(tokens[2]);
  30.                   prodotti.put(codice, new Prodotto(codice, prezzo));
  31.               } else if (t.equals("F")) {
  32.                   if (fornitori.containsKey(codice)) throw new Exception("codice esistente");
  33.                   TreeSet<String> codiciProdotti = new TreeSet<String>();
  34.                   for(int i=2; i<tokens.length; i++){
  35.                       String codiceProdotto = tokens[i];
  36.                       if (!prodotti.containsKey(codiceProdotto)) throw new Exception("codice inesistente");
  37.                       codiciProdotti.add(codiceProdotto);
  38.                   }
  39.                   fornitori.put(codice, new Fornitore(codice, codiciProdotti));
  40.               }
  41.             } catch (Exception e) {System.out.println(e);   }
  42.             line1 = in.readLine();
  43.         };
  44.         in.close();        
  45.         } catch(Exception e) {
  46.             e.printStackTrace();
  47.         }
  48.     }
  49.  
  50.  
  51. public ArrayList<String> getCodiciClienti() {return new ArrayList<String>(clienti.keySet());}
  52. public ArrayList<String> getCodiciProdotti() {return new ArrayList<String>(prodotti.keySet());}
  53. public ArrayList<String> getCodiciFornitori() {return new ArrayList<String>(fornitori.keySet());}
  54.  
  55. public ArrayList<String> getCodiciProdottiFornitore(String codice) throws CodiceInesistente {
  56. if (!fornitori.containsKey(codice)) throw new CodiceInesistente();
  57. return fornitori.get(codice).getCodiciProdotti();
  58. }
  59.  
  60. // Ordini clienti
  61.  
  62. int codiceOCnuovo = 1;
  63. public String newOrdineCliente(String codiceCliente, String codiceProdotto, int nPezzi) throws CodiceInesistente {
  64.     if (!clienti.containsKey(codiceCliente) || !prodotti.containsKey(codiceProdotto)) throw new CodiceInesistente();
  65.     Cliente cliente = clienti.get(codiceCliente); Prodotto prodotto = prodotti.get(codiceProdotto);
  66.     String codiceOC = "oc" + codiceOCnuovo++;
  67.     OrdineCliente o = new OrdineCliente(codiceOC, cliente, prodotto, nPezzi);
  68.     ordiniClienti.put(codiceOC, o);
  69.     cliente.addOrdine(o);
  70.     prodotto.addNPezzi(nPezzi);
  71.     return codiceOC;
  72. }
  73.  
  74. public ArrayList<OrdineClienteI>getOrdiniCliente(String codiceCliente) throws CodiceInesistente {
  75.     if (!clienti.containsKey(codiceCliente)) throw new CodiceInesistente();
  76.     Cliente cliente = clienti.get(codiceCliente);
  77.     return cliente.getOrdini();
  78. }
  79.  
  80. public OrdineClienteI getOrdineCliente(String codiceOrdineCliente) throws CodiceInesistente {
  81.     if (!ordiniClienti.containsKey(codiceOrdineCliente)) throw new CodiceInesistente();
  82.     return ordiniClienti.get(codiceOrdineCliente);
  83. }
  84.  
  85. // Ordini fornitori
  86. int codiceOFnuovo = 1;
  87. public String newOrdineFornitore(String codiceFornitore, String... codiciOC) throws CodiceInesistente, OrdineInaccettabile {
  88.     TreeSet<String> codiciOrdiniCliente  = new TreeSet<String>(); // ordina i codici degli ordini clienti
  89.     if (!fornitori.containsKey(codiceFornitore)) throw new CodiceInesistente();
  90.     if (!ordiniClienti.keySet().containsAll(Arrays.asList(codiciOC))) throw new CodiceInesistente();
  91.     // occorre controllare che gli ordini clienti siano nello stato inserito e che i prodotti siano trattati dal fornitore
  92.     Fornitore f = fornitori.get(codiceFornitore);
  93.     ArrayList<OrdineCliente> ordiniC = new ArrayList<OrdineCliente>();
  94.     for (String c: codiciOC) {
  95.         OrdineCliente o = ordiniClienti.get(c);
  96.         if (!o.getStato().equals("inserito") || !f.getCodiciProdotti().contains(o.getProdotto().getCodice())) throw new OrdineInaccettabile();
  97.         else {
  98.             codiciOrdiniCliente.add(c);
  99.             ordiniC.add(o); o.stato = "trattato";
  100.         }
  101.     }
  102.     String codiceOF = "of" + codiceOFnuovo++;
  103.     OrdineFornitore of = new OrdineFornitore(codiceOF, f, ordiniC, new ArrayList<String>(codiciOrdiniCliente));
  104.     ordiniFornitori.put(codiceOF, of);
  105.     f.addOrdine(of);
  106.     return codiceOF;
  107. }
  108.  
  109. public OrdineFornitoreI getOrdineFornitore(String codiceOrdineFornitore) throws CodiceInesistente {
  110.     if (!ordiniFornitori.containsKey(codiceOrdineFornitore)) throw new CodiceInesistente();
  111.     return ordiniFornitori.get(codiceOrdineFornitore);
  112. }
  113.  
  114. public void consegnaOrdineFornitore(String codiceOrdineFornitore) throws CodiceInesistente, ConsegnaInaccettabile{
  115.     if (!ordiniFornitori.containsKey(codiceOrdineFornitore)) throw new CodiceInesistente();
  116.     OrdineFornitore o = ordiniFornitori.get(codiceOrdineFornitore);
  117.     if (!o.stato.equals("inserito")) throw new ConsegnaInaccettabile();
  118.     o.stato = "consegnato";
  119.     for (OrdineCliente oc: o.ordiniC) oc.stato = "consegnato";
  120. }
  121.  
  122. // Statistiche
  123. private Comparator<InfoI> comp = new Comparator<InfoI>() {
  124.     public int compare(InfoI i, InfoI j) {
  125.         if(i.getValore() > j.getValore()) return -1;
  126.         else if(i.getValore() < j.getValore()) return 1;
  127.         else return i.getCodice().compareTo(j.getCodice());
  128.     }
  129. };
  130. public ArrayList<InfoI> statisticaProdotti() {
  131.     ArrayList<InfoI> list = new ArrayList<InfoI>(prodotti.values());
  132.     Collections.sort(list, comp);
  133.     return list;
  134. }
  135. public ArrayList<InfoI> statisticaClienti() {
  136.     ArrayList<InfoI> list = new ArrayList<InfoI>(clienti.values());
  137.     Collections.sort(list, comp);
  138.     return list;
  139. }
  140. public ArrayList<InfoI>  statisticaFornitori() {
  141.     ArrayList<InfoI> list = new ArrayList<InfoI>(fornitori.values());
  142.     Collections.sort(list, comp);
  143.     return list;
  144. }
  145.  
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement