All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.legaldocml.akn.element.SubFlowStructure Maven / Gradle / Ivy

package io.legaldocml.akn.element;

import com.google.common.collect.ImmutableMap;
import io.legaldocml.akn.container.BlockElementsContainer;
import io.legaldocml.akn.container.HierElementsContainer;
import io.legaldocml.akn.group.ANblock;
import io.legaldocml.akn.group.ANhier;
import io.legaldocml.akn.group.BlockElements;
import io.legaldocml.akn.group.HTMLblock;
import io.legaldocml.akn.group.HierElements;
import io.legaldocml.akn.util.AknList;
import io.legaldocml.akn.util.XmlReaderHelper;
import io.legaldocml.akn.visitor.AknVisitor;
import io.legaldocml.io.XmlReader;
import io.legaldocml.io.XmlWriter;

import java.io.IOException;
import java.util.function.Supplier;

import static io.legaldocml.akn.AknElements.CITATION;
import static io.legaldocml.akn.AknElements.CITATIONS;
import static io.legaldocml.akn.AknElements.COMPONENT_REF;
import static io.legaldocml.akn.AknElements.CONTENT;
import static io.legaldocml.akn.AknElements.DOCUMENT_REF;
import static io.legaldocml.akn.AknElements.FORMULA;
import static io.legaldocml.akn.AknElements.HEADING;
import static io.legaldocml.akn.AknElements.INTRO;
import static io.legaldocml.akn.AknElements.LONG_TITLE;
import static io.legaldocml.akn.AknElements.NUM;
import static io.legaldocml.akn.AknElements.RECITAL;
import static io.legaldocml.akn.AknElements.RECITALS;
import static io.legaldocml.akn.AknElements.SUB_HEADING;
import static io.legaldocml.akn.AknElements.TD;
import static io.legaldocml.akn.AknElements.TH;
import static io.legaldocml.akn.AknElements.TR;
import static io.legaldocml.akn.AknElements.WRAP_UP;
import static io.legaldocml.akn.element.Groups.ANcontainers;
import static io.legaldocml.akn.element.Groups.blockElements;
import static io.legaldocml.akn.element.Groups.containerElements;
import static io.legaldocml.akn.element.Groups.convertSuper;
import static io.legaldocml.akn.element.Groups.hierElements;
import static java.util.Objects.requireNonNull;

/**
 * The type subFlowStructure specifies the overall content model of the elements that are subFlows.
 * 
 *   
 *     
 *       
 *       
 *         
 *         
 *         
 *         
 *         
 *         
 *         
 *         
 *         
 *         
 *         
 *         
 *         
 *         
 *         
 *         
 *         
 *         
 *         
 *         
 *         
 *       
 *     
 *     
 *   
 * 
* * @author Jacques Militello */ public abstract class SubFlowStructure extends CoreReqImpl implements BlockElementsContainer, HierElementsContainer { private static final ImmutableMap> ELEMS; static { ELEMS = ImmutableMap.>builder() .putAll(convertSuper(blockElements())) .putAll(convertSuper(containerElements())) .put(TR, Tr::new) .put(TH, Th::new) .put(TD, Td::new) .putAll(convertSuper(hierElements())) .put(CONTENT, Content::new) .putAll(convertSuper(ANcontainers())) .put(FORMULA, Formula::new) .put(RECITALS, Recitals::new) .put(CITATIONS, Citations::new) .put(LONG_TITLE, LongTitle::new) .put(RECITAL, Recital::new) .put(CITATION, Citation::new) .put(COMPONENT_REF, ComponentRef::new) .put(DOCUMENT_REF, DocumentRef::new) .put(INTRO, Intro::new) .put(WRAP_UP, WrapUp::new) .put(HEADING, Heading::new) .put(SUB_HEADING, Subheading::new) .put(NUM, Num::new) .build(); } // Mandatory (min 1). private final AknList elems = new AknList<>(new SubFlowStructureElement[8]); public final void add(SubFlowStructureElement element) { this.elems.add(element); } /** * {@inheritDoc} */ @Override public void add(BlockElements elements) { this.elems.add(requireNonNull(elements)); } /** * {@inheritDoc} */ @Override public void add(HTMLblock block) { this.elems.add(requireNonNull(block)); } /** * {@inheritDoc} */ @Override public void add(HierElements hier) { this.elems.add(requireNonNull(hier)); } /** * {@inheritDoc} */ @Override public void add(ANhier hier) { this.elems.add(requireNonNull(hier)); } /** * {@inheritDoc} */ @Override public void add(ANblock block) { this.elems.add(requireNonNull(block)); } /** * {@inheritDoc} */ @Override public void read(XmlReader reader) { super.read(reader); XmlReaderHelper.read(reader, elems, ELEMS); } /** * {@inheritDoc} */ @Override public void write(XmlWriter writer) throws IOException { super.write(writer); this.elems.write(writer); } /** * {@inheritDoc} */ @Override public void accept(AknVisitor visitor) { this.elems.accept(visitor); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy