|
|
@@ -20,6 +20,7 @@ package org.apache.tools.ant.types.selectors; |
|
|
|
|
|
|
|
import java.io.File; |
|
|
|
|
|
|
|
import org.apache.tools.ant.types.Comparison; |
|
|
|
import org.apache.tools.ant.types.EnumeratedAttribute; |
|
|
|
import org.apache.tools.ant.types.Parameter; |
|
|
|
|
|
|
@@ -30,10 +31,6 @@ import org.apache.tools.ant.types.Parameter; |
|
|
|
*/ |
|
|
|
public class SizeSelector extends BaseExtendSelector { |
|
|
|
|
|
|
|
private long size = -1; |
|
|
|
private long multiplier = 1; |
|
|
|
private long sizelimit = -1; |
|
|
|
private int cmp = 2; |
|
|
|
/** Used for parameterized custom selector */ |
|
|
|
public static final String SIZE_KEY = "value"; |
|
|
|
/** Used for parameterized custom selector */ |
|
|
@@ -41,6 +38,11 @@ public class SizeSelector extends BaseExtendSelector { |
|
|
|
/** Used for parameterized custom selector */ |
|
|
|
public static final String WHEN_KEY = "when"; |
|
|
|
|
|
|
|
private long size = -1; |
|
|
|
private long multiplier = 1; |
|
|
|
private long sizelimit = -1; |
|
|
|
private Comparison when = Comparison.EQUAL; |
|
|
|
|
|
|
|
/** |
|
|
|
* Creates a new <code>SizeSelector</code> instance. |
|
|
|
* |
|
|
@@ -57,14 +59,7 @@ public class SizeSelector extends BaseExtendSelector { |
|
|
|
public String toString() { |
|
|
|
StringBuffer buf = new StringBuffer("{sizeselector value: "); |
|
|
|
buf.append(sizelimit); |
|
|
|
buf.append("compare: "); |
|
|
|
if (cmp == 0) { |
|
|
|
buf.append("less"); |
|
|
|
} else if (cmp == 1) { |
|
|
|
buf.append("more"); |
|
|
|
} else { |
|
|
|
buf.append("equal"); |
|
|
|
} |
|
|
|
buf.append("compare: ").append(when.getValue()); |
|
|
|
buf.append("}"); |
|
|
|
return buf.toString(); |
|
|
|
} |
|
|
@@ -78,7 +73,7 @@ public class SizeSelector extends BaseExtendSelector { |
|
|
|
*/ |
|
|
|
public void setValue(long size) { |
|
|
|
this.size = size; |
|
|
|
if ((multiplier != 0) && (size > -1)) { |
|
|
|
if (multiplier != 0 && size > -1) { |
|
|
|
sizelimit = size * multiplier; |
|
|
|
} |
|
|
|
} |
|
|
@@ -112,24 +107,24 @@ public class SizeSelector extends BaseExtendSelector { |
|
|
|
public void setUnits(ByteUnits units) { |
|
|
|
int i = units.getIndex(); |
|
|
|
multiplier = 0; |
|
|
|
if ((i > -1) && (i < 4)) { |
|
|
|
if (i > -1 && i < 4) { |
|
|
|
multiplier = 1000; |
|
|
|
} else if ((i > 3) && (i < 9)) { |
|
|
|
} else if (i > 3 && i < 9) { |
|
|
|
multiplier = 1024; |
|
|
|
} else if ((i > 8) && (i < 13)) { |
|
|
|
} else if (i > 8 && i < 13) { |
|
|
|
multiplier = 1000000; |
|
|
|
} else if ((i > 12) && (i < 18)) { |
|
|
|
} else if (i > 12 && i < 18) { |
|
|
|
multiplier = 1048576; |
|
|
|
} else if ((i > 17) && (i < 22)) { |
|
|
|
} else if (i > 17 && i < 22) { |
|
|
|
multiplier = 1000000000L; |
|
|
|
} else if ((i > 21) && (i < 27)) { |
|
|
|
} else if (i > 21 && i < 27) { |
|
|
|
multiplier = 1073741824L; |
|
|
|
} else if ((i > 26) && (i < 31)) { |
|
|
|
} else if (i > 26 && i < 31) { |
|
|
|
multiplier = 1000000000000L; |
|
|
|
} else if ((i > 30) && (i < 36)) { |
|
|
|
} else if (i > 30 && i < 36) { |
|
|
|
multiplier = 1099511627776L; |
|
|
|
} |
|
|
|
if ((multiplier > 0) && (size > -1)) { |
|
|
|
if (multiplier > 0 && size > -1) { |
|
|
|
sizelimit = size * multiplier; |
|
|
|
} |
|
|
|
} |
|
|
@@ -139,10 +134,10 @@ public class SizeSelector extends BaseExtendSelector { |
|
|
|
* when the file matches a particular size, when it is smaller, |
|
|
|
* or whether it is larger. |
|
|
|
* |
|
|
|
* @param scmp The comparison to perform, an EnumeratedAttribute. |
|
|
|
* @param when The comparison to perform, an EnumeratedAttribute. |
|
|
|
*/ |
|
|
|
public void setWhen(SizeComparisons scmp) { |
|
|
|
this.cmp = scmp.getIndex(); |
|
|
|
public void setWhen(SizeComparisons when) { |
|
|
|
this.when = when; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@@ -217,13 +212,8 @@ public class SizeSelector extends BaseExtendSelector { |
|
|
|
if (file.isDirectory()) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
if (cmp == 0) { |
|
|
|
return (file.length() < sizelimit); |
|
|
|
} else if (cmp == 1) { |
|
|
|
return (file.length() > sizelimit); |
|
|
|
} else { |
|
|
|
return (file.length() == sizelimit); |
|
|
|
} |
|
|
|
long diff = file.length() - sizelimit; |
|
|
|
return when.evaluate(diff == 0 ? 0 : (int) (diff / Math.abs(diff))); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@@ -265,13 +255,7 @@ public class SizeSelector extends BaseExtendSelector { |
|
|
|
/** |
|
|
|
* Enumerated attribute with the values for size comparison. |
|
|
|
*/ |
|
|
|
public static class SizeComparisons extends EnumeratedAttribute { |
|
|
|
/** |
|
|
|
* @return the values as an array of strings |
|
|
|
*/ |
|
|
|
public String[] getValues() { |
|
|
|
return new String[]{"less", "more", "equal"}; |
|
|
|
} |
|
|
|
public static class SizeComparisons extends Comparison { |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|