commit 1c2d7b5083d5db3d4d4ec57141f7872bf12fe9ef Author: Harald Wolff Date: Tue May 29 11:01:49 2018 +0200 Initial Commit diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..6ee61f2 --- /dev/null +++ b/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..6669990 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.DS_Store +bin/* + +/bin diff --git a/.project b/.project new file mode 100644 index 0000000..5f50026 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + bootstrap-platform + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..7e5c907 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=9 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=9 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=9 diff --git a/src/bootstrap/ArgumentHandling.java b/src/bootstrap/ArgumentHandling.java new file mode 100644 index 0000000..de74eb4 --- /dev/null +++ b/src/bootstrap/ArgumentHandling.java @@ -0,0 +1,5 @@ +package bootstrap; + +public enum ArgumentHandling { + UNHANDLED, HANDLED, CONTINUE +} diff --git a/src/bootstrap/ArrayEnumerator.java b/src/bootstrap/ArrayEnumerator.java new file mode 100644 index 0000000..35e9aa9 --- /dev/null +++ b/src/bootstrap/ArrayEnumerator.java @@ -0,0 +1,27 @@ +package bootstrap; + +import java.util.Enumeration; + +public class ArrayEnumerator implements Enumeration{ + + E[] values; + int cursor; + + public ArrayEnumerator(E[] values) { + this.values = values; + this.cursor = 0; + } + + @Override + public boolean hasMoreElements() { + return cursor < this.values.length; + } + + @Override + public E nextElement() { + return this.values[ this.cursor++ ]; + } + + + +} diff --git a/src/bootstrap/Bootstrap.java b/src/bootstrap/Bootstrap.java new file mode 100644 index 0000000..f8659d7 --- /dev/null +++ b/src/bootstrap/Bootstrap.java @@ -0,0 +1,46 @@ +package bootstrap; + +import static bootstrap.logging.Logging.*; + +import bootstrap.logging.Logging; + +import static bootstrap.logging.LogLevel.*; + +public class Bootstrap { + + static MultipleParameterOption libOption = new MultipleParameterOption('l',"library"); + static SimpleOption verboseOption = new SimpleOption('v',"verbose"); + static SimpleOption debugOption = new SimpleOption('d',"debug"); + static SingleParameterOption logLevelOption = new SingleParameterOption("log-level",true); + static SingleParameterOption classOption = new SingleParameterOption('c',"class"); + + static SingleParameterOption bundleXmlOption = new SingleParameterOption('b',"bundle","bundle.xml"); + + static Option[] BootStrapOptions = { + verboseOption, + debugOption, + logLevelOption, + classOption, + libOption, + bundleXmlOption + }; + + public static void main(String[] args) { + Logging.Init(args, Bootstrap.class); + log("bootstrap-platform: Startup"); + + Options options = new Options(BootStrapOptions); + String[] unknown = options.parseCommandLineArguments(args); + + for (String u: unknown) { + log(INFO,"Unkown Argument: %s",u); + } + + for (String p: libOption.getParameters()) { + log(INFO,"Library override: %s",p); + } + + } + + +} diff --git a/src/bootstrap/Bundle.java b/src/bootstrap/Bundle.java new file mode 100644 index 0000000..88188eb --- /dev/null +++ b/src/bootstrap/Bundle.java @@ -0,0 +1,21 @@ +package bootstrap; + +import java.io.File; + +public class Bundle { + String href; + + public Bundle(String filename) { + load(new File(filename)); + } + + public Bundle(File file) { + load(file); + } + + private void load(File file) { + + } + + +} diff --git a/src/bootstrap/IArgumentListener.java b/src/bootstrap/IArgumentListener.java new file mode 100644 index 0000000..0cdbafa --- /dev/null +++ b/src/bootstrap/IArgumentListener.java @@ -0,0 +1,5 @@ +package bootstrap; + +public interface IArgumentListener { + public ArgumentHandling foundArgument(String argument,String parameter); +} diff --git a/src/bootstrap/MultipleParameterOption.java b/src/bootstrap/MultipleParameterOption.java new file mode 100644 index 0000000..8b47fda --- /dev/null +++ b/src/bootstrap/MultipleParameterOption.java @@ -0,0 +1,53 @@ +package bootstrap; + +import java.util.LinkedList; + +public class MultipleParameterOption extends Option { + + boolean ignoreDoubles; + LinkedList parameters = new LinkedList<>(); + + public MultipleParameterOption(Character shortOption, String longOption) { + super(shortOption, longOption); + } + + public MultipleParameterOption(Character shortOption) { + super(shortOption); + } + + public MultipleParameterOption(String longOption) { + super(longOption); + } + + public MultipleParameterOption(Character shortOption, String longOption,boolean ignoreDoubles) { + super(shortOption, longOption); + this.ignoreDoubles = ignoreDoubles; + } + + public MultipleParameterOption(Character shortOption,boolean ignoreDoubles) { + super(shortOption); + this.ignoreDoubles = ignoreDoubles; + } + + public MultipleParameterOption(String longOption,boolean ignoreDoubles) { + super(longOption); + this.ignoreDoubles = ignoreDoubles; + } + @Override + public boolean hasParameters() { + return true; + } + + @Override + public void addParameter(String parameter) throws IllegalArgumentException { + Set(); + if (ignoreDoubles || !this.parameters.contains(parameter)) + this.parameters.add(parameter); + } + + public String[] getParameters() { + return this.parameters.toArray(new String[0]); + } + + +} diff --git a/src/bootstrap/Option.java b/src/bootstrap/Option.java new file mode 100644 index 0000000..e8cd5a3 --- /dev/null +++ b/src/bootstrap/Option.java @@ -0,0 +1,107 @@ +package bootstrap; + +public abstract class Option { + + Character shortOption; + String longOption; + + boolean isset; + + public Option(String longOption) { + this.longOption = longOption; + } + public Option(Character shortOption) { + this.shortOption = shortOption; + } + public Option(Character shortOption,String longOption) { + this.shortOption = shortOption; + this.longOption = longOption; + } + + public Character getShortOption() { + return this.shortOption; + } + public String getLongOption() { + return this.longOption; + } + + public boolean isSet() { + return this.isset; + } + public void Set() { + this.isset = true; + } + public void Unset() { + this.isset = false; + } + + public boolean match(String argument) { + if ( + ((longOption != null) && (argument.startsWith("--")) && (longOption.equals(argument.substring(2)))) || + ((shortOption != null) && (argument.length()==2) && (argument.charAt(0)=='-') && (argument.charAt(1) == shortOption)) + ){ + return true; + } + return false; + } + + public abstract boolean hasParameters(); + public void addParameter(String parameter) throws IllegalArgumentException{ + throw new IllegalArgumentException(String.format("Option %s dos not accept any parameters",this)); + } + + @Override + public String toString() { + if (this.shortOption == null) { + return "--" + this.longOption; + } else if (this.longOption == null) { + return "-" + this.shortOption; + } else { + return String.format("[ -%c | --%s ]", shortOption,longOption); + } + } +} + +/* + + OptionType optionType = OptionType.BOOLEAN; + String name; + LinkedList parameters = new LinkedList<>(); + + public Option(String name) { + this.name = name; + } + public Option(String name,OptionType OptionType) { + this.name = name; + this.optionType = OptionType; + } + public Option(String argument,String[] parameters) { + this.optionType = OptionType.MULTIPLE; + this.name = argument; + for (String p : parameters) { + this.parameters.add(p); + } + } + public Option(String name,OptionType OptionType,String[] parameters) { + this.name = name; + for (String p : parameters) { + this.parameters.add(p); + } + } + + public String getName() { + return this.name; + } + public String[] getParameters() { + return this.parameters.toArray(new String[0]); + } + public String getParameter(int n) { + return this.parameters.get(n); + } + + public void addParameter(String p){ + this.parameters.add(p); + } + + */ + diff --git a/src/bootstrap/Options.java b/src/bootstrap/Options.java new file mode 100644 index 0000000..bf85de8 --- /dev/null +++ b/src/bootstrap/Options.java @@ -0,0 +1,56 @@ +package bootstrap; + +import java.util.LinkedList; + +public class Options { + + LinkedList unkownArguments = new LinkedList<>(); + LinkedList