Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.80 KB | None | 0 0
  1. package server;
  2.  
  3. import java.io.*;
  4. import java.net.*;
  5. import java.util.Collections;
  6. import java.util.LinkedList;
  7.  
  8. import client.NoConsistentEpsException;
  9. import client.NoConsistentMinSupException;
  10. import client.ServerException;
  11. import server.data.Data;
  12. import server.data.EmptySetException;
  13. import server.database.DBAccess;
  14. import server.database.DatabaseConnectionException;
  15. import server.keyboardinput.Keyboard;
  16. import server.mining.ClosedPatternArchive;
  17. import server.mining.ClosedPatternMiner;
  18. import server.mining.FrequentPattern;
  19. import server.mining.FrequentPatternMiner;
  20. import server.utility.LinkList;
  21. import server.utility.Puntatore;
  22.  
  23. public class Server {
  24. public static final int PORT = 8080;
  25. public static void main(String[] args)throws IOException, ServerException{
  26. ServerSocket ss = new ServerSocket(PORT); // Il Server si mette in ascolto sulla porta 8080
  27. System.out.println("Server Avviato: " + ss);
  28.  
  29. String choice = ""; // Operazione scelta sul client
  30. String table_name = "";
  31. float minSup = 0F;
  32. float eps = 0F;
  33. String path = "";
  34.  
  35. try{
  36. // Il server accetta la connessione
  37. Socket socket = ss.accept();
  38. // La connessione è avvenuta
  39.  
  40. BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  41. PrintWriter pout = new PrintWriter( new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
  42.  
  43. try{
  44. System.out.println("Connessione accettata: " + socket);
  45.  
  46. //Ricevo la scelta effettuata sul menu
  47. choice = in.readLine();
  48. System.out.println("Ricevuto da Client: " + choice);
  49.  
  50.  
  51. //Se si richiede la scoperta di pattern chiusi allora si richiedono gli altri valori
  52. if(choice.equals("1")){
  53. //Invio la stringa e ricevo il nome della tabella
  54. pout.println("Inserire nome tabella");
  55. table_name = in.readLine();
  56. System.out.println("Tabel_name: " + table_name);
  57.  
  58. //Il server richiede il valore di minSup
  59. pout.println("Inserire il valore di minSup");
  60. minSup = Float.parseFloat(in.readLine()); //La stringa ricevuta viene convertita in Float e assegnata a minSup
  61. do{
  62. if(minSup<= 0 || minSup >1){
  63. pout.println("Inserire nuovamente il valore di minSup"); //Se il valore non è lecito manda questa stringa e il client deve rimandare il valore di minSup
  64. minSup = Float.parseFloat(in.readLine());
  65. }
  66. }while(minSup <= 0 || minSup > 1);
  67. System.out.println("minSup: " + minSup);
  68.  
  69. //Il Server richiede il valore di eps e lo riceve dal client
  70. pout.println("Inserire il valore di eps");
  71. eps = Float.parseFloat(in.readLine()); //La stringa ricevuta viene convertita in Float e assegnata a minSup
  72. do{
  73. if(eps<= 0 || eps >1){
  74. pout.println("Inserire nuovamente il valore di eps"); //Se il valore non è lecito manda questa stringa e il client deve rimandare il valore di minSup
  75. eps = Float.parseFloat(in.readLine());
  76. }
  77. }while(eps <= 0 || eps > 1);
  78. System.out.println("esp: " + eps);
  79.  
  80. //Il Server richiede il nome del file più estensione su cui salvare (Si assume di salvare sul workspace)
  81. pout.println("Inserire il nome del file su cui salvare");
  82. path = in.readLine();
  83. System.out.println("path: " + path);
  84.  
  85. //Il Server fornisce il servizio di scoperta di pattern chiusi
  86. try{
  87. if (DBAccess.initConnection() == false)
  88. throw new DatabaseConnectionException();
  89. else{
  90. Data data = new Data(table_name); //Carico la matrice
  91.  
  92. // Scoperta patten frequenti
  93. LinkList outputFP = FrequentPatternMiner.frequentPatternDiscovery(data, minSup);
  94.  
  95. // Copio i pattern frequenti in una LinkedList che mi
  96. // servirà per la scoperta di pattern chiusi
  97. LinkedList<FrequentPattern> out = new LinkedList<FrequentPattern>();
  98. Puntatore p = outputFP.firstList();
  99. int i = 1;
  100. while (!outputFP.endList(p)) {
  101. FrequentPattern FP = (FrequentPattern) outputFP.readList(p);
  102. out.add(FP); // copia nella lista
  103. // System.out.println(i + ":" + FP); // stampa di
  104. // pattern
  105. // frequenti
  106. p = outputFP.succ(p);
  107. i++;
  108. }
  109.  
  110. Collections.sort(out);// ordinamento della lista di pattern
  111. // frequenti
  112.  
  113. // calcolo dei pattern chiusi
  114. ClosedPatternArchive archivio = ClosedPatternMiner.closedPatternDiscovery(out, eps);
  115. //System.out.print(archivio); // stampa pattern chiusi
  116.  
  117. if(archivio == null) throw new ServerException();
  118.  
  119. // salvataggio
  120. try{
  121. ClosedPatternArchive.salvataggio(archivio, path);
  122. }catch (IOException e) {
  123. System.err.println("Errore nel salvataggio");
  124. }
  125. pout.println("END");
  126. }
  127. }catch (DatabaseConnectionException e) {
  128. System.err.println("Errore caricamento driver");
  129. }catch (EmptySetException e) {
  130. System.err.println("Matrice vuota");
  131. }
  132.  
  133.  
  134. }
  135.  
  136. else if(choice.equals("2")){
  137. try{
  138. pout.println("Inserire il nome del file con estensione");
  139. path = in.readLine();
  140. System.out.println("Ricevo dal client il nome del file: " +path);
  141.  
  142. File file = new File(path);
  143. if(!(file.exists())){
  144. pout.println("File non trovato");
  145. }
  146. ClosedPatternArchive ar = ClosedPatternArchive.caricamento(path);
  147. } catch (IOException exc) {
  148. System.err.println("Errore nel caricamento, archivio non trovato");
  149. } catch (Exception e) {
  150. e.getMessage();
  151. }
  152. }
  153.  
  154. pout.println("END"); //Chiudo il ciclo su client
  155.  
  156. }finally{
  157. socket.close();
  158. }
  159. }
  160. finally {
  161. System.out.println("closing...");
  162. ss.close();
  163. }
  164. }
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement