Logo Search packages:      
Sourcecode: aspectj version File versions

BuildConfigNode.java

/* *******************************************************************
 * 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 v1.0 
 * which accompanies this distribution and is available at 
 * http://www.eclipse.org/legal/epl-v10.html 
 *  
 * Contributors: 
 *     Xerox/PARC     initial implementation 
 * ******************************************************************/


package org.aspectj.ajde.ui;

import java.io.*;
import java.util.*;

import org.aspectj.bridge.*;
import org.aspectj.util.FileUtil;

/**
 * @author Mik Kersten
 * 
 * TODO: clean-up after merging of org.aspectj.asm.StructureNode
 */
00028 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.
       */
00043       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.
       */
00102       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.
       */
00176       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;
      }
}




Generated by  Doxygen 1.6.0   Back to index