package org.isatools.isacreator.launch;
import org.isatools.isacreator.gui.modeselection.Mode;
/**
* Created by the ISATeam.
* User: agbeltran
* Date: 01/10/2012
* Time: 16:19
*
* Class to maintain ISAcreator Command Line (CL) arguments
*
* @author <a href="mailto:alejandra.gonzalez.beltran@gmail.com">Alejandra Gonzalez-Beltran</a>
*/
public class ISAcreatorCLArgs {
private static boolean noArguments = true;
private static Mode mode = null;
private static String configDir = null;
private static String username = null;
private static char[] password = null;
private static String isatabDir = null;
private static String[] isatabFiles = null;
public static Mode mode(){
return mode;
}
public static String configDir(){
return configDir;
}
public static String username(){
return username;
}
public static char[] password(){
return password;
}
public static String isatabDir(){
return isatabDir;
}
public static void isatabDir(String dir){
isatabDir = dir;
}
public static String[] isatabFiles(){
return isatabFiles;
}
public static boolean noArguments(){
return noArguments;
}
public static void parseArgs(String[] args){
noArguments = false;
int i = 0;
String arg = null, option;
while (i < args.length && args[i].startsWith("--")) {
option = args[i++];
if (i<args.length)
arg = args[i++];
option.toLowerCase();
if (option.equals("--help")){
System.out.println("usage: ISAcreator.jar [--mode] [--configDir <path>] [--username <username>] [--password <password>] [--isatabDir <path>]\n" +
"\t[--isatabFiles <files>] [--help]\n");
System.out.println("\t--mode\tIndicates ISAcreator mode, the options are NORMAL, LIGHT or GS");
System.out.println("\t--configDir\tIt sets the path of the directory containing the configuration files");
System.out.println("\t--username\tIt sets the username for ISAcreator");
System.out.println("\t--password\tThe password for the username set by --username can be passed to ISAcreator");
System.out.println("\t--isatabDir\tIt sets the directory containing the ISAtab files");
System.out.println("\t--isatabFiles <files>\t<files> must be a comma separated list of ISAtab files; this option is only valid for mode GS ");
System.out.println("\t--help\tShows this message ");
System.exit(0);
}else if (option.equals("--mode")){
if (arg.equals("NORMAL"))
ISAcreatorCLArgs.mode = Mode.NORMAL_MODE;
else if (arg.equals("LIGHT"))
ISAcreatorCLArgs.mode = Mode.LIGHT_MODE;
else if (arg.equals("GS"))
ISAcreatorCLArgs.mode = Mode.GS;
else{
System.out.println("Invalid mode argument, the possible modes are: NORMAL, LIGHT or GS (for Genome Space)");
System.exit(-1);
}
}else if (option.equals("--configDir"))
ISAcreatorCLArgs.configDir = arg;
else if (option.equals("--username"))
ISAcreatorCLArgs.username = arg;
else if (option.equals("--password"))
ISAcreatorCLArgs.password = arg.toCharArray();
else if (option.equals("--isatabDir"))
ISAcreatorCLArgs.isatabDir = arg;
else if (option.equals("--isatabFiles")) {
ISAcreatorCLArgs.isatabFiles = parseFilenames(arg);
}
} //while
validate();
}
private static String[] parseFilenames(String arg){
return arg.split(",");
}
private static void validate(){
if (isatabFiles()!=null && mode()!=Mode.GS){
System.out.println("The isatabFiles parameter is only valid for the GS (Genome Space) mode.");
System.exit(-1);
}
}
}