Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ordini;
- import java.util.*; import java.io.*;
- public class Ordini {
- private TreeMap<String,Cliente> clienti = new TreeMap<String,Cliente>();
- private TreeMap<String,Prodotto> prodotti = new TreeMap<String,Prodotto>();
- private TreeMap<String,Fornitore> fornitori = new TreeMap<String,Fornitore>();
- private TreeMap<String,OrdineCliente> ordiniClienti = new TreeMap<String,OrdineCliente>();
- private TreeMap<String,OrdineFornitore> ordiniFornitori = new TreeMap<String,OrdineFornitore>();
- // Anagrafica
- public void readAnagrafica(String fileName) {
- try {
- String line1 = null;
- BufferedReader in = new BufferedReader(new FileReader(fileName));
- line1 = in.readLine();
- while (line1 != null) {
- try {
- String[] tokens = line1.split(",");
- String t = tokens[0];
- String codice = tokens[1];
- if (t.equals("C")) {
- if (clienti.containsKey(codice)) throw new Exception("codice esistente");
- clienti.put(codice, new Cliente(codice));
- } else if (t.equals("P")) {
- if (prodotti.containsKey(codice)) throw new Exception("codice esistente");
- int prezzo = Integer.parseInt(tokens[2]);
- prodotti.put(codice, new Prodotto(codice, prezzo));
- } else if (t.equals("F")) {
- if (fornitori.containsKey(codice)) throw new Exception("codice esistente");
- TreeSet<String> codiciProdotti = new TreeSet<String>();
- for(int i=2; i<tokens.length; i++){
- String codiceProdotto = tokens[i];
- if (!prodotti.containsKey(codiceProdotto)) throw new Exception("codice inesistente");
- codiciProdotti.add(codiceProdotto);
- }
- fornitori.put(codice, new Fornitore(codice, codiciProdotti));
- }
- } catch (Exception e) {System.out.println(e); }
- line1 = in.readLine();
- };
- in.close();
- } catch(Exception e) {
- e.printStackTrace();
- }
- }
- public ArrayList<String> getCodiciClienti() {return new ArrayList<String>(clienti.keySet());}
- public ArrayList<String> getCodiciProdotti() {return new ArrayList<String>(prodotti.keySet());}
- public ArrayList<String> getCodiciFornitori() {return new ArrayList<String>(fornitori.keySet());}
- public ArrayList<String> getCodiciProdottiFornitore(String codice) throws CodiceInesistente {
- if (!fornitori.containsKey(codice)) throw new CodiceInesistente();
- return fornitori.get(codice).getCodiciProdotti();
- }
- // Ordini clienti
- int codiceOCnuovo = 1;
- public String newOrdineCliente(String codiceCliente, String codiceProdotto, int nPezzi) throws CodiceInesistente {
- if (!clienti.containsKey(codiceCliente) || !prodotti.containsKey(codiceProdotto)) throw new CodiceInesistente();
- Cliente cliente = clienti.get(codiceCliente); Prodotto prodotto = prodotti.get(codiceProdotto);
- String codiceOC = "oc" + codiceOCnuovo++;
- OrdineCliente o = new OrdineCliente(codiceOC, cliente, prodotto, nPezzi);
- ordiniClienti.put(codiceOC, o);
- cliente.addOrdine(o);
- prodotto.addNPezzi(nPezzi);
- return codiceOC;
- }
- public ArrayList<OrdineClienteI>getOrdiniCliente(String codiceCliente) throws CodiceInesistente {
- if (!clienti.containsKey(codiceCliente)) throw new CodiceInesistente();
- Cliente cliente = clienti.get(codiceCliente);
- return cliente.getOrdini();
- }
- public OrdineClienteI getOrdineCliente(String codiceOrdineCliente) throws CodiceInesistente {
- if (!ordiniClienti.containsKey(codiceOrdineCliente)) throw new CodiceInesistente();
- return ordiniClienti.get(codiceOrdineCliente);
- }
- // Ordini fornitori
- int codiceOFnuovo = 1;
- public String newOrdineFornitore(String codiceFornitore, String... codiciOC) throws CodiceInesistente, OrdineInaccettabile {
- TreeSet<String> codiciOrdiniCliente = new TreeSet<String>(); // ordina i codici degli ordini clienti
- if (!fornitori.containsKey(codiceFornitore)) throw new CodiceInesistente();
- if (!ordiniClienti.keySet().containsAll(Arrays.asList(codiciOC))) throw new CodiceInesistente();
- // occorre controllare che gli ordini clienti siano nello stato inserito e che i prodotti siano trattati dal fornitore
- Fornitore f = fornitori.get(codiceFornitore);
- ArrayList<OrdineCliente> ordiniC = new ArrayList<OrdineCliente>();
- for (String c: codiciOC) {
- OrdineCliente o = ordiniClienti.get(c);
- if (!o.getStato().equals("inserito") || !f.getCodiciProdotti().contains(o.getProdotto().getCodice())) throw new OrdineInaccettabile();
- else {
- codiciOrdiniCliente.add(c);
- ordiniC.add(o); o.stato = "trattato";
- }
- }
- String codiceOF = "of" + codiceOFnuovo++;
- OrdineFornitore of = new OrdineFornitore(codiceOF, f, ordiniC, new ArrayList<String>(codiciOrdiniCliente));
- ordiniFornitori.put(codiceOF, of);
- f.addOrdine(of);
- return codiceOF;
- }
- public OrdineFornitoreI getOrdineFornitore(String codiceOrdineFornitore) throws CodiceInesistente {
- if (!ordiniFornitori.containsKey(codiceOrdineFornitore)) throw new CodiceInesistente();
- return ordiniFornitori.get(codiceOrdineFornitore);
- }
- public void consegnaOrdineFornitore(String codiceOrdineFornitore) throws CodiceInesistente, ConsegnaInaccettabile{
- if (!ordiniFornitori.containsKey(codiceOrdineFornitore)) throw new CodiceInesistente();
- OrdineFornitore o = ordiniFornitori.get(codiceOrdineFornitore);
- if (!o.stato.equals("inserito")) throw new ConsegnaInaccettabile();
- o.stato = "consegnato";
- for (OrdineCliente oc: o.ordiniC) oc.stato = "consegnato";
- }
- // Statistiche
- private Comparator<InfoI> comp = new Comparator<InfoI>() {
- public int compare(InfoI i, InfoI j) {
- if(i.getValore() > j.getValore()) return -1;
- else if(i.getValore() < j.getValore()) return 1;
- else return i.getCodice().compareTo(j.getCodice());
- }
- };
- public ArrayList<InfoI> statisticaProdotti() {
- ArrayList<InfoI> list = new ArrayList<InfoI>(prodotti.values());
- Collections.sort(list, comp);
- return list;
- }
- public ArrayList<InfoI> statisticaClienti() {
- ArrayList<InfoI> list = new ArrayList<InfoI>(clienti.values());
- Collections.sort(list, comp);
- return list;
- }
- public ArrayList<InfoI> statisticaFornitori() {
- ArrayList<InfoI> list = new ArrayList<InfoI>(fornitori.values());
- Collections.sort(list, comp);
- return list;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement