import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.StringTokenizer;
import jxl.Cell;
import jxl.LabelCell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import javax.swing.SwingConstants;
import java.awt.Font;
import java.awt.Color;
public class LudecaLogInServer {
private JFrame frmLudecaLoginServer;
private static JTable table = new JTable();
private JPanel panel_1;
static JTextArea schermoLog = new JTextArea();
static BufferedReader in ;
static DataOutputStream out;
static ServerSocket serverSocket = null;
static Socket clientSocket = null;
static String[] nomiColonne = new String[] {"OPERATORE", "DATA LOG-IN",
"TELEFONO", "PAUSA", "N\u00B0 PAUSE"};
static String[][] valoriCelle = new String[][] {
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
{null, null, null, null, null},{null, null, null, null, null},{null, null, null, null, null},
};
final static DefaultTableModel modelloTabella = new DefaultTableModel(valoriCelle, nomiColonne);
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
LudecaLogInServer window = new LudecaLogInServer();
window.frmLudecaLoginServer.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
attivaConnessioneServer();
accettaConnessioneClient();
/*String ascoltoDelServer=new String("ON");
while ( ascoltoDelServer.equals("QUIT")==false && ascoltoDelServer.equals(null)==false)
{
try {
System.out.println("ascolto1= "+ascoltoDelServer);
ascoltoDelServer = in.readLine();
LudecaLogInServer.accettaConnessioneClient();
System.out.println("ascolto2= "+ascoltoDelServer);
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
ascoltoDelServer="ON";*/
disconnettiServer();
}
/**
* Create the application.
*/
public LudecaLogInServer() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tu...feel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClass Name());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(LudecaLogInServ er.class.getName()).log(java.util.logging.Level.SE VERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(LudecaLogInServ er.class.getName()).log(java.util.logging.Level.SE VERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(LudecaLogInServ er.class.getName()).log(java.util.logging.Level.SE VERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(LudecaLogInServ er.class.getName()).log(java.util.logging.Level.SE VERE, null, ex);
}
frmLudecaLoginServer = new JFrame();
frmLudecaLoginServer.setTitle("Ludeca Log-In Server");
frmLudecaLoginServer.setResizable(false);
frmLudecaLoginServer.setBounds(100, 100, 580, 601);
frmLudecaLoginServer.setDefaultCloseOperation(JFra me.EXIT_ON_CLOSE);
frmLudecaLoginServer.getContentPane().setLayout(nu ll);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 63, 554, 361);
frmLudecaLoginServer.getContentPane().add(scrollPa ne);
table.setCellSelectionEnabled(true);
scrollPane.setViewportView(table);
table.setModel(modelloTabella);
table.getColumnModel().getColumn(0).setPreferredWi dth(170);
table.getColumnModel().getColumn(1).setPreferredWi dth(200);
table.getColumnModel().getColumn(2).setPreferredWi dth(64);
table.getColumnModel().getColumn(3).setPreferredWi dth(43);
table.getColumnModel().getColumn(4).setPreferredWi dth(61);
panel_1 = new JPanel();
panel_1.setBounds(0, 532, 574, 34);
frmLudecaLoginServer.getContentPane().add(panel_1) ;
panel_1.setLayout(null);
JButton btnNewButton = new JButton("AGGIORNA SCHERMO");
btnNewButton.setBounds(10, 11, 139, 23);
panel_1.add(btnNewButton);
JButton btnNewButton_1 = new JButton("CREA LOG-IN");
btnNewButton_1.setBounds(440, 11, 124, 23);
panel_1.add(btnNewButton_1);
JButton btnNewButton_2 = new JButton("SALVA FILE");
btnNewButton_2.setBounds(245, 11, 89, 23);
panel_1.add(btnNewButton_2);
JPanel panel = new JPanel();
panel.setBounds(0, 0, 564, 52);
frmLudecaLoginServer.getContentPane().add(panel);
panel.setLayout(null);
JLabel lblNewLabel = new JLabel("Ludeca Log-In Server");
lblNewLabel.setForeground(Color.BLUE);
lblNewLabel.setFont(new Font("SansSerif", Font.BOLD, 30));
lblNewLabel.setHorizontalAlignment(SwingConstants. CENTER);
lblNewLabel.setBounds(0, 0, 574, 52);
panel.add(lblNewLabel);
JScrollPane scrollPane_1 = new JScrollPane();
scrollPane_1.setBounds(10, 431, 554, 101);
frmLudecaLoginServer.getContentPane().add(scrollPa ne_1);
schermoLog.setText("");
scrollPane_1.setViewportView(schermoLog);
}
public static void accettaConnessioneClient(){
String esitoAccettazioneClient = new String();
esitoAccettazioneClient=null;
try
{
clientSocket = serverSocket.accept();
//serverSocket.setReuseAddress(true);
in= new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
//Stream di output
out=new DataOutputStream(clientSocket.getOutputStream());
String loginOperatore = new String();
loginOperatore=in.readLine().toUpperCase();
Cell cellaStringaLogIn;
String stringaEstrattaDaCella = "";
LabelCell labelCellLogIn;
//Apro il file di excel da leggere
Workbook workbook = Workbook.getWorkbook(new File("C:\\Documents and Settings\\Operatore\\Desktop\\listalogin.xls"));
//Seleziono il foglio sul quale voglio operare (il primo foglio ha indice 0)
Sheet sheet = workbook.getSheet(0);
//Leggo tutte le righe
int riga = 1;//indice riga, parto da 1 per saltare l'intestazione dei campi
int numeroRighe = sheet.getRows();//calcolo quante righe ci sono nel foglio
System.out.println(numeroRighe);
//Attento che c'è una riga in più per l'intestazione!
while(riga<numeroRighe)
{
cellaStringaLogIn = sheet.getCell(0, riga);
labelCellLogIn = (LabelCell)cellaStringaLogIn;
stringaEstrattaDaCella = labelCellLogIn.getString();
System.out.println("Riga:" + riga + "nome:" + stringaEstrattaDaCella +"LOGIN="+loginOperatore);
// Ora costruisco lo StringTokenizer; separatori: virgola e spazio
StringTokenizer tokenizer = new StringTokenizer(loginOperatore.toString(), ".");
// Ottengo tutte le parole
String [] datiLogin = new String[tokenizer.countTokens()];
int j = 0;
while (tokenizer.hasMoreTokens())
{
datiLogin[j] = tokenizer.nextToken();
System.out.println("dati token "+j+" = "+datiLogin[j]);
j++;
}
if(stringaEstrattaDaCella.equals(datiLogin[0]+"."+datiLogin[1]+"."))
{
esitoAccettazioneClient="OK";
Tempo tempo = new Tempo();
//final Date dataCompleta = tempo.dataCompleta;
String dataEora= new String();
dataEora = Integer.toString(tempo.giorno)+"/"+tempo.mese+"/"+Integer.toString(tempo.anno)+" - "+Integer.toString(tempo.ore)+"."+Integer.toString (tempo.minuti)+"."+Integer.toString(tempo.secondi) ;
Operatore op = new Operatore(datiLogin[0], datiLogin[2],dataEora);
op.setDataLogIn(dataEora);
table.setValueAt(op.getUsername(),0,0);
table.setValueAt(op.getDataLogIn(),0,1);
table.setValueAt(op.getTelefono(),0,2);
table.setValueAt(op.getPausa(),0,3);
table.setValueAt(op.getContatorePause(),0,4);
//schermoLog.setText("L'Operatore: "+op.getUsername()+" si è connesso alla Postazione "+op.getTelefono()+" in Data "+dataEora);
schermoLog.insert("[Accesso Log-In]: [Operatore: "+op.getUsername()+" Postazione: "+op.getTelefono()+" Data: " +dataEora+"]\n" , schermoLog.getColumns()); //RIVEDI COLONNE
System.out.println("UTENTE CORRISPONDE!! "+riga+" op= "+op.getUsername()+" login= "+loginOperatore);
break;
}
else
{
esitoAccettazioneClient="DATI_ERRATI";
Tempo tempo = new Tempo();
//final Date dataCompleta = tempo.dataCompleta;
String dataEora= new String();
dataEora = Integer.toString(tempo.giorno)+"/"+Integer.toString(tempo.mese)+"/"+Integer.toString(tempo.mese)+"/"+Integer.toString(tempo.anno)+" - "+Integer.toString(tempo.ore)+"."+Integer.toString (tempo.minuti)+"."+Integer.toString(tempo.secondi) ;
//schermoLog.setText("Fallito un Log-In! [Postazione: "+datiLogin[2]+" Data: " +dataEora+"] ...Conosci "+datiLogin[0]+"?" );
schermoLog.insert("[Negato Log-In]: [Postazione: "+datiLogin[2]+" Data: " +dataEora+"] ...Conosci "+datiLogin[0]+"?" , schermoLog.getColumns());
System.out.println("UTENTE NON CORRISPONDE");
}
riga++;
}
out.writeBytes(esitoAccettazioneClient);
}
catch (IOException e)
{
System.out.println(e);
System.out.println("Errore di Accettare il Client: Errore di Accettazione o Comunicazione");
}
catch (UnknownError e)
{
System.out.println(e);
System.out.println("Errore di Accettare il Client: ERRORE SCONOSCIUTO");
}
catch (BiffException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}