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

io.legaldocml.xpath.impl.AbsoluteQueryBuilder Maven / Gradle / Ivy

package io.legaldocml.xpath.impl;

import io.legaldocml.akn.AknObject;
import io.legaldocml.module.Module;
import io.legaldocml.xpath.XPath;
import io.legaldocml.xpath.cerebro.Cerebro;
import io.legaldocml.xpath.eval.StepEval;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;

final class AbsoluteQueryBuilder extends QueryBuilder {

    /**
     * SLF4J Logger.
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(AbsoluteQueryBuilder.class);

    private final List stetps = new ArrayList<>();

    private Class parent;

    protected AbsoluteQueryBuilder(XPath xPath) {
        super(xPath);
    }

    public void append(XPathQname qname) {

        Module module = getXPath().getModule(qname.getPrefix());

        Class aknClass = module.getAknClass(qname.getLocalname());

        if (LOGGER.isDebugEnabled()) {
            LOGGER.debug("append({}) -> [{}]", qname, aknClass);
        }

        if (parent == null) {
            this.parent = aknClass;
            return;
        }

        this.stetps.add(new StepEval(Cerebro.getLink(this.parent, aknClass)));
        this.parent = aknClass;

    }

    @Override
    public void append(QueryPredicateBuilder queryPredicateBuilder) {
        StepEval last = this.stetps.get(this.stetps.size() -1);
        queryPredicateBuilder.buildOn(last);
    }

    @Override
    List getSteps() {
        return this.stetps;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy