/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.metadata.runtime.api;
import java.util.Collection;
import java.util.List;
/**
* <p>Instances of this interface
* represent Groups in a Model. The values of a
* Group are analogous to a Table in a database.</p>
*
* @since 8.0
*/
public interface Group extends MetadataObject {
/**
* Return the path to the group.
* @return String
*/
String getPath();
/**
* Returns the name-in-soure for this group.
* @return String is the name in source
*/
String getNameInSource();
/**
* Returns whether the name-in-soure is defined for this element.
* @return true if this element has the name in source; false otherwise.
*/
boolean hasNameInSource();
/**
* Return the group description.
* @return String
*/
String getDescription();
/**
* Return the alias.
* @return String alias
*/
String getAlias();
/**
* Returns an ordered list of ElementID's for this group.
* @return List of ElementID's
*/
List getElementIDs();
/**
* Returns the KeyID's identified for this group.
* @return Collection of KeyID's
*/
Collection getKeyIDs();
/**
* Return boolean indicating if this a physical model.
* @return boolean true if is is a physical model
*/
boolean isPhysical();
/**
* Return the query plan for the group if it is a virtual group.
* @return String
*/
String getQueryPlan();
/**
* Return the UPDATE query plan for the group if it is a virtual group.
* @return String
*/
String getUpdateQueryPlan();
/**
* Return the INSERT query plan for the group if it is a virtual group.
* @return String
*/
String getInsertQueryPlan();
/**
* Return the DELETE query plan for the group if it is a virtual group.
* @return String
*/
String getDeleteQueryPlan();
/**
* Returns the deleteAllowed.
* @return boolean
*/
boolean isDeleteAllowed();
/**
* Returns the insertAllowed.
* @return boolean
*/
boolean isInsertAllowed();
/**
* Returns the updateAllowed.
* @return boolean
*/
boolean isUpdateAllowed();
/**
* @return boolean true indicates this is a RuntimeMetadata System table
*/
boolean isSystemTable();
/**
* @return short indicating table type (i.e., TABLE, SYSTEM, VIEW)
*
* @see org.teiid.designer.metadata.runtime.api.MetadataConstants.TABLE_TYPES
*/
short getTableType();
/**
* Return boolean indicating if the model supports UPDATE operations in the sql.
* @return boolean
*/
boolean supportsUpdate();
/**
* Return the mapping document if this group represents a virtual document.
* @return the mapping document string.
*/
String getMappingDocument();
/**
* Whether this group represents a virtual document.
* @return true if this group represents a virtual document. False otherwise.
*/
boolean isVirtualDocument();
/**
* If this group represents a virtual document,
* return a Collection of string representations of XML Schemas
* that are referenced by it.
* @return Collection of String
*/
Collection getXMLSchemas();
}