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

io.legaldocml.business.builder.BusinessBuilder Maven / Gradle / Ivy

package io.legaldocml.business.builder;

import io.legaldocml.akn.AknObject;
import io.legaldocml.akn.AkomaNtoso;
import io.legaldocml.akn.AkomaNtosoContext;
import io.legaldocml.akn.DocumentType;
import io.legaldocml.business.BusinessProvider;

/**
 * @author Jacques Militello
 */
public abstract class BusinessBuilder {

    private final BusinessProvider provider;

    private final AkomaNtoso akomaNtoso;

    private final MetaBuilder metaBuilder;

    private final HierarchyStrategy strategy;

    public BusinessBuilder(BusinessProvider provider, DocumentType documentType,HierarchyStrategy strategy) {
        this.provider = provider;
        this.akomaNtoso = new AkomaNtoso<>(newAkomaNtosoContext());
        this.akomaNtoso.setDocumentType(documentType);
        this.metaBuilder = newMetaBuilder();
        this.strategy = strategy;
    }

    public final MetaBuilder getMetaBuilder() {
        return this.metaBuilder;
    }

    public final BusinessProvider getProvider() {
        return this.provider;
    }

    public final HierarchyStrategy getStrategy() {
        return this.strategy;
    }

    protected abstract AkomaNtosoContext newAkomaNtosoContext();

    protected abstract MetaBuilder newMetaBuilder();

    @SuppressWarnings("unchecked")
    public final  AkomaNtoso getAkomaNtoso() {
        return (AkomaNtoso) akomaNtoso;
    }

    public final  T newPartBuilder(AknObject parent, String businessPartBuilderName) {
        return this.provider.newPartBuilder(this, parent, businessPartBuilderName);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy