diff options
Diffstat (limited to 'org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/elements/ProjectNode.java')
-rw-r--r-- | org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/elements/ProjectNode.java | 303 |
1 files changed, 0 insertions, 303 deletions
diff --git a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/elements/ProjectNode.java b/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/elements/ProjectNode.java deleted file mode 100644 index 20166ad48..000000000 --- a/org.eclipse.ui.externaltools/Ant Tools Support/org/eclipse/ui/externaltools/internal/ant/view/elements/ProjectNode.java +++ /dev/null @@ -1,303 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2003 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.ui.externaltools.internal.ant.view.elements; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.Enumeration; -import java.util.List; - -import org.apache.tools.ant.Project; -import org.apache.tools.ant.Target; -import org.eclipse.ant.core.ProjectInfo; -import org.eclipse.ant.core.TargetInfo; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.ui.externaltools.internal.ant.model.AntUtil; - -/** - * Representation of an ant build project. - */ -public class ProjectNode extends AntNode { - - private List targets= null; - private TargetNode defaultTarget= null; - private String buildFileName; - private boolean isErrorNode= false; - - private String defaultTargetName; - /** - * Creates a new project node with the given name and the given build file - * name. - * - * @param name the project's name or <code>null</code> if the project's - * name is not known. If this value is <code>null</code>, the file will be - * parsed the first time a value is requested that requires it. - * @param buildFileName - */ - public ProjectNode(String name, String buildFileName) { - super(name); - this.buildFileName= buildFileName; - } - - /** - * Creates a new project node on the given build file. - */ - public ProjectNode(String buildFileName) { - this(null, buildFileName); - } - - /** - * Returns the targets in this project - * - * @return TargetNode[] the targets in this project - */ - public TargetNode[] getTargets() { - if (targets == null) { - // Lazily parse the file to populate the targets - parseBuildFile(); - } - return (TargetNode[])targets.toArray(new TargetNode[targets.size()]); - } - - /** - * Adds the given target to this project - * - * @param target the target to add - */ - private void addTarget(TargetNode target) { - targets.add(target); - target.setParent(this); - } - - /** - * Sets this project's default target to the given target - * - * @param target this project's default target - */ - public void setDefaultTarget(TargetNode target) { - defaultTarget= target; - if (target != null) { - defaultTargetName= target.getName(); - } - } - - /** - * Returns the name of the build file containing this project - * - * @return String the name of this project's build file - */ - public String getBuildFileName() { - return buildFileName; - } - - /** - * Returns the default target in this project or <code>null</code> if none - * has been set - * - * @return TargetNode the default target or <code>null</code> if none has - * been set - */ - public TargetNode getDefaultTarget() { - if (targets == null) { - // Lazily parse the file to populate the targets - parseBuildFile(); - } - return defaultTarget; - } - - /** - * Returns the default target name. If this project has not been parsed yet, this - * method will return the default target name specified via setDefaultTargetName(String) - * or <code>null</code> if no default target name has been specified. - * - * This method is intended to be used by clients who want to access the name of this - * project's default target without forcing the build file to be parsed. - * - * @return String the name of the default target in this project. - */ - public String getDefaultTargetName() { - return defaultTargetName; - } - - /** - * Sets the name of this project node's default target. - * - * @param name the name of this project node's default target - * @see ProjectNode#getDefaultTargetName() - */ - public void setDefaultTargetName(String name) { - defaultTargetName= name; - } - - /** - * Sets this project's error node state - * - * @param boolean whether or not an error occurred while parsing this node - */ - public void setIsErrorNode(boolean isErrorNode) { - this.isErrorNode= isErrorNode; - } - - /** - * Returns whether an error occurred while parsing this Ant node - * - * @return whether an error occurred while parsing this Ant node - */ - public boolean isErrorNode() { - return isErrorNode; - } - - /** - * Parses the given build file and populates the targets contained in the - * build file. If an error occurs while parsing the file, the error - * state will be set and a target error node will be added - */ - public void parseBuildFile() { - clear(); - TargetInfo[] infos = null; - IPath buildFilePath= AntUtil.getFile(getBuildFileName()).getLocation(); - if (buildFilePath == null) { - setErrorMessage(AntViewElementsMessages.getString("ProjectNode.Build_file_not_found_1")); //$NON-NLS-1$ - return; - } - try { - infos = AntUtil.getTargets(buildFilePath.toString()); - } catch (CoreException e) { - setErrorMessage(e.getMessage()); - return; - } - if (infos.length < 1) { - setErrorMessage(AntViewElementsMessages.getString("ProjectNode.No_targets")); //$NON-NLS-1$ - return; - } - ProjectInfo projectInfo= infos[0].getProject(); - // Create Apache Ant objects - Project project = new Project(); - if (projectInfo.getName() != null) { - project.setName(projectInfo.getName()); - } - - for (int i = 0; i < infos.length; i++) { - TargetInfo info = infos[i]; - if (info.isDefault()) { - project.setDefault(info.getName()); - } - Target target = new Target(); - target.setName(info.getName()); - String[] dependencies = info.getDependencies(); - StringBuffer depends = new StringBuffer(); - int numDependencies = dependencies.length; - if (numDependencies > 0) { - // Onroll the loop to avoid trailing comma - depends.append(dependencies[0]); - } - for (int j = 1; j < numDependencies; j++) { - depends.append(',').append(dependencies[j]); - } - target.setDepends(depends.toString()); - target.setDescription(info.getDescription()); - project.addTarget(target); - } - if (project.getDefaultTarget() == null) { - setErrorMessage(AntViewElementsMessages.getString("ProjectNode.No_default")); //$NON-NLS-1$ - return; - } - // Set the project node data based on the Apache Ant data - String projectName = project.getName(); - if (projectName == null) { - projectName = AntViewElementsMessages.getString("ProjectNode.<name_unspecified>_1"); //$NON-NLS-1$ - } - // Update the project name - setName(projectName); - setDescription(projectInfo.getDescription()); - Enumeration projTargets = project.getTargets().elements(); - while (projTargets.hasMoreElements()) { - Target target = (Target) projTargets.nextElement(); - // Target Node ----------------- - Enumeration targetDependencies = target.getDependencies(); - TargetNode targetNode = new TargetNode(target.getName(), target.getDescription()); - while (targetDependencies.hasMoreElements()) { - targetNode.addDependency((String) targetDependencies.nextElement()); - } - addTarget(targetNode); - if (target.getName().equals(project.getDefaultTarget())) { - setDefaultTarget(targetNode); - } - } - Collections.sort(targets, new Comparator() { - /** - * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) - */ - public int compare(Object o1, Object o2) { - String name1=""; //$NON-NLS-1$ - String name2= ""; //$NON-NLS-1$ - if (o1 instanceof TargetNode) { - name1= ((TargetNode)o1).getName(); - } - if (o2 instanceof TargetNode) { - name2= ((TargetNode)o2).getName(); - } - return name1.compareToIgnoreCase(name2); - } - }); - } - - /** - * Clear's this node's internally stored data - */ - private void clear() { - targets= new ArrayList(); - setIsErrorNode(false); - setDefaultTarget(null); - setDefaultTargetName(null); - } - - /** - * Sets the error message of this project and creates a new target child - * node with the message - * - * @param errorMessage the error message generated while parsing this - * project - */ - private void setErrorMessage(String errorMessage) { - setName(getBuildFileName()); - setIsErrorNode(true); - TargetNode target= new TargetNode(errorMessage, errorMessage); - target.setIsErrorNode(true); - addTarget(target); - } - - /** - * Returns the name of this project, parsing the build file first if - * necessary. - * - * @return String this project's name - */ - public String getName() { - if (super.getName() == null) { - parseBuildFile(); - } - String name= super.getName(); - if (name == null || name.length() == 0) { - name= AntViewElementsMessages.getString("ProjectNode.<name_unspecified>_1"); //$NON-NLS-1$ - } - return name; - } - - /** - * @see java.lang.Object#toString() - */ - public String toString() { - return getName(); - } -} |