001    package com.mockrunner.mock.jdbc;
002    
003    import java.sql.SQLException;
004    import java.sql.Struct;
005    import java.util.ArrayList;
006    import java.util.List;
007    import java.util.Map;
008    
009    /**
010     * Mock implementation of <code>Struct</code>.
011     */
012    public class MockStruct implements Struct, Cloneable
013    {
014        private String sqlTypeName;
015        private List attributes;
016        
017        public MockStruct(String sqlTypeName)
018        {
019            this.sqlTypeName = sqlTypeName;
020            attributes = new ArrayList();
021        }
022        
023        public String getSQLTypeName() throws SQLException
024        {
025            return sqlTypeName;
026        }
027        
028        public Object[] getAttributes() throws SQLException
029        {
030            return attributes.toArray();
031        }
032    
033        public Object[] getAttributes(Map map) throws SQLException
034        {
035            return getAttributes();
036        }
037        
038        public void addAttribute(Object attribute)
039        {
040            attributes.add(attribute);
041        }
042        
043        public void addAttributes(Object[] attributes)
044        {
045            for(int ii = 0; ii < attributes.length; ii++)
046            {
047                addAttribute(attributes[ii]);
048            }
049        }
050        
051        public void addAttributes(List attributes)
052        {
053            addAttributes(attributes.toArray());
054        }
055        
056        public void clearAttributes()
057        {
058            attributes.clear();
059        }
060        
061        public String toString()
062        {
063            StringBuffer buffer = new StringBuffer("Struct data:\n");
064            buffer.append("SQLTypeName: " + sqlTypeName + "\n");
065            for(int ii = 0; ii < attributes.size(); ii++)
066            {
067                buffer.append("Attribute " + ii + ": " + attributes.get(ii)+ "\n");
068            }
069            buffer.append("\n");
070            return buffer.toString();
071        }
072        
073        public Object clone()
074        {
075            MockStruct struct = new MockStruct(sqlTypeName);
076            struct.addAttributes(attributes.toArray());
077            return struct;
078        }
079    }