aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Truncate.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Truncate.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Truncate.java205
1 files changed, 0 insertions, 205 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Truncate.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Truncate.java
deleted file mode 100644
index fe5e9a7a..00000000
--- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/Truncate.java
+++ /dev/null
@@ -1,205 +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.IOException;
-import java.io.RandomAccessFile;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.types.Resource;
-import org.apache.tools.ant.types.ResourceCollection;
-import org.apache.tools.ant.types.resources.FileProvider;
-import org.apache.tools.ant.types.resources.FileResource;
-import org.apache.tools.ant.util.FileUtils;
-
-/**
- * Set the length of one or more files, as the intermittently available
- * <code>truncate</code> Unix utility/function.
- * @since Ant 1.7.1
- */
-public class Truncate extends Task {
-
- private static final int BUFFER_SIZE = 1024;
-
- private static final Long ZERO = new Long(0L);
-
- private static final String NO_CHILD = "No files specified.";
-
- private static final String INVALID_LENGTH = "Cannot truncate to length ";
-
- private static final String READ_WRITE = "rw";
-
- private static final FileUtils FILE_UTILS = FileUtils.getFileUtils();
-
- private static final byte[] FILL_BUFFER = new byte[BUFFER_SIZE];
-
- private Path path;
- private boolean create = true;
- private boolean mkdirs = false;
-
- private Long length;
- private Long adjust;
-
- /**
- * Set a single target File.
- * @param f the single File
- */
- public void setFile(File f) {
- add(new FileResource(f));
- }
-
- /**
- * Add a nested (filesystem-only) ResourceCollection.
- * @param rc the ResourceCollection to add.
- */
- public void add(ResourceCollection rc) {
- getPath().add(rc);
- }
-
- /**
- * Set the amount by which files' lengths should be adjusted.
- * It is permissible to append K / M / G / T / P.
- * @param adjust (positive or negative) adjustment amount.
- */
- public void setAdjust(Long adjust) {
- this.adjust = adjust;
- }
-
- /**
- * Set the length to which files should be set.
- * It is permissible to append K / M / G / T / P.
- * @param length (positive) adjustment amount.
- */
- public void setLength(Long length) {
- this.length = length;
- if (length != null && length.longValue() < 0) {
- throw new BuildException(INVALID_LENGTH + length);
- }
- }
-
- /**
- * Set whether to create nonexistent files.
- * @param create boolean, default <code>true</code>.
- */
- public void setCreate(boolean create) {
- this.create = create;
- }
-
- /**
- * Set whether, when creating nonexistent files, nonexistent directories
- * should also be created.
- * @param mkdirs boolean, default <code>false</code>.
- */
- public void setMkdirs(boolean mkdirs) {
- this.mkdirs = mkdirs;
- }
-
- /** {@inheritDoc}. */
- public void execute() {
- if (length != null && adjust != null) {
- throw new BuildException(
- "length and adjust are mutually exclusive options");
- }
- if (length == null && adjust == null) {
- length = ZERO;
- }
- if (path == null) {
- throw new BuildException(NO_CHILD);
- }
- for (Resource r : path) {
- File f = r.as(FileProvider.class).getFile();
- if (shouldProcess(f)) {
- process(f);
- }
- }
- }
-
- private boolean shouldProcess(File f) {
- if (f.isFile()) {
- return true;
- }
- if (!create) {
- return false;
- }
- Exception exception = null;
- try {
- if (FILE_UTILS.createNewFile(f, mkdirs)) {
- return true;
- }
- } catch (IOException e) {
- exception = e;
- }
- String msg = "Unable to create " + f;
- if (exception == null) {
- log(msg, Project.MSG_WARN);
- return false;
- }
- throw new BuildException(msg, exception);
- }
-
- private void process(File f) {
- long len = f.length();
- long newLength = length == null
- ? len + adjust.longValue() : length.longValue();
-
- if (len == newLength) {
- //nothing to do!
- return;
- }
- RandomAccessFile raf = null;
- try {
- raf = new RandomAccessFile(f, READ_WRITE);
- } catch (Exception e) {
- throw new BuildException("Could not open " + f + " for writing", e);
- }
- try {
- if (newLength > len) {
- long pos = len;
- raf.seek(pos);
- while (pos < newLength) {
- long writeCount = Math.min(FILL_BUFFER.length,
- newLength - pos);
- raf.write(FILL_BUFFER, 0, (int) writeCount);
- pos += writeCount;
- }
- } else {
- raf.setLength(newLength);
- }
- } catch (IOException e) {
- throw new BuildException("Exception working with " + raf, e);
- } finally {
- try {
- raf.close();
- } catch (IOException e) {
- log("Caught " + e + " closing " + raf, Project.MSG_WARN);
- }
- }
- }
-
- private synchronized Path getPath() {
- if (path == null) {
- path = new Path(getProject());
- }
- return path;
- }
-
-}