Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions src/main/java/DojoMain.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.liucj.learn.meetup;

import java.util.Arrays;

public class DojoMain {
public static void main(String[] args) {

System.out.println("args is:");
System.out.println(Arrays.toString(args));

System.out.println();
System.out.println("init parameter starting...");
ParameterParser.parser(args);

System.out.println();
System.out.println("process is starting...");
Thread demoThread = new Thread(new ServiceDemo());
demoThread.start();

try {
demoThread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}

System.out.println();
System.out.println("process ended.");
}
}
105 changes: 105 additions & 0 deletions src/main/java/ParameterParser.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package com.liucj.learn.meetup;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

public class ParameterParser {
public static final String PARAMETER_L = "l";
public static final String PARAMETER_P = "p";
public static final String PARAMETER_D = "d";

public static HashMap<String, ParameterType> parametersConfig = new HashMap<>();
public static ConcurrentMap<String, Object> parameters = new ConcurrentHashMap<String, Object>();

static {
parametersConfig.put(PARAMETER_L, new ParameterType(PARAMETER_L, true, String.class.getSimpleName()));
parametersConfig.put(PARAMETER_P, new ParameterType(PARAMETER_P, false, Integer.class.getSimpleName()));
parametersConfig.put(PARAMETER_D, new ParameterType(PARAMETER_D, false, String.class.getSimpleName()));

parameters.put(PARAMETER_L,Boolean.valueOf(false));
parameters.put(PARAMETER_P,Integer.valueOf(0));
parameters.put(PARAMETER_D, "");
}

public static void parser(String[] args) {
List<String> argList = Arrays.asList(args);
// System.out.println("args is:");
// argList.forEach(System.out::println);
Iterator<String> it = argList.iterator();
boolean getNext = true;
String key = null;
String parameter = null;
String value = null;
while (it.hasNext()) {
if (getNext) {
key = it.next();
}
getNext = true;
parameter = key;
if (parameter.startsWith("-")) {
parameter = parameter.substring(1);
if (parametersConfig.containsKey(parameter)) {
// System.out.println("init parameter for " + parameter);
if (it.hasNext()) {
value = it.next();
if (!value.startsWith("-")) {
if (parametersConfig.get(parameter).isPosition()) {
System.out.println("parameter " + parameter + " don't need a value!");
System.exit(-1);
} else {
if (parametersConfig.get(parameter).getType().equals(String.class.getSimpleName())) {
parameters.put(parameter, (String) value);
} else if (parametersConfig.get(parameter).getType().equals(Integer.class.getSimpleName())) {
parameters.put((parameter), Integer.valueOf(value));
} else {
parameters.put(parameter, value);
}
System.out.println("init parameter:"+parameter+ " using value:"+value);
}
} else {
key = value;
if (parametersConfig.get(parameter).isPosition()) {
parameters.put(parameter, Boolean.valueOf(true));
System.out.println("init parameter:"+parameter+ " using value:true");
getNext = false;
} else {
System.out.println("parameter " + parameter + " must hava a value!");
System.exit(-1);
}
}
} else {
if (parametersConfig.get(parameter).isPosition()) {
parameters.put(parameter, Boolean.valueOf(true));
System.out.println("init parameter:"+parameter+ " using value:true");
} else {
System.out.println("parameter " + parameter + " must hava a value!");
System.exit(-1);
}
}
} else {
System.out.println("parameter error,parameter " + parameter + " is not valid!");
System.exit(-1);
}
} else {
System.out.println("parameter error,parameter " + parameter + " must start with - !");
System.exit(-1);
}
}
}

public static boolean getParameterL() {
return (Boolean) parameters.get(PARAMETER_L);
}

public static int getParameterP() {
return (int) parameters.get(PARAMETER_P);
}

public static String getParameterD() {
return (String) parameters.get(PARAMETER_D);
}
}
39 changes: 39 additions & 0 deletions src/main/java/ParameterType.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.liucj.learn.meetup;

import java.lang.reflect.Type;

public class ParameterType {
public String name;
public boolean position;
public String type;

public ParameterType(String name, boolean position, String type) {
this.name = name;
this.position = position;
this.type = type;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public boolean isPosition() {
return position;
}

public void setPosition(boolean position) {
this.position = position;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}
}
25 changes: 25 additions & 0 deletions src/main/java/ServiceDemo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.liucj.learn.meetup;

public class ServiceDemo implements Runnable {
@Override
public void run() {
if (ParameterParser.getParameterL()) {
System.out.println("parameter " + ParameterParser.PARAMETER_L + " is true");
} else {
System.out.println("parameter " + ParameterParser.PARAMETER_L + " is false");
}

if (ParameterParser.getParameterP() != 0) {
System.out.println("parameter " + ParameterParser.PARAMETER_P + " is " + ParameterParser.getParameterP());
} else {
System.out.println("parameter " + ParameterParser.PARAMETER_P + " is default value 0");
}

if (ParameterParser.getParameterD() == null ||
ParameterParser.getParameterD().equals("")) {
System.out.println("parameter " + ParameterParser.PARAMETER_D + " is default value blank");
}else {
System.out.println("parameter " + ParameterParser.PARAMETER_D + " is " + ParameterParser.getParameterD());
}
}
}