package hdgl.util;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class ParameterHelper {
private ParameterHelper(){
}
public static Map<String, String[]> parseParameters( String[] args){
Map<String, String[]> groupArgs=new HashMap<String, String[]>();
String currentKeyString = "default";
ArrayList<String> currentKeyList = new ArrayList<String>();
for (String argString : args) {
if(argString.startsWith("-")){
if(groupArgs.containsKey(currentKeyString)){
for (String oldval : groupArgs.get(currentKeyString)) {
currentKeyList.add(oldval);
}
}
groupArgs.put(currentKeyString, currentKeyList.toArray(new String[0]));
currentKeyString = argString.replaceAll("^--?", "");
currentKeyList.clear();
}else{
currentKeyList.add(argString);
}
}
if(groupArgs.containsKey(currentKeyString)){
for (String oldval : groupArgs.get(currentKeyString)) {
currentKeyList.add(oldval);
}
}
groupArgs.put(currentKeyString, currentKeyList.toArray(new String[0]));
return groupArgs;
}
public static <T> T parameterizedConstructuct(Class<T> objClass, String[] args){
try{
try{
Constructor<T> constructor=objClass.getConstructor(Map.class);
Map<String, String[]> groupArgs = parseParameters(args);
return constructor.newInstance(groupArgs);
}catch (NoSuchMethodException e) {
Constructor<T> constructor = objClass.getConstructor();
return constructor.newInstance();
}
}catch (Exception e) {
throw new RuntimeException(e);
}
}
}