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

org.modeshape.jcr.query.validate.Schemata Maven / Gradle / Ivy

There is a newer version: 5.4.1.Final
Show newest version
/*
 * ModeShape (http://www.modeshape.org)
 *
 * 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 org.modeshape.jcr.query.validate;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.modeshape.common.annotation.Immutable;
import org.modeshape.jcr.api.query.qom.Operator;
import org.modeshape.jcr.query.model.Ordering;
import org.modeshape.jcr.query.model.QueryCommand;
import org.modeshape.jcr.query.model.SelectorName;
import org.modeshape.jcr.value.PropertyType;

/**
 * The interface used to access the structure being queried and validate a query.
 */
@Immutable
public interface Schemata {

    /**
     * Get the information for the table or view with the supplied name within this schema.
     * 

* The resulting definition is immutable. *

* * @param name the table or view name; may not be null * @return the table or view information, or null if there is no such table */ Table getTable( SelectorName name ); /** * Information about a queryable table. */ public interface Table { /** * Get the name for this table. * * @return the table name; never null */ SelectorName getName(); /** * Get the information for a column with the supplied name within this table. *

* The resulting column definition is immutable. *

* * @param name the column name; may not be null * @return the column information, or null if there is no such column */ Column getColumn( String name ); /** * Get the queryable columns in this table. * * @return the immutable map of immutable column objects by their name; never null */ Map getColumnsByName(); /** * Get the queryable columns in this table. * * @return the immutable, ordered list of immutable column objects; never null */ List getColumns(); /** * Get the queryable columns in this table that should be used in case of "SELECT *". * * @return the immutable, ordered list of immutable column objects; never null */ List getSelectAllColumns(); /** * Get the queryable columns in this table that should be used in case of "SELECT *". * * @return the immutable map of immutable column objects by their name; never null */ Map getSelectAllColumnsByName(); /** * Get the collection of keys for this table. * * @return the immutable collection of immutable keys; never null, but possibly empty */ Collection getKeys(); /** * Determine whether this table has a {@link #getKeys() key} that contains exactly those columns listed. * * @param columns the columns for the key * @return true if this table contains a key using exactly the supplied columns, or false otherwise */ boolean hasKey( Column... columns ); /** * Determine whether this table has a {@link #getKeys() key} that contains exactly those columns listed. * * @param columns the columns for the key * @return true if this table contains a key using exactly the supplied columns, or false otherwise */ boolean hasKey( Iterable columns ); /** * Obtain this table's {@link #getKeys() key} that contains exactly those columns listed. *

* The resulting key definition is immutable. *

* * @param columns the columns for the key * @return the key that uses exactly the supplied columns, or null if there is no such key */ Key getKey( Column... columns ); /** * Obtain this table's {@link #getKeys() key} that contains exactly those columns listed. *

* The resulting key definition is immutable. *

* * @param columns the columns for the key * @return the key that uses exactly the supplied columns, or null if there is no such key */ Key getKey( Iterable columns ); /** * Determine whether this table allows has extra columns not included in the {@link #getColumns() column list}. This value * is used to determine whether columns in a SELECT clause should be validated against the list of known columns. * * @return true if there are extra columns, or false if the {@link #getColumns() list of columns} is complete for this * table. */ boolean hasExtraColumns(); } /** * Information about a view that is defined in terms of other views/tables. */ public interface View extends Table { /** * Get the {@link QueryCommand query} that is the definition of the view. * * @return the view definition; never null */ QueryCommand getDefinition(); } /** * Information about a queryable column. */ public interface Column { /** * Get the name for this column. * * @return the column name; never null */ String getName(); /** * Get the property type for this column. * * @return the property type; never null */ String getPropertyTypeName(); /** * Get whether the column can be used in a full-text search. * * @return true if the column is full-text searchable, or false otherwise */ boolean isFullTextSearchable(); /** * Get the set of operators that can be used in a comparison involving this column. * * @return the operators; never null but possibly empty */ Set getOperators(); /** * Get whether this column can be used within an {@link Ordering ORDER BY clause}. * * @return true if this column can be used in an order specification, or false otherwise */ boolean isOrderable(); /** * Get whether this column can be used within a comparison using {@link #getOperators() operators} other than * {@link Operator#EQUAL_TO} or {@link Operator#NOT_EQUAL_TO}. * * @return true if the column can be used in a comparison other than "=" or "!=", or false if only "=" and/or "!=" can be * used */ boolean isComparable(); PropertyType getRequiredType(); Object getMinimum(); Object getMaximum(); } /** * Information about a key for a table. */ public interface Key { /** * Get the columns that make up this key. * * @return the key's columns; immutable and never null */ Set getColumns(); /** * Determine whether this key contains exactly those columns listed. * * @param columns the columns for the key * @return true if this key contains exactly the supplied columns, or false otherwise */ boolean hasColumns( Column... columns ); /** * Determine whether this key contains exactly those columns listed. * * @param columns the columns for the key * @return true if this key contains exactly the supplied columns, or false otherwise */ boolean hasColumns( Iterable columns ); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy