java.lang.Object
com.ogc.pharmagcode.Utils.DBMSDaemon
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic boolean
aggiornaQuantitaConsegnataOrdine
(int id_ordine, int id_lotto, int qty) Carica la quantità consegnata nel DB Aziendastatic void
connect()
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 farmacistastatic int
queryAggiornaOrdinePeriodico
(int quantita, OrdinePeriodico ordinePeriodico) Aggiorna la quantita di un ordine periodicostatic boolean
queryAggiornaPassword
(String mail, String new_pwd) Aggiorna la password dimail
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'ordinestatic void
queryAggiornaScorte
(LocalDate today) Aggiorna le scorte di un determinato giorno della settimana, nell'effettivo quindi viene utilizzato per effettuare produzione periodicastatic int
queryAggiornaStatoOrdine
(Ordine ordine) Aggiornare lo stato di un ordinestatic void
queryCaricaFarmaco
(int id_lotto, int id_farmacia, int qty, int id_farmaco) Consente di effettuare il caricamento merci, carica la merce nel DB Farmaciestatic Farmaco[]
queryCercaFarmaco
(String nome, String principio_attivo) Cerca un farmaco avendo o il nome, o il principio attivo o entrambistatic Collo
queryCollo
(Ordine ordine) Query utilizzata per poterstampare la ricevuta
del Collo avendo un ordinestatic Utente
queryControllaCredenziali
(String mail, String password) Query per controllare le credenziali di un utente in base alla variabilesistema
diMain
SeMain.sistema == 0
alloraControllaCredenzialiFarmacista()
SeMain.sistema == 1
alloraControllaCredenzialiImpiegato()
SeMain.sistema == 2
alloraControllaCredenzialiCorriere()
static int
queryControllaQuantita
(Ordine ordine) Recupera la quantità effettivamente consegnata di un ordinestatic int
queryControlloEsistenzaFarmaco
(String nome_farmaco) Controlla se un farmaco esiste nel db per poterne modificare la produzionestatic 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 diordine
in"Corretto"
Modifica la quantità diordine
inqta_consegnata
Modifica la quantità di ogni lotto che componeordine
, reintegrando la quantità non consegnata Seqty_da_integrare
è maggiore di 0, viene creato un ordine integrativo con suddetta quantità, con consegna prevista per il giorno successivostatic 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 ordinarestatic int
queryCreaOrdine
(Ordine ordine, String statoOrdine, boolean accettaInScadenza) Crea l'ordine componendo, se necessario, i lotti per l'ordine, settando lo stato passato come argomentostatic boolean
queryCreaOrdini
(OrdinePeriodico[] ordini) Crea gli ordini relativi alle ordinazioni periodiche di una farmaciastatic 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:00static int
queryModificaOrdinePeriodico
(Ordine ordine, int nuova_qty) query per modificare la quantità di un ordine periodico da parte di un farmacistastatic boolean
queryModificaPassword
(String mail, String password, String vecchiaPassword) Query per modificare la password di un utente conoscendo quella vecchia in base alla variabilesistema
diMain
.static boolean
queryModificaProduzione
(int id_farmaco, int quantita) Modifica la produzione di un farmaco in Aziendastatic Ordine[]
queryOrdini
(int id_farmacia, LocalDate data) Recupera tutti gli ordini di una farmacia consegnati in una particolare datastatic Ordine[]
Recupera tutti gli ordini con stato in attesa da parte dell'aziendastatic OrdinePeriodico[]
Recupera tutti gli ordini periodici di tutte le farmacie di tutte le giornatestatic OrdinePeriodico[]
queryOrdiniPeriodici
(int id_farmacia) Recupera tutti gli ordini periodici di una determinata farmacia di tutti i giornistatic OrdinePeriodico[]
queryOrdiniPeriodici
(int id_farmacia, int giornoDellaSettimana) Recupera tutti gli ordini periodici di una determinata farmacia in un determinato giornostatic boolean
queryQuantitaFarmaci
(Farmaco[] listaFarmaci, int id_farmacia) Per ogni farmaco viene recuperata la quantità presente nel magazzino della singola farmacia identificata daid_farmacia
static int
queryQuantitaFarmaco
(int id_farmaco) Recupera la quantità disponibile nel magazzino azienda, avendo l'identificativo del farmacostatic boolean
queryRegistraUtente
(String nome, String cognome, String email, String password) Query per registare un utente in base alla variabilesistema
diMain
.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 variabilesistema
diMain
.static Collo[]
Recupera le consegne da effettuaretoday
da parte del corriere Utilizzato inCorriere - Visualizza Consegne
static Ordine[]
Recupera tutti gli ordini effettuati da tutte le farmacie.static Ordine[]
queryVisualizzaOrdiniFarmacia
(int id_farmacia) Recupera tutti gli ordini effettuati da una farmacia, ordinati per data di consegna
-
Constructor Details
-
DBMSDaemon
public DBMSDaemon()
-
-
Method Details
-
connect
public static void connect()Metodo che permette di connettersi ad entrambi i Databases. -
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
Query per controllare le credenziali di un utente in base alla variabilesistema
diMain
SeMain.sistema == 0
alloraControllaCredenzialiFarmacista()
SeMain.sistema == 1
alloraControllaCredenzialiImpiegato()
SeMain.sistema == 2
alloraControllaCredenzialiCorriere()
- Parameters:
mail
- mail da controllarepassword
- password da controllare- Returns:
- Oggetto di tipo
Utente
. Fai il cast aFarmacista
,Impiegato
oCorriere
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 variabilesistema
diMain
.
SeMain.sistema == 0
alloraqueryRegistraFarmacista(Main.idFarmacia)
SeMain.sistema == 1
alloraqueryRegistraCorriere()
SeMain.sistema == 2
alloraqueryRegistraImpiegato()
- Parameters:
nome
- nome utentecognome
- cognome utenteemail
- email utentepassword
- password utente hashata- Returns:
true
se la registrazione ha avuto successo,false
se non ha avuto successo
-
queryVerificaEsistenzaMail
Query per verificare 'esistenza di una mail in base alla variabilesistema
diMain
.
SeMain.sistema == 0
alloraqueryVerificaEsistenzaMailFarmacista()
SeMain.sistema == 1
alloraqueryVerificaEsistenzaMailCorriere()
SeMain.sistema == 2
alloraqueryVerificaEsistenzaMailImpiegato()
- Parameters:
mail
- mail da verificare- Returns:
- true o false se esiste o meno
-
queryModificaPassword
Query per modificare la password di un utente conoscendo quella vecchia in base alla variabilesistema
diMain
.
SeMain.sistema == 0
alloraqueryModificaPasswordFarmacista()
SeMain.sistema == 1
alloraqueryModificaPasswordCorriere()
SeMain.sistema == 2
alloraqueryModificaPasswordImpiegato()
- Parameters:
mail
- mail dell'utentepassword
- nuova passwordvecchiaPassword
- vecchia password- Returns:
- True se la password è stata modificata con successo
-
queryAggiornaPassword
Aggiorna la password dimail
senza sapere la password vecchia, usato nel caso d'uso recupera credenziali.
SeMain.sistema == 0
alloraqueryAggiornaPasswordFarmacista()
SeMain.sistema == 1
alloraqueryAggiornaPasswordCorriere()
SeMain.sistema == 2
alloraqueryAggiornaPasswordImpiegato()
- Parameters:
mail
- mail dell'accountnew_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 lottoid_farmacia
- id della farmaciaqty
- 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 caricatoid_lotto
- id del lotto appena caricatoqty
- 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 scaricatoid_farmacia
- id della farmacia che effettua lo scaricoqty
- 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 -
queryQuantitaFarmaci
Per ogni farmaco viene recuperata la quantità presente nel magazzino della singola farmacia identificata daid_farmacia
- Parameters:
listaFarmaci
- lista di farmaci di cui aggiornare la quantitàid_farmacia
- id della farmacia che fa la richiesta
-
queryControlloEsistenzaFarmaco
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 produzionequantita
- nuova quantita da impostare- Returns:
- true o false se con successo o meno
-
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
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
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
Recupera tutti gli ordini effettuati da tutte le farmacie. Utilizzato esclusivamente dall'Impiegato per effettuareVisualizzaOrdiniAzienda
- 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
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
Crea l'ordine componendo, se necessario, i lotti per l'ordine, settando lo stato passato come argomento- Parameters:
ordine
- ordine da crearestatoOrdine
- stato dell'ordineaccettaInScadenza
- se l'ordine può accettare farmaci in scadenza- Returns:
-
queryCorreggiOrdine
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
inqta_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
- Parameters:
qty_da_integrare
- quantità che il farmacista vuole inviata per integrareqta_consegnata
- quantità che il farmacista vuole inviata per integrareordine
- ordine da correggere- Returns:
- true if success, false if error
- Modifica lo stato di
-
queryVisualizzaOrdiniFarmacia
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
Modifica la data di consegna di un ordine da parte di un farmacista- Parameters:
ordine
- ordine di cui modificare la data di consegnanuova_data
- nuova data di consegna scelta dal farmacista- Returns:
- 1 if success, -1 if error
-
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
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
Recupera tutti gli ordini periodici di una determinata farmacia in un determinato giorno- Parameters:
id_farmacia
- id della farmacia da cui parte la richiestagiornoDellaSettimana
- 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
Cerca un farmaco avendo o il nome, o il principio attivo o entrambi- Parameters:
nome
- nome farmacoprincipio_attivo
- principio attivo farmaco- Returns:
Farmaco
[] array di farmaci trovati, null se nessun risultato oppure è avvenuto erroreComunicazioneDBMS;
-
queryModificaOrdinePeriodico
query per modificare la quantità di un ordine periodico da parte di un farmacista- Parameters:
ordine
- ordine periodico da modificarenuova_qty
- nuova quantità da settare- Returns:
- 1 if success, -1 if error
-
queryVisualizzaConsegne
Recupera le consegne da effettuaretoday
da parte del corriere Utilizzato inCorriere - Visualizza Consegne
-
queryFirmaCollo
Firma un collo e aggiorna anche i relativi ordini contrassegnandoli con lo stato "Consegnato"- Parameters:
firma
- concatenazione di nome e cognome del firmantecollo
- collo da firmare- Returns:
- true if success, false if error
-
queryAggiornaScorte
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
Aggiorna la quantita di un ordine periodico- Parameters:
quantita
- nuova quantitaordinePeriodico
- ordine periodico da modificare- Returns:
- 1 if success, -1 if error
-
queryOrdini
Recupera tutti gli ordini di una farmacia consegnati in una particolare data- Parameters:
id_farmacia
- id della farmacia che fa la richiestadata
- data di consegna- Returns:
Ordine
[]
-
queryCreaOrdini
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
Recupera la quantità effettivamente consegnata di un ordine- Parameters:
ordine
- Ordine di cui si vuole recuperare la quantità consegnata- Returns:
- la quantità consegnata
-
queryCollo
Query utilizzata per poterstampare la ricevuta
del Collo avendo un ordine- Parameters:
ordine
- ordine di cui recuperare il collo associato- Returns:
- Collo a cui appartiene l'ordine consegnato
-