Via Strada 76 n°1 
95018 Riposto (CT)

 

5.3.8 Implementazione server

Documento: pp538rev00

 

 

 

 

 

 

 

 

 

 

 

5.3.8.1       Sviluppo delle classi

 

Si rimanda all’allegato per la visione delle classi. Qui di seguito, viene riportata solo una breve descrizione.

 

BrowserControl.java

Responsabile: Millauro Andrea

Programmatori: Francesco Perricone

Descrizione : Questa classe gestisce l'apertura del browser web di default del sistema operativo, per permettere la visualizzazione delle pagine html che fanno da guida.

 

ChatHandler.java

Responsabile: Millauro Andrea

Programmatori: Marco Recupero, Tonino Scorciapino

Descrizione: Questa classe implementa la gestione del network dell'applicazione lato server.Contiene tutti i metodi utili per la connessione ai client e delle loro amministrazione.

 

FrameAmStr2.java

Responsabile: Millauro Andrea

Programmatori: Marco Recupero, Tonino Scorciapino

Descrizione: Questa è la classe che coordina il funzionamento interagendo con la rete. Richiama le classi qui descritte istanziando la classe FrameUtility.

 

FrameAutori

Responsabile: Millauro Andrea

Programmatori: Francesco Perricone

Descrizione: Questa classe permette di visualizzare la lista degli autori. Richiamata dalla classe FrameAmStr2.

 

FrameUtentiConnessi.java

Responsabile: Millauro Andrea

Programmatori: Tutone Dario

Descrizione: Questa classe permette di visualizzare graficamente l’elenco degli utenti connessi, avvalendosi dell’aiuto della classe PannelloUtentiConnessi.

 

FrameUtility.java

Responsabile: Millauro Andrea

Programmatori: Marco Recupero, Tonino Scorciapino, Tutone Dario

Dscrizione: Questa è la classe che costruisce l’interfaccia dell’amministratore. Richiama le classi qui descritte per la costruzione del frame principale.

 

JDBCServer.java

Responsabile: Millauro Andrea

Programmatori: Tutone Dario

Descrizione: Questa è la classe che il server utilizza per interfacciarsi con il database. Sono contenuti una serie di metodi che implementano le query utili.

 

PanelAutori.java

Responsabile: Millauro Andrea

Programmatori: Francesco Perricone

Descrizione: Questa classe implementa la grafica del FreameAutori.

 

PanelStorico.java

Responsabile: Millauro Andrea

Programmatori: Marco Recupero, Tonino Scorciapino

Descrizione: Questa classe, implementa il contenuto grafico della classe StoricoLog.

 

pannello1.java

Responsabile: Millauro Andrea

Programmatori: Tutone Dario

Descrizione: Questa classe implementa la visualizzazione grafica del logo dell’applicazione. Richiamata dalla classe pannelloA.

 

pannello2.java

Responsabile: Millauro Andrea

Programmatori: Marco Recupero, Tonino Scorciapino

Descrizione: Questa classe implementa la parte grafica del settaggio timer. Richiamata dalla classe pannelloA.

 

pannello3.java

Responsabile: Millauro Andrea

Programmatori: Marco Recupero, Tonino Scorciapino

Descrizione: Questa classe implementa la parte grafica del settaggio limite utenti connessi. Richiamata dalla classe pannelloA.

 

pannelloA.java

Responsabile: Millauro Andrea

Programmatori: Marco Recupero, Tonino Scorciapino

Descrizione: Questa classe, assembla le classi panello1,2,3 in modo da costruire graficamente la prima parte del frame amministratore.

 

pannelloB.java

Responsabile: Millauro Andrea

Programmatori: Dario Tutone

Descrizione: Questa classe, implementa la seconda parte del pannello amministratore, assemblando al suo  interno, un’area di testo che contiene informazione sullo stato attuale del registro di log, e due bottoni che permettono di accedere alla lista degli utenti connessi e allo storico di log.

 

PannelloUtentiConnessi.java

Responsabile: Millauro Andrea

Programmatori: Tutone Dario

Descrizione: Questa classe implementa la parte grafica del FrameUtentiConnessi, ricavando le infirmazini d’interresse dal database.

 

RegisterTools.java

Responsabile: Millauro Andrea

Programmatori: Marco Recupero, Tonino Scorciapino

 

Descrizione: Questa classe, utilizzata dal frame StoricoLog, implementa alcuni metodi utili per la lettura e la scrittura sul registro di log.

 

StoricoLog.java

Responsabile: Millauro Andrea

Programmatori: Marco Recupero, Tonino Scorciapino

Descrizione: Questa classe, permette la visualizzazione della lista degli utenti connessi.

 

5.3.8.2 Sviluppo del data base

 

In riferimento a quanto descritto nella fase di progettazione nel documento pp535rev00, si ottengono i seguenti codici:

 

Creazione del database

 

CREATE TABLE  impostazioni

(

        numerogiocatori int(10) unsigned NOT NULL default '0',

        setOrologio int(11) NOT NULL default '0',

        statoOrologio tinyint(1) NOT NULL default '1',

        PRIMARY KEY  (numerogiocatori)

)

 

CREATE TABLE  partita

(

        Id int(10) unsigned NOT NULL auto_increment,

        Data_partita date NOT NULL,

        NumeroEstratto int(10) unsigned NOT NULL,

        PRIMARY KEY  (Id)

)

 

 

CREATE TABLE  puntata

(

        idPuntata int(10) unsigned NOT NULL auto_increment,

        Utente_idUtente int(10) unsigned NOT NULL,

        Partita_Id int(10) unsigned NOT NULL,

        TipoPuntata varchar(20) NOT NULL default '',

        SoldiGiocati int(10) unsigned NOT NULL,

        Vincita int(10) unsigned NOT NULL default '0',

        Numeri varchar(65) NOT NULL default '',

        PRIMARY KEY  (idPuntata),

        KEY Partita_Id (Partita_Id),

        KEY Utente_idUtente (Utente_idUtente),

        CONSTRAINT puntata_ibfk_1 FOREIGN KEY (Partita_Id) REFERENCES

        partita (Id) ON DELETE CASCADE ON UPDATE CASCADE,

        CONSTRAINT puntata_ibfk_2 FOREIGN KEY (Utente_idUtente)

        REFERENCES utente (idUtente) ON DELETE NO ACTION ON UPDATE

        NO ACTION

)

 

 

CREATE TABLE  usertemp

(

        ip char(15) NOT NULL default '',

        user_2  varchar(45) NOT NULL default '' REFERENCES

        utente(Nick) ON DELETE NO ACTION ON UPDATE NO ACTION,

        PRIMARY KEY  (ip)

)

 

 

CREATE TABLE  utente

(

        idUtente int(10) unsigned NOT NULL auto_increment,

        Nick varchar(255) NOT NULL,

        Passwd varchar(255) NOT NULL,

        Credito float NOT NULL,

        Stato float NOT NULL default '0',

        PRIMARY KEY  (idUtente)

)

 

Query lato client

 

1)login: "select count(*) from Utente where Nick='"+nickname+"' and Passwd='"+passwd+"'"

 

 

2)registrazione: "select count(Nick) from Utente where Nick="+nickname;

                           "select max(idUtente) from Utente";

                           "insert into Utente values

                          ("+r+","+nickname+","+passwd+","+"10000,0)"

 

3)disponibilità posti liberi: "select count(*) from usertemp ";

                                            "select numerogiocatori from impostazioni";

 

4)prelievo timer dal server: "select setOrologio from impostazioni ";

 

5)verifica del timer attivo del client: "select statoOrologio from impostazioni ";

 

6)numero estratto: "select max(Id) from partita";

                                "select NumeroEstratto from partita where Id="+r;

 

7)credito residuo: "select Credito from utente where Nick='"+user+"';

 

8)vecchio credito: "select Stato from utente where Nick='"+user+"'

 

9)lista numeri estratti: "select NumeroEstratto from partita;"

 

Query lato server

 

1)inserimento utente temporaneo: "insert into usertemp values

                                                       ('"+IP+"',"+"'"+user+"')"

 

2)cancellazione utente temporaneo: "delete from usertemp where ip='"+IP+"'"

 

3)numero giocatori attuali: "select numerogiocatori from impostazioni "

 

4)settaggio numero massimo giocatori : "update impostazioni set

                                                                numerogiocatori="+ng+" where

                                                                numerogiocatori<100;"

 

5)settaggio timer server: "update impostazioni set setOrologio="+tempo+" where

                                        numerogiocatori<100;"

 

6)settaggio stato del timer: "update impostazioni set statoOrologio="+stato+"

                                           where numerogiocatori<100;"

 

7)impostazioni del timer: "select setOrologio from impostazioni ";

 

8)inserimento nuova partita: "select setOrologio from impostazioni "

                                                "insert into partita values

                                             ("+r+",now(),"+numeroEstratto+")"

 

9)inserimento nuova puntata: "select max(idPuntata) from puntata"

                                                   "select idUtente from utente where

                                                Nick='"+utente+"'"

                                                   "select max(Id) from partita"

                                                   "insert into puntata

                                                values("+r+","+snp+","+spa+","+"'"+tipo+"'"+",

                                                "+chip+","+vincita+","+"'"+numeri+"')"

 

10)ultimo estratto: "select max(Id) from partita"

                                "select NumeroEstratto from partita where Id="+r

 

11)calcolo vincite: "select max(Id) from partita"

                                "select  NumeroEstratto from partita where Id="+r

                                "select count(*) from puntata pu,partita pa,utente u where

                                pu.Partita_Id=pa.Id and   pu.Utente_idUtente=u.idUtente and

                              pa.Id="+r+";"

                                "select * from puntata pu,partita pa,utente u where

                              pu.Partita_Id=pa.Id and   pu.Utente_idUtente=u.idUtente and

                              pa.Id="+r+";")

                              "update utente set

                              Credito=Credito+("+(soldigiocati+"*"+vincita)+"-

                              "+soldigiocati+") where "+utente+"=idUtente;"

                                "update utente set Credito=Credito-"+soldigiocati+" where

                              "+utente+"=idUtente;"

 

12)Aggirnamento del credito parziale: "select count(*) from utente;"

                                                                  "update utente set Stato=Credito"

 

13)elenco degli utenti connessi: "select * from usertemp ;"