org.aspectj.ajde.ui.BuildConfigNode Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of aspectjtools Show documentation
Show all versions of aspectjtools Show documentation
Tools from the AspectJ project
/* *******************************************************************
* Copyright (c) 1999-2001 Xerox Corporation,
* 2002 Palo Alto Research Center, Incorporated (PARC).
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v 2.0
* which accompanies this distribution and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
*
* Contributors:
* Xerox/PARC initial implementation
* ******************************************************************/
package org.aspectj.ajde.ui;
import java.io.ObjectStreamException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.aspectj.bridge.IMessage;
import org.aspectj.bridge.ISourceLocation;
import org.aspectj.util.FileUtil;
/**
* @author Mik Kersten
*
* TODO: clean-up after merging of org.aspectj.asm.StructureNode
*/
public class BuildConfigNode {
protected BuildConfigNode parent = null;
protected String name = "";
protected Kind kind;
// children.listIterator() should support remove() operation
protected List children = new ArrayList<>();
protected IMessage message = null;
protected ISourceLocation sourceLocation = null;
/**
* Used during serialization.
*/
public BuildConfigNode() {
}
// public BuildConfigNode(String name, String kind, String resourcePath, List children) {
// this(name, kind, children);
// this.resourcePath = resourcePath;
// }
public BuildConfigNode(String name, Kind kind, String resourcePath) {
this(name, kind);
this.kind = kind;
this.resourcePath = resourcePath;
}
// public BuildConfigNode(String name, Kind kind, List children) {
// this.name = name;
// this.kind = kind;
// if (children != null) {
// this.children = children;
// }
// setParents();
// }
public BuildConfigNode(String name, Kind kind) {
this.name = name;
this.kind = kind;
}
public String toString() {
return name;
}
public List getChildren() {
return children;
}
public void addChild(BuildConfigNode child) {
if (children == null) {
children = new ArrayList<>();
}
children.add(child);
child.setParent(this);
}
public void addChild(int position, BuildConfigNode child) {
if (children == null) {
children = new ArrayList<>();
}
children.add(position, child);
child.setParent(this);
}
public boolean removeChild(BuildConfigNode child) {
child.setParent(null);
return children.remove(child);
}
/**
* Comparison is string-name based only.
*/
public int compareTo(Object o) throws ClassCastException {
if (o instanceof BuildConfigNode) {
BuildConfigNode sn = (BuildConfigNode) o;
return this.getName().compareTo(sn.getName());
}
return -1;
}
public String getName() {
return name;
}
public ISourceLocation getSourceLocation() {
return sourceLocation;
}
public void setSourceLocation(ISourceLocation sourceLocation) {
this.sourceLocation = sourceLocation;
}
public IMessage getMessage() {
return message;
}
public void setMessage(IMessage message) {
this.message = message;
}
public BuildConfigNode getParent() {
return parent;
}
public void setParent(BuildConfigNode parent) {
this.parent = parent;
}
// private void setParents() {
// if (children == null) return;
// for (Iterator it = children.iterator(); it.hasNext(); ) {
// ((BuildConfigNode)it.next()).setParent(this);
// }
// }
public void setName(String string) {
name = string;
}
private String resourcePath;
private boolean isActive = true;
public String getResourcePath() {
return resourcePath;
}
public void setResourcePath(String resourcePath) {
this.resourcePath = resourcePath;
}
public boolean isValidResource() {
return FileUtil.hasSourceSuffix(name) || name.endsWith(".lst");
}
public boolean isActive() {
return isActive;
}
public void setActive(boolean isActive) {
this.isActive = isActive;
}
/**
* Uses "typesafe enum" pattern.
*/
public static class Kind implements Serializable {
private static final long serialVersionUID = 3924996793884978885L;
public static final Kind FILE_JAVA = new Kind("Java source file");
public static final Kind FILE_ASPECTJ = new Kind("AspectJ source file");
public static final Kind FILE_LST = new Kind("build configuration file");
public static final Kind ERROR = new Kind("error");
public static final Kind DIRECTORY = new Kind("directory");
public static final Kind[] ALL = { FILE_JAVA, FILE_ASPECTJ, FILE_LST, DIRECTORY };
private final String name;
private Kind(String name) {
this.name = name;
}
public String toString() {
return name;
}
// public boolean equals(Object o) {
// return (o instanceof Kind? this==o : false);
// // return o.equals(name);
// }
//
// public int hashCode() {
// return ordinal;
// // return name.hashCode();
// }
public boolean isDeclareKind() {
return name.startsWith("declare");
}
// The 4 declarations below are necessary for serialization
private static int nextOrdinal = 0;
private final int ordinal = nextOrdinal++;
private Object readResolve() throws ObjectStreamException {
return ALL[ordinal];
}
}
public Kind getBuildConfigNodeKind() {
return kind;
}
}