added fronted class to display ui
This commit is contained in:
parent
134d5554ab
commit
cdc4a98b73
@ -1,84 +1,31 @@
|
|||||||
package fr.packageviewer;
|
package fr.packageviewer;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Scanner;
|
|
||||||
|
|
||||||
|
import fr.packageviewer.frontend.Frontend;
|
||||||
|
import fr.packageviewer.frontend.FrontendFactory;
|
||||||
import fr.packageviewer.pack.SearchedPackage;
|
import fr.packageviewer.pack.SearchedPackage;
|
||||||
|
|
||||||
public class Main {
|
public class Main {
|
||||||
public static void main(String[] args) {
|
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
|
// send the command line arguments to the parser
|
||||||
ArgParse.parseArguments(args);
|
ArgParse.parseArguments(args);
|
||||||
String packet = ArgParse.getPacket();
|
String packet = ArgParse.getPacket();
|
||||||
String distribution = ArgParse.getDistribution();
|
String distribution = ArgParse.getDistribution();
|
||||||
|
|
||||||
// we create an object to search the packages in the distribution
|
// we create an object to search the packages in the distribution
|
||||||
Searcher searcher;
|
Searcher searcher = new Searcher(distribution);
|
||||||
if(distribution == null) {
|
|
||||||
searcher = new Searcher();
|
|
||||||
} else {
|
|
||||||
searcher = new Searcher(distribution);
|
|
||||||
}
|
|
||||||
|
|
||||||
// we get the packages list
|
// we get the packages list
|
||||||
List<SearchedPackage> packets = searcher.searchPackages(packet);
|
List<SearchedPackage> packets = searcher.searchPackages(packet);
|
||||||
|
|
||||||
// list all packages in reverse order
|
// ask the user to select the package to see in details
|
||||||
for (int i = packets.size(); i-- > 0; ) {
|
SearchedPackage searchedPacket = frontend.askUserToChoosePackage(packets);
|
||||||
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();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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;
|
private String distributionName = null;
|
||||||
|
|
||||||
public Searcher() {}
|
|
||||||
|
|
||||||
public Searcher(String distributionName) {
|
public Searcher(String distributionName) {
|
||||||
this.distributionName = distributionName;
|
this.distributionName = distributionName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDistribution(String distribution) {
|
|
||||||
this.distributionName = distribution;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the list of all packages in the distribution setted before
|
* Get the list of all packages in the distribution setted before
|
||||||
* @param packageName the name of the package wanted
|
* @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