aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Length.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Length.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Length.java335
1 files changed, 0 insertions, 335 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Length.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Length.java
deleted file mode 100644
index bd4da442..00000000
--- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Length.java
+++ /dev/null
@@ -1,335 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.tools.ant.taskdefs;
-
-import java.io.File;
-import java.io.OutputStream;
-import java.io.PrintStream;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.taskdefs.condition.Condition;
-import org.apache.tools.ant.types.Comparison;
-import org.apache.tools.ant.types.EnumeratedAttribute;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.types.Resource;
-import org.apache.tools.ant.types.ResourceCollection;
-import org.apache.tools.ant.types.resources.FileResource;
-import org.apache.tools.ant.types.resources.Resources;
-import org.apache.tools.ant.util.FileUtils;
-import org.apache.tools.ant.util.PropertyOutputStream;
-
-/**
- * Gets lengths: of files/resources, byte size; of strings, length (optionally trimmed).
- * The task is overloaded in this way for semantic reasons, much like Available.
- * @since Ant 1.6.3
- */
-public class Length extends Task implements Condition {
-
- private static final String ALL = "all";
- private static final String EACH = "each";
- private static final String STRING = "string";
-
- private static final String LENGTH_REQUIRED
- = "Use of the Length condition requires that the length attribute be set.";
-
- private String property;
- private String string;
- private Boolean trim;
- private String mode = ALL;
- private Comparison when = Comparison.EQUAL;
- private Long length;
- private Resources resources;
-
- /**
- * The property in which the length will be stored.
- * @param property the <code>String</code> property key.
- */
- public synchronized void setProperty(String property) {
- this.property = property;
- }
-
- /**
- * Set the single resource for this task.
- * @param resource the Resource whose length to retrieve.
- */
- public synchronized void setResource(Resource resource) {
- add(resource);
- }
-
- /**
- * Set the single file for this task.
- * @param file the <code>File</code> whose length to retrieve.
- */
- public synchronized void setFile(File file) {
- add(new FileResource(file));
- }
-
- /**
- * Add a FileSet.
- * @param fs the <code>FileSet</code> to add.
- */
- public synchronized void add(FileSet fs) {
- add((ResourceCollection) fs);
- }
-
- /**
- * Add a ResourceCollection.
- * @param c the <code>ResourceCollection</code> to add.
- * @since Ant 1.7
- */
- public synchronized void add(ResourceCollection c) {
- if (c == null) {
- return;
- }
- resources = (resources == null) ? new Resources() : resources;
- resources.add(c);
- }
-
- /**
- * Set the target count number for use as a Condition.
- * @param ell the long length to compare with.
- */
- public synchronized void setLength(long ell) {
- length = new Long(ell);
- }
-
- /**
- * Set the comparison for use as a Condition.
- * @param w EnumeratedAttribute When.
- * @see org.apache.tools.ant.types.Comparison
- */
- public synchronized void setWhen(When w) {
- setWhen((Comparison) w);
- }
-
- /**
- * Set the comparison for use as a Condition.
- * @param c Comparison.
- * @see org.apache.tools.ant.types.Comparison
- * @since Ant 1.7
- */
- public synchronized void setWhen(Comparison c) {
- when = c;
- }
-
- /**
- * Set the execution mode for working with files.
- * @param m the <code>FileMode</code> to use.
- */
- public synchronized void setMode(FileMode m) {
- this.mode = m.getValue();
- }
-
- /**
- * Set the string whose length to get.
- * @param string <code>String</code>.
- */
- public synchronized void setString(String string) {
- this.string = string;
- this.mode = STRING;
- }
-
- /**
- * Set whether to trim in string mode. Default false.
- * @param trim <code>boolean</code>.
- */
- public synchronized void setTrim(boolean trim) {
- this.trim = trim ? Boolean.TRUE : Boolean.FALSE;
- }
-
- /**
- * Learn whether strings will be trimmed. Default false.
- * @return boolean trim setting.
- */
- public boolean getTrim() {
- return trim != null && trim.booleanValue();
- }
-
- /**
- * Execute the length task.
- */
- public void execute() {
- validate();
- PrintStream ps = new PrintStream((property != null)
- ? (OutputStream) new PropertyOutputStream(getProject(), property)
- : (OutputStream) new LogOutputStream(this, Project.MSG_INFO));
-
- if (STRING.equals(mode)) {
- ps.print(getLength(string, getTrim()));
- ps.close();
- } else if (EACH.equals(mode)) {
- handleResources(new EachHandler(ps));
- } else if (ALL.equals(mode)) {
- handleResources(new AllHandler(ps));
- }
- }
-
- /**
- * Fulfill the condition contract.
- * @return true if the condition is true.
- * @throws BuildException if an error occurs.
- */
- public boolean eval() {
- validate();
- if (length == null) {
- throw new BuildException(LENGTH_REQUIRED);
- }
- Long ell;
- if (STRING.equals(mode)) {
- ell = new Long(getLength(string, getTrim()));
- } else {
- AccumHandler h = new AccumHandler();
- handleResources(h);
- ell = new Long(h.getAccum());
- }
- return when.evaluate(ell.compareTo(length));
- }
-
- private void validate() {
- if (string != null) {
- if (resources != null) {
- throw new BuildException("the string length function"
- + " is incompatible with the file/resource length function");
- }
- if (!(STRING.equals(mode))) {
- throw new BuildException("the mode attribute is for use"
- + " with the file/resource length function");
- }
- } else if (resources != null) {
- if (!(EACH.equals(mode) || ALL.equals(mode))) {
- throw new BuildException("invalid mode setting for"
- + " file/resource length function: \"" + mode + "\"");
- } else if (trim != null) {
- throw new BuildException("the trim attribute is"
- + " for use with the string length function only");
- }
- } else {
- throw new BuildException("you must set either the string attribute"
- + " or specify one or more files using the file attribute or"
- + " nested resource collections");
- }
- }
-
- private void handleResources(Handler h) {
- for (Resource r : resources) {
- if (!r.isExists()) {
- log(r + " does not exist", Project.MSG_WARN);
- }
- if (r.isDirectory()) {
- log(r + " is a directory; length may not be meaningful", Project.MSG_WARN);
- }
- h.handle(r);
- }
- h.complete();
- }
-
- private static long getLength(String s, boolean t) {
- return (t ? s.trim() : s).length();
- }
-
- /** EnumeratedAttribute operation mode */
- public static class FileMode extends EnumeratedAttribute {
- static final String[] MODES = new String[] {EACH, ALL};
-
- /**
- * Return the possible values for FileMode.
- * @return <code>String[]</code>.
- */
- public String[] getValues() {
- return MODES;
- }
-
- }
-
- /**
- * EnumeratedAttribute for the when attribute.
- */
- public static class When extends Comparison {
- //extend Comparison; retain for BC only
- }
-
- private abstract class Handler {
- private PrintStream ps;
- Handler(PrintStream ps) {
- this.ps = ps;
- }
-
- protected PrintStream getPs() {
- return ps;
- }
-
- protected abstract void handle(Resource r);
-
- void complete() {
- FileUtils.close(ps);
- }
- }
-
- private class EachHandler extends Handler {
- EachHandler(PrintStream ps) {
- super(ps);
- }
- protected void handle(Resource r) {
- getPs().print(r.toString());
- getPs().print(" : ");
- //when writing to the log, we'll see what's happening:
- long size = r.getSize();
- if (size == Resource.UNKNOWN_SIZE) {
- getPs().println("unknown");
- } else {
- getPs().println(size);
- }
- }
- }
-
- private class AccumHandler extends Handler {
- private long accum = 0L;
-
- AccumHandler() {
- super(null);
- }
- protected AccumHandler(PrintStream ps) {
- super(ps);
- }
- protected long getAccum() {
- return accum;
- }
- protected synchronized void handle(Resource r) {
- long size = r.getSize();
- if (size == Resource.UNKNOWN_SIZE) {
- log("Size unknown for " + r.toString(), Project.MSG_WARN);
- } else {
- accum += size;
- }
- }
- }
-
- private class AllHandler extends AccumHandler {
- AllHandler(PrintStream ps) {
- super(ps);
- }
- void complete() {
- getPs().print(getAccum());
- super.complete();
- }
- }
-
-}