| /** |
| * 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.hadoop.fs.shell.find; |
| |
| import java.io.InputStream; |
| import java.io.PrintStream; |
| import java.util.Date; |
| |
| import org.apache.hadoop.conf.Configuration; |
| import org.apache.hadoop.fs.shell.CommandFactory; |
| |
| /** |
| * Options to be used by the {@link Find} command and its {@link Expression}s. |
| */ |
| public class FindOptions { |
| /** Output stream to be used. */ |
| private PrintStream out; |
| |
| /** Error stream to be used. */ |
| private PrintStream err; |
| |
| /** Input stream to be used. */ |
| private InputStream in; |
| |
| /** |
| * Indicates whether the expression should be applied to the directory tree |
| * depth first. |
| */ |
| private boolean depthFirst = false; |
| |
| /** Indicates whether symbolic links should be followed. */ |
| private boolean followLink = false; |
| |
| /** |
| * Indicates whether symbolic links specified as command arguments should be |
| * followed. |
| */ |
| private boolean followArgLink = false; |
| |
| /** Start time of the find process. */ |
| private long startTime = new Date().getTime(); |
| |
| /** |
| * Depth at which to start applying expressions. |
| */ |
| private int minDepth = 0; |
| |
| /** |
| * Depth at which to stop applying expressions. |
| */ |
| private int maxDepth = Integer.MAX_VALUE; |
| |
| /** Factory for retrieving command classes. */ |
| private CommandFactory commandFactory; |
| |
| /** Configuration object. */ |
| private Configuration configuration = new Configuration(); |
| |
| /** |
| * Sets the output stream to be used. |
| * |
| * @param out output stream to be used |
| */ |
| public void setOut(PrintStream out) { |
| this.out = out; |
| } |
| |
| /** |
| * Returns the output stream to be used. |
| * |
| * @return output stream to be used |
| */ |
| public PrintStream getOut() { |
| return this.out; |
| } |
| |
| /** |
| * Sets the error stream to be used. |
| * |
| * @param err error stream to be used |
| */ |
| public void setErr(PrintStream err) { |
| this.err = err; |
| } |
| |
| /** |
| * Returns the error stream to be used. |
| * |
| * @return error stream to be used |
| */ |
| public PrintStream getErr() { |
| return this.err; |
| } |
| |
| /** |
| * Sets the input stream to be used. |
| * |
| * @param in input stream to be used |
| */ |
| public void setIn(InputStream in) { |
| this.in = in; |
| } |
| |
| /** |
| * Returns the input stream to be used. |
| * |
| * @return input stream to be used |
| */ |
| public InputStream getIn() { |
| return this.in; |
| } |
| |
| /** |
| * Sets flag indicating whether the expression should be applied to the |
| * directory tree depth first. |
| * |
| * @param depthFirst true indicates depth first traversal |
| */ |
| public void setDepthFirst(boolean depthFirst) { |
| this.depthFirst = depthFirst; |
| } |
| |
| /** |
| * Should directory tree be traversed depth first? |
| * |
| * @return true indicate depth first traversal |
| */ |
| public boolean isDepthFirst() { |
| return this.depthFirst; |
| } |
| |
| /** |
| * Sets flag indicating whether symbolic links should be followed. |
| * |
| * @param followLink true indicates follow links |
| */ |
| public void setFollowLink(boolean followLink) { |
| this.followLink = followLink; |
| } |
| |
| /** |
| * Should symbolic links be follows? |
| * |
| * @return true indicates links should be followed |
| */ |
| public boolean isFollowLink() { |
| return this.followLink; |
| } |
| |
| /** |
| * Sets flag indicating whether command line symbolic links should be |
| * followed. |
| * |
| * @param followArgLink true indicates follow links |
| */ |
| public void setFollowArgLink(boolean followArgLink) { |
| this.followArgLink = followArgLink; |
| } |
| |
| /** |
| * Should command line symbolic links be follows? |
| * |
| * @return true indicates links should be followed |
| */ |
| public boolean isFollowArgLink() { |
| return this.followArgLink; |
| } |
| |
| /** |
| * Returns the start time of this {@link Find} command. |
| * |
| * @return start time (in milliseconds since epoch) |
| */ |
| public long getStartTime() { |
| return this.startTime; |
| } |
| |
| /** |
| * Set the start time of this {@link Find} command. |
| * |
| * @param time start time (in milliseconds since epoch) |
| */ |
| public void setStartTime(long time) { |
| this.startTime = time; |
| } |
| |
| /** |
| * Returns the minimum depth for applying expressions. |
| * |
| * @return min depth |
| */ |
| public int getMinDepth() { |
| return this.minDepth; |
| } |
| |
| /** |
| * Sets the minimum depth for applying expressions. |
| * |
| * @param minDepth minimum depth |
| */ |
| public void setMinDepth(int minDepth) { |
| this.minDepth = minDepth; |
| } |
| |
| /** |
| * Returns the maximum depth for applying expressions. |
| * |
| * @return maximum depth |
| */ |
| public int getMaxDepth() { |
| return this.maxDepth; |
| } |
| |
| /** |
| * Sets the maximum depth for applying expressions. |
| * |
| * @param maxDepth maximum depth |
| */ |
| public void setMaxDepth(int maxDepth) { |
| this.maxDepth = maxDepth; |
| } |
| |
| /** |
| * Set the command factory. |
| * |
| * @param factory {@link CommandFactory} |
| */ |
| public void setCommandFactory(CommandFactory factory) { |
| this.commandFactory = factory; |
| } |
| |
| /** |
| * Return the command factory. |
| * |
| * @return {@link CommandFactory} |
| */ |
| public CommandFactory getCommandFactory() { |
| return this.commandFactory; |
| } |
| |
| /** |
| * Set the {@link Configuration} |
| * |
| * @param configuration {@link Configuration} |
| */ |
| public void setConfiguration(Configuration configuration) { |
| this.configuration = configuration; |
| } |
| |
| /** |
| * Return the {@link Configuration} return configuration {@link Configuration} |
| */ |
| public Configuration getConfiguration() { |
| return this.configuration; |
| } |
| } |