C2C_client.java
Go to the documentation of this file.
1 package p2pclient;
2 
3 import java.rmi.Naming;
4 import java.io.File;
5 import java.io.FileOutputStream;
6 import java.io.DataOutputStream;
7 import java.io.FileInputStream;
8 import java.io.DataInputStream;
9 import javax.swing.JOptionPane;
10 import javax.swing.JFileChooser;
11 
18 public class C2C_client{
19 
23  public static boolean DBG = true;
24  public static int deleted = -1;
25 
33  @SuppressWarnings("static-access")
34  public static void main(String[] args) throws java.rmi.RemoteException{
35 
36  // Controllo dei valori in ingresso
37  int nofargs = 6;
38  if(args.length<nofargs){
39  if(DBG) p2putility.Util.logClient("Argument/s missing (must be "+nofargs+").");
40  return;
41  }
42 
43  int i = 0;
44  for(;i<nofargs;i++)
45  if(args[i].length()<1)
46  {
47  if(DBG) p2putility.Util.logClient("Argument "+i+" not valid.");
48  return;
49  }
50 
51  // Assegnamento dei valori in ingresso alle variabili relative
52  i = -1;
53  String server_ip = "rmi://"+args[++i]+"/C2C_server";
54  String requestfunc = args[++i];
55  String name = args[++i];
56  String path = args[++i];
57  String user = args[++i];
58  String key = args[++i];
59 
60  if(DBG) p2putility.Util.logClient("Using " + server_ip);
61 
62  try {
63  C2C_RMIFuncConstructor obj = (C2C_RMIFuncConstructor)Naming.lookup(server_ip);
64  if(DBG) p2putility.Util.logClient("obj C2C_RMIFuncConstructor creato.");
65 
66  if(requestfunc.toLowerCase().contentEquals("serverOn".toLowerCase()))
67  {
68  if(DBG) p2putility.Util.logClient(obj.serverOn());
69  }
70  else
71  if(requestfunc.toLowerCase().contentEquals("getFile".toLowerCase()))
72  {
73 
74  JFileChooser f = new JFileChooser(".");
75  f.setSelectedFile(new File(name));
76  int r = f.showSaveDialog(null);
77 
78  if (r != f.APPROVE_OPTION)
79  {
80  if(DBG) p2putility.Util.logClient("save aborted.");
81  return;
82  }
83 
84 
85  File fs = f.getSelectedFile();
86 
87  if(fs.exists())
88  {
89  r = JOptionPane.showConfirmDialog(null,"Overwrite file?","File already exist",1,JOptionPane.YES_NO_OPTION);
90 
91  if(r!=JOptionPane.YES_OPTION)
92  {
93  if(DBG) p2putility.Util.logClient("save aborted (no overwrite)");
94  return;
95  }
96  }
97 
98  byte remfc[] = obj.getFile(user, key, name, path);
99 
100 
101  if(remfc==null){if(DBG) p2putility.Util.logClient("getFile remote error (null)."); return;}
102 
103  try
104  {
105  DataOutputStream locfw = new DataOutputStream(new FileOutputStream(fs));
106  locfw.write(remfc);
107  locfw.close();
108  if(DBG) p2putility.Util.logClient("File "+name+" recived.");
109  }
110  catch(Exception xe)
111  {
112  if(DBG) p2putility.Util.logClient("File "+name+" not recived.\n"+xe.getMessage());
113  return;
114  }
115 
116  }
117  else
118  if(requestfunc.toLowerCase().contentEquals("deleteFile".toLowerCase()))
119  {
120  boolean ret = obj.deleteFile(user, key, name, path);
121  if(ret)
122  deleted = 1;
123  else
124  deleted = 0;
125  if(DBG)
126  if(ret) p2putility.Util.logClient("File "+name+" deleted.");
127  else p2putility.Util.logClient("File "+name+" not delete.");
128  }
129  else
130  if(requestfunc.toLowerCase().contentEquals("sendFile".toLowerCase()))
131  {
132  File f = new File(path+name);
133 
134  if(!f.exists()){
135  if(DBG) p2putility.Util.logClient("file does not exist.");
136  return;
137  }
138 
139  long size = f.length();
140  long maxsize = p2putility.Config.r_filemaxsizetosend();
141  if(size>maxsize){
142  if(DBG) p2putility.Util.logClient("file too big (size: "+size+" byte, max: "+maxsize+" byte).");
143  return;
144  }
145 
146  byte content[] = new byte[(int)size];
147 
148  try
149  {
150  DataInputStream fr = new DataInputStream(new FileInputStream(f));
151  fr.read(content);
152  fr.close();
153  }
154  catch(Exception xe)
155  {
156  if(DBG) p2putility.Util.logClient("C2C_client err: " + xe.getMessage());
157  return;
158  }
159 
160  boolean ret = obj.sendFile(user, key, content, name);
161 
162  if(DBG)
163  if(ret) p2putility.Util.logClient("File "+name+" sent.");
164  else p2putility.Util.logClient("File "+name+" not send.");
165 
166  }
167  else
168  if(DBG) p2putility.Util.logClient("Function not implemented.");
169 
170 
171  }
172  catch (Exception e)
173  {
174  if(DBG) p2putility.Util.logClient("Client exception: "+e);
175  return;
176  }
177 
178  }
179 
180 }
Classe che permette la configurazione di tutto il programma in base alle specifiche esigenze dell&#39;ute...
Definition: Config.java:14
Classe che implementa metodi vari di utilita&#39; generale.
Definition: Util.java:14
Client RMI C2C_client che si interfaccia al server RMI C2C_server, per utilizzare le funzioni sui fil...
Definition: C2C_client.java:18
byte [] getFile(String k, String v, String name, String path)
Interfaccia della funzione che restituisce il file chiesto sottoforma di array di byte...
boolean sendFile(String k, String v, byte[] content, String name)
Interfaccia della funzione che riceve il file inviato.
static void main(String[] args)
Main che a seconda del nome funzione passato come parametro, richiama le funzioni messe a disposizion...
Definition: C2C_client.java:34
String serverOn()
Interfaccia della funzione di test che non necessita di autorizzazione per verificare se il server e&#39;...
static long r_filemaxsizetosend()
Permette la lettura della varibile relativa in modo sicuro.
Definition: Config.java:369
boolean deleteFile(String k, String v, String name, String path)
Interfaccia della funzione che cancella il file indicato tramite name e path.
static boolean DBG
Variabile boolean per attivare il degug.
Definition: C2C_client.java:23
static void logClient(String data)
Scrive i dati in input sul file di log del Client (se questo esiste valido)
Definition: Util.java:121