Lines 39-45
Link Here
|
39 |
* |
39 |
* |
40 |
* Portions Copyrighted 2008 Sun Microsystems, Inc. |
40 |
* Portions Copyrighted 2008 Sun Microsystems, Inc. |
41 |
*/ |
41 |
*/ |
42 |
|
|
|
43 |
package org.netbeans.modules.db.metadata.model.jdbc; |
42 |
package org.netbeans.modules.db.metadata.model.jdbc; |
44 |
|
43 |
|
45 |
import java.sql.DatabaseMetaData; |
44 |
import java.sql.DatabaseMetaData; |
Lines 55-81
Link Here
|
55 |
import org.netbeans.modules.db.metadata.model.api.Column; |
54 |
import org.netbeans.modules.db.metadata.model.api.Column; |
56 |
import org.netbeans.modules.db.metadata.model.api.MetadataException; |
55 |
import org.netbeans.modules.db.metadata.model.api.MetadataException; |
57 |
import org.netbeans.modules.db.metadata.model.api.Parameter; |
56 |
import org.netbeans.modules.db.metadata.model.api.Parameter; |
58 |
import org.netbeans.modules.db.metadata.model.api.Parameter.Direction; |
|
|
59 |
import org.netbeans.modules.db.metadata.model.api.Schema; |
57 |
import org.netbeans.modules.db.metadata.model.api.Schema; |
60 |
import org.netbeans.modules.db.metadata.model.api.Value; |
58 |
import org.netbeans.modules.db.metadata.model.api.Value; |
61 |
import org.netbeans.modules.db.metadata.model.spi.ProcedureImplementation; |
59 |
import org.netbeans.modules.db.metadata.model.spi.FunctionImplementation; |
62 |
|
60 |
|
63 |
/** |
61 |
/** |
64 |
* |
62 |
* |
65 |
* @author David Van Couvering |
63 |
* @author David Van Couvering |
66 |
*/ |
64 |
*/ |
67 |
public class JDBCProcedure extends ProcedureImplementation { |
65 |
public class JDBCFunction extends FunctionImplementation { |
68 |
|
66 |
|
69 |
private static final Logger LOGGER = Logger.getLogger(JDBCProcedure.class.getName()); |
67 |
private static final Logger LOGGER = Logger.getLogger(JDBCFunction.class.getName()); |
70 |
|
|
|
71 |
private final JDBCSchema jdbcSchema; |
68 |
private final JDBCSchema jdbcSchema; |
72 |
private final String name; |
69 |
private final String name; |
73 |
|
|
|
74 |
private Map<String, Column> columns; |
70 |
private Map<String, Column> columns; |
75 |
private Map<String, Parameter> parameters; |
71 |
private Map<String, Parameter> parameters; |
76 |
private Value returnValue; |
72 |
private Value returnValue; |
77 |
|
73 |
|
78 |
public JDBCProcedure(JDBCSchema jdbcSchema, String name) { |
74 |
public JDBCFunction(JDBCSchema jdbcSchema, String name) { |
79 |
this.jdbcSchema = jdbcSchema; |
75 |
this.jdbcSchema = jdbcSchema; |
80 |
this.name = name; |
76 |
this.name = name; |
81 |
} |
77 |
} |
Lines 123-168
Link Here
|
123 |
|
119 |
|
124 |
@Override |
120 |
@Override |
125 |
public String toString() { |
121 |
public String toString() { |
126 |
return "JDBCProcedure[name='" + name + "']"; // NOI18N |
122 |
return "JDBCFunction[name='" + name + "']"; // NOI18N |
127 |
} |
123 |
} |
128 |
|
124 |
|
129 |
protected JDBCColumn createJDBCColumn(int position, ResultSet rs) throws SQLException { |
125 |
protected JDBCColumn createJDBCColumn(int position, ResultSet rs) throws SQLException { |
130 |
return new JDBCColumn(this.getProcedure(), position, JDBCValue.createProcedureValue(rs)); |
126 |
return new JDBCColumn(this.getFunction(), position, JDBCValue.createFunctionValue(rs, this.getFunction())); |
131 |
} |
127 |
} |
132 |
|
128 |
|
133 |
protected JDBCParameter createJDBCParameter(int position, ResultSet rs) throws SQLException { |
129 |
protected JDBCParameter createJDBCParameter(int position, ResultSet rs) throws SQLException { |
134 |
Direction direction = JDBCUtils.getDirection(rs.getShort("COLUMN_TYPE")); |
130 |
Parameter.Direction direction = JDBCUtils.getFunctionDirection(rs.getShort("COLUMN_TYPE")); |
135 |
return new JDBCParameter(this, JDBCValue.createProcedureValue(rs), direction, position); |
131 |
return new JDBCParameter(this.getFunction(), JDBCValue.createFunctionValue(rs, this.getFunction()), direction, position); |
136 |
} |
132 |
} |
137 |
|
133 |
|
138 |
protected JDBCValue createJDBCValue(ResultSet rs) throws SQLException { |
134 |
protected JDBCValue createJDBCValue(ResultSet rs) throws SQLException { |
139 |
return JDBCValue.createProcedureValue(rs); |
135 |
return JDBCValue.createFunctionValue(rs, this.getFunction()); |
140 |
} |
136 |
} |
141 |
|
137 |
|
142 |
protected void createProcedureInfo() { |
138 |
protected void createProcedureInfo() { |
143 |
LOGGER.log(Level.FINE, "Initializing procedure info in " + this); |
139 |
LOGGER.log(Level.FINE, "Initializing procedure info in " + this); |
144 |
|
140 |
|
145 |
Map<String, Column> newColumns = new LinkedHashMap<String, Column>(); |
141 |
Map<String, Column> newColumns = new LinkedHashMap<String, Column>(); |
146 |
Map<String, Parameter> newParams = new LinkedHashMap<String, Parameter>(); |
142 |
Map<String, Parameter> newParams = new LinkedHashMap<String, Parameter>(); |
147 |
int resultCount = 0; |
143 |
int resultCount = 0; |
148 |
int paramCount = 0; |
144 |
int paramCount = 0; |
149 |
|
145 |
|
150 |
try { |
146 |
try { |
151 |
ResultSet rs = jdbcSchema.getJDBCCatalog().getJDBCMetadata().getDmd().getProcedureColumns(jdbcSchema.getJDBCCatalog().getName(), jdbcSchema.getName(), name, "%"); // NOI18N |
147 |
ResultSet rs = jdbcSchema.getJDBCCatalog().getJDBCMetadata().getDmd().getFunctionColumns(jdbcSchema.getJDBCCatalog().getName(), jdbcSchema.getName(), name, "%"); // NOI18N |
152 |
try { |
148 |
try { |
153 |
while (rs.next()) { |
149 |
while (rs.next()) { |
154 |
short columnType = rs.getShort("COLUMN_TYPE"); |
150 |
short columnType = rs.getShort("COLUMN_TYPE"); |
155 |
switch (columnType) { |
151 |
switch (columnType) { |
156 |
case DatabaseMetaData.procedureColumnResult: |
152 |
case DatabaseMetaData.functionColumnResult: |
157 |
addColumn(++resultCount, rs, newColumns); |
153 |
addColumn(++resultCount, rs, newColumns); |
158 |
break; |
154 |
break; |
159 |
case DatabaseMetaData.procedureColumnIn: |
155 |
case DatabaseMetaData.functionColumnIn: |
160 |
case DatabaseMetaData.procedureColumnInOut: |
156 |
case DatabaseMetaData.functionColumnInOut: |
161 |
case DatabaseMetaData.procedureColumnOut: |
157 |
case DatabaseMetaData.functionColumnOut: |
162 |
case DatabaseMetaData.procedureColumnUnknown: |
158 |
case DatabaseMetaData.functionColumnUnknown: |
163 |
addParameter(++paramCount, rs, newParams); |
159 |
addParameter(++paramCount, rs, newParams); |
164 |
break; |
160 |
break; |
165 |
case DatabaseMetaData.procedureColumnReturn: |
161 |
case DatabaseMetaData.functionReturn: |
166 |
setReturnValue(rs); |
162 |
setReturnValue(rs); |
167 |
break; |
163 |
break; |
168 |
default: |
164 |
default: |
Lines 181-194
Link Here
|
181 |
parameters = Collections.unmodifiableMap(newParams); |
177 |
parameters = Collections.unmodifiableMap(newParams); |
182 |
} |
178 |
} |
183 |
|
179 |
|
184 |
private void addColumn(int position, ResultSet rs, Map<String,Column> newColumns) throws SQLException { |
180 |
private void addColumn(int position, ResultSet rs, Map<String, Column> newColumns) throws SQLException { |
185 |
Column column = createJDBCColumn(position, rs).getColumn(); |
181 |
Column column = createJDBCColumn(position, rs).getColumn(); |
186 |
newColumns.put(column.getName(), column); |
182 |
newColumns.put(column.getName(), column); |
187 |
LOGGER.log(Level.FINE, "Created column {0}", column); |
183 |
LOGGER.log(Level.FINE, "Created column {0}", column); |
188 |
} |
184 |
} |
189 |
|
185 |
|
190 |
private void addParameter(int position, ResultSet rs, Map<String,Parameter> newParams) throws SQLException { |
186 |
private void addParameter(int position, ResultSet rs, Map<String, Parameter> newParams) throws SQLException { |
191 |
Parameter param = createJDBCParameter(position, rs).getParameter(); |
187 |
Parameter param = createJDBCParameter(position, rs).getParameter(); |
192 |
newParams.put(param.getName(), param); |
188 |
newParams.put(param.getName(), param); |
193 |
LOGGER.log(Level.FINE, "Created parameter {0}", param); |
189 |
LOGGER.log(Level.FINE, "Created parameter {0}", param); |
194 |
} |
190 |
} |