1 package com.daffodilwoods.daffodildb.server.datadictionarysystem.information; 2 3 import java.io.*; 4 import java.util.*; 5 6 import com.daffodilwoods.daffodildb.server.datadictionarysystem.*; 7 import com.daffodilwoods.daffodildb.server.serversystem.*; 8 import com.daffodilwoods.daffodildb.server.sql99.*; 9 import com.daffodilwoods.daffodildb.server.sql99.dql.iterator.*; 10 import com.daffodilwoods.database.general.*; 11 import com.daffodilwoods.database.resource.*; 12 13 public class ProcedureInformation implements _ProcedureInformation { 14 private QualifiedIdentifier qualifiedIdentifier; 15 private String specific_name; 16 private String language; 17 private String resultType; 18 private String routineType; 19 private String [] procedureParameters; 20 private String routineQuery; 21 22 public ProcedureInformation() { 23 } 24 25 public ProcedureInformation(_ServerSession connection, QualifiedIdentifier spQqualifiedIdentifier) { 26 try { 27 28 String selectQuery = "Select routine_catalog,routine_schema,routine_name,routine_type,routine_definition,routine_body from " + SystemTables.routines_TableName 29 + " where specific_catalog = ? and specific_schema = ? and specific_name = ? "; 30 _SelectQueryIterator iterator = getIterator(connection, selectQuery, new Object [] {spQqualifiedIdentifier.catalog, spQqualifiedIdentifier.schema, spQqualifiedIdentifier.getName()}); 31 try { 32 if (iterator.first()) { 33 try { 34 Object [] routineRecord = null; 35 routineRecord = (Object []) iterator.getObject(); 36 qualifiedIdentifier = new QualifiedIdentifier( (String ) routineRecord[0], (String ) routineRecord[1], (String ) routineRecord[2]); 37 routineType = (String ) routineRecord[3]; 38 routineQuery = (String ) routineRecord[4]; 39 language = (String ) routineRecord[5]; 40 specific_name = spQqualifiedIdentifier.getName(); 41 String parametersQuery = "Select parameter_name from " + SystemTables.parameters_TableName 42 + " where specific_catalog = ? and specific_schema = ? and specific_name = ? "; 43 _SelectQueryIterator parametersIterator = getIterator(connection, parametersQuery, new Object [] {spQqualifiedIdentifier.catalog, spQqualifiedIdentifier.schema, spQqualifiedIdentifier.name}); 44 if (parametersIterator.first()) { 45 Object [] parametersRecord = null; 46 ArrayList parametersList = new ArrayList(); 47 do { 48 parametersRecord = (Object []) parametersIterator.getObject(); 49 parametersList.add(parametersRecord[0]); 50 } while (parametersIterator.next()); 51 procedureParameters = (String []) (parametersList.toArray(new String [0])); 52 } 53 } catch (DatabaseException e) {} 54 } 55 } catch (RetrievalException e) {} 56 } catch (DException ex) { 57 throw new RuntimeException (ex.getMessage()); 58 } 59 } 60 61 public QualifiedIdentifier getQualifiedIdentifier() { 62 return qualifiedIdentifier; 63 } 64 65 public String getSpecificName() { 66 return specific_name; 67 68 } 69 70 public String getName() { 71 return qualifiedIdentifier.name; 72 } 73 74 public String getCatalog() { 75 return qualifiedIdentifier.catalog; 76 } 77 78 public String getSchema() { 79 return qualifiedIdentifier.schema; 80 } 81 82 public String getLanguage() { 83 return language; 84 } 85 86 public String getResultType() { 87 return resultType; 88 } 89 90 public String getRoutineType() { 91 return routineType; 92 } 93 94 public String [] getProcedureParameters() { 95 return procedureParameters; 96 } 97 98 public String getProcedureQuery() { 99 return routineQuery; 100 } 101 102 public void readExternal(ObjectInput objectInput) { 103 try { 104 qualifiedIdentifier = (QualifiedIdentifier) objectInput.readObject(); 105 specific_name = (String ) objectInput.readObject(); 106 language = (String ) objectInput.readObject(); 107 resultType = (String ) objectInput.readObject(); 108 routineType = (String ) objectInput.readObject(); 109 procedureParameters = (String []) objectInput.readObject(); 110 routineQuery = (String ) objectInput.readObject(); 111 } catch (IOException ioe) { 112 } catch (Exception cnf) { 113 } 114 } 115 116 public void writeExternal(ObjectOutput objectOutput) { 117 try { 118 objectOutput.writeObject(qualifiedIdentifier); 119 objectOutput.writeObject(specific_name); 120 objectOutput.writeObject(language); 121 objectOutput.writeObject(resultType); 122 objectOutput.writeObject(routineType); 123 objectOutput.writeObject(procedureParameters); 124 objectOutput.writeObject(routineQuery); 125 } catch (Exception ioe) { 126 } 127 } 128 129 private _SelectQueryIterator getIterator(_ServerSession connection, String query, Object [] parameters) throws DException { 130 if (parameters == null) 131 return (_SelectQueryIterator) connection.getGlobalSession().executeQuery(query, 0); 132 _Executer executer = (_Executer) connection.getGlobalSession().executeQueryParameterised(query, 0); ; 133 return (_SelectQueryIterator) executer.execute(parameters); 134 } 135 } 136 | Popular Tags |