Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.File;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.net.Socket;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Scanner;
- /**
- * @author: GRUPO SC055
- *Pedro Neves fc46430
- *João Anastácio fc43284
- *Ricardo Calçado fc46382
- */
- public class PhotoShare extends PhotoShareSkell {
- static final String Rep = "Repositorio" + File.separator + "client" + File.separator;
- /**
- * Main of PhotoShare.java
- * @param args argumentos a serem passados, neste caso, userId, pwd, e porto
- * @throws IOException
- * @throws ClassNotFoundException
- * @throws ParseException
- */
- public static void main(String[] args) throws IOException, ClassNotFoundException, ParseException {
- PhotoShare client = new PhotoShare();
- if (!criaRepLocal(args[0]))
- System.err.println("Client Rep already created.\n");
- else {
- File seg = new File(Rep + args[0] + File.separator + "seguidoPor.txt");
- seg.createNewFile();
- File seg2 = new File(Rep + args[0] + File.separator + "vaiSeguir.txt");
- seg2.createNewFile();
- System.out.println("Rep sucessfully created.");
- }
- client.runClient(args);
- }
- /**
- * Serve para correr o cliente, eh nele onde se vai enviar ao servidor
- * quais as operacoes que sao preciso ser feitas
- * @param args argumentos que sao passados pelo user,
- * @throws IOException
- * @throws ClassNotFoundException
- * @throws ParseException
- */
- private void runClient(String[] args) throws IOException, ClassNotFoundException, ParseException {
- Socket socket = null;
- if (args[1].equals("-p"))
- socket = connect(args[3]);
- else
- socket = connect(args[1]);
- ObjectOutputStream outStream = new ObjectOutputStream(socket.getOutputStream());
- ObjectInputStream inStream = new ObjectInputStream(socket.getInputStream());
- outStream.writeObject(args[0]); // username
- String[] options = null;
- if (args[1].equals("-p")) {
- outStream.writeObject(args[2]); // pass
- options = args;
- } else {
- Scanner sc = new Scanner(System.in);
- System.out.println("Insert Password.");
- String pass = sc.nextLine();
- outStream.writeObject(pass);
- sc.close();
- options = new String[args.length + 2];
- options[2] = "-p";
- options[3] = pass;
- int j = 0;
- for (int i = 0; i < options.length; i++) {
- if (i != 2 && i != 3)
- options[i] = args[j];
- j++;
- }
- }
- if ((boolean) inStream.readObject())
- System.out.println("User logged in / registered.\n");
- String str = "";
- Scanner sc = new Scanner(System.in);
- while (!str.equals("Q")) {
- System.out.println("\n Introduza opcoes: "
- + "[ -a <photos> | -l <userId> | -i <userId> <photo> | -g <userId> | \r\n"
- + " -c <comment> <userId> <photo> | -L <userId> <photo> | \r\n"
- + " -D <userId> <photo> | -f <followUserIds> | -r <followUserIds> ] ");
- str = sc.nextLine();
- boolean c = false;
- boolean ip = false;
- boolean g = false;
- String[] option = str.split(" ");
- switch (option[0]) {
- case "-a":
- int a = 1;
- while (a < option.length) {
- System.out.println("Opcao: -a <" + option[a] + ">.\n");
- String scin = option[a];
- // foto no cliente?
- File temp = new File(Rep + args[0] + File.separator + scin);
- // se esta no cliente
- if (temp.exists()) {
- outStream.writeObject("-a");
- outStream.writeObject(scin);
- sendFile(outStream, args[0], scin);
- sendFile(outStream, args[0], scin + "-comments.txt");
- sendFile(outStream, args[0], scin + "-likes.txt");
- } else {
- System.err.println("Photo not found" + scin);
- }
- a++;
- }
- break;
- case "-l":
- System.out.println("Opcao: -l <" + option[1] + ">.\n");
- String userId = option[1];
- c = true;
- // próprio user
- if (option[1].equals(args[0])) {
- outStream.writeObject("-l");
- outStream.writeObject(args[0]);
- } else {// outros users
- File verfUser = new File(Rep + userId + File.separator + "seguidoPor.txt");
- BufferedReader bufVerfUser = new BufferedReader(new FileReader(verfUser));
- String line = null;
- boolean found = false;
- while ((line = bufVerfUser.readLine()) != null && !found) {
- if (line.equals(args[0])) {
- found = true;
- outStream.writeObject("-l");
- outStream.writeObject(userId);
- }
- }
- if (found == false) {
- System.err.println("Client doesn't follow " + option[1]);
- }
- outStream.flush();
- }
- break;
- case "-i":
- ip = true;
- System.out.println("Opcao: -i <" + option[1] + "><" + option[2] + ">.\n");
- String userId1 = option[1];
- String foto = option[2];
- // próprio user
- if (option[1].equals(args[0])) {
- outStream.writeObject("-i");
- outStream.writeObject(userId1);
- outStream.writeObject(foto);
- } else {// outros users
- File verfUser = new File(Rep + userId1 + File.separator + "seguidoPor.txt");
- BufferedReader bufVerfUser = new BufferedReader(new FileReader(verfUser));
- String line = null;
- boolean found1 = false;
- while ((line = bufVerfUser.readLine()) != null && !found1) {
- if (line.equals(args[0])) {
- found1 = true;
- outStream.writeObject("-i");
- outStream.writeObject(userId1);
- outStream.writeObject(option[2]);
- }
- }
- if (found1 == false) {
- System.err.println("Client doesn't follow " + option[1]);
- }
- }
- break;
- case "-g":
- g = true;
- System.out.println("Opcao: -g <" + option[1] + ">.\n");
- File verfUser = new File(Rep + option[1] + File.separator + "seguidoPor.txt");
- BufferedReader bufVerfUser = new BufferedReader(new FileReader(verfUser));
- String line = null;
- boolean found2 = false;
- while ((line = bufVerfUser.readLine()) != null && !found2) {
- if (line.equals(args[0])) {
- found2=true;
- outStream.writeObject("-g");
- outStream.writeObject(option[1]);
- break;
- }
- }
- if (found2 == false) {
- System.err.println("Client doesn't follow " + option[1]);
- }
- break;
- case "-c":
- int size = option.length - 1;
- System.out.println("Opcao: -c <" + "Comment" + "><" + option[size-1] + "><" + option[size] + ">.\n");
- File verfUser1 = new File(Rep + option[size - 1] + File.separator + "seguidoPor.txt");
- BufferedReader bufVerfUser1 = new BufferedReader(new FileReader(verfUser1));
- String line1 = null;
- boolean found3 = false;
- while ((line1 = bufVerfUser1.readLine()) != null && !found3) {
- if (line1.equals(args[0])) {
- found3=true;
- outStream.writeObject("-c");
- outStream.writeObject(Integer.toString(size - 1));
- for (int i = 1; i < size - 1; i++) {
- outStream.writeObject(option[i]);
- }
- outStream.writeObject(option[size - 1]);
- outStream.writeObject(option[size]);
- break;
- }
- }
- if (found3 == false) {
- System.err.println("Client doesn't follow " + option[size-1]);
- }
- break;
- case "-L":
- System.out.println("Opcao: -L <" + option[1] + "><" + option[2] + ">.\n");
- File verfUser11 = new File(Rep + option[1] + File.separator + "seguidoPor.txt");
- BufferedReader bufVerfUser11 = new BufferedReader(new FileReader(verfUser11));
- String line11 = null;
- boolean found4=false;
- while ((line11 = bufVerfUser11.readLine()) != null && !found4) {
- if (line11.equals(args[0])) {
- found4=true;
- outStream.writeObject("-L");
- outStream.writeObject(option[1]);
- outStream.writeObject(option[2]);
- break;
- }
- }
- if (found4 == false) {
- System.err.println("Client doesn't follow " + option[1]);
- }
- break;
- case "-D":
- System.out.println("Opcao: -D <" + option[1] + "><" + option[2] + ">.\n");
- File verfUser111 = new File(Rep + option[1] + File.separator + "seguidoPor.txt");
- BufferedReader bufVerfUser111 = new BufferedReader(new FileReader(verfUser111));
- String line111 = null;
- boolean found5=false;
- while ((line111 = bufVerfUser111.readLine()) != null && !found5) {
- if (line111.equals(args[0])) {
- found5=true;
- outStream.writeObject("-D");
- outStream.writeObject(option[1]);
- outStream.writeObject(option[2]);
- break;
- }
- }
- if (found5 == false) {
- System.err.println("Client doesn't follow " + option[1]);
- }
- break;
- case "-f":
- System.out.println("Opcao: -f <followUserIds>.\n");
- File verfUser1111 = new File(Rep + args[0] + File.separator + "seguidoPor.txt");
- BufferedReader bufVerfUser1111 = new BufferedReader(new FileReader(verfUser1111));
- BufferedWriter bufwrite = new BufferedWriter(new FileWriter(verfUser1111, true));
- boolean follows = false;
- String line1111 = null;
- int b = 1;
- while ((line1111 = bufVerfUser1111.readLine()) != null) {
- for (int i = 1; i < option.length; i++) {
- if (option[i].equals(line1111)) {
- System.err.println("User already follows you");
- follows = true;
- }
- }
- }
- while (b < option.length) {
- if (follows == false) {
- outStream.writeObject("-f");
- bufwrite.write(option[b]);
- bufwrite.newLine();
- outStream.writeObject(option[b]);
- }
- b++;
- }
- bufwrite.flush();
- bufwrite.close();
- break;
- case "-r":
- int f = 1;
- while (f < option.length) {
- System.out.println("Opcao: -f <followUserIds>.\n");
- File verfUser11111 = new File(Rep + args[0] + File.separator + "seguidoPor.txt");
- BufferedReader bufVerfUser11111 = new BufferedReader(new FileReader(verfUser11111));
- String line11111 = null;
- String temp = null;
- while ((line11111 = bufVerfUser11111.readLine()) != null) {
- if (option[f].equals(line11111)) {
- outStream.writeObject("-r");
- outStream.writeObject(option[f]);
- outStream.writeObject(Integer.toString(f));
- temp = line11111;
- }
- }
- f++;
- bufVerfUser11111.close();
- removeLineFromFile("seguidoPor.txt", args[0], temp);
- }
- break;
- }
- if (c == true) {
- String tamanho = (String) inStream.readObject();
- for (int i = 0; i < Integer.parseInt(tamanho); i++) {
- System.out.println("foto: " + (String) inStream.readObject()+"\n");
- System.out.println("ultima data: " + (String) inStream.readObject()+"\n");
- }
- } else if (ip == true) {
- String tamanho = (String) inStream.readObject();
- String temp = null;
- for (int i = 0; i < Integer.parseInt(tamanho); i++) {
- temp = (String) inStream.readObject();
- System.out.println("Comment: " + temp);
- }
- String likes = (String) inStream.readObject();
- String dislikes = (String) inStream.readObject();
- System.out.println("Likes: " + Integer.parseInt(likes));
- System.out.println("Dislikes: " + Integer.parseInt(dislikes));
- } else {
- if (g == true) {
- String tamanho = (String) inStream.readObject();
- String tempora = null;
- for (int i = 0; i < Integer.parseInt(tamanho); i++) {
- tempora = (String) inStream.readObject();
- receiveFile(inStream, args[0], tempora);
- }
- }
- }
- outStream.flush();
- }
- sc.close();
- outStream.close();
- inStream.close();
- socket.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement