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

org.efaps.db.SelectBuilder Maven / Gradle / Ivy

/*
 * Copyright 2003 - 2012 The eFaps Team
 *
 * 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.
 *
 * Revision:        $Rev: 7483 $
 * Last Changed:    $Date: 2012-05-11 11:57:38 -0500 (Fri, 11 May 2012) $
 * Last Changed By: $Author: [email protected] $
 */


package org.efaps.db;

import org.efaps.ci.CIAttribute;
import org.efaps.ci.CIType;


/**
 * TODO comment!
 *
 * @author The eFaps Team
 * @version $Id: SelectBuilder.java 7483 2012-05-11 16:57:38Z [email protected] $
 */
public class SelectBuilder
{
    /**
     * StringBuilder use as the base for building the String.
     */
    private final StringBuilder bldr = new StringBuilder();

    /**
     * Standard constructor.
     */
    public SelectBuilder()
    {
    }

    /**
     * Constructor setting a SelectBuilder as bases for this SelectBuilder.
     * @param _selectBuilder SelectBuilder to be used
     */
    public SelectBuilder(final SelectBuilder _selectBuilder)
    {
        this.bldr.append(_selectBuilder.toString());
    }


    /**
     * @param _attribute attribute to linkto
     * @return this
     */
    public SelectBuilder linkto(final CIAttribute _attribute)
    {
        return linkto(_attribute.name);
    }

    /**
     * @param _attribute attribute to linkto
     * @return this
     */
    public SelectBuilder linkto(final String _attribute)
    {
        addPoint();
        this.bldr.append("linkto[").append(_attribute).append("]");
        return this;
    }

    /**
     * @param _type         type to link from
     * @param _attribute    attribute to link from
     * @return this
     */
    public SelectBuilder linkfrom(final CIType _type,
                                  final CIAttribute _attribute)
    {
        return linkfrom(_type.getType().getName(), _attribute.name);
    }

    /**
     * @param _type         type to link from
     * @param _attribute    attribute to linkto
     * @return this
     */
    public SelectBuilder linkfrom(final String _type,
                                  final String _attribute)
    {
        addPoint();
        this.bldr.append("linkfrom[").append(_type).append("#").append(_attribute).append("]");
        return this;
    }

    /**
     * @param _attribute attribute to be added
     * @return this
     */
    public SelectBuilder attribute(final CIAttribute _attribute)
    {
        return attribute(_attribute.name);
    }

    /**
     * @param _attribute attribute to be added
     * @return this
     */
    public SelectBuilder attribute(final String _attribute)
    {
        addPoint();
        this.bldr.append("attribute[").append(_attribute).append("]");
        return this;
    }


    /**
     * add a point.
     */
    private void addPoint()
    {
        if (this.bldr.length() > 0) {
            this.bldr.append(".");
        }
    }

    /**
     * Add oid select part.
     *
     * @return this
     */
    public SelectBuilder oid()
    {
        addPoint();
        this.bldr.append("oid");
        return this;
    }

    /**
     * Add type select part.
     *
     * @return this
     */
    public SelectBuilder type()
    {
        addPoint();
        this.bldr.append("type");
        return this;
    }

    /**
     * Add type select part.
     *
     * @return this
     */
    public SelectBuilder value()
    {
        addPoint();
        this.bldr.append("value");
        return this;
    }

    /**
     * Add label select part.
     *
     * @return this
     */
    public SelectBuilder label()
    {
        addPoint();
        this.bldr.append("label");
        return this;
    }

    /**
     * Add id select part.
     *
     * @return this
     */
    public SelectBuilder id()
    {
        addPoint();
        this.bldr.append("id");
        return this;
    }

    /**
     * Add uuid select part.
     *
     * @return this
     */
    public SelectBuilder uuid()
    {
        addPoint();
        this.bldr.append("uuid");
        return this;
    }

    /**
     * Add file select part.
     *
     * @return this
     */
    public SelectBuilder file()
    {
        addPoint();
        this.bldr.append("file");
        return this;
    }

    /**
     * Add length select part.
     *
     * @return this
     */
    public SelectBuilder length()
    {
        addPoint();
        this.bldr.append("length");
        return this;
    }

    /**
     * Add base select part.
     *
     * @return this
     */
    public SelectBuilder base()
    {
        addPoint();
        this.bldr.append("base");
        return this;
    }

    /**
     * Add uom select part.
     *
     * @return this
     */
    public SelectBuilder uom()
    {
        addPoint();
        this.bldr.append("uom");
        return this;
    }

    /**
     * Add uuid select part.
     *
     * @return this
     */
    public SelectBuilder clazz()
    {
        addPoint();
        this.bldr.append("class");
        return this;
    }

    /**
     * @param _class attribute to be added
     * @return this
     */
    public SelectBuilder clazz(final CIType _class)
    {
        return clazz(_class.getType().getName());
    }

    /**
     * @param _class attribute to be added
     * @return this
     */
    public SelectBuilder clazz(final String _class)
    {
        addPoint();
        this.bldr.append("class[").append(_class).append("]");
        return this;
    }

    /**
     * @param _attribute attribute to be added
     * @return this
     */
    public SelectBuilder attributeset(final CIAttribute _attribute)
    {
        return attributeset(_attribute.name);
    }

    /**
     * @param _attribute attribute to be added
     * @return this
     */
    public SelectBuilder attributeset(final String _attribute)
    {
        addPoint();
        this.bldr.append("attributeset[").append(_attribute).append("]");
        return this;
    }

    /**
     * Add format select part.
     * @param _pattern pattern to be applied
     *
     * @return this
     */
    public SelectBuilder format(final String _pattern)
    {
        addPoint();
        this.bldr.append("format[").append(_pattern).append("]");
        return this;
    }

    /**
     * Return the string of the StringBuilder.
     * @return StringBuilder.toString()
     */
    @Override
    public String toString()
    {
        return this.bldr.toString();
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy