blob: b0f1be5c35c93018c55b882647636957b712163f [file] [log] [blame]
/**
* 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;
}
}