com.evolveum.midpoint.repo.sql.query2.hqm.EntityReference.java Source code

Java tutorial

Introduction

Here is the source code for com.evolveum.midpoint.repo.sql.query2.hqm.EntityReference.java

Source

/*
 * Copyright (c) 2010-2015 Evolveum
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.evolveum.midpoint.repo.sql.query2.hqm;

import org.apache.commons.lang.Validate;

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

/**
 * Specifies an entity that is to be used in the query (its name and its alias),
 * along with any entities joined by associations.
 *
 *
 *
 * @author mederly
 */
public class EntityReference {

    private String alias;
    private String name;

    /**
     * Joined entities, e.g. for RUser u here could be:
     *  - u.assignments a
     *  - u.longs l with l.ownerType = EXTENSION and l.name = 'http://example.com/p#intType'
     * etc.
     */
    private List<JoinSpecification> joins = new ArrayList<>();

    public EntityReference(String alias, String name) {
        Validate.notEmpty(alias);
        Validate.notEmpty(name);

        this.alias = alias;
        this.name = name;
    }

    public String getAlias() {
        return alias;
    }

    public void setAlias(String alias) {
        this.alias = alias;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<JoinSpecification> getJoins() {
        return joins;
    }

    public void addJoin(JoinSpecification join) {
        joins.add(join);
    }

    public void dumpToHql(StringBuilder sb, int indent) {
        HibernateQuery.indent(sb, indent);
        sb.append(name).append(" ").append(alias);
        if (!joins.isEmpty()) {
            sb.append("\n");
            JoinSpecification.dumpToHql(sb, joins, indent + 1);
        }

    }

    public boolean containsAlias(String alias) {
        if (this.alias.equals(alias)) {
            return true;
        }
        for (JoinSpecification join : joins) {
            if (join.getAlias().equals(alias)) {
                return true;
            }
        }
        return false;
    }

    public JoinSpecification findJoinFor(String path) {
        for (JoinSpecification join : joins) {
            if (path.equals(join.getPath())) {
                return join;
            }
        }
        return null;
    }
}