package org.nocket.gen.domain.visitor.html; import gengui.domain.AbstractDomainReference; import java.io.File; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; import org.nocket.gen.domain.DMDWebGenContext; import org.nocket.gen.domain.GroupNameFileAndClassNameStrategy; import org.nocket.gen.domain.visitor.AbstractDomainElementVisitor; public abstract class AbstractHtmlVisitor<E extends AbstractDomainReference> extends AbstractDomainElementVisitor<E> { public static final int INDENT_AMOUNT = 4; public AbstractHtmlVisitor(DMDWebGenContext<E> context) { super(context); } public File getHtmlFile() { String filenamePart = getContext().getFileAndClassNameStrategy().getFilenamePartAsPath(); File htmlPanelFile = new File(getContext().getGenDir() + File.separator + filenamePart + "Panel.html"); if (htmlPanelFile.exists() || isPanel()) { return htmlPanelFile; } else { String pagePath = getContext().getGenDir() + File.separator + filenamePart + "Page.html"; return new File(pagePath); } } protected boolean isPanel() { return getContext().getFileAndClassNameStrategy().isPanel(); } protected String toHtml(Document doc) { doc.outputSettings().prettyPrint(true); doc.outputSettings().indentAmount(INDENT_AMOUNT); String gen = doc.html(); return gen; } protected Class getDomainClass() { return getContext().getRefFactory().getRootReference().getRef().getDomainClass(); } protected void checkAndAddGroupTabbedPanel(Document document) { if (!(getContext().getFileAndClassNameStrategy() instanceof GroupNameFileAndClassNameStrategy)) { return; } GroupNameFileAndClassNameStrategy strategy = (GroupNameFileAndClassNameStrategy) getContext().getFileAndClassNameStrategy(); if (!strategy.isDomainObjectWithGroupAnnotations() || !strategy.isStrategyForMainObject()) { return; } if (document.getElementsByAttributeValue("wicket:id", "groupTabbedPanel").isEmpty()) { Elements elementsByTag = document.getElementsByTag("form"); if (!elementsByTag.isEmpty()) { org.jsoup.nodes.Element element = elementsByTag.first(); org.jsoup.nodes.Element ulElement = element.appendElement("ul"); ulElement.attr("wicket:id", "groupTabbedPanel"); } } } }