Package com.dottydingo.hyperion.service.persistence.query

Source Code of com.dottydingo.hyperion.service.persistence.query.DefaultQueryBuilder

package com.dottydingo.hyperion.service.persistence.query;

import com.dottydingo.hyperion.service.persistence.PathIterator;
import cz.jirutka.rsql.parser.model.Comparison;

import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.From;
import javax.persistence.criteria.Predicate;

/**
*/
public class DefaultQueryBuilder<T> extends AbstractQueryBuilder<T>
{
    private String propertyPath;
    private String propertyName;

    public void setPropertyPath(String propertyPath)
    {
        this.propertyPath = propertyPath;
    }

    public void setPropertyName(String propertyName)
    {
        this.propertyName = propertyName;
    }


    @Override
    public Predicate buildPredicate(From root, CriteriaBuilder cb, Comparison operator, String argument)
    {
        From from = getFrom(root,PathIterator.getPath(propertyPath));

        Object parsed =  argumentParser.parse(argument,from.get(propertyName).getJavaType());
        return createPredicate(from,cb,propertyName,operator,parsed);
    }

    protected From getFrom(From from, PathIterator path)
    {
        if(path.hasNext())
            return getFrom(from.join(path.next()),path);
        return from;
    }
}
TOP

Related Classes of com.dottydingo.hyperion.service.persistence.query.DefaultQueryBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.