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 ForEachClause extends JavaLanguageElement {
013    
014            public ForEachClause(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                    ParameterDefinition = (ParameterDefinition) selectSingleElement(ParameterDefinition.class, "PARAMETER_DEF");
020                    Expression = selectSingleElement(Expression.class, "EXPR");
021    
022            }
023    
024            public void toDom(Element holder) {
025                    super.toDom(holder);
026    
027                    // Serialize attributes
028                    setElement(holder, "ParameterDefinition", ParameterDefinition);
029                    setElement(holder, "Expression", Expression);
030            }
031    
032            // Attributes
033            private ParameterDefinition ParameterDefinition;
034    
035            private Expression Expression;
036    
037            // Accessors
038            public ParameterDefinition getParameterDefinition() {
039                    return ParameterDefinition;
040            }
041    
042            public Expression getExpression() {
043                    return Expression;
044            }
045    
046            protected void acceptChildren(Visitor visitor) {
047                    super.acceptChildren(visitor);
048                    // Visiting non-text attributes
049                    if (ParameterDefinition instanceof Visitable) {
050                            ((Visitable) ParameterDefinition).accept(visitor);
051                    }
052                    if (Expression instanceof Visitable) {
053                            ((Visitable) Expression).accept(visitor);
054                    }
055            }
056    
057    }