1
0
Просмотр исходного кода

added functionality for combined parameters

Phil 7 лет назад
Родитель
Сommit
0909a1b49e
2 измененных файлов с 36 добавлено и 10 удалено
  1. 0 6
      MovieDB/src/data/DataParser.java
  2. 36 4
      MovieDB/src/main/Main.java

+ 0 - 6
MovieDB/src/data/DataParser.java

@@ -29,27 +29,21 @@ public class DataParser {
 				switch(msg.substring(11)) {
 				case " \"movie_id\",\"movie_title\",\"movie_plot\",\"genre_name\",\"movie_released\",\"movie_imdbVotes\",\"movie_imdbRating\"":
 					readmode = mode.MOVIE;
-					System.out.println("mode movie set");
 					break;
 				case " \"actor_id\",\"actor_name\"":
 					readmode = mode.ACTOR;
-					System.out.println("mode actor set");
 					break;
 				case " \"director_id\",\"director_name\"":
 					readmode = mode.DIRECTOR;
-					System.out.println("mode director set");
 					break;
 				case " \"actor_id\",\"movie_id\"":
 					readmode = mode.ACTING;
-					System.out.println("mode scting set");
 					break;
 				case " \"director_id\",\"movie_id\"":
 					readmode = mode.DIRECTING;
-					System.out.println("mode "+readmode+"set");
 					break;
 				case " \"user_name\",\"rating\",\"movie_id\"":
 					readmode = mode.USER;
-					System.out.println("mode "+readmode+"set");
 					break;
 				default:
 					readmode = mode.NONE;

+ 36 - 4
MovieDB/src/main/Main.java

@@ -1,6 +1,7 @@
 package main;
 
 import java.util.ArrayList;
+import java.util.Iterator;
 
 import data.DataBase;
 import data.DataParser;
@@ -17,33 +18,45 @@ public class Main {
 	
 	public void start(String[] args) {
 		new DataParser();
+		int limit = 200;
+		ArrayList<Movie> printlist = new ArrayList<>();
+		ArrayList<Movie> buffer;
 		if(args != null) {
 			for(String s : args) {
 				switch(s.substring(0,s.indexOf("="))) {
 				case "--test":
 					break;
 				case "--genre":
+					buffer = new ArrayList<>();
 					for(Movie m : rec.withGenre(s.substring(s.indexOf("=")+1).replaceAll("'", ""), 20)) {
-						System.out.println(m);
+						buffer.add(m);
+						printlist.addAll(combine(buffer,printlist));
 					}
 					break;
 				case "--actor":
+					buffer = new ArrayList<>();
 					//DataBase.getInstance().printMovies();
 					for(Movie m : rec.withActor(DataBase.getInstance().getActorByName(s.substring(s.indexOf("=")+1).replaceAll("'", "")), 20)) {
-						System.out.println(m);
+						buffer.add(m);
+						printlist.addAll(combine(buffer,printlist));
 					}
 					break;
 				case "--director":
+					buffer = new ArrayList<>();
 					for(Movie m : rec.withDirector((DataBase.getInstance().getDirectorByName(s.substring(s.indexOf("=")+1).replaceAll("'", ""))), 20)) {
-						System.out.println(m);
+						buffer.add(m);
+						printlist = combine(buffer,printlist);
 					}
 					break;
 				case "--film":
+					buffer = new ArrayList<>();
 					for(Movie m : rec.likedByUserWhoLike(DataBase.getInstance().getMovieByName(s.substring(s.indexOf("=")+1).replaceAll("'", "").trim()), 20)) {
-						System.out.println(m);
+						buffer.add(m);
+						printlist = combine(buffer,printlist);
 					}
 					break;
 				case "--limit":
+					limit = Integer.parseInt(s.substring(s.indexOf("=")+1).replaceAll("'", ""));
 					break;
 				case "--printdb":
 					System.out.println("printing db");
@@ -55,11 +68,30 @@ public class Main {
 					System.out.println("argument "+s+" is unkown");
 				}
 			}
+			if(printlist.size() > limit) {
+				for (int i = 0; i < printlist.size()-limit; i++) {
+					printlist.remove(i+limit);
+				}
+			}
+			for(Movie m : printlist) {
+				System.out.println(m);
+			}
 		}else {
 			new ConsoleReader();
 		}
 	}
 	
+	private ArrayList<Movie> combine(ArrayList<Movie> a, ArrayList<Movie> b){
+		ArrayList out = new ArrayList<>();
+		if(b.isEmpty())
+			return a;
+		for(Movie m : a) {
+			if(b.contains(a))
+				out.add(m);
+		}
+		return out;
+	}
+	
 	private void printList(ArrayList<Object> list) {
 		for(Object o : list) {
 			System.out.println(o);