diff --git a/src/main/java/fr/packageviewer/Main.java b/src/main/java/fr/packageviewer/Main.java index 954d017..b1f6b00 100644 --- a/src/main/java/fr/packageviewer/Main.java +++ b/src/main/java/fr/packageviewer/Main.java @@ -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 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; - } - } } diff --git a/src/main/java/fr/packageviewer/Searcher.java b/src/main/java/fr/packageviewer/Searcher.java index 08bcd41..b71fa3f 100644 --- a/src/main/java/fr/packageviewer/Searcher.java +++ b/src/main/java/fr/packageviewer/Searcher.java @@ -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 diff --git a/src/main/java/fr/packageviewer/frontend/Frontend.java b/src/main/java/fr/packageviewer/frontend/Frontend.java new file mode 100644 index 0000000..400f61c --- /dev/null +++ b/src/main/java/fr/packageviewer/frontend/Frontend.java @@ -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 packets); + void showPackageTree(Package packet); +} diff --git a/src/main/java/fr/packageviewer/frontend/FrontendFactory.java b/src/main/java/fr/packageviewer/frontend/FrontendFactory.java new file mode 100644 index 0000000..6a5d4a1 --- /dev/null +++ b/src/main/java/fr/packageviewer/frontend/FrontendFactory.java @@ -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"); + } + } + } + +} diff --git a/src/main/java/fr/packageviewer/frontend/FrontendTerminal.java b/src/main/java/fr/packageviewer/frontend/FrontendTerminal.java new file mode 100644 index 0000000..583c3d5 --- /dev/null +++ b/src/main/java/fr/packageviewer/frontend/FrontendTerminal.java @@ -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 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 + + } + +}