/** * ItemTester.java * Classe di prova * @author A. luchetta * @version 18-Nov-2006 */ import java.util.Scanner; import java.util.NoSuchElementException; import java.util.Locale; public class ItemTester { public static void main(String[] args) { final char COMMENT_CHARACTER = '*'; Scanner in = new Scanner(System.in); SortableContainer listaOriginale = new SortableContainer(); SortableContainer listaPerNome = new SortableContainer(); SortableContainer listaPerCodice = new SortableContainer(); SortableContainer listaPerPrezzo = new SortableContainer(); SortableContainer listaPerDataScadenza = new SortableContainer(); // acquisizione dati int lineCounter = 0; while (in.hasNextLine()) { String line = in.nextLine(); if (line.charAt(0) != COMMENT_CHARACTER) { lineCounter++; Scanner tok = new Scanner(line); tok.useLocale(Locale.US); try { String nome = tok.next(); String codice = tok.next(); double prezzo = tok.nextDouble(); String dataScadenza = tok.next(); Item prodotto = new Item(nome, codice, prezzo, dataScadenza); listaOriginale.add(prodotto); listaPerNome.add(prodotto); listaPerCodice.add(prodotto); listaPerPrezzo.add(prodotto); listaPerDataScadenza.add(prodotto); } catch (NoSuchElementException e) { System.out.println("ERRORE: riga " + lineCounter + " :" + line); } } } // Ordinamento dei contenitori Item.sortBy(Item.ITEM_NAME); listaPerNome.sort(); Item.sortBy(Item.ITEM_NAME); listaPerNome.sort(); Item.sortBy(Item.ITEM_ID); listaPerCodice.sort(); Item.sortBy(Item.ITEM_PRICE); listaPerPrezzo.sort(); Item.sortBy(Item.ITEM_BEST_BEFORE_DATE); listaPerDataScadenza.sort(); //inversione dei contenitori SortableContainer listaOriginaleRovescia = new SortableContainer(); SortableContainer listaPerNomeRovescia = new SortableContainer(); SortableContainer listaPerCodiceRovescia = new SortableContainer(); SortableContainer listaPerPrezzoRovescia = new SortableContainer(); SortableContainer listaPerDataScadenzaRovescia = new SortableContainer(); while (!listaOriginale.isEmpty()) listaOriginaleRovescia.add((Comparable)listaOriginale.removeLast()); while (!listaPerNome.isEmpty()) listaPerNomeRovescia.add((Comparable)listaPerNome.removeLast()); while (!listaPerCodice.isEmpty()) listaPerCodiceRovescia.add((Comparable)listaPerCodice.removeLast()); while (!listaPerPrezzo.isEmpty()) listaPerPrezzoRovescia.add((Comparable)listaPerPrezzo.removeLast()); while (!listaPerDataScadenza.isEmpty()) listaPerDataScadenzaRovescia.add((Comparable)listaPerDataScadenza.removeLast()); // stampa lista originale System.out.println("\n*** LISTA ORIGINALE DEI PRODOTTI ***"); Item.sortBy(Item.ITEM_NAME); while(!listaOriginaleRovescia.isEmpty()) System.out.println(listaOriginaleRovescia.removeLast()); // stampa in ordine di nome System.out.println("\n*** LISTA DEI PRODOTTI IN ORDINE DI NOME ***"); Item.sortBy(Item.ITEM_NAME); while(!listaPerNomeRovescia.isEmpty()) System.out.println(listaPerNomeRovescia.removeLast()); // stampa in ordine di codice System.out.println("\n*** LISTA DEI PRODOTTI IN ORDINE DI CODICE ***"); Item.sortBy(Item.ITEM_ID); while(!listaPerCodiceRovescia.isEmpty()) System.out.println(listaPerCodiceRovescia.removeLast()); // stampa in ordine di prezzo System.out.println("\n*** LISTA DEI PRODOTTI IN ORDINE DI PREZZO ***"); Item.sortBy(Item.ITEM_PRICE); while(!listaPerPrezzoRovescia.isEmpty()) System.out.println(listaPerPrezzoRovescia.removeLast()); // stampa in ordine di data di scadenza System.out.println("\n*** LISTA DEI PRODOTTI IN ORDINE DI DATA DI SCADENZA ***"); Item.sortBy(Item.ITEM_BEST_BEFORE_DATE); while(!listaPerDataScadenzaRovescia.isEmpty()) System.out.println(listaPerDataScadenzaRovescia.removeLast()); } /* private static String minChars(String s) { final int MIN_LENGTH = 10; String r = s; while (r.length() < MIN_LENGTH) r = " " + r; return r; } */ }