001: package de.webman.form.db.queries;
002:
003: import java.sql.Connection;
004: import java.sql.SQLException;
005: import java.util.Vector;
006: import com.teamkonzept.db.TKPrepQuery;
007: import com.teamkonzept.lib.TKHashtable;
008: import de.webman.form.db.FieldConstants;
009: import de.webman.form.db.FormConstants;
010:
011: /**
012: * Selects all properties of the specified form definition.
013: * <TABLE>
014: * <TR>
015: * <TD><B>Order</B></TD>
016: * <TD><B>Name</B></TD>
017: * <TD><B>Type</B></TD>
018: * </TR>
019: * <TR>
020: * <TD COLSPAN="3"><I>Parameters</I></TD>
021: * </TR>
022: * <TR>
023: * <TD><TT>1</TT></TD>
024: * <TD><TT>de.webman.form.db.FormConstants.FORM_ID</TT></TD>
025: * <TD><TT>java.lang.Integer</TT></TD>
026: * </TR>
027: * <TR>
028: * <TD COLSPAN="3"><I>Results</I></TD>
029: * </TR>
030: * <TR>
031: * <TD><TT>1</TT></TD>
032: * <TD><TT>de.webman.form.db.FormConstants.FORM_ID</TT></TD>
033: * <TD><TT>java.lang.Integer</TT></TD>
034: * </TR>
035: * <TR>
036: * <TD><TT>2</TT></TD>
037: * <TD><TT>de.webman.form.db.FormConstants.FORM_TYPE</TT></TD>
038: * <TD><TT>java.lang.Integer</TT></TD>
039: * </TR>
040: * <TR>
041: * <TD><TT>3</TT></TD>
042: * <TD><TT>de.webman.form.db.FieldConstants.FIELD_NAME</TT></TD>
043: * <TD><TT>java.lang.String</TT></TD>
044: * </TR>
045: * <TR>
046: * <TD><TT>4</TT></TD>
047: * <TD><TT>de.webman.form.db.FieldConstants.FIELD_SHOW_NAME</TT></TD>
048: * <TD><TT>java.lang.String</TT></TD>
049: * </TR>
050: * </TABLE>
051: *
052: * @author $Author: uli $
053: * @version $Revision: 1.2 $
054: */
055: public class SelectFormProperties extends TKPrepQuery {
056:
057: // Constants.
058:
059: /**
060: * The preparation state.
061: */
062: private final static boolean IS_PREPARED = true;
063:
064: /**
065: * The relevance state.
066: */
067: private final static boolean[] SET_RELEVANTS = { true };
068:
069: // Attributes.
070:
071: /**
072: * The parameter order list.
073: */
074: private Vector list = null;
075:
076: // Implementation of 'com.teamkonzept.db.TKQuery'
077:
078: /**
079: * Initializes the query with the given connection.
080: *
081: * @param connection the connection.
082: */
083: public void initQuery(Connection connection) {
084: super .initQuery(connection, IS_PREPARED, null, null,
085: SET_RELEVANTS, null);
086: }
087:
088: /**
089: * Sets a query parameter.
090: *
091: * @param name the parameter name.
092: * @param value the parameter value.
093: */
094: public final void setQueryParams(String name, Object value) {
095: name = (new StringBuffer(name)).append("_").append(
096: super .queryParams.size()).toString();
097:
098: if (this .list == null) {
099: this .list = new Vector();
100: }
101:
102: list.addElement(name);
103:
104: super .setQueryParams(name, value);
105: }
106:
107: /**
108: * Executes the query.
109: *
110: * @return <CODE>true</CODE>, if the query has been executed
111: * successfully, otherwise <CODE>false</CODE>.
112: * @throws SQLException if any error occurred during query execution.
113: */
114: public final boolean execute() throws SQLException {
115: // Initialize parameter order array.
116: String[] order = new String[this .list.size()];
117:
118: // Initialize parameter types hash.
119: TKHashtable types = new TKHashtable();
120:
121: // Initialize SQL buffer.
122: StringBuffer sql = new StringBuffer(
123: "SELECT FO.FORM_ID, FO.FORM_TYPE, FI.FIELD_NAME, FI.FIELD_SHOW_NAME FROM FORM FO, FIELD FI WHERE FO.FORM_ID IN (");
124:
125: for (int index = 0; index < this .list.size(); index++) {
126: if (index > 0) {
127: sql.append(", ");
128: }
129:
130: // Build SQL.
131: sql.append("?");
132:
133: // Get parameter name.
134: String parameter = this .list.elementAt(index).toString();
135:
136: // Build parameter order.
137: order[index] = parameter;
138:
139: // Build parameter type.
140: types.put(parameter,
141: FormConstants.COLUMN_TYPES[FormConstants.FORM_ID]);
142:
143: }
144:
145: // Clear list.
146: this .list.clear();
147:
148: // Build SQL.
149: sql.append(") AND FO.FORM_ID = FI.FORM_ID AND FI.FIELD_ID = 0");
150:
151: // Set parameter order.
152: super .paramOrder = order;
153:
154: // Set parameter types.
155: super .paramTypes = types;
156:
157: // Set SQL string.
158: super .sqlString = sql.toString();
159:
160: // Set JDBC statement.
161: super.stmt = super.conn.prepareStatement(super.sqlString);
162:
163: return super.execute();
164: }
165:
166: }
|