001    package org.mesopotamia.lang.java;
002    
003    import org.mesopotamia.MesopotamiaException;
004    import org.mesopotamia.NodeData;
005    import org.mesopotamia.RepositoryLanguage;
006    import org.mesopotamia.Scan;
007    import org.w3c.dom.Element;
008    
009    import biz.hammurapi.util.Visitable;
010    import biz.hammurapi.util.Visitor;
011    
012    public class If extends JavaLanguageElement implements Statement {
013    
014            public If(NodeData xData, Class<?> context, Scan scan,
015                            RepositoryLanguage language, Object environment) throws MesopotamiaException {
016                    super(xData, context, scan, language, environment);
017    
018                    // Select attributes
019                    Expression = (Expression) selectSingleElement(Expression.class, "*[0]");
020                    Statement = (Statement) selectSingleElement(Statement.class, "*[1]");
021                    ElseStatement = (Statement) selectSingleElement(Statement.class, "*[2]");
022    
023            }
024    
025            public void toDom(Element holder) {
026                    super.toDom(holder);
027    
028                    // Serialize attributes
029                    setElement(holder, "Expression", Expression);
030                    setElement(holder, "Statement", Statement);
031                    setElement(holder, "ElseStatement", ElseStatement);
032            }
033    
034            // Attributes
035            private Expression Expression;
036    
037            private Statement Statement;
038    
039            private Statement ElseStatement;
040    
041            // Accessors
042            public Expression getExpression() {
043                    return Expression;
044            }
045    
046            public Statement getStatement() {
047                    return Statement;
048            }
049    
050            public Statement getElseStatement() {
051                    return ElseStatement;
052            }
053    
054            protected void acceptChildren(Visitor visitor) {
055                    super.acceptChildren(visitor);
056                    // Visiting non-text attributes
057                    if (Expression instanceof Visitable) {
058                            ((Visitable) Expression).accept(visitor);
059                    }
060                    if (Statement instanceof Visitable) {
061                            ((Visitable) Statement).accept(visitor);
062                    }
063                    if (ElseStatement instanceof Visitable) {
064                            ((Visitable) ElseStatement).accept(visitor);
065                    }
066            }
067    
068    }