org.ebayopensource.turmeric.eclipse.resources.model.AssetInfo.java Source code

Java tutorial

Introduction

Here is the source code for org.ebayopensource.turmeric.eclipse.resources.model.AssetInfo.java

Source

/*******************************************************************************
 * Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
 * Licensed 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
 *******************************************************************************/
package org.ebayopensource.turmeric.eclipse.resources.model;

import java.io.File;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils;
import org.ebayopensource.turmeric.eclipse.core.resources.constants.SOAProjectConstants;

/**
 * The Class AssetInfo.
 *
 * @author smathew
 * 
 * This is the wrapper class for holding the project depndencies. This has been
 * made generic to hold both project and library depndency. The type defines
 * whether its a library or project. Used mainly by the create wizards and the
 * properties windows
 */
public class AssetInfo implements IAssetInfo, Comparable<AssetInfo> {

    /**
     * The version prefix. "v."
     */
    public static final String VERSION_PREFIX = " v.";
    private final String name;
    private final String version;
    private final String dir;
    private List<String> jarNames = new ArrayList<String>();
    // can be project or library. Enum avoided.
    private String type;

    /**
     * Instantiates a new asset info.
     *
     * @param name the name
     * @param type the type
     */
    public AssetInfo(final String name, final String type) {
        this(name, "", "", type);
    }

    /**
     * Instantiates a new asset info.
     *
     * @param name the name
     * @param version the version
     * @param dir the dir
     */
    public AssetInfo(final String name, final String version, final String dir) {
        this(name, version, dir, null);
    }

    /**
     * Instantiates a new asset info.
     *
     * @param name the name
     * @param version the version
     * @param dir the dir
     * @param type the type
     */
    public AssetInfo(final String name, final String version, final String dir, final String type) {
        this(name, version, dir, SOAProjectConstants.ServiceLayer.UNKNOWN.name(), type);
    }

    /**
     * Instantiates a new asset info.
     *
     * @param name the name
     * @param version the version
     * @param dir the dir
     * @param serviceLayer the service layer
     * @param type the type
     */
    public AssetInfo(String name, String version, String dir, String serviceLayer, String type) {
        super();
        this.name = StringUtils.defaultString(name).trim();
        this.version = StringUtils.defaultString(version).trim();
        this.dir = StringUtils.defaultString(dir).trim();
        this.type = StringUtils.defaultString(type).trim();
    }

    /**
     * Creates the asset info with version.
     *
     * @param name the name
     * @param version the version
     * @param type the type
     * @return returns an instance of an Asset with version and type.
     */
    public static AssetInfo createAssetInfoWithVersion(String name, String version, String type) {
        return new AssetInfo(name, version, "", type);
    }

    /* (non-Javadoc)
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        result = prime * result + ((version == null) ? 0 : version.hashCode());
        return result;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if ((obj instanceof AssetInfo) == false)
            return false;
        final AssetInfo other = (AssetInfo) obj;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        if (version == null) {
            if (other.version != null)
                return false;
        } else if (!version.equals(other.version))
            return false;
        return true;
    }

    /**
     * Gets the dir.
     *
     * @return the directory as a string
     */
    public String getDir() {
        return dir;
    }

    /**
     * {@inheritDoc}
     * 
     */
    @Override
    public String getName() {
        return name;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String getVersion() {
        return version;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String getDescription() {
        if (TYPE_LIBRARY.equals(getType()))
            return getName() + VERSION_PREFIX + getVersion();
        return getName();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String toString() {
        return getName();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int compareTo(final AssetInfo info) {
        if (ObjectUtils.equals(info, this))
            return 0;
        if (name.compareTo(info.name) != 0)
            return name.compareTo(info.name);
        if (version.compareTo(info.version) != 0)
            return version.compareTo(info.version);
        if (dir.compareTo(info.dir) != 0)
            return dir.compareTo(info.dir);
        if (type.compareTo(info.type) != 0)
            return type.compareTo(info.type);
        return 0;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String getType() {
        return type;
    }

    /**
     * Sets the type.
     *
     * @param type The name of the type.
     */
    public void setType(String type) {
        this.type = type;
    }

    /**
     * Gets the jar names.
     *
     * @return A List of String objects that contain the jar names
     */
    public List<String> getJarNames() {
        return jarNames;
    }

    /**
     * Sets the jar names.
     *
     * @param jarNames A List of String objects with jarnames
     */
    public void setJarNames(List<String> jarNames) {
        this.jarNames = jarNames;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String getUniqueID() {
        return this.name;
    }

    /**
     * {@inheritDoc}
     * 
     * @return The short description of the AssetInfo instance.
     */
    @Override
    public String getShortDescription() {
        return getName();
    }

    /**
     * Returns a URL based on the dir and jarnames, Will check for null
     *         but no check on file existance if the validateFiles boolean is
     *         false. If its true then the non existing invalid files will be
     *         filtered out from returned list
     *         
     * @param validateFiles Whether files should be validated if they exist or can be read before
     *                      adding them to the file set.
     *                      
     * @return A Set of File objects.
     */
    public Set<File> getFiles(boolean validateFiles) {
        String dirName = getDir();
        Set<File> fileSet = new HashSet<File>();
        for (String jarName : getJarNames()) {
            File file = new File(dirName, jarName);
            if (validateFiles) {
                if (file.exists() && file.canRead()) {
                    fileSet.add(file);
                }

            } else {// simple add it no check here
                fileSet.add(file);
            }
        }
        return fileSet;
    }
}