/* * 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.Collections; import java.util.HashSet; import java.util.Iterator; import org.teiid.designer.common.vdb.ModelInfo; /** * MetadataConstants are all the constant values used to identify all the valid values for a multi-value attribute. * All assigned short values start with 1. Therefore, when the get...TypeName(type) method is called, the * method needs to subtract 1 from the argument. * * 2/28/06 VAH - commented out the statics that were no longer referenced so that no maintenanance is required in the future * These variables have been moved to ResourceNameUtil. * * @since 8.0 */ final public class MetadataConstants { /** * Definition of not defined long type. */ public static final long NOT_DEFINED_LONG = Long.MIN_VALUE; /** * Definition of not defined int type. */ public static final int NOT_DEFINED_INT = Integer.MIN_VALUE; /** * Definition of not defined short type. */ public static final short NOT_DEFINED_SHORT = Short.MIN_VALUE; public final static String BLANK = ""; //$NON-NLS-1$ //properties public static final String VERSION_DATE = "versionDate"; //$NON-NLS-1$ /** * These types are associated with a KEY, indicating the type of matching that can be performed on it. */ final public static class MATCH_TYPES { public final static short FULL_MATCH = 1; public final static short PARTIAL_MATCH = 2; public final static short NEITHER_MATCH = 3; public final static short NA = 4; } final static String[] MATCH_TYPE_NAMES = {"Full", "Partial", "Neither", "N/A"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ public final static String getMatchTypeName(short type) { return MATCH_TYPE_NAMES[type - 1]; } /** * These types indicate the type of KEY it is. */ final public static class KEY_TYPES { public final static short PRIMARY_KEY = 1; public final static short FOREIGN_KEY = 2; public final static short UNIQUE_KEY = 3; public final static short NON_UNIQUE_KEY = 4; public final static short ACCESS_PATTERN = 5; public final static short INDEX = 6; } final static String[] KEY_TYPE_NAMES = {"Primary", "Foreign", "Unique", "NonUnique", "AccessPattern", "Index"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ public final static String getKeyTypeName(short type) { return KEY_TYPE_NAMES[type - 1]; } /** * These types indicate the type of PROCEDURE it it. */ public final static class PROCEDURE_TYPES { public final static short FUNCTION=1; public final static short STORED_PROCEDURE = 2; public final static short STORED_QUERY = 3; } final static String[] PROCEDURE_TYPE_NAMES = {"Function", "StoredProc", "StoredQuery"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ public final static String getProcedureTypeName(short type) { return PROCEDURE_TYPE_NAMES[type - 1]; } public static short getProcType(String typeName){ if("Function".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return PROCEDURE_TYPES.FUNCTION; else if("StoredProc".equalsIgnoreCase(typeName) || "StoredProcedure".equalsIgnoreCase(typeName)) //$NON-NLS-1$ //$NON-NLS-2$ return PROCEDURE_TYPES.STORED_PROCEDURE; else if("StoredQuery".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return PROCEDURE_TYPES.STORED_QUERY; return NOT_DEFINED_SHORT; } public final static class QUERY_TYPES { public static final int SELECT_QUERY = 0; public static final int UPDATE_QUERY = 1; public static final int INSERT_QUERY = 2; public static final int DELETE_QUERY = 3; public static final int[] TYPES = new int[]{SELECT_QUERY, UPDATE_QUERY, INSERT_QUERY, DELETE_QUERY}; public static final String[] TYPE_NAMES = new String[]{"SelectQuery","UpdateQuery","InsertQuery","DeleteQuery"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ } /** * These types indicate the type of PROCEDURE it it. */ public final static class QUERY_PLAN_TYPES { public final static short MAPPING_DEFN = 0; public final static short QUERY_PLAN_GROUP = 1; public final static short QUERY_PLAN_STORED_QUERY = 2; public final static short QUERY_PLAN_INSERT_QUERY = 3; public final static short QUERY_PLAN_UPDATE_QUERY = 4; public final static short QUERY_PLAN_DELETE_QUERY = 5; } final static String[] QUERY_PLAN_TYPE_NAMES = {"MappingDefn", //$NON-NLS-1$ "QueryPlanGroup", //$NON-NLS-1$ "QueryPlanStoredQuery", //$NON-NLS-1$ "QueryPlanInsertQuery", //$NON-NLS-1$ "QueryPlanUpdateQuery", //$NON-NLS-1$ "QueryPlanDeleteQuery"}; //$NON-NLS-1$ public final static String getQueryPlanTypeName(short type) { return QUERY_PLAN_TYPE_NAMES[type]; } public static short getQueryPlanType(String typeName){ if("MappingDefn".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return QUERY_PLAN_TYPES.MAPPING_DEFN; else if("QueryPlanGroup".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return QUERY_PLAN_TYPES.QUERY_PLAN_GROUP; else if("QueryPlanStoredQuery".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return QUERY_PLAN_TYPES.QUERY_PLAN_STORED_QUERY; return NOT_DEFINED_SHORT; } /** * These types indicate the type of PROCEDURE_PARAMETER it is. */ public final static class PARAMETER_TYPES { public final static short IN_PARM = 1; public final static short OUT_PARM = 2; public final static short INOUT_PARM = 3; public final static short RETURN_VALUE = 4; public final static short RESULT_SET = 5; } final static String[] PARAMETER_TYPE_NAMES = {"In", "Out", "InOut", "ReturnValue", "ResultSet"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ public final static String getParameterTypeName(short type) { return PARAMETER_TYPE_NAMES[type - 1]; } public static short getParameterType(String typeName){ if("In".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return PARAMETER_TYPES.IN_PARM; else if("Out".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return PARAMETER_TYPES.OUT_PARM; else if("InOut".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return PARAMETER_TYPES.INOUT_PARM; else if("ReturnValue".equalsIgnoreCase(typeName) || "Return".equalsIgnoreCase(typeName)) //$NON-NLS-1$ //$NON-NLS-2$ return PARAMETER_TYPES.RETURN_VALUE; else if("ResultSet".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return PARAMETER_TYPES.RESULT_SET; return NOT_DEFINED_SHORT; } /** * These types are associated with the Element having valid search types. */ public final static class SEARCH_TYPES { public final static short SEARCHABLE = 1; public final static short ALLEXCEPTLIKE = 2; public final static short LIKE_ONLY = 3; public final static short UNSEARCHABLE = 4; } final static String[] SEARCH_TYPE_NAMES = {"Searchable", "All Except Like", "Like Only", "Unsearchable"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ public final static String getSearchTypeName(short type) { return SEARCH_TYPE_NAMES[type - 1]; } public final static short getSearchType(String typeName) { if("Searchable".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return SEARCH_TYPES.SEARCHABLE; else if("All Except Like".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return SEARCH_TYPES.ALLEXCEPTLIKE; else if("Like Only".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return SEARCH_TYPES.LIKE_ONLY; else if("Unsearchable".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return SEARCH_TYPES.UNSEARCHABLE; return NOT_DEFINED_SHORT; } /** * A DataType object will be identified as being of one of these types. */ final public static class DATATYPE_TYPES { public final static short BASIC = 1; public final static short USER_DEFINED = 2; public final static short RESULT_SET = 3; } final static String[] DATATYPE_TYPE_NAMES = {"Basic", "UserDefined", "ResultSet"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ public final static String getDataTypeTypeName(short type) { return DATATYPE_TYPE_NAMES[type - 1]; } public static short getDataTypeType(String typeName){ if("Basic".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return DATATYPE_TYPES.BASIC; else if("UserDefined".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return DATATYPE_TYPES.USER_DEFINED; else if("ResultSet".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return DATATYPE_TYPES.RESULT_SET; return NOT_DEFINED_SHORT; } /** * These types represent the type of table a Group is. */ final public static class TABLE_TYPES { public static final short TABLE_TYPE = 1; public static final short SYSTEM_TYPE = 2; public static final short VIEW_TYPE = 3; public static final short DOCUMENT_TYPE = 4; public static final short MAPPING_CLASS_TYPE = 5; public static final short XML_TEMP_TABLE_TYPE = 6; public static final short SYSTEM_DOCUMENT_TYPE = 7; } final static String[] TABLE_TYPE_NAMES = {"Table", "SystemTable", "View", "Document", "MappingClass", "XmlTempTable"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ public final static String getTableTypeName(short type) { return TABLE_TYPE_NAMES[type - 1]; } /** * These types are associated with a DataType or an Element needing the indication of null types. */ final public static class NULL_TYPES { public static final short NOT_NULL = 1; public static final short NULLABLE = 2; public static final short UNKNOWN = 3; } final static String[] NULL_TYPE_NAMES = {"Not Nullable", "Nullable", "Unknown"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ public final static String getNullTypeName(short type) { return NULL_TYPE_NAMES[type - 1]; } public static short getNullType(String typeName){ if("Not Nullable".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return NULL_TYPES.NOT_NULL; else if("Nullable".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return NULL_TYPES.NULLABLE; else if("Unknown".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return NULL_TYPES.UNKNOWN; return NOT_DEFINED_SHORT; } // /** // * These are virtual database model status values // */ // final public static class VDB_MODEL_STATUS { // public static final short INCOMPLETE = 1; // public static final short LOADING = 2; // public static final short ACCESSIBLE = 3; // public static final short UNLOADING = 4; // public static final short DELETED = 5; // } // // final static String[] VDB_MODEL_STATUS_NAMES = {"Incomplete", "Loading", "Accessible", "Unloading", "Deleted"}; // // public final static String getVDBModelStatusName(short status) { // return VDB_MODEL_STATUS_NAMES[status - 1]; // } /** * Visibility type constants. */ public final static class VISIBILITY_TYPES{ public static final short PUBLIC_VISIBILITY = ModelInfo.PUBLIC; public static final short PRIVATE_VISIBILITY = ModelInfo.PRIVATE; } public final static String[] VISIBILITY_TYPE_NAMES = {"Public", "Private"}; //$NON-NLS-1$ //$NON-NLS-2$ public final static String getVisibilityTypeName(short type){ if(type == VISIBILITY_TYPES.PUBLIC_VISIBILITY) return VISIBILITY_TYPE_NAMES[0]; else if(type == VISIBILITY_TYPES.PRIVATE_VISIBILITY) return VISIBILITY_TYPE_NAMES[1]; return null; } public final static short getVisibilityType(String typeName){ if("Public".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return VISIBILITY_TYPES.PUBLIC_VISIBILITY; else if("Private".equalsIgnoreCase(typeName)) //$NON-NLS-1$ return VISIBILITY_TYPES.PRIVATE_VISIBILITY; return NOT_DEFINED_SHORT; } /** * Simple Type constants */ public final static class SIMPLE_TYPES{ /** * Simple Type facets */ public final static class DATA_TYPE_FACETS{ public final static class FUNDAMENTAL{ public static final short EQUAL = 1; public static final short ORDERED = 2; public static final short BOUNDED = 3; public static final short CARDINALITY = 4; public static final short NUMERIC = 5; } public final static class CONSTRAINING{ public static final short LENGTH = 6; public static final short MIN_LENGTH = 7; public static final short MAX_LENGTH = 8; public static final short PATTERN = 9; public static final short ENUMERATION = 10; public static final short WHITE_SPACE = 11; public static final short MAX_INCLUSIVE = 12; public static final short MIN_INCLUSIVE = 13; public static final short MAX_EXCLUSIVE= 14; public static final short MIN_EXCLUSIVE = 15; public static final short TOTAL_DIGITS = 16; public static final short FRACTION_DIGITS = 17; } } public final static String[] DATA_TYPE_FACETS_NAMES = {"equal", "ordered", "bounded", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ "cardinality", "numeric", "length", "minLength", "maxLength", "pattern", "enumeration", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ "whiteSpace", "maxInclusive", "minInclusive", "maxExclusive", "minExclusive", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ "totalDigits", "fractionDigits"}; //$NON-NLS-1$ //$NON-NLS-2$ public final static String getDataTypeFacetName(short facetType){ if(facetType < 1 || facetType > DATA_TYPE_FACETS_NAMES.length){ return null; } return DATA_TYPE_FACETS_NAMES[facetType -1]; } public final static short getDataTypeFacet(String facetName){ if(DATA_TYPE_FACETS_NAMES[0].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.FUNDAMENTAL.EQUAL; }else if(DATA_TYPE_FACETS_NAMES[1].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.FUNDAMENTAL.ORDERED; }else if(DATA_TYPE_FACETS_NAMES[2].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.FUNDAMENTAL.BOUNDED; }else if(DATA_TYPE_FACETS_NAMES[3].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.FUNDAMENTAL.CARDINALITY; }else if(DATA_TYPE_FACETS_NAMES[4].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.FUNDAMENTAL.NUMERIC; }else if(DATA_TYPE_FACETS_NAMES[5].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.CONSTRAINING.LENGTH; }else if(DATA_TYPE_FACETS_NAMES[6].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.CONSTRAINING.MIN_LENGTH; }else if(DATA_TYPE_FACETS_NAMES[7].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.CONSTRAINING.MAX_LENGTH; }else if(DATA_TYPE_FACETS_NAMES[8].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.CONSTRAINING.PATTERN; }else if(DATA_TYPE_FACETS_NAMES[9].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.CONSTRAINING.ENUMERATION; }else if(DATA_TYPE_FACETS_NAMES[10].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.CONSTRAINING.WHITE_SPACE; }else if(DATA_TYPE_FACETS_NAMES[11].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.CONSTRAINING.MAX_INCLUSIVE; }else if(DATA_TYPE_FACETS_NAMES[512].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.CONSTRAINING.MIN_INCLUSIVE; }else if(DATA_TYPE_FACETS_NAMES[13].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.CONSTRAINING.MAX_EXCLUSIVE; }else if(DATA_TYPE_FACETS_NAMES[14].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.CONSTRAINING.MIN_EXCLUSIVE; }else if(DATA_TYPE_FACETS_NAMES[15].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.CONSTRAINING.TOTAL_DIGITS; }else if(DATA_TYPE_FACETS_NAMES[16].equalsIgnoreCase(facetName)){ return DATA_TYPE_FACETS.CONSTRAINING.FRACTION_DIGITS; } return NOT_DEFINED_SHORT; } /** * White space types. Value of Simple Type whitSpace facet. */ public final static class WHITE_SPACE_TYPES{ public static final short PRESERVE = 1; public static final short REPLACE = 2; public static final short COLLAPSE = 3; } public final static String[] WHITE_SPACE_TYPE_NAMES = {"preserve", "replace", "collapse"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ public final static String getWhiteSapceTypeName(short type){ if(type < 1 || type > WHITE_SPACE_TYPE_NAMES.length){ return null; } return WHITE_SPACE_TYPE_NAMES[type-1]; } public final static short getWhiteSapceType(String typeName){ if("preserve".equalsIgnoreCase(typeName)){ //$NON-NLS-1$ return WHITE_SPACE_TYPES.PRESERVE; }else if("replace".equalsIgnoreCase(typeName)){ //$NON-NLS-1$ return WHITE_SPACE_TYPES.REPLACE; }else if("collapse".equalsIgnoreCase(typeName)){ //$NON-NLS-1$ return WHITE_SPACE_TYPES.COLLAPSE; } return NOT_DEFINED_SHORT; } /** * Variety types. */ public final static class VARIETY_TYPES{ public static final short ATOMIC = 1; public static final short LIST = 2; public static final short UNION = 3; } public final static String[] VARIETY_TYPE_NAMES = {"atomic", "list", "union"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ public final static String getVarietyTypeName(short type){ if(type < 1 || type > VARIETY_TYPE_NAMES.length){ return null; } return VARIETY_TYPE_NAMES[type-1]; } public final static short getVarietyType(String typeName){ if("atomic".equalsIgnoreCase(typeName)){ //$NON-NLS-1$ return VARIETY_TYPES.ATOMIC; }else if("list".equalsIgnoreCase(typeName)){ //$NON-NLS-1$ return VARIETY_TYPES.LIST; }else if("union".equalsIgnoreCase(typeName)){ //$NON-NLS-1$ return VARIETY_TYPES.UNION; } return NOT_DEFINED_SHORT; } /** * Final types. Can be a subset of "restriction", "list", and "union". */ public final static class FINAL_TYPES{ public static final short RESTRICTION = 1; public static final short LIST = 2; public static final short UNION = 4; public static final short RESTRICTION_AND_LIST = 3; public static final short RESTRICTION_AND_UNION = 5; public static final short LIST_AND_UNION = 6; public static final short RESTRICTION_AND_LISTAND_UNION = 7; } public final static String[] FINAL_TYPE_NAMES = {"restriction", "list", "union"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ public final static Collection getFinalTypeNames(short type){ if(type < 1 || type > 7){ return Collections.EMPTY_SET; } Collection result = new HashSet(3); if((type & FINAL_TYPES.RESTRICTION) == FINAL_TYPES.RESTRICTION){ result.add(FINAL_TYPE_NAMES[0]); } if((type & FINAL_TYPES.LIST) == FINAL_TYPES.LIST){ result.add(FINAL_TYPE_NAMES[1]); } if((type & FINAL_TYPES.UNION) == FINAL_TYPES.UNION){ result.add(FINAL_TYPE_NAMES[2]); } return result; } public final static short getFinalType(Collection typeNames){ if(typeNames == null || typeNames.isEmpty()){ return NOT_DEFINED_SHORT; } short result = 0; Iterator iter = typeNames.iterator(); while(iter.hasNext()){ String typeName = (String)iter.next(); if("restriction".equalsIgnoreCase(typeName)){ //$NON-NLS-1$ result = (short) (result | FINAL_TYPES.RESTRICTION); }else if("list".equalsIgnoreCase(typeName)){ //$NON-NLS-1$ result = (short) (result | FINAL_TYPES.LIST); }else if("union".equalsIgnoreCase(typeName)){ //$NON-NLS-1$ result = (short) (result | FINAL_TYPES.UNION); } } return result; } } /** * These property names are used to set connector capability properties on * a model. They are currently used only for SAP-specific connector capabilities. * They could be used however, by defining a metamodel extension to add these * properties to a model, which is actually what we do for testing. */ final public static class CAPABILITY_PROPERTY_NAMES { public static final String PROP_BLACK_BOX = "supportsBlackBoxJoin"; //$NON-NLS-1$ public static final String PROP_SINGLE_GROUP_SELECT = "requiresSingleGroupSelect"; //$NON-NLS-1$ public static final String PROP_LEAF_JOIN_SELECT = "requiresLeafJoinSelect"; //$NON-NLS-1$ } }