Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package es4p302;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.util.HashMap;
- import java.util.ArrayList;
- import java.util.Map;
- import java.util.TreeMap;
- /**
- *
- * @author SCRIVERE
- */
- //calsse database con dentro databese libri, database soci e database presitit, tutti quanti privati
- /// Key rappresenta il primo elemento di una riga
- public class Database {
- private HashMap<Libro, String/* questi sono i due tipi che mettiamo dentro l hashmap*/> databaseLibri;
- private TreeMap<Socio, String > databaseSoci;
- private ArrayList<Prestito> databasePrestiti;
- public Database() {
- //non reinseriamo dentro le paraentesi angoli i tipi perche gli prende gli la dichiarazione :)
- databaseLibri = new HashMap<>();
- databaseSoci = new TreeMap<>();
- databasePrestiti = new ArrayList<>();
- }
- public void putLibro (Libro libro){
- databaseLibri.put(libro , libro.getIsbn()); /// put serve per "AGGIUNGERE una riga all' has map
- }
- //per
- public Libro getLibro(String isbn){
- for (HashMap.Entry<Libro, String> entry :databaseLibri.entrySet()){
- if (entry.getKey().getIsbn().equals(isbn)){
- return entry.getKey();
- } ///in libro e socio usiamo key per prendere solo il primo elemento
- //pechè una persona non puo avete piu isbn o piu codici fiscali ?;
- }
- return null;
- }
- public void putSocio (Socio socio){
- databaseSoci.put(socio , socio.getCodiceFiscale()); /// put serve per "AGGIUNGERE una riga all' TreeMap
- } //per le mappe è put per array è add
- public Socio getSocio(String codiceFiscale){
- for (Map.Entry<Socio, String> entry :databaseSoci.entrySet()){
- if (entry.getKey().getCodiceFiscale().equals(codiceFiscale)){
- return entry.getKey();
- } ///DOMANDE ?;
- }
- return null;
- }
- public boolean putPrestito (Prestito prestito){
- for(Prestito entry : databasePrestiti) {
- if (entry.getLibro().equals(prestito.getLibro())){//equals lo utilizziamo da quella roba fatta con l insert code nelle classi
- return false; //controllo per se il libro è gia prestato non lo puoi riprestare
- }
- }
- return databasePrestiti.add(prestito);
- }
- public Prestito getPrestito(Socio socio){
- for(Prestito entry : databasePrestiti){ ///per ogni elemento di databasePrestiti
- if (entry.getSocio().equals(socio)){ /// per trovare il socio cercato
- return entry;
- }
- }
- return null; //se non trova nulla
- }
- public Prestito getPrestito(Libro libro){
- //metto tutti i prestiti trovati dentro l array per poi ritornae tutti i valori se è pieno
- for(Prestito entry : databasePrestiti){ ///per ogni elemento che ENTRA in databasePrestiti
- if (entry.getLibro().equals(libro)){ /// per trovare il libro cercato
- return entry;
- }
- }
- //? è un if ternario , condizioni, se la condizioni è vera fai una cosa se no un altra, e si utilizza solo per assegniare valore
- // : è la condizione da rispettare se non è vera
- return null; //se la dimensione dell array è piu grande di 0 ritorna quei valore , se no ritorna null
- }
- public boolean delPrestito(Prestito prestito){
- for (Prestito entry : databasePrestiti){
- if (entry.getLibro().equals(prestito.getLibro()) && entry.getSocio().equals(prestito.getSocio()) ){
- return databasePrestiti.remove(entry); // mi ritorna direttamente true se lo riesco a riumuovere e quindi se l elemento ce
- //altrimenti false
- }
- }
- return false;
- }
- public void saveToFile(File file) throws IOException{//serve per dire per gestire le eccezioni
- file=file !=null ? file :new File(System.getProperty("java.io.tmpdir").concat(File.separator).concat("Biblioteca.ser"));// prende la cartella temporane del sistema, ci aggiunge (concatena concat) il divisore (separator), e poi ci aggiunge il nome del file,
- FileOutputStream foutput = new FileOutputStream(file);//crea qualcosa per scrivere sul file
- ObjectOutputStream oos = new ObjectOutputStream(foutput);//crea qualcosa per convertire da oggetti a file
- Object[] dump = {databaseLibri,databaseSoci,databasePrestiti}; //cre l array dump e stampo dump
- oos.writeObject(dump); /// per scrivere
- // Object[] dump = (Object[]) objectinputstream.readObject();
- }
- public void readFromFile( File file) throws IOException, ClassNotFoundException {
- file = file != null ? file : new File(System.getProperty("java.io.tmpdir").concat(File.separator).concat("Biblioteca.ser"));
- FileInputStream fin = new FileInputStream(file);
- ObjectInputStream objectinputstream = new ObjectInputStream(fin);
- Object[] dump = (Object[]) objectinputstream.readObject();
- databaseLibri = (HashMap<Libro, String>) dump[0];// leggo l oggetto dico il tipo, devo sapere come ho salvato il file , e il tipo
- databaseSoci = (TreeMap<Socio, String>) dump[1];
- databasePrestiti = (ArrayList<Prestito>) dump[2];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement