codice:
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 implements Runnable{
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[50][4];
static DefaultTableModel modelloTabella=null;
/**
* Launch the application.
*/
/**
* Create the application.
*/
public LudecaLogInServer(final Socket clientSocket) {
initialize();
//this.clientSocket=clientSocket;
}
/**
* Initialize the contents of the frame.
*/
@SuppressWarnings("unused")
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.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(LudecaLogInServer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(LudecaLogInServer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(LudecaLogInServer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(LudecaLogInServer.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
frmLudecaLoginServer = new JFrame();
frmLudecaLoginServer.setTitle("Ludeca Log-In Server");
frmLudecaLoginServer.setResizable(false);
frmLudecaLoginServer.setBounds(100, 100, 580, 601);
frmLudecaLoginServer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmLudecaLoginServer.getContentPane().setLayout(null);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 63, 554, 361);
frmLudecaLoginServer.getContentPane().add(scrollPane);
for(String[] riga:valoriCelle)
{
for(String cella:riga)
{
cella="null";
}
}
modelloTabella = new DefaultTableModel(valoriCelle, nomiColonne);
table.setCellSelectionEnabled(true);
scrollPane.setViewportView(table);
table.setModel(modelloTabella);
table.getColumnModel().getColumn(0).setPreferredWidth(170);
table.getColumnModel().getColumn(1).setPreferredWidth(200);
table.getColumnModel().getColumn(2).setPreferredWidth(64);
table.getColumnModel().getColumn(3).setPreferredWidth(43);
table.getColumnModel().getColumn(4).setPreferredWidth(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(scrollPane_1);
schermoLog.setText("");
scrollPane_1.setViewportView(schermoLog);
}
@Override
public void run() {
String esitoAccettazioneClient = new String();
esitoAccettazioneClient=null;
try
{
//serverSocket.setReuseAddress(true);
in= new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
//Stream di output
out=new DataOutputStream(clientSocket.getOutputStream());
while(true)
{
String loginOperatore = new String();
loginOperatore=in.readLine().toUpperCase();
if (loginOperatore == null || loginOperatore.equals("QUIT"))
{
break;
}
//out.writeBytes(loginOperatore + '\n');
System.out.println("Il Client ha scritto: " + loginOperatore);
Cell cellaStringaLogIn;
String stringaEstrattaDaCella = "";
LabelCell labelCellLogIn;
//Apro il file di excel da leggere
Workbook workbook = Workbook.getWorkbook(new File("C:\\Users\\tl2cwdr6hyyq2rvm6tv2\\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
//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);
out.flush();
}
out.close();
in.close();
System.out.println("Ho ricevuto una chiamata di chiusura da:\n"
+ clientSocket + "\n");
clientSocket.close();
}
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();
}
}
}