package org.nocket.gen.domain.visitor;
import gengui.domain.AbstractDomainReference;
import java.util.ArrayList;
import java.util.List;
import org.nocket.gen.domain.DMDWebGenContext;
import org.nocket.gen.domain.element.ButtonElement;
import org.nocket.gen.domain.element.CheckboxPropertyElement;
import org.nocket.gen.domain.element.ChoicerPropertyElement;
import org.nocket.gen.domain.element.HeadlineElement;
import org.nocket.gen.domain.element.HiddenPropertyElement;
import org.nocket.gen.domain.element.MultivaluePropertyElement;
import org.nocket.gen.domain.element.ResourceElement;
import org.nocket.gen.domain.element.SimplePropertyElement;
import org.nocket.gen.domain.visitor.html.DelegateHtmlVisitor;
import org.nocket.gen.domain.visitor.java.DelegateJavaPagePanelVisitor;
import org.nocket.gen.domain.visitor.java.JavaConstantsGeneratorVisitor;
import org.nocket.gen.domain.visitor.java.JavaPageGeneratorVisitor;
import org.nocket.gen.domain.visitor.print.PrintVisitor;
import org.nocket.gen.domain.visitor.properties.DelegatePropertiesVisitor;
/**
* This visitor is used while when generating necessary files to
*
* @author blaz02
*
* @param <E>
*/
public class NocketGenerationVisitor<E extends AbstractDomainReference> extends AbstractDomainElementVisitor<E> {
protected final List<DomainElementVisitorI<E>> visitors = new ArrayList<DomainElementVisitorI<E>>();
public NocketGenerationVisitor(DMDWebGenContext<E> context) {
super(context);
addVisitors(context);
}
protected void addVisitors(DMDWebGenContext<E> context) {
visitors.add(new PrintVisitor<E>(context));
visitors.add(new JavaConstantsGeneratorVisitor<E>(context));
visitors.add(new DelegateHtmlVisitor<E>(context));
visitors.add(new DelegateJavaPagePanelVisitor<E>(context));
visitors.add(new DelegatePropertiesVisitor<E>(context));
}
@Override
public void visitSimpleProperty(SimplePropertyElement<E> e) {
for (DomainElementVisitorI<E> v : visitors) {
e.accept(v);
}
}
@Override
public void visitChoicerProperty(ChoicerPropertyElement<E> e) {
for (DomainElementVisitorI<E> v : visitors) {
e.accept(v);
}
}
@Override
public void visitCheckboxProperty(CheckboxPropertyElement<E> e) {
for (DomainElementVisitorI<E> v : visitors) {
e.accept(v);
}
}
@Override
public void visitButton(ButtonElement<E> e) {
for (DomainElementVisitorI<E> v : visitors) {
e.accept(v);
}
}
@Override
public void visitResource(ResourceElement<E> e) {
for (DomainElementVisitorI<E> v : visitors) {
e.accept(v);
}
}
@Override
public void visitFieldsetOpen(HeadlineElement<E> e) {
for (DomainElementVisitorI<E> v : visitors) {
e.accept(v);
}
}
@Override
public void visitMultivalueProperty(MultivaluePropertyElement<E> e) {
for (DomainElementVisitorI<E> v : visitors) {
e.accept(v);
}
}
@Override
public void visitFieldsetClose() {
for (DomainElementVisitorI<E> v : visitors) {
v.visitFieldsetClose();
}
}
@Override
public void visitHiddenProperty(HiddenPropertyElement<E> e) {
for (DomainElementVisitorI<E> v : visitors) {
e.accept(v);
}
}
public void finish() {
for (DomainElementVisitorI<E> v : visitors) {
v.finish();
}
}
}