001 package com.mockrunner.jdbc;
002
003 import java.util.ArrayList;
004 import java.util.Collections;
005 import java.util.List;
006 import java.util.Map;
007 import java.util.TreeMap;
008
009 import com.mockrunner.mock.jdbc.MockPreparedStatement;
010
011 /**
012 * Concrete handler for {@link MockPreparedStatement}.
013 */
014 public class PreparedStatementResultSetHandler extends AbstractParameterResultSetHandler
015 {
016 private List preparedStatements;
017 private Map preparedStatementMap;
018
019 public PreparedStatementResultSetHandler()
020 {
021 preparedStatements = new ArrayList();
022 preparedStatementMap = new TreeMap();
023 }
024
025 /**
026 * The <code>Connection</code> adds new statements with
027 * this method.
028 * @param statement the {@link MockPreparedStatement}
029 */
030 public void addPreparedStatement(MockPreparedStatement statement)
031 {
032 statement.setPreparedStatementResultSetHandler(this);
033 List list = (List)preparedStatementMap.get(statement.getSQL());
034 if(null == list)
035 {
036 list = new ArrayList();
037 preparedStatementMap.put(statement.getSQL(), list);
038 }
039 list.add(statement);
040 preparedStatements.add(statement);
041 }
042
043 /**
044 * Returns a <code>List</code> of all prepared statements.
045 * @return the <code>List</code> of {@link MockPreparedStatement} objects
046 */
047 public List getPreparedStatements()
048 {
049 return Collections.unmodifiableList(preparedStatements);
050 }
051
052 /**
053 * Returns a <code>Map</code> of all prepared statements.
054 * The SQL strings map to the corresponding {@link MockPreparedStatement}
055 * object.
056 * @return the <code>Map</code> of {@link MockPreparedStatement} objects
057 */
058 public Map getPreparedStatementMap()
059 {
060 return Collections.unmodifiableMap(preparedStatementMap);
061 }
062
063 /**
064 * Clears all prepared statements
065 */
066 public void clearPreparedStatements()
067 {
068 preparedStatements.clear();
069 preparedStatementMap.clear();
070 }
071 }