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(); } } }