Advertisement
Guest User

Untitled

a guest
Mar 26th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.47 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.File;
  4. import java.io.FileReader;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.io.ObjectInputStream;
  8. import java.io.ObjectOutputStream;
  9. import java.net.Socket;
  10. import java.text.ParseException;
  11. import java.text.SimpleDateFormat;
  12. import java.util.Date;
  13. import java.util.Scanner;
  14. /**
  15. * @author: GRUPO SC055
  16. *Pedro Neves fc46430
  17. *João Anastácio fc43284
  18. *Ricardo Calçado fc46382
  19. */
  20. public class PhotoShare extends PhotoShareSkell {
  21.  
  22. static final String Rep = "Repositorio" + File.separator + "client" + File.separator;
  23. /**
  24. * Main of PhotoShare.java
  25. * @param args argumentos a serem passados, neste caso, userId, pwd, e porto
  26. * @throws IOException
  27. * @throws ClassNotFoundException
  28. * @throws ParseException
  29. */
  30. public static void main(String[] args) throws IOException, ClassNotFoundException, ParseException {
  31. PhotoShare client = new PhotoShare();
  32. if (!criaRepLocal(args[0]))
  33. System.err.println("Client Rep already created.\n");
  34. else {
  35. File seg = new File(Rep + args[0] + File.separator + "seguidoPor.txt");
  36. seg.createNewFile();
  37. File seg2 = new File(Rep + args[0] + File.separator + "vaiSeguir.txt");
  38. seg2.createNewFile();
  39. System.out.println("Rep sucessfully created.");
  40. }
  41.  
  42. client.runClient(args);
  43. }
  44. /**
  45. * Serve para correr o cliente, eh nele onde se vai enviar ao servidor
  46. * quais as operacoes que sao preciso ser feitas
  47. * @param args argumentos que sao passados pelo user,
  48. * @throws IOException
  49. * @throws ClassNotFoundException
  50. * @throws ParseException
  51. */
  52. private void runClient(String[] args) throws IOException, ClassNotFoundException, ParseException {
  53. Socket socket = null;
  54.  
  55. if (args[1].equals("-p"))
  56. socket = connect(args[3]);
  57. else
  58. socket = connect(args[1]);
  59.  
  60. ObjectOutputStream outStream = new ObjectOutputStream(socket.getOutputStream());
  61. ObjectInputStream inStream = new ObjectInputStream(socket.getInputStream());
  62.  
  63. outStream.writeObject(args[0]); // username
  64. String[] options = null;
  65.  
  66. if (args[1].equals("-p")) {
  67. outStream.writeObject(args[2]); // pass
  68. options = args;
  69. } else {
  70. Scanner sc = new Scanner(System.in);
  71. System.out.println("Insert Password.");
  72. String pass = sc.nextLine();
  73. outStream.writeObject(pass);
  74. sc.close();
  75. options = new String[args.length + 2];
  76. options[2] = "-p";
  77. options[3] = pass;
  78. int j = 0;
  79. for (int i = 0; i < options.length; i++) {
  80. if (i != 2 && i != 3)
  81. options[i] = args[j];
  82.  
  83. j++;
  84. }
  85. }
  86.  
  87. if ((boolean) inStream.readObject())
  88. System.out.println("User logged in / registered.\n");
  89.  
  90. String str = "";
  91. Scanner sc = new Scanner(System.in);
  92. while (!str.equals("Q")) {
  93. System.out.println("\n Introduza opcoes: "
  94. + "[ -a <photos> | -l <userId> | -i <userId> <photo> | -g <userId> | \r\n"
  95. + " -c <comment> <userId> <photo> | -L <userId> <photo> | \r\n"
  96. + " -D <userId> <photo> | -f <followUserIds> | -r <followUserIds> ] ");
  97. str = sc.nextLine();
  98. boolean c = false;
  99. boolean ip = false;
  100. boolean g = false;
  101. String[] option = str.split(" ");
  102. switch (option[0]) {
  103. case "-a":
  104. int a = 1;
  105. while (a < option.length) {
  106. System.out.println("Opcao: -a <" + option[a] + ">.\n");
  107. String scin = option[a];
  108. // foto no cliente?
  109. File temp = new File(Rep + args[0] + File.separator + scin);
  110. // se esta no cliente
  111. if (temp.exists()) {
  112. outStream.writeObject("-a");
  113. outStream.writeObject(scin);
  114. sendFile(outStream, args[0], scin);
  115. sendFile(outStream, args[0], scin + "-comments.txt");
  116. sendFile(outStream, args[0], scin + "-likes.txt");
  117. } else {
  118. System.err.println("Photo not found" + scin);
  119.  
  120. }
  121. a++;
  122. }
  123.  
  124. break;
  125. case "-l":
  126. System.out.println("Opcao: -l <" + option[1] + ">.\n");
  127. String userId = option[1];
  128. c = true;
  129. // próprio user
  130. if (option[1].equals(args[0])) {
  131. outStream.writeObject("-l");
  132. outStream.writeObject(args[0]);
  133. } else {// outros users
  134. File verfUser = new File(Rep + userId + File.separator + "seguidoPor.txt");
  135. BufferedReader bufVerfUser = new BufferedReader(new FileReader(verfUser));
  136. String line = null;
  137. boolean found = false;
  138. while ((line = bufVerfUser.readLine()) != null && !found) {
  139. if (line.equals(args[0])) {
  140. found = true;
  141. outStream.writeObject("-l");
  142. outStream.writeObject(userId);
  143.  
  144. }
  145. }
  146. if (found == false) {
  147. System.err.println("Client doesn't follow " + option[1]);
  148. }
  149. outStream.flush();
  150. }
  151. break;
  152. case "-i":
  153. ip = true;
  154. System.out.println("Opcao: -i <" + option[1] + "><" + option[2] + ">.\n");
  155. String userId1 = option[1];
  156. String foto = option[2];
  157. // próprio user
  158. if (option[1].equals(args[0])) {
  159. outStream.writeObject("-i");
  160. outStream.writeObject(userId1);
  161. outStream.writeObject(foto);
  162. } else {// outros users
  163. File verfUser = new File(Rep + userId1 + File.separator + "seguidoPor.txt");
  164. BufferedReader bufVerfUser = new BufferedReader(new FileReader(verfUser));
  165. String line = null;
  166. boolean found1 = false;
  167. while ((line = bufVerfUser.readLine()) != null && !found1) {
  168. if (line.equals(args[0])) {
  169. found1 = true;
  170. outStream.writeObject("-i");
  171. outStream.writeObject(userId1);
  172. outStream.writeObject(option[2]);
  173. }
  174. }
  175. if (found1 == false) {
  176. System.err.println("Client doesn't follow " + option[1]);
  177. }
  178. }
  179. break;
  180. case "-g":
  181. g = true;
  182. System.out.println("Opcao: -g <" + option[1] + ">.\n");
  183.  
  184. File verfUser = new File(Rep + option[1] + File.separator + "seguidoPor.txt");
  185. BufferedReader bufVerfUser = new BufferedReader(new FileReader(verfUser));
  186. String line = null;
  187. boolean found2 = false;
  188. while ((line = bufVerfUser.readLine()) != null && !found2) {
  189. if (line.equals(args[0])) {
  190. found2=true;
  191. outStream.writeObject("-g");
  192. outStream.writeObject(option[1]);
  193. break;
  194. }
  195. }
  196. if (found2 == false) {
  197. System.err.println("Client doesn't follow " + option[1]);
  198. }
  199.  
  200. break;
  201. case "-c":
  202. int size = option.length - 1;
  203. System.out.println("Opcao: -c <" + "Comment" + "><" + option[size-1] + "><" + option[size] + ">.\n");
  204. File verfUser1 = new File(Rep + option[size - 1] + File.separator + "seguidoPor.txt");
  205. BufferedReader bufVerfUser1 = new BufferedReader(new FileReader(verfUser1));
  206. String line1 = null;
  207. boolean found3 = false;
  208. while ((line1 = bufVerfUser1.readLine()) != null && !found3) {
  209. if (line1.equals(args[0])) {
  210. found3=true;
  211. outStream.writeObject("-c");
  212. outStream.writeObject(Integer.toString(size - 1));
  213. for (int i = 1; i < size - 1; i++) {
  214. outStream.writeObject(option[i]);
  215. }
  216. outStream.writeObject(option[size - 1]);
  217. outStream.writeObject(option[size]);
  218. break;
  219. }
  220. }
  221. if (found3 == false) {
  222. System.err.println("Client doesn't follow " + option[size-1]);
  223. }
  224. break;
  225. case "-L":
  226. System.out.println("Opcao: -L <" + option[1] + "><" + option[2] + ">.\n");
  227. File verfUser11 = new File(Rep + option[1] + File.separator + "seguidoPor.txt");
  228. BufferedReader bufVerfUser11 = new BufferedReader(new FileReader(verfUser11));
  229. String line11 = null;
  230. boolean found4=false;
  231. while ((line11 = bufVerfUser11.readLine()) != null && !found4) {
  232. if (line11.equals(args[0])) {
  233. found4=true;
  234. outStream.writeObject("-L");
  235. outStream.writeObject(option[1]);
  236. outStream.writeObject(option[2]);
  237. break;
  238. }
  239. }
  240. if (found4 == false) {
  241. System.err.println("Client doesn't follow " + option[1]);
  242. }
  243. break;
  244. case "-D":
  245. System.out.println("Opcao: -D <" + option[1] + "><" + option[2] + ">.\n");
  246. File verfUser111 = new File(Rep + option[1] + File.separator + "seguidoPor.txt");
  247. BufferedReader bufVerfUser111 = new BufferedReader(new FileReader(verfUser111));
  248. String line111 = null;
  249. boolean found5=false;
  250. while ((line111 = bufVerfUser111.readLine()) != null && !found5) {
  251. if (line111.equals(args[0])) {
  252. found5=true;
  253. outStream.writeObject("-D");
  254. outStream.writeObject(option[1]);
  255. outStream.writeObject(option[2]);
  256. break;
  257. }
  258. }
  259. if (found5 == false) {
  260. System.err.println("Client doesn't follow " + option[1]);
  261. }
  262. break;
  263. case "-f":
  264. System.out.println("Opcao: -f <followUserIds>.\n");
  265. File verfUser1111 = new File(Rep + args[0] + File.separator + "seguidoPor.txt");
  266. BufferedReader bufVerfUser1111 = new BufferedReader(new FileReader(verfUser1111));
  267. BufferedWriter bufwrite = new BufferedWriter(new FileWriter(verfUser1111, true));
  268. boolean follows = false;
  269. String line1111 = null;
  270.  
  271. int b = 1;
  272.  
  273. while ((line1111 = bufVerfUser1111.readLine()) != null) {
  274. for (int i = 1; i < option.length; i++) {
  275. if (option[i].equals(line1111)) {
  276. System.err.println("User already follows you");
  277. follows = true;
  278. }
  279. }
  280.  
  281. }
  282. while (b < option.length) {
  283. if (follows == false) {
  284. outStream.writeObject("-f");
  285. bufwrite.write(option[b]);
  286. bufwrite.newLine();
  287. outStream.writeObject(option[b]);
  288.  
  289. }
  290. b++;
  291. }
  292. bufwrite.flush();
  293. bufwrite.close();
  294. break;
  295. case "-r":
  296. int f = 1;
  297.  
  298. while (f < option.length) {
  299. System.out.println("Opcao: -f <followUserIds>.\n");
  300. File verfUser11111 = new File(Rep + args[0] + File.separator + "seguidoPor.txt");
  301. BufferedReader bufVerfUser11111 = new BufferedReader(new FileReader(verfUser11111));
  302.  
  303. String line11111 = null;
  304. String temp = null;
  305.  
  306. while ((line11111 = bufVerfUser11111.readLine()) != null) {
  307.  
  308. if (option[f].equals(line11111)) {
  309. outStream.writeObject("-r");
  310. outStream.writeObject(option[f]);
  311. outStream.writeObject(Integer.toString(f));
  312. temp = line11111;
  313. }
  314.  
  315. }
  316. f++;
  317. bufVerfUser11111.close();
  318. removeLineFromFile("seguidoPor.txt", args[0], temp);
  319. }
  320.  
  321. break;
  322.  
  323. }
  324.  
  325. if (c == true) {
  326. String tamanho = (String) inStream.readObject();
  327. for (int i = 0; i < Integer.parseInt(tamanho); i++) {
  328. System.out.println("foto: " + (String) inStream.readObject()+"\n");
  329.  
  330. System.out.println("ultima data: " + (String) inStream.readObject()+"\n");
  331. }
  332.  
  333. } else if (ip == true) {
  334. String tamanho = (String) inStream.readObject();
  335. String temp = null;
  336.  
  337. for (int i = 0; i < Integer.parseInt(tamanho); i++) {
  338. temp = (String) inStream.readObject();
  339.  
  340. System.out.println("Comment: " + temp);
  341.  
  342. }
  343. String likes = (String) inStream.readObject();
  344. String dislikes = (String) inStream.readObject();
  345. System.out.println("Likes: " + Integer.parseInt(likes));
  346. System.out.println("Dislikes: " + Integer.parseInt(dislikes));
  347. } else {
  348. if (g == true) {
  349. String tamanho = (String) inStream.readObject();
  350. String tempora = null;
  351. for (int i = 0; i < Integer.parseInt(tamanho); i++) {
  352. tempora = (String) inStream.readObject();
  353.  
  354. receiveFile(inStream, args[0], tempora);
  355.  
  356. }
  357. }
  358. }
  359. outStream.flush();
  360. }
  361.  
  362. sc.close();
  363. outStream.close();
  364. inStream.close();
  365. socket.close();
  366. }
  367.  
  368. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement