diff options
| author | Joshua Rahm <joshua.rahm@colorado.edu> | 2015-01-27 18:40:32 -0700 |
|---|---|---|
| committer | Joshua Rahm <joshua.rahm@colorado.edu> | 2015-01-27 18:40:32 -0700 |
| commit | 5f3fb9afece2125cbeba79d61a8d88460b7878d7 (patch) | |
| tree | b0e1e60bae9927a9449561bf7fe9431a54d12be9 /project/JavaCommon/src/com/modulus/dataread/expressions/AbstractStatement.java | |
| download | LegacyQBar-5f3fb9afece2125cbeba79d61a8d88460b7878d7.tar.gz LegacyQBar-5f3fb9afece2125cbeba79d61a8d88460b7878d7.tar.bz2 LegacyQBar-5f3fb9afece2125cbeba79d61a8d88460b7878d7.zip | |
initial commit
Diffstat (limited to 'project/JavaCommon/src/com/modulus/dataread/expressions/AbstractStatement.java')
| -rw-r--r-- | project/JavaCommon/src/com/modulus/dataread/expressions/AbstractStatement.java | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/project/JavaCommon/src/com/modulus/dataread/expressions/AbstractStatement.java b/project/JavaCommon/src/com/modulus/dataread/expressions/AbstractStatement.java new file mode 100644 index 0000000..c2ec699 --- /dev/null +++ b/project/JavaCommon/src/com/modulus/dataread/expressions/AbstractStatement.java @@ -0,0 +1,125 @@ +package com.modulus.dataread.expressions; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * this class outlines a rough diagram of what a statement + * looks like. The major importance is how it already + * correctly implements the tree fasion that statements + * should in theory be ordered in. + * + * @author jrahm + * + */ +public abstract class AbstractStatement implements Statement, Serializable{ + private static final long serialVersionUID = -6717726729821743941L; + private Collection<Statement> children; + private int line = -1; + + /** + * the header of this statement. + */ + protected String header; + + /** + * Creates a new AbstractStatement with the + * default header being an empty string. + */ + public AbstractStatement(){ + this.children = new ArrayList<Statement>(); + this.header = ""; + } + + @Override + public void addChild(Statement child) { + this.children.add(child); + } + + @Override + public Statement[] getChildren() { + return children.toArray(new Statement[children.size()]); + } + + @Override + public String getHeader() { + return header; + } + + @Override + public void removeChild(Statement child) { + this.children.remove(child); + } + + @Override + public String toString(){ + return toString(0); + } + + public String toString( int recur ){ + StringBuffer buffer = new StringBuffer(); + String tab = ""; + for(int i = 0;i < recur;i++) + tab += '\t'; + + + buffer.append(tab + header); + + if(children.size() > 0){ + buffer.append("{\n"); + for(Statement child : children){ + buffer.append(child.toString( recur + 1 ) + "\n"); + } + buffer.append(tab + "}"); + } else{ + buffer.append(";"); + } + + return buffer.toString(); + } + + @Override + public Statement getChildByHeader(String header){ + + for(Statement child : children){ + String chHeader = child.getHeader(); + + if(chHeader.equals(header)) + return child; + } + + return null; + } + + @Override + public Statement[] getChildrenByHeader(String header){ + List<Statement> ret = new ArrayList<Statement>(); + + for(Statement child : children){ + String chHeader = child.getHeader(); + + if(chHeader.equals(header)) + ret.add(child); + } + + return ret.toArray(new Statement[ret.size()]); + } + + public int getLineNumber(){ + return line; + } + + public void setLineNumber(int line){ + this.line = line; + } + + public boolean hasChildren(){ + return !children.isEmpty(); + } + + public void clearChildren(){ + this.children.clear(); + } +} |