Buongiorno sono nuovo nel forum quindi mi scuserete se non rispetto alla perfezione le regole…Allora ho un programma da consegnare a breve al professore e ho molti problemi…qui il testo:

Gestione ordini

Realizzare un sistema che tratta ordini relativi a clienti e fornitori.
Classi e interfacce si trovano nel package ordini, gli esempi nel package di default.

R1 Anagrafica

La classe principale è Ordini, il metodo readAnagrafica() legge dal parametro, che è il nome di un file testuale, le informazioni sui prodotti, i clienti e i fornitori, organizzate in righe che iniziano con i caratteri P, C o F. Una riga di prodotto (ad esempio "P,divano2pT,200") contiene il carattere P, il codice del prodotto (String) e il prezzo (int) separati da una virgola. Una riga di cliente (ad esempio "C,Bianchi") contiene il carattere C e il codice del cliente (String) separati da una virgola. Una riga di fornitore (ad esempio "F,BetaMobili,divano2pP,poltronaP") contiene il carattere F, il codice del fornitore e i codici dei prodotti trattati dal fornitore separati da una virgola.
Il metodo legge il file in una struttura dati interna da definire. La struttura del file è sintatticamente corretta però possono esserci dei codici duplicati o indefiniti; in tal caso, la riga errata è ignorata e la lettura prosegue. Ad es. nel file AnagraficaE l’ultima riga P è ignorata perché il codice divano2pT è già stato definito nella prima riga P e l’ultima riga F è ignorata perché mensola non è un codice di prodotto.

I metodi getCodiciProdotti, getCodiciClienti e getCodiciFornitori danno la lista dei codici dei prodotti, clienti e fornitori ordinati alfabeticamente. Il metodo getCodiciProdottiFornitore (String codice) dà la lista dei codici dei prodotti del fornitore ordinati alfabeticamente. Il fornitore è identificato dal suo codice; se non esiste un fornitore con quel codice il metodo lancia un’eccezione di tipo CodiceInesistente.

Nota sul controllo dei codici: se un codice passato come parametro ad un metodo non corrisponde a nessun oggetto del tipo richiesto - un prodotto, un cliente, un fornitore, un ordine cliente, un ordine fornitore - il metodo lancia un’eccezione di tipo CodiceInesistente.



e la mia soluzione è questa ma effetuando i test dati dal professore c'è un errore sul metodo getCodiciProdottiFornitore
codice:
        TreeMap<String, Prodotto> prodotti = new TreeMap<String, Prodotto>();
	TreeMap<String, Cliente> clienti = new TreeMap<String, Cliente>();
	TreeMap<String, Fornitore> fornitori = new TreeMap<String, Fornitore>();

        int od = 0;
	int i = 0;

	// Anagrafica
	@SuppressWarnings("resource")
	public void readAnagrafica(String fileName) {

		try {
			BufferedReader in = new BufferedReader(new FileReader(fileName));
			String line1 = in.readLine();
			while (line1 != null) {
				try {
					Scanner sc = new Scanner(line1).useDelimiter(";");
					String n = sc.next();
					if (n.equals("P")) {
						String codiceP = sc.next();
						int Prezzo = sc.nextInt();
						Prodotto p = new Prodotto(codiceP, Prezzo);
						prodotti.put(codiceP, p);
					}
					if (n.equals("C")) {
						String CodiceCl = sc.next();
						Cliente c = new Cliente(CodiceCl);
						clienti.put(CodiceCl, c);
					}
					if (n.equals("F")) {
						String[] codcl1 = new String[100];
						String CodiceF = sc.next();
						for (int i = 0; i < 100; i++) {
							codcl1[i] = sc.next();
							// String codcl2 = sc.next();
							Fornitore f = new Fornitore(CodiceF, codcl1);
							fornitori.put(CodiceF, f);
						}
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
				line1 = in.readLine();
			}
			;
			in.close();
		} catch (Exception e) { // e.printStackTrace(); }
		}
	}

	public ArrayList<String> getCodiciClienti() {
		ArrayList<String> list = new ArrayList<String>(clienti.keySet());
		Collections.sort(list);
		return list;
	}

	public ArrayList<String> getCodiciProdotti() {
		ArrayList<String> list = new ArrayList<String>(prodotti.keySet());
		Collections.sort(list);
		return list;
	}

	public ArrayList<String> getCodiciFornitori() {
		ArrayList<String> list = new ArrayList<String>(fornitori.keySet());
		Collections.sort(list);
		return list;
	}

	public ArrayList<String> getCodiciProdottiFornitore(String codice)
			throws CodiceInesistente {
		Fornitore f = fornitori.get(codice);
		if (f == null)
			throw new CodiceInesistente();
		ArrayList<String> list = new ArrayList<String>();
		for (String s : fornitori.keySet()) {
			if (fornitori.get(s).equals(codice))
				list.add(s);
		}
		Collections.sort(list);

		return list;
	}
formato del file da Leggere:
codice:
Anagrafica.txt
      P,divano2pT,200
P,divano2pP,400
P,poltronaT,150
P,poltronaP,250
P,libreria,300
P,scaffale,120
P,mensola,40
C,Bianchi
C,Rossi
C,Verdi
F,AlfaMobili,divano2pT,poltronaT,libreria
F,BetaMobili,divano2pP,poltronaP
F,TuttoMobili,divano2pT,poltronaT,divano2pP,poltronaP,libreria,scaffale,mensola