GeoKnow/Jassa-Core

View on GitHub
trash/to-port/facete/toport/facete-factories-query.js

Summary

Maintainability
A
0 mins
Test Coverage
(function() {
    
    var ns = Jassa.facete;

    ns.QueryFactory = Class.create({
        createQuery: function() {
            throw "Not overridden";
        }
    });


    /**
     * A query factory that injects facet constraints into an arbitrary query returned by
     * a subQueryFactory.
     * 
     * 
     * 
     */
    ns.QueryFactoryFacets = Class.create(ns.QueryFactory, {
        initialize: function(subQueryFactory, rootFacetNode, constraintManager) {
            this.subQueryFactory = subQueryFactory;
            this.rootFacetNode = rootFacetNode;
            this.constraintManager = constraintManager ? constraintManager : new ns.ConstraintManager();
        },
    
        getRootFacetNode: function() {
            return this.rootFacetNode;
        },
            
        getConstraintManager: function() {
            return this.constraintManager;
        },
            
        createQuery: function() {
            var query = this.subQueryFactory.createQuery();

            if(query == null) {
                return null;
            }
            
            //var varsMentioned = query.getVarsMentioned();
            var varsMentioned = query.getProject();//.getVarList();
            

            var varNames = _.map(varsMentioned, function(v) {
                return v.value;
            });
            
            
            var elements = this.constraintManager.createElements(this.rootFacetNode);
            query.elements.push.apply(query.elements, elements);
            
            return query;
        }    
    });


    ns.QueryFactoryFacets.create = function(subQueryFactory, rootVarName, generator) {
    // FIXME: facets.GenSym cannot be resolved
        generator = generator ? generator : new facets.GenSym("fv");
        var rootFacetNode = facets.FacetNode.createRoot(rootVarName, generator);
        
        var result = new ns.QueryFactoryFacets(subQueryFactory, rootFacetNode);

        return result;
    };

    
})();