Class DBMSDaemon

java.lang.Object
com.ogc.pharmagcode.Utils.DBMSDaemon

public class DBMSDaemon extends Object
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static boolean
    aggiornaQuantitaConsegnataOrdine(int id_ordine, int id_lotto, int qty)
    Carica la quantità consegnata nel DB Azienda
    static void
    Metodo che permette di connettersi ad entrambi i Databases.
    static void
    Metodo utilizzato per connettersi al DBMS Azienda.
    static void
    Metodo utilizzato per connettersi al DBMS Farmacie.
    static int
    queryAggiornaData(Ordine ordine, LocalDate nuova_data)
    Modifica la data di consegna di un ordine da parte di un farmacista
    static int
    queryAggiornaOrdinePeriodico(int quantita, OrdinePeriodico ordinePeriodico)
    Aggiorna la quantita di un ordine periodico
    static boolean
    Aggiorna la password di mail senza sapere la password vecchia, usato nel caso d'uso recupera credenziali.
    static int
    queryAggiornaQuantitaOrdine(Ordine ordine, int nuova_qty)
    Aggiorna la quantità di un ordine, se la quantità è settata a 0 elimina l'ordine
    static void
    Aggiorna le scorte di un determinato giorno della settimana, nell'effettivo quindi viene utilizzato per effettuare produzione periodica
    static int
    Aggiornare lo stato di un ordine
    static void
    queryCaricaFarmaco(int id_lotto, int id_farmacia, int qty, int id_farmaco)
    Consente di effettuare il caricamento merci, carica la merce nel DB Farmacie
    static Farmaco[]
    queryCercaFarmaco(String nome, String principio_attivo)
    Cerca un farmaco avendo o il nome, o il principio attivo o entrambi
    static Collo
    Query utilizzata per poter stampare la ricevuta del Collo avendo un ordine
    static Utente
    Query per controllare le credenziali di un utente in base alla variabile sistema di Main

    Se Main.sistema == 0 allora ControllaCredenzialiFarmacista()
    Se Main.sistema == 1 allora ControllaCredenzialiImpiegato()
    Se Main.sistema == 2 allora ControllaCredenzialiCorriere()
    static int
    Recupera la quantità effettivamente consegnata di un ordine
    static int
    Controlla se un farmaco esiste nel db per poterne modificare la produzione
    static boolean
    queryCorreggiOrdine(int qty_da_integrare, int qta_consegnata, Ordine ordine)
    Query che consente a un impiegato di correggere un ordine Nel particolare questo metodo fa: Modifica lo stato di ordine in "Corretto" Modifica la quantità di ordine in qta_consegnata Modifica la quantità di ogni lotto che compone ordine, reintegrando la quantità non consegnata Se qty_da_integrare è maggiore di 0, viene creato un ordine integrativo con suddetta quantità, con consegna prevista per il giorno successivo
    static int
    queryCreaOrdine(Ordine ordine, boolean accettaScadenza)
    Prova a creare un ordine, se l'ordine è da contrassegnare in lavorazione e non sono disponibili le quantità richieste l'ordine non viene effettuato e viene ritornata la quantita che non è stato possbile ordinare
    static int
    queryCreaOrdine(Ordine ordine, String statoOrdine, boolean accettaInScadenza)
    Crea l'ordine componendo, se necessario, i lotti per l'ordine, settando lo stato passato come argomento
    static boolean
    Crea gli ordini relativi alle ordinazioni periodiche di una farmacia
    static boolean
    queryFirmaCollo(String firma, Collo collo)
    Firma un collo e aggiorna anche i relativi ordini contrassegnandoli con lo stato "Consegnato"
    queryMerceCaricata(int id_farmacia, LocalDate data_caricamento)
    Query per chiedere la merce caricata in data odierna per l'avviso delle 20:00
    static int
    queryModificaOrdinePeriodico(Ordine ordine, int nuova_qty)
    query per modificare la quantità di un ordine periodico da parte di un farmacista
    static boolean
    queryModificaPassword(String mail, String password, String vecchiaPassword)
    Query per modificare la password di un utente conoscendo quella vecchia in base alla variabile sistema di Main.
    static boolean
    queryModificaProduzione(int id_farmaco, int quantita)
    Modifica la produzione di un farmaco in Azienda
    static Ordine[]
    queryOrdini(int id_farmacia, LocalDate data)
    Recupera tutti gli ordini di una farmacia consegnati in una particolare data
    static Ordine[]
    Recupera tutti gli ordini con stato in attesa da parte dell'azienda
    Recupera tutti gli ordini periodici di tutte le farmacie di tutte le giornate
    queryOrdiniPeriodici(int id_farmacia)
    Recupera tutti gli ordini periodici di una determinata farmacia di tutti i giorni
    queryOrdiniPeriodici(int id_farmacia, int giornoDellaSettimana)
    Recupera tutti gli ordini periodici di una determinata farmacia in un determinato giorno
    static boolean
    queryQuantitaFarmaci(Farmaco[] listaFarmaci, int id_farmacia)
    Per ogni farmaco viene recuperata la quantità presente nel magazzino della singola farmacia identificata da id_farmacia
    static int
    queryQuantitaFarmaco(int id_farmaco)
    Recupera la quantità disponibile nel magazzino azienda, avendo l'identificativo del farmaco
    static boolean
    queryRegistraUtente(String nome, String cognome, String email, String password)
    Query per registare un utente in base alla variabile sistema di Main.
    static int
    queryScaricaMerci(int id_lotto, int id_farmacia, int qty)
    Consente di effettuare lo scarico di un farmaco appena venduto All'effettivo, decrementa la quantità del lotto in farmacia.
    static boolean
    Query per verificare 'esistenza di una mail in base alla variabile sistema di Main.
    static Collo[]
    Recupera le consegne da effettuare today da parte del corriere Utilizzato in Corriere - Visualizza Consegne
    static Ordine[]
    Recupera tutti gli ordini effettuati da tutte le farmacie.
    static Ordine[]
    Recupera tutti gli ordini effettuati da una farmacia, ordinati per data di consegna

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • DBMSDaemon

      public DBMSDaemon()
  • Method Details

    • connect

      public static void connect()
      Metodo che permette di connettersi ad entrambi i Databases.

      Vedi connectAzienda() e connectFarmacia()

    • connectFarmacia

      public static void connectFarmacia()
      Metodo utilizzato per connettersi al DBMS Farmacie. Se la connessione è già stata stabilita in precedenza, viene utilizzata quest'ultima.
    • connectAzienda

      public static void connectAzienda()
      Metodo utilizzato per connettersi al DBMS Azienda. Se la connessione è già stata stabilita in precedenza, viene utilizzata quest'ultima.
    • queryControllaCredenziali

      public static Utente queryControllaCredenziali(String mail, String password)
      Query per controllare le credenziali di un utente in base alla variabile sistema di Main

      Se Main.sistema == 0 allora ControllaCredenzialiFarmacista()
      Se Main.sistema == 1 allora ControllaCredenzialiImpiegato()
      Se Main.sistema == 2 allora ControllaCredenzialiCorriere()
      Parameters:
      mail - mail da controllare
      password - password da controllare
      Returns:
      Oggetto di tipo Utente. Fai il cast a Farmacista, Impiegato o Corriere a seconda del sistema in cui ti trovi
    • queryRegistraUtente

      public static boolean queryRegistraUtente(String nome, String cognome, String email, String password)
      Query per registare un utente in base alla variabile sistema di Main.

      Se Main.sistema == 0 allora queryRegistraFarmacista(Main.idFarmacia)
      Se Main.sistema == 1 allora queryRegistraCorriere()
      Se Main.sistema == 2 allora queryRegistraImpiegato()
      Parameters:
      nome - nome utente
      cognome - cognome utente
      email - email utente
      password - password utente hashata
      Returns:
      true se la registrazione ha avuto successo, false se non ha avuto successo
    • queryVerificaEsistenzaMail

      public static boolean queryVerificaEsistenzaMail(String mail)
      Query per verificare 'esistenza di una mail in base alla variabile sistema di Main.

      Se Main.sistema == 0 allora queryVerificaEsistenzaMailFarmacista()
      Se Main.sistema == 1 allora queryVerificaEsistenzaMailCorriere()
      Se Main.sistema == 2 allora queryVerificaEsistenzaMailImpiegato()
      Parameters:
      mail - mail da verificare
      Returns:
      true o false se esiste o meno
    • queryModificaPassword

      public static boolean queryModificaPassword(String mail, String password, String vecchiaPassword)
      Query per modificare la password di un utente conoscendo quella vecchia in base alla variabile sistema di Main.

      Se Main.sistema == 0 allora queryModificaPasswordFarmacista()
      Se Main.sistema == 1 allora queryModificaPasswordCorriere()
      Se Main.sistema == 2 allora queryModificaPasswordImpiegato()
      Parameters:
      mail - mail dell'utente
      password - nuova password
      vecchiaPassword - vecchia password
      Returns:
      True se la password è stata modificata con successo
    • queryAggiornaPassword

      public static boolean queryAggiornaPassword(String mail, String new_pwd)
      Aggiorna la password di mail senza sapere la password vecchia, usato nel caso d'uso recupera credenziali.

      Se Main.sistema == 0 allora queryAggiornaPasswordFarmacista()
      Se Main.sistema == 1 allora queryAggiornaPasswordCorriere()
      Se Main.sistema == 2 allora queryAggiornaPasswordImpiegato()
      Parameters:
      mail - mail dell'account
      new_pwd - nuova password generata dal sistema
      Returns:
      True se la password è stata aggiornata con successo
    • queryCaricaFarmaco

      public static void queryCaricaFarmaco(int id_lotto, int id_farmacia, int qty, int id_farmaco)
      Consente di effettuare il caricamento merci, carica la merce nel DB Farmacie
      Parameters:
      id_lotto - id del lotto
      id_farmacia - id della farmacia
      qty - quantita
    • aggiornaQuantitaConsegnataOrdine

      public static boolean aggiornaQuantitaConsegnataOrdine(int id_ordine, int id_lotto, int qty)
      Carica la quantità consegnata nel DB Azienda
      Parameters:
      id_ordine - id dell'ordine appena caricato
      id_lotto - id del lotto appena caricato
      qty - quantità caricata
      Returns:
      true se aggiorna almeno un record
    • queryScaricaMerci

      public static int queryScaricaMerci(int id_lotto, int id_farmacia, int qty)
      Consente di effettuare lo scarico di un farmaco appena venduto All'effettivo, decrementa la quantità del lotto in farmacia. Ritorna la quantità rimasta in magazzino
      Parameters:
      id_lotto - id del lotto che viene scaricato
      id_farmacia - id della farmacia che effettua lo scarico
      qty - quantità di farmaco che viene scaricato
      Returns:
      quantità di farmaco ancora disponibile in quella farmacia, -1 se ha errorato
    • queryMerceCaricata

      public static HashMap<Integer,Integer> queryMerceCaricata(int id_farmacia, LocalDate data_caricamento)
      Query per chiedere la merce caricata in data odierna per l'avviso delle 20:00
      Parameters:
      id_farmacia - id della farmacia da cui parte la richiesta
      data_caricamento - LocalDate data in cui parte la richiesta
      Returns:
      HashMap che contiene come chiave id_ordine (Integer) e come valore la rispettiva quantita (Integer) caricata
    • queryQuantitaFarmaci

      public static boolean queryQuantitaFarmaci(Farmaco[] listaFarmaci, int id_farmacia)
      Per ogni farmaco viene recuperata la quantità presente nel magazzino della singola farmacia identificata da id_farmacia
      Parameters:
      listaFarmaci - lista di farmaci di cui aggiornare la quantità
      id_farmacia - id della farmacia che fa la richiesta
    • queryControlloEsistenzaFarmaco

      public static int queryControlloEsistenzaFarmaco(String nome_farmaco)
      Controlla se un farmaco esiste nel db per poterne modificare la produzione
      Parameters:
      nome_farmaco - nome del farmaco
      Returns:
      id del farmaco corrispondente. -1 se non è stato trovato
    • queryModificaProduzione

      public static boolean queryModificaProduzione(int id_farmaco, int quantita)
      Modifica la produzione di un farmaco in Azienda
      Parameters:
      id_farmaco - id del farmaco di cui modificare la produzione
      quantita - nuova quantita da impostare
      Returns:
      true o false se con successo o meno
    • queryOrdiniInAttesa

      public static Ordine[] queryOrdiniInAttesa()
      Recupera tutti gli ordini con stato in attesa da parte dell'azienda
      Returns:
      Ordine[] tutti gli ordini in attesa. null se non sono stati trovati risultati o erroreComunicazioneDBMS
    • queryAggiornaQuantitaOrdine

      public static int queryAggiornaQuantitaOrdine(Ordine ordine, int nuova_qty)
      Aggiorna la quantità di un ordine, se la quantità è settata a 0 elimina l'ordine
      Parameters:
      ordine - Ordine ordine di cui modificare la quantità
      Returns:
      1 if success, -1 if error
    • queryAggiornaStatoOrdine

      public static int queryAggiornaStatoOrdine(Ordine ordine)
      Aggiornare lo stato di un ordine
      Parameters:
      ordine - ordine da aggiornare, con il nuovo stato
      Returns:
      1 if update success, -1 if update failed
    • queryVisualizzaOrdiniAzienda

      public static Ordine[] queryVisualizzaOrdiniAzienda()
      Recupera tutti gli ordini effettuati da tutte le farmacie. Utilizzato esclusivamente dall'Impiegato per effettuare VisualizzaOrdiniAzienda
      Returns:
      Ordine[] lista contenente tutti gli ordini
    • queryQuantitaFarmaco

      public static int queryQuantitaFarmaco(int id_farmaco)
      Recupera la quantità disponibile nel magazzino azienda, avendo l'identificativo del farmaco
      Parameters:
      id_farmaco - identificativo del farmaco
      Returns:
      quantità presente nel magazzino dell'azienda, -1 se qualcosa va male
    • queryCreaOrdine

      public static int queryCreaOrdine(Ordine ordine, boolean accettaScadenza)
      Prova a creare un ordine, se l'ordine è da contrassegnare in lavorazione e non sono disponibili le quantità richieste l'ordine non viene effettuato e viene ritornata la quantita che non è stato possbile ordinare
      Parameters:
      ordine - ordine da creare (o meglio, provarci)
      accettaScadenza - se si accettano farmaci in scadenza
      Returns:
      Quantita eccedente
    • queryCreaOrdine

      public static int queryCreaOrdine(Ordine ordine, String statoOrdine, boolean accettaInScadenza)
      Crea l'ordine componendo, se necessario, i lotti per l'ordine, settando lo stato passato come argomento
      Parameters:
      ordine - ordine da creare
      statoOrdine - stato dell'ordine
      accettaInScadenza - se l'ordine può accettare farmaci in scadenza
      Returns:
    • queryCorreggiOrdine

      public static boolean queryCorreggiOrdine(int qty_da_integrare, int qta_consegnata, Ordine ordine)
      Query che consente a un impiegato di correggere un ordine Nel particolare questo metodo fa:
      1. Modifica lo stato di ordine in "Corretto"
      2. Modifica la quantità di ordine in qta_consegnata
      3. Modifica la quantità di ogni lotto che compone ordine, reintegrando la quantità non consegnata
      4. Se qty_da_integrare è maggiore di 0, viene creato un ordine integrativo con suddetta quantità, con consegna prevista per il giorno successivo
      Parameters:
      qty_da_integrare - quantità che il farmacista vuole inviata per integrare
      qta_consegnata - quantità che il farmacista vuole inviata per integrare
      ordine - ordine da correggere
      Returns:
      true if success, false if error
    • queryVisualizzaOrdiniFarmacia

      public static Ordine[] queryVisualizzaOrdiniFarmacia(int id_farmacia)
      Recupera tutti gli ordini effettuati da una farmacia, ordinati per data di consegna
      Parameters:
      id_farmacia - id della farmacia che fa la richiesta
      Returns:
      Ordine[] contenente gli ordini effettuati, null se non sono stati trovati risultati o errore
    • queryAggiornaData

      public static int queryAggiornaData(Ordine ordine, LocalDate nuova_data)
      Modifica la data di consegna di un ordine da parte di un farmacista
      Parameters:
      ordine - ordine di cui modificare la data di consegna
      nuova_data - nuova data di consegna scelta dal farmacista
      Returns:
      1 if success, -1 if error
    • queryOrdiniPeriodici

      public static OrdinePeriodico[] queryOrdiniPeriodici()
      Recupera tutti gli ordini periodici di tutte le farmacie di tutte le giornate
      Returns:
      OrdinePeriodico[] contenente tutti gli ordini periodici. Ritorna null se ci sono stati errori o non sono stati trovati risultati.
    • queryOrdiniPeriodici

      public static OrdinePeriodico[] queryOrdiniPeriodici(int id_farmacia)
      Recupera tutti gli ordini periodici di una determinata farmacia di tutti i giorni
      Parameters:
      id_farmacia - id della farmacia da cui parte la richiesta
      Returns:
      OrdinePeriodico[] gli ordini periodici, null se non sono presenti o c'è stato errore
    • queryOrdiniPeriodici

      public static OrdinePeriodico[] queryOrdiniPeriodici(int id_farmacia, int giornoDellaSettimana)
      Recupera tutti gli ordini periodici di una determinata farmacia in un determinato giorno
      Parameters:
      id_farmacia - id della farmacia da cui parte la richiesta
      giornoDellaSettimana - intero rappresentante il giorno della settimana 1 LUN, ..., 7 DOM
      Returns:
      OrdinePeriodico[] gli ordini periodici, null se non sono presenti o c'è stato errore
    • queryCercaFarmaco

      public static Farmaco[] queryCercaFarmaco(String nome, String principio_attivo)
      Cerca un farmaco avendo o il nome, o il principio attivo o entrambi
      Parameters:
      nome - nome farmaco
      principio_attivo - principio attivo farmaco
      Returns:
      Farmaco[] array di farmaci trovati, null se nessun risultato oppure è avvenuto erroreComunicazioneDBMS;
    • queryModificaOrdinePeriodico

      public static int queryModificaOrdinePeriodico(Ordine ordine, int nuova_qty)
      query per modificare la quantità di un ordine periodico da parte di un farmacista
      Parameters:
      ordine - ordine periodico da modificare
      nuova_qty - nuova quantità da settare
      Returns:
      1 if success, -1 if error
    • queryVisualizzaConsegne

      public static Collo[] queryVisualizzaConsegne(LocalDate data)
      Recupera le consegne da effettuare today da parte del corriere Utilizzato in Corriere - Visualizza Consegne
      Parameters:
      data - LocalDate data odierna
      Returns:
      Collo[] tutti i colli, consegnati e non, di today
    • queryFirmaCollo

      public static boolean queryFirmaCollo(String firma, Collo collo)
      Firma un collo e aggiorna anche i relativi ordini contrassegnandoli con lo stato "Consegnato"
      Parameters:
      firma - concatenazione di nome e cognome del firmante
      collo - collo da firmare
      Returns:
      true if success, false if error
    • queryAggiornaScorte

      public static void queryAggiornaScorte(LocalDate today)
      Aggiorna le scorte di un determinato giorno della settimana, nell'effettivo quindi viene utilizzato per effettuare produzione periodica
      Parameters:
      today - LocalDate, serve per il giorno di produzione (1 LUN, ..., 7 DOM) e per capire quando scadrà il lotto prodotto
    • queryAggiornaOrdinePeriodico

      public static int queryAggiornaOrdinePeriodico(int quantita, OrdinePeriodico ordinePeriodico)
      Aggiorna la quantita di un ordine periodico
      Parameters:
      quantita - nuova quantita
      ordinePeriodico - ordine periodico da modificare
      Returns:
      1 if success, -1 if error
    • queryOrdini

      public static Ordine[] queryOrdini(int id_farmacia, LocalDate data)
      Recupera tutti gli ordini di una farmacia consegnati in una particolare data
      Parameters:
      id_farmacia - id della farmacia che fa la richiesta
      data - data di consegna
      Returns:
      Ordine[]
    • queryCreaOrdini

      public static boolean queryCreaOrdini(OrdinePeriodico[] ordini)
      Crea gli ordini relativi alle ordinazioni periodiche di una farmacia
      Parameters:
      ordini - Ordini Periodici da evadere
      Returns:
      se la funzione va a buon fine o meno (tecnicamente non dovrebbe mai andare male)
    • queryControllaQuantita

      public static int queryControllaQuantita(Ordine ordine)
      Recupera la quantità effettivamente consegnata di un ordine
      Parameters:
      ordine - Ordine di cui si vuole recuperare la quantità consegnata
      Returns:
      la quantità consegnata
    • queryCollo

      public static Collo queryCollo(Ordine ordine)
      Query utilizzata per poter stampare la ricevuta del Collo avendo un ordine
      Parameters:
      ordine - ordine di cui recuperare il collo associato
      Returns:
      Collo a cui appartiene l'ordine consegnato