added fronted class to display ui
This commit is contained in:
		
							parent
							
								
									134d5554ab
								
							
						
					
					
						commit
						cdc4a98b73
					
				| @ -1,84 +1,31 @@ | ||||
| package fr.packageviewer; | ||||
| 
 | ||||
| import java.util.List; | ||||
| import java.util.Scanner; | ||||
| 
 | ||||
| import fr.packageviewer.frontend.Frontend; | ||||
| import fr.packageviewer.frontend.FrontendFactory; | ||||
| import fr.packageviewer.pack.SearchedPackage; | ||||
| 
 | ||||
| public class Main { | ||||
| 	public static void main(String[] args) { | ||||
| 
 | ||||
| 		// create the frontend : what the user will see in its terminal | ||||
| 		Frontend frontend = FrontendFactory.get("terminal"); | ||||
| 
 | ||||
| 		// send the command line arguments to the parser | ||||
| 		ArgParse.parseArguments(args); | ||||
| 		String packet = ArgParse.getPacket(); | ||||
| 		String distribution = ArgParse.getDistribution(); | ||||
| 
 | ||||
| 		// we create an object to search the packages in the distribution | ||||
| 		Searcher searcher; | ||||
| 		if(distribution == null) { | ||||
| 			searcher = new Searcher(); | ||||
| 		} else { | ||||
| 			searcher = new Searcher(distribution); | ||||
| 		} | ||||
| 		Searcher searcher = new Searcher(distribution); | ||||
| 
 | ||||
| 		// we get the packages list | ||||
| 		List<SearchedPackage> packets = searcher.searchPackages(packet); | ||||
| 
 | ||||
| 		// list all packages in reverse order | ||||
| 		for (int i = packets.size(); i-- > 0; ) { | ||||
| 			SearchedPackage searchedPacket = packets.get(i); | ||||
| 			System.out.printf("%s - %s/%s/%s %s%n\t%s%n", | ||||
| 							  i, | ||||
| 							  searchedPacket.getDistribution(), | ||||
| 							  searchedPacket.getRepo(), | ||||
| 							  searchedPacket.getName(), | ||||
| 							  searchedPacket.getVersion()==null?"":searchedPacket.getVersion(), | ||||
| 							  searchedPacket.getDescription()); | ||||
| 		} | ||||
| 
 | ||||
| 		System.out.printf("Pick a package to see in details (0-%s) : %n", packets.size()-1); | ||||
| 		Scanner input = new Scanner(System.in); | ||||
| 
 | ||||
| 		// we create vars for the loop | ||||
| 		String packetNumberString; | ||||
| 		int packetNumber; | ||||
| 		boolean notValid; | ||||
| 		// we ask input and check if the user input is correct | ||||
| 		do { | ||||
| 			packetNumberString = input.nextLine(); | ||||
| 			// reset notValid to false, we set it in true only if something is wrong | ||||
| 			notValid = false; | ||||
| 			if(isNumeric(packetNumberString)) { | ||||
| 				packetNumber = Integer.parseInt(packetNumberString); | ||||
| 				if(packetNumber < 0 || packetNumber >= packets.size()) { | ||||
| 					// this number is too big or too small | ||||
| 					System.out.println("Enter a valid number"); | ||||
| 					notValid = true; | ||||
| 				} | ||||
| 			} else { | ||||
| 				// this is not a number | ||||
| 				System.out.println("Enter a valid number"); | ||||
| 				notValid = true; | ||||
| 			} | ||||
| 		} while(notValid); | ||||
| 
 | ||||
| 		input.close(); | ||||
| 		// ask the user to select the package to see in details | ||||
| 		SearchedPackage searchedPacket = frontend.askUserToChoosePackage(packets); | ||||
| 
 | ||||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Check if the String given is a number | ||||
| 	 * @param i the String given | ||||
| 	 * @return true if the String is a number | ||||
| 	 * @author Capelier-Marla | ||||
| 	 */ | ||||
| 	 private static boolean isNumeric(String i) { | ||||
| 		try { | ||||
| 			Integer.parseInt(i); | ||||
| 			return true; | ||||
| 		} catch (Exception e) { | ||||
| 			return false; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @ -13,16 +13,10 @@ public class Searcher { | ||||
| 
 | ||||
| 	private String distributionName = null; | ||||
| 
 | ||||
| 	public Searcher() {} | ||||
| 
 | ||||
| 	public Searcher(String distributionName) { | ||||
| 		this.distributionName = distributionName; | ||||
| 	} | ||||
| 
 | ||||
| 	public void setDistribution(String distribution) { | ||||
| 		this.distributionName = distribution; | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Get the list of all packages in the distribution setted before | ||||
| 	 * @param packageName the name of the package wanted | ||||
|  | ||||
							
								
								
									
										11
									
								
								src/main/java/fr/packageviewer/frontend/Frontend.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/main/java/fr/packageviewer/frontend/Frontend.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | ||||
| package fr.packageviewer.frontend; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| import fr.packageviewer.pack.Package; | ||||
| import fr.packageviewer.pack.SearchedPackage; | ||||
| 
 | ||||
| public interface Frontend { | ||||
|     SearchedPackage askUserToChoosePackage(List<SearchedPackage> packets); | ||||
|     void showPackageTree(Package packet); | ||||
| } | ||||
							
								
								
									
										16
									
								
								src/main/java/fr/packageviewer/frontend/FrontendFactory.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/main/java/fr/packageviewer/frontend/FrontendFactory.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| package fr.packageviewer.frontend; | ||||
| 
 | ||||
| public class FrontendFactory { | ||||
| 
 | ||||
|     public static Frontend get(String name){ | ||||
|         switch(name){ | ||||
|             case "terminal":{ | ||||
|                 return new FrontendTerminal(); | ||||
|             } | ||||
|             default:{ | ||||
|                 throw new IllegalArgumentException("Invalid frontend"); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,76 @@ | ||||
| package fr.packageviewer.frontend; | ||||
| 
 | ||||
| import java.util.List; | ||||
| import java.util.Scanner; | ||||
| 
 | ||||
| import fr.packageviewer.pack.Package; | ||||
| import fr.packageviewer.pack.SearchedPackage; | ||||
| 
 | ||||
| public class FrontendTerminal implements Frontend{ | ||||
| 
 | ||||
|     /** | ||||
| 	 * Check if the String given is a number | ||||
| 	 * @param i the String given | ||||
| 	 * @return true if the String is a number | ||||
| 	 * @author Capelier-Marla | ||||
| 	 */ | ||||
| 	 private static boolean isNumeric(String i) { | ||||
| 		try { | ||||
| 			Integer.parseInt(i); | ||||
| 			return true; | ||||
| 		} catch (Exception e) { | ||||
| 			return false; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
|     @Override | ||||
|     public SearchedPackage askUserToChoosePackage(List<SearchedPackage> packets) { | ||||
|         // list all packages in reverse order | ||||
| 		for (int i = packets.size(); i-- > 0; ) { | ||||
| 			SearchedPackage searchedPacket = packets.get(i); | ||||
| 			System.out.printf("%s - %s/%s/%s %s%n\t%s%n", | ||||
| 							  i, | ||||
| 							  searchedPacket.getDistribution(), | ||||
| 							  searchedPacket.getRepo(), | ||||
| 							  searchedPacket.getName(), | ||||
| 							  searchedPacket.getVersion()==null?"":searchedPacket.getVersion(), | ||||
| 							  searchedPacket.getDescription()); | ||||
| 		} | ||||
| 
 | ||||
|         System.out.printf("Pick a package to see in details (0-%s) : %n", packets.size()-1); | ||||
| 		Scanner input = new Scanner(System.in); | ||||
| 
 | ||||
| 		// we create vars for the loop | ||||
| 		String packetNumberString; | ||||
| 		int packetNumber = -1; | ||||
| 		boolean notValid; | ||||
| 		// we ask input and check if the user input is correct | ||||
| 		do { | ||||
| 			packetNumberString = input.nextLine(); | ||||
| 			// reset notValid to false, we set it in true only if something is wrong | ||||
| 			notValid = false; | ||||
| 			if(isNumeric(packetNumberString)) { | ||||
| 				packetNumber = Integer.parseInt(packetNumberString); | ||||
| 				if(packetNumber < 0 || packetNumber >= packets.size()) { | ||||
| 					// this number is too big or too small | ||||
| 					System.out.println("Enter a valid number"); | ||||
| 					notValid = true; | ||||
| 				} | ||||
| 			} else { | ||||
| 				// this is not a number | ||||
| 				System.out.println("Enter a valid number"); | ||||
| 				notValid = true; | ||||
| 			} | ||||
| 		} while(notValid); | ||||
| 
 | ||||
| 		input.close(); | ||||
|         return packets.get(packetNumber); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void showPackageTree(Package packet) { | ||||
|         // TODO Auto-generated method stub | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user