001package gudusoft.gsqlparser.sqlenv; 002 003import java.util.List; 004 005/** 006 * SQL procedure 007 */ 008public class TSQLOraclePackage extends TSQLRoutine { 009 010 public TSQLOraclePackage(TSQLSchema sqlSchema, String packageName) { 011 super(sqlSchema, packageName, ESQLDataObjectType.dotOraclePackage); 012 } 013 014 /** 015 * create a procedure belong to this schema 016 * 017 * @param procedureName procedure name 018 * @return an instance of the SQL procedure 019 */ 020 public TSQLProcedure createProcedure(String procedureName) { 021 return (TSQLProcedure) createSchemaObject(procedureName, ESQLDataObjectType.dotProcedure); 022 } 023 024 /** 025 * create a function belong to this schema 026 * 027 * @param functionName function name 028 * @return an instance of the SQL function. 029 */ 030 public TSQLFunction createFunction(String functionName) { 031 return (TSQLFunction) createSchemaObject(functionName, ESQLDataObjectType.dotFunction); 032 } 033 034 /** 035 * create a trigger belong to this schema 036 * 037 * @param triggerName trigger name 038 * @return an instance of the SQL trigger. 039 */ 040 public TSQLTrigger createTrigger(String triggerName) { 041 return (TSQLTrigger) createSchemaObject(triggerName, ESQLDataObjectType.dotTrigger); 042 } 043 044 protected TSQLSchemaObject createSchemaObject(String schemaObjectName, ESQLDataObjectType dataObjectType) { 045 return createSchemaObject(schemaObjectName, dataObjectType, 0); 046 } 047 048 protected TSQLSchemaObject createSchemaObject(String schemaObjectName, ESQLDataObjectType dataObjectType, int priority) { 049 TSQLSchemaObject result = null; 050 TSQLSchemaObject schemaObject = findSchemaObject(dataObjectType, schemaObjectName); 051 if (schemaObject == null) { 052 switch (dataObjectType) { 053 case dotProcedure: 054 result = new TSQLProcedure(this, schemaObjectName); 055 break; 056 case dotFunction: 057 result = new TSQLFunction(this, schemaObjectName); 058 break; 059 case dotTrigger: 060 result = new TSQLTrigger(this, schemaObjectName); 061 break; 062 } 063 } else if (dataObjectType == schemaObject.getDataObjectType()) { 064 result = schemaObject; 065 } else { 066 //System.out.println("object name conflict:"+getQualifiedName()+"."+schemaObjectName+",type:"+dataObjectType+" VS "+schemaObject.getQualifiedName()+", type:"+schemaObject.getDataObjectType()); 067 } 068 069 if (result != null && priority > result.getPriority()) { 070 result.setPriority(priority); 071 } 072 if(result instanceof TSQLProcedure){ 073 ((TSQLProcedure)result).setOraclePackage(this); 074 } 075 return result; 076 } 077 078 private TSQLSchemaObject findSchemaObject(ESQLDataObjectType dataObjectType, String schemaObjectName) { 079 return getSchema().findSchemaObject(dataObjectType, schemaObjectName); 080 } 081 082 public List<TSQLSchemaObject> getSchemaObjectList() { 083 return getSchema().getPackageObjectList(this); 084 } 085}