alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Ant example source code file (Directory.java)

This example Ant source code file (Directory.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - Ant tags/keywords

arraylist, arraylist, directory, directory, file, io, iterator, string, string, stringtokenizer, stringtokenizer, util

The Directory.java source code

/*
 *  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.optional.ssh;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.StringTokenizer;
import java.io.File;

/**
 * A helper object for Scp representing a directory in a file system.
 */
public class Directory {

    private File directory;
    private ArrayList childDirectories;
    private ArrayList files;
    private Directory parent;

    /**
     * Constructor for a Directory.
     * @param directory a directory.
     */
    public Directory(File directory) {
        this(directory,  null);
    }

    /**
     * Constructor for a Directory.
     * @param directory a directory
     * @param parent    a parent Directory
     */
    public Directory(File directory , Directory parent) {
        this.parent = parent;
        this.childDirectories = new ArrayList();
        this.files = new ArrayList();
        this.directory = directory;
    }

    /**
     * Add a directory to the child directories.
     * @param directory a Directory
     */
    public void addDirectory(Directory directory) {
        if (!childDirectories.contains(directory)) {
            childDirectories.add(directory);
        }
    }

    /**
     * Add a file to the list of files.
     * @param file a file to add
     */
    public void addFile(File file) {
        files.add(file);
    }

    /**
     * Get an iterator over the child Directories.
     * @return an iterator
     */
    public Iterator directoryIterator() {
        return childDirectories.iterator();
    }

    /**
     * Get an iterator over the files.
     * @return an iterator
     */
    public Iterator filesIterator() {
        return files.iterator();
    }

    /**
     * Get the parent Directory.
     * @return the parent Directory.
     */
    public Directory getParent() {
        return parent;
    }

    /**
     * Is this a root Directory?
     * @return true if there is no parent Directory
     */
    public boolean isRoot() {
        return parent == null;
    }

    /**
     * Get the directory file.
     * @return the directory file
     */
    public File getDirectory() {
        return directory;
    }

    /**
     * Get a child directory of this directory.
     * @param dir the directory to look for
     * @return the child directory, or null if not found
     */
    public Directory getChild(File dir) {
        for (int i = 0; i < childDirectories.size(); i++) {
            Directory current = (Directory) childDirectories.get(i);
            if (current.getDirectory().equals(dir)) {
                return current;
            }
        }

        return null;
    }

    /**
     * The equality method.
     * This checks if the directory field is the same.
     * @param obj the object to compare to
     * @return true if this object has an equal directory field as the other object
     */
    public boolean equals(Object obj) {
        if (obj == this) {
            return true;
        }

        if (!(obj instanceof Directory)) {
            return false;
        }

        Directory d = (Directory) obj;

        return this.directory.equals(d.directory);
    }

    /**
     * The hashcode method.
     * @return the hash code of the directory field
     */
    public int hashCode() {
        return directory.hashCode();
    }

    /**
     * Get the path components of this directory.
     * @return the path components as an array of strings.
     */
    public String[] getPath() {
        return getPath(directory.getAbsolutePath());
    }

    /**
     * Convert a file path to an array of path components.
     * This uses File.sepatator to split the file path string.
     * @param thePath the file path string to convert
     * @return an array of path components
     */
    public static String[] getPath(String thePath) {
        StringTokenizer tokenizer = new StringTokenizer(thePath,
                File.separator);
        String[] path = new String[ tokenizer.countTokens() ];

        int i = 0;
        while (tokenizer.hasMoreTokens()) {
            path[i] = tokenizer.nextToken();
            i++;
        }

        return path;
    }

    /**
     * Get the number of files in the files attribute.
     * @return the number of files
     */
    public int fileSize() {
        return files.size();
    }
}

Other Ant examples (source code examples)

Here is a short list of links related to this Ant Directory.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.