|
From: <fd...@us...> - 2007-02-11 22:29:52
|
Revision: 3122
http://jnode.svn.sourceforge.net/jnode/?rev=3122&view=rev
Author: fduminy
Date: 2007-02-11 14:29:51 -0800 (Sun, 11 Feb 2007)
Log Message:
-----------
added min/max properties for validation of int/long arguments
Modified Paths:
--------------
trunk/shell/src/shell/org/jnode/shell/help/argument/IntegerArgument.java
trunk/shell/src/shell/org/jnode/shell/help/argument/LongArgument.java
Modified: trunk/shell/src/shell/org/jnode/shell/help/argument/IntegerArgument.java
===================================================================
--- trunk/shell/src/shell/org/jnode/shell/help/argument/IntegerArgument.java 2007-02-11 22:28:59 UTC (rev 3121)
+++ trunk/shell/src/shell/org/jnode/shell/help/argument/IntegerArgument.java 2007-02-11 22:29:51 UTC (rev 3122)
@@ -27,22 +27,65 @@
/**
* @author Ewout Prangsma (ep...@us...)
+ * @author Fabien DUMINY (fduminy at jnode.org)
+ *
+ * TODO should be factorized with LongArgument
*/
public class IntegerArgument extends Argument {
+ private int min;
+ private int max;
+ public IntegerArgument(String name, String description) {
+ this(name, description, SINGLE);
+ }
+
public IntegerArgument(String name, String description, boolean multi) {
- super(name, description, multi);
+ this(name, description, multi, Integer.MIN_VALUE, Integer.MAX_VALUE);
}
- public IntegerArgument(String name, String description) {
- super(name, description);
+ public IntegerArgument(String name, String description, boolean multi, int min, int max) {
+ super(name, description, multi);
+ if(min > max)
+ {
+ throw new IllegalArgumentException("min(value:"+min+") > max(value:"+max+")");
+ }
+
+ this.min = min;
+ this.max = max;
}
-
+
public String complete(String partial) {
return partial;
+ }
+
+ @Override
+ protected boolean isValidValue(String value) {
+ int val = -1;
+ try {
+ val = getIntValue(value);
+ } catch (NumberFormatException e) {
+ return false;
+ }
+
+ if(val < min)
+ {
+ return false;
+ }
+
+ if(val > max)
+ {
+ return false;
+ }
+
+ return true;
}
public int getInteger(ParsedArguments args) {
- return Integer.parseInt(this.getValue(args));
+ return getIntValue(this.getValue(args));
}
+
+ protected int getIntValue(String value)
+ {
+ return Integer.parseInt(value);
+ }
}
Modified: trunk/shell/src/shell/org/jnode/shell/help/argument/LongArgument.java
===================================================================
--- trunk/shell/src/shell/org/jnode/shell/help/argument/LongArgument.java 2007-02-11 22:28:59 UTC (rev 3121)
+++ trunk/shell/src/shell/org/jnode/shell/help/argument/LongArgument.java 2007-02-11 22:29:51 UTC (rev 3122)
@@ -27,21 +27,68 @@
/**
* @author Ewout Prangsma (ep...@us...)
*/
+/**
+ * @author Ewout Prangsma (ep...@us...)
+ * @author Fabien DUMINY (fduminy at jnode.org)
+ *
+ * TODO should be factorized with IntegerArgument
+ */
public class LongArgument extends Argument {
-
- public LongArgument(String name, String description, boolean multi) {
- super(name, description, multi);
- }
+ private long min;
+ private long max;
+
+ public LongArgument(String name, String description) {
+ this(name, description, SINGLE);
+ }
- public LongArgument(String name, String description) {
- super(name, description);
- }
+ public LongArgument(String name, String description, boolean multi) {
+ this(name, description, multi, Long.MIN_VALUE, Long.MAX_VALUE);
+ }
- public String complete(String partial) {
- return partial;
- }
-
- public long getLong(ParsedArguments args) {
- return Long.parseLong(this.getValue(args));
- }
+ public LongArgument(String name, String description, boolean multi,
+ long min, long max) {
+ super(name, description, multi);
+ if(min > max)
+ {
+ throw new IllegalArgumentException("min(value:"+min+") > max(value:"+max+")");
+ }
+
+ this.min = min;
+ this.max = max;
+ }
+
+ public String complete(String partial) {
+ return partial;
+ }
+
+ @Override
+ protected boolean isValidValue(String value) {
+ long val = -1;
+ try {
+ val = getLongValue(value);
+ } catch (NumberFormatException e) {
+ return false;
+ }
+
+ if(val < min)
+ {
+ return false;
+ }
+
+ if(val > max)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ public long getLong(ParsedArguments args) {
+ return getLongValue(this.getValue(args));
+ }
+
+ protected long getLongValue(String value)
+ {
+ return Long.parseLong(value);
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|