]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.application/src/org/simantics/application/arguments/IArgumentFactory.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.application / src / org / simantics / application / arguments / IArgumentFactory.java
index df854bb3436f35f9ae7ada64178e342f68a4c019..856d604fe97c8951a56a21a603464a5e2cc48952 100644 (file)
-/*******************************************************************************\r
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- *     VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.application.arguments;\r
-\r
-import java.util.ListIterator;\r
-\r
-/**\r
- * @author Tuukka Lehtonen\r
- *\r
- * @param <T>\r
- */\r
-public interface IArgumentFactory<T> {\r
-\r
-    String getArgument();\r
-\r
-    IArgument<T> parse(String arg, ListIterator<String> tail);\r
-    \r
-    abstract class ArgumentFactory<V> implements IArgumentFactory<V> {\r
-        String arg;\r
-        protected IArgumentValidator<V> validator;\r
-        public ArgumentFactory(String arg) {\r
-            this(arg, null);\r
-        }\r
-        public ArgumentFactory(String arg, IArgumentValidator<V> validator) {\r
-            this.arg = arg;\r
-            this.validator = validator;\r
-        }\r
-        public String getArgument() {\r
-            return arg;\r
-        }\r
-        protected IArgumentValidator<V> getValidator() {\r
-            return validator;\r
-        }\r
-    }\r
-    \r
-    abstract class Argument<T> implements IArgument<T> {\r
-        String key;\r
-\r
-        public Argument(String key) {\r
-            assert key != null;\r
-            this.key = key;\r
-        }\r
-\r
-        @Override\r
-        public String getArgument() {\r
-            return key;\r
-        }\r
-\r
-        public abstract T getValue();\r
-\r
-        @Override\r
-        public String toString() {\r
-            return "(" + getValue().getClass().getSimpleName() + ") " + getValue().toString();\r
-        }\r
-    }\r
-    \r
-    class BooleanArgument extends Argument<Boolean> {\r
-        Boolean value;\r
-        public BooleanArgument(String key, Boolean value) {\r
-            super(key);\r
-            this.value = value;\r
-        }\r
-        public Boolean getValue() {\r
-            return value;\r
-        }\r
-    };\r
-    \r
-    class StringArgument extends Argument<String> {\r
-        String value;\r
-        public StringArgument(String key, String value) {\r
-            super(key);\r
-            this.value = value;\r
-        }\r
-        public String getValue() {\r
-            return value;\r
-        }\r
-    };\r
-    \r
-    class IntegerArgument extends Argument<Integer> {\r
-        Integer value;\r
-        public IntegerArgument(String key, Integer value) {\r
-            super(key);\r
-            this.value = value;\r
-        }\r
-        public Integer getValue() {\r
-            return value;\r
-        }\r
-    };\r
-\r
-    class LongArgument extends Argument<Long> {\r
-        Long value;\r
-        public LongArgument(String key, Long value) {\r
-            super(key);\r
-            this.value = value;\r
-        }\r
-        public Long getValue() {\r
-            return value;\r
-        }\r
-    };\r
-\r
-    \r
-    class StringArgumentFactory extends ArgumentFactory<String> {\r
-        public StringArgumentFactory(String key) {\r
-            super(key);\r
-        }\r
-        public StringArgumentFactory(String key, IArgumentValidator<String> validator) {\r
-            super(key, validator);\r
-        }\r
-        @Override\r
-        public IArgument<String> parse(String key, ListIterator<String> tail) {\r
-            if (getArgument().equalsIgnoreCase(key)) {\r
-                if (tail.hasNext()) {\r
-                    String next = tail.next();\r
-                    IArgumentValidator<String> validator = getValidator();\r
-                    if(validator != null) {\r
-                           String valid = validator.isValid(next);\r
-                           if (valid != null) {\r
-                               tail.previous();\r
-                               throw new IllegalArgumentException(valid);\r
-                           }\r
-                    }\r
-                    return new StringArgument(getArgument(), next);\r
-                }\r
-            }\r
-            return null;\r
-        }\r
-    }\r
-    \r
-    class IntegerArgumentFactory extends ArgumentFactory<Integer> {\r
-        private Integer lowLimit;\r
-        private Integer highLimit;\r
-        public IntegerArgumentFactory(String key) {\r
-            this(key, null, null);\r
-        }\r
-        public IntegerArgumentFactory(String key, Integer lowLimit, Integer highLimit) {\r
-            super(key);\r
-            this.lowLimit = lowLimit;\r
-            this.highLimit = highLimit;\r
-        }\r
-        @Override\r
-        public IArgument<Integer> parse(String key, ListIterator<String> tail) {\r
-            if (getArgument().equalsIgnoreCase(key)) {\r
-                if (tail.hasNext()) {\r
-                    try {\r
-                        Integer l = Integer.valueOf(tail.next());\r
-                        if (lowLimit != null && lowLimit > l)\r
-                            throw new IllegalArgumentException("value is less than low limit, " + l + " < " + lowLimit);\r
-                        if (highLimit != null && highLimit < l)\r
-                            throw new IllegalArgumentException("value is greater than high limit, " + l + " > " + highLimit);\r
-                        return new IntegerArgument(getArgument(), l);\r
-                    } catch (NumberFormatException e) {\r
-                        throw new IllegalArgumentException(e);\r
-                    }\r
-                }\r
-            }\r
-            return null;\r
-        }\r
-    }\r
-    \r
-    class LongArgumentFactory extends ArgumentFactory<Long> {\r
-        public LongArgumentFactory(String key) {\r
-            super(key);\r
-        }\r
-        @Override\r
-        public IArgument<Long> parse(String key, ListIterator<String> tail) {\r
-            if (getArgument().equalsIgnoreCase(key)) {\r
-                if (tail.hasNext()) {\r
-                    try {\r
-                        Long l = Long.valueOf(tail.next());\r
-                        return new LongArgument(getArgument(), l);\r
-                    } catch (NumberFormatException e) {\r
-                        throw new IllegalArgumentException(e);\r
-                    }\r
-                }\r
-            }\r
-            return null;\r
-        }\r
-    }\r
-    \r
-    class NoValueArgumentFactory extends ArgumentFactory<Boolean> {\r
-        public NoValueArgumentFactory(String key) {\r
-            super(key);\r
-        }\r
-        @Override\r
-        public IArgument<Boolean> parse(String key, ListIterator<String> tail) {\r
-            if (getArgument().equalsIgnoreCase(key)) {\r
-                return new BooleanArgument(getArgument(), Boolean.TRUE);\r
-            }\r
-            return null;\r
-        }\r
-    }\r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.application.arguments;
+
+import java.util.ListIterator;
+
+/**
+ * @author Tuukka Lehtonen
+ *
+ * @param <T>
+ */
+public interface IArgumentFactory<T> {
+
+    String getArgument();
+
+    IArgument<T> parse(String arg, ListIterator<String> tail);
+    
+    abstract class ArgumentFactory<V> implements IArgumentFactory<V> {
+        String arg;
+        protected IArgumentValidator<V> validator;
+        public ArgumentFactory(String arg) {
+            this(arg, null);
+        }
+        public ArgumentFactory(String arg, IArgumentValidator<V> validator) {
+            this.arg = arg;
+            this.validator = validator;
+        }
+        public String getArgument() {
+            return arg;
+        }
+        protected IArgumentValidator<V> getValidator() {
+            return validator;
+        }
+    }
+    
+    abstract class Argument<T> implements IArgument<T> {
+        String key;
+
+        public Argument(String key) {
+            assert key != null;
+            this.key = key;
+        }
+
+        @Override
+        public String getArgument() {
+            return key;
+        }
+
+        public abstract T getValue();
+
+        @Override
+        public String toString() {
+            return "(" + getValue().getClass().getSimpleName() + ") " + getValue().toString();
+        }
+    }
+    
+    class BooleanArgument extends Argument<Boolean> {
+        Boolean value;
+        public BooleanArgument(String key, Boolean value) {
+            super(key);
+            this.value = value;
+        }
+        public Boolean getValue() {
+            return value;
+        }
+    };
+    
+    class StringArgument extends Argument<String> {
+        String value;
+        public StringArgument(String key, String value) {
+            super(key);
+            this.value = value;
+        }
+        public String getValue() {
+            return value;
+        }
+    };
+    
+    class IntegerArgument extends Argument<Integer> {
+        Integer value;
+        public IntegerArgument(String key, Integer value) {
+            super(key);
+            this.value = value;
+        }
+        public Integer getValue() {
+            return value;
+        }
+    };
+
+    class LongArgument extends Argument<Long> {
+        Long value;
+        public LongArgument(String key, Long value) {
+            super(key);
+            this.value = value;
+        }
+        public Long getValue() {
+            return value;
+        }
+    };
+
+    
+    class StringArgumentFactory extends ArgumentFactory<String> {
+        public StringArgumentFactory(String key) {
+            super(key);
+        }
+        public StringArgumentFactory(String key, IArgumentValidator<String> validator) {
+            super(key, validator);
+        }
+        @Override
+        public IArgument<String> parse(String key, ListIterator<String> tail) {
+            if (getArgument().equalsIgnoreCase(key)) {
+                if (tail.hasNext()) {
+                    String next = tail.next();
+                    IArgumentValidator<String> validator = getValidator();
+                    if(validator != null) {
+                           String valid = validator.isValid(next);
+                           if (valid != null) {
+                               tail.previous();
+                               throw new IllegalArgumentException(valid);
+                           }
+                    }
+                    return new StringArgument(getArgument(), next);
+                }
+            }
+            return null;
+        }
+    }
+    
+    class IntegerArgumentFactory extends ArgumentFactory<Integer> {
+        private Integer lowLimit;
+        private Integer highLimit;
+        public IntegerArgumentFactory(String key) {
+            this(key, null, null);
+        }
+        public IntegerArgumentFactory(String key, Integer lowLimit, Integer highLimit) {
+            super(key);
+            this.lowLimit = lowLimit;
+            this.highLimit = highLimit;
+        }
+        @Override
+        public IArgument<Integer> parse(String key, ListIterator<String> tail) {
+            if (getArgument().equalsIgnoreCase(key)) {
+                if (tail.hasNext()) {
+                    try {
+                        Integer l = Integer.valueOf(tail.next());
+                        if (lowLimit != null && lowLimit > l)
+                            throw new IllegalArgumentException("value is less than low limit, " + l + " < " + lowLimit);
+                        if (highLimit != null && highLimit < l)
+                            throw new IllegalArgumentException("value is greater than high limit, " + l + " > " + highLimit);
+                        return new IntegerArgument(getArgument(), l);
+                    } catch (NumberFormatException e) {
+                        throw new IllegalArgumentException(e);
+                    }
+                }
+            }
+            return null;
+        }
+    }
+    
+    class LongArgumentFactory extends ArgumentFactory<Long> {
+        public LongArgumentFactory(String key) {
+            super(key);
+        }
+        @Override
+        public IArgument<Long> parse(String key, ListIterator<String> tail) {
+            if (getArgument().equalsIgnoreCase(key)) {
+                if (tail.hasNext()) {
+                    try {
+                        Long l = Long.valueOf(tail.next());
+                        return new LongArgument(getArgument(), l);
+                    } catch (NumberFormatException e) {
+                        throw new IllegalArgumentException(e);
+                    }
+                }
+            }
+            return null;
+        }
+    }
+    
+    class NoValueArgumentFactory extends ArgumentFactory<Boolean> {
+        public NoValueArgumentFactory(String key) {
+            super(key);
+        }
+        @Override
+        public IArgument<Boolean> parse(String key, ListIterator<String> tail) {
+            if (getArgument().equalsIgnoreCase(key)) {
+                return new BooleanArgument(getArgument(), Boolean.TRUE);
+            }
+            return null;
+        }
+    }
+
+}