Coverage Report - com.buckosoft.PicMan.db.UsersDaoJdbc
 
Classes in this File Line Coverage Branch Coverage Complexity
UsersDaoJdbc
0%
0/64
0%
0/70
6.222
UsersDaoJdbc$KeyValue
0%
0/1
N/A
6.222
UsersDaoJdbc$UserInsert
0%
0/10
N/A
6.222
UsersDaoJdbc$UserQuery
0%
0/9
N/A
6.222
UsersDaoJdbc$UserUpdate
0%
0/82
0%
0/18
6.222
 
 1  
 /******************************************************************************
 2  
  * UsersDaoJdbc - This object implements the User table interface
 3  
  * 
 4  
  * PicMan - The BuckoSoft Picture Manager in Java
 5  
  * Copyright(c) 2007 - Dick Balaska
 6  
  * 
 7  
  */
 8  
 
 9  
 package com.buckosoft.PicMan.db;
 10  
 
 11  
 import java.sql.ResultSet;
 12  
 import java.sql.SQLException;
 13  
 import java.sql.Types;
 14  
 import java.util.Iterator;
 15  
 import java.util.List;
 16  
 
 17  
 import javax.sql.DataSource;
 18  
 
 19  
 import org.apache.commons.logging.Log;
 20  
 import org.apache.commons.logging.LogFactory;
 21  
 import org.springframework.dao.DataAccessException;
 22  
 import org.springframework.jdbc.core.SqlParameter;
 23  
 import org.springframework.jdbc.object.MappingSqlQuery;
 24  
 import org.springframework.jdbc.object.SqlUpdate;
 25  
 
 26  
 import com.buckosoft.PicMan.domain.User;
 27  
 
 28  
 
 29  
 /** Implement the Dao Interface for the {@link com.buckosoft.PicMan.domain.User}s. <br>
 30  
  * This table is key / value pairs so that {@link com.buckosoft.PicMan.domain.User} can be extended without
 31  
  * altering the table. 
 32  
  * @author Dick Balaska
 33  
  * @since 2007/12/01
 34  
  * @see <a href="http://cvs.buckosoft.com/Projects/java/PicMan/PicMan/src/com/buckosoft/PicMan/db/UsersDaoJdbc.java">UsersDaoJdbc.java</a>
 35  
  */
 36  0
 public class UsersDaoJdbc implements UsersDao {
 37  
         private static final boolean DEBUG = false;
 38  0
         protected final Log logger = LogFactory.getLog(getClass());
 39  
 
 40  
         private DataSource ds;
 41  
 
 42  
         /** Set the reference to the JDBC datasource.
 43  
          * @param ds The datasource as configured by Spring.
 44  
          * @see <a href="http://cvs.buckosoft.com/Projects/java/PicMan/PicMan/WebContent/WEB-INF/picManDatabase/picManDatabase.xml">picManDatabase.xml</a>
 45  
          */ 
 46  
         public void setDataSource(DataSource ds) {
 47  
                 if (DEBUG)
 48  
                         logger.info("Set Datasource.");
 49  0
                 this.ds = ds;
 50  0
         }
 51  
 
 52  
         /* (non-Javadoc)
 53  
          * @see com.buckosoft.PicMan.db.UsersDao#getUser(int)
 54  
          */
 55  
         @SuppressWarnings("unchecked")
 56  
         public User getUser(int userid) throws DataAccessException {
 57  0
                 if (sql_getUserQUERYint == null)
 58  0
                         sql_getUserQUERYint = new UserQuery(ds, userid);
 59  
                 if (DEBUG)
 60  
                         logger.info("Getting account by id '" + userid + "'");
 61  0
                 List<KeyValue> list = sql_getUserQUERYint.execute(userid);
 62  0
                 User user = new User(null);
 63  0
                 Iterator<KeyValue>        iter = list.iterator();
 64  0
                 while (iter.hasNext()) {
 65  0
                         KeyValue k = iter.next();
 66  0
                         if (k.key.equals("authLevel"))
 67  0
                                 user.setAuthLevel(Integer.parseInt(k.value));
 68  0
                         else if (k.key.equals("editorShowFileDates"))
 69  0
                                 user.setEditorShowFileDates(k.value.equals("1") ? true : false);
 70  0
                         else if (k.key.equals("editorShowChangedFilters"))
 71  0
                                 user.setEditorShowChangedFilters(k.value.equals("1") ? true : false);
 72  0
                         else if (k.key.equals("engineReportColumns"))
 73  0
                                 user.setEngineReportColumns(Integer.parseInt(k.value));
 74  0
                         else if (k.key.equals("engineReportRows"))
 75  0
                                 user.setEngineReportRows(Integer.parseInt(k.value));
 76  0
                         else if (k.key.equals("filterPagePicCount"))
 77  0
                                 user.setFilterPagePicCount(Integer.parseInt(k.value));
 78  0
                 else if (k.key.equals("homePageThumbWidth"))
 79  0
                         user.setHomePageThumbWidth(new Integer(k.value).intValue());
 80  0
                         else if (k.key.equals("homeThumbDelay"))
 81  0
                                 user.setHomeThumbDelay(Integer.parseInt(k.value));
 82  0
                         else if (k.key.equals("homeThumbSetName"))
 83  0
                                 user.setHomeThumbSetName(k.value);
 84  0
                         else if (k.key.equals("homeDebug"))
 85  0
                                 user.setHomeDebug(k.value.equals("1") ? true : false);
 86  0
                         else if (k.key.equals("mosaicOutputFile"))
 87  0
                                 user.setMosaicOutputFile(k.value);
 88  0
                         else if (k.key.equals("mosaicPreviewHeight"))
 89  0
                                 user.setMosaicPreviewHeight(Integer.parseInt(k.value));
 90  0
                         else if (k.key.equals("mosaicSetName"))
 91  0
                                 user.setMosaicSetName(k.value);
 92  0
                         else if (k.key.equals("mosaicTileHeight"))
 93  0
                                 user.setMosaicTileHeight(Integer.parseInt(k.value));
 94  0
                         else if (k.key.equals("mosaicTestPic"))
 95  0
                                 user.setMosaicTestPic(k.value);
 96  0
                         else if (k.key.equals("picBrowserPicsPerPage"))
 97  0
                                 user.setPicBrowserPicsPerPage(Integer.parseInt(k.value));
 98  0
                         else if (k.key.equals("picBrowserShowRatings"))
 99  0
                                 user.setPicBrowserShowRatings(k.value.equals("1") ? true : false);
 100  0
                         else if (k.key.equals("showInactiveSets"))
 101  0
                                 user.setSetManShowInactiveSets(k.value.equals("1") ? true : false);
 102  0
                         else if (k.key.equals("showRatings"))
 103  0
                                 user.setShowRatings(k.value.equals("1") ? true : false);
 104  0
                         else if (k.key.equals("slideShowDelay"))
 105  0
                                 user.setSlideShowDelay(Integer.parseInt(k.value));
 106  0
                         else if (k.key.equals("slideShowRandom"))
 107  0
                                 user.setSlideShowRandom(k.value.equals("1") ? true : false);
 108  0
                         else if (k.key.equals("slideShowSid"))
 109  0
                                 user.setSlideShowSid(Integer.parseInt(k.value));
 110  0
                         else if (k.key.equals("showInactiveChains"))
 111  0
                                 user.setShowInactiveChains(k.value.equals("1") ? true : false);
 112  0
                         else if (k.key.equals("showInactiveRoots"))
 113  0
                                 user.setShowInactiveRoots(k.value.equals("1") ? true : false);
 114  
 
 115  0
                 }
 116  0
                 return(user);
 117  
         }
 118  
         private        UserQuery        sql_getUserQUERYint;
 119  
 
 120  
         /* (non-Javadoc)
 121  
          * @see com.buckosoft.PicMan.db.UsersDao#storeUser(com.buckosoft.PicMan.domain.User)
 122  
          */
 123  
         public        void        storeUser(User user) {
 124  0
                 UserUpdate uu = new UserUpdate(ds);
 125  0
                 uu.update(user);
 126  0
         }
 127  
 
 128  0
         class KeyValue {
 129  
                 public int                userid;
 130  
                 public String        key;
 131  
                 public String        value;
 132  
         }
 133  
         
 134  
         class UserQuery extends MappingSqlQuery {
 135  
 
 136  0
                 UserQuery(DataSource ds, int userid) {
 137  0
                         super(ds,  "SELECT * from users where userid = ?");
 138  0
                         declareParameter(new SqlParameter(Types.INTEGER));
 139  0
                         compile();
 140  0
                 }
 141  
 
 142  
                 protected Object mapRow(ResultSet rs, int rowNum) throws SQLException {
 143  0
                         KeyValue k = new KeyValue();
 144  0
                         k.key = rs.getString("key");
 145  0
                         k.value = rs.getString("value");
 146  0
                         return(k);
 147  
                 }
 148  
         }
 149  
         /**
 150  
          * <code>User</code> Update Object.
 151  
          */
 152  
         private class UserUpdate extends SqlUpdate {
 153  
                 private        DataSource        ds;
 154  
                 
 155  
                 /**
 156  
                  * Create a new instance of UserUpdate.
 157  
                  * @param ds the DataSource to use for the update
 158  
                  */
 159  0
                 protected UserUpdate(DataSource ds) {
 160  0
                         this.ds = ds;
 161  0
                 }
 162  
 
 163  
                 /**
 164  
                  * Method to update the <code>Users</code>'s data.
 165  
                  * @param User
 166  
                  * @return 0
 167  
                  */
 168  
                 protected int update(User user) {
 169  
                         // Delete the user from the table
 170  0
                         SqlUpdate sf = new SqlUpdate(ds, "DELETE FROM users WHERE userid = " + user.getUserId());
 171  0
                         sf.compile();
 172  0
                         int ret = sf.update();
 173  
                         if (DEBUG)
 174  
                                 logger.info("user.delete() returned" + ret);
 175  
                         
 176  
                         // Save each of our attributes
 177  0
                         UserInsert si = new UserInsert(ds);
 178  0
                         KeyValue kv = new KeyValue();
 179  0
                         kv.userid = user.getUserId();
 180  
 
 181  0
                         kv.key = "authLevel";
 182  0
                         kv.value = String.valueOf(user.getAuthLevel());
 183  0
                         si.insert(kv);
 184  
 
 185  0
                         kv.key = "editorShowChangedFilters";
 186  0
                         kv.value = user.isEditorShowChangedFilters() ? "1" : "0";
 187  0
                         si.insert(kv);
 188  
 
 189  0
                         kv.key = "editorShowFileDates";
 190  0
                         kv.value = user.isEditorShowFileDates() ? "1" : "0";
 191  0
                         si.insert(kv);
 192  
 
 193  0
                         kv.key = "engineReportColumns";
 194  0
                         kv.value = String.valueOf(user.getEngineReportColumns());
 195  0
                         si.insert(kv);
 196  
 
 197  0
                         kv.key = "engineReportRows";
 198  0
                         kv.value = String.valueOf(user.getEngineReportRows());
 199  0
                         si.insert(kv);
 200  
 
 201  0
                         kv.key = "filterPagePicCount";
 202  0
                         kv.value = String.valueOf(user.getFilterPagePicCount());
 203  0
                         si.insert(kv);
 204  
 
 205  0
                         kv.key = "homePageThumbWidth";
 206  0
                         kv.value = String.valueOf(user.getHomePageThumbWidth());
 207  0
                         si.insert(kv);
 208  
 
 209  0
                         kv.key = "homeThumbDelay";
 210  0
                         kv.value = String.valueOf(user.getHomeThumbDelay());
 211  0
                         si.insert(kv);
 212  
 
 213  0
                         kv.key = "homeThumbSetName";
 214  0
                         kv.value = user.getHomeThumbSetName();
 215  0
                         si.insert(kv);
 216  
 
 217  0
                         kv.key = "homeDebug";
 218  0
                         kv.value = user.isHomeDebug() ? "1" : "0";
 219  0
                         si.insert(kv);
 220  
 
 221  0
                         kv.key = "mosaicTestPic";
 222  0
                         kv.value = user.getMosaicTestPic();
 223  0
                         si.insert(kv);
 224  
 
 225  0
                         kv.key = "mosaicSetName";
 226  0
                         kv.value = user.getMosaicSetName();
 227  0
                         si.insert(kv);
 228  
 
 229  0
                         kv.key = "mosaicTileHeight";
 230  0
                         kv.value = String.valueOf(user.getMosaicTileHeight());
 231  0
                         si.insert(kv);
 232  
 
 233  0
                         kv.key = "mosaicPreviewHeight";
 234  0
                         kv.value = String.valueOf(user.getMosaicPreviewHeight());
 235  0
                         si.insert(kv);
 236  
 
 237  0
                         kv.key = "mosaicOutputFile";
 238  0
                         kv.value = user.getMosaicOutputFile();
 239  0
                         si.insert(kv);
 240  
 
 241  0
                         kv.key = "picBrowserPicsPerPage";
 242  0
                         kv.value = String.valueOf(user.getPicBrowserPicsPerPage());
 243  0
                         si.insert(kv);
 244  
 
 245  0
                         kv.key = "picBrowserShowRatings";
 246  0
                         kv.value = user.isPicBrowserShowRatings() ? "1" : "0";
 247  0
                         si.insert(kv);
 248  
 
 249  0
                         kv.key = "showInactiveSets";
 250  0
                         kv.value = user.isSetManShowInactiveSets() ? "1" : "0";
 251  0
                         si.insert(kv);
 252  
 
 253  0
                         kv.key = "showRatings";
 254  0
                         kv.value = user.isShowRatings() ? "1" : "0";
 255  0
                         si.insert(kv);
 256  
 
 257  0
                         kv.key = "slideShowDelay";
 258  0
                         kv.value = String.valueOf(user.getSlideShowDelay());
 259  0
                         si.insert(kv);
 260  
 
 261  0
                         kv.key = "slideShowRandom";
 262  0
                         kv.value = user.isSlideShowRandom() ? "1" : "0";
 263  0
                         si.insert(kv);
 264  
 
 265  0
                         kv.key = "slideShowSid";
 266  0
                         kv.value = String.valueOf(user.getSlideShowSid());
 267  0
                         si.insert(kv);
 268  
 
 269  0
                         kv.key = "showInactiveChains";
 270  0
                         kv.value = user.isShowInactiveChains() ? "1" : "0";
 271  0
                         si.insert(kv);
 272  
 
 273  0
                         kv.key = "showInactiveRoots";
 274  0
                         kv.value = user.isShowInactiveRoots() ? "1" : "0";
 275  0
                         si.insert(kv);
 276  
 
 277  
                         
 278  0
                         return(0);
 279  
                 }
 280  
         }
 281  
 
 282  
 
 283  
         /**
 284  
          * <code>User</code> Insert Object.
 285  
          */
 286  
         private class UserInsert extends SqlUpdate {
 287  
 
 288  
                 /**
 289  
                  * Create a new instance of SystemInsert.
 290  
                  * @param ds the DataSource to use for the insert
 291  
                  */
 292  0
                 protected UserInsert(DataSource ds) {
 293  0
                         super(ds, "INSERT INTO users VALUES(?,?,?)");
 294  0
                         declareParameter(new SqlParameter(Types.INTEGER));
 295  0
                         declareParameter(new SqlParameter(Types.VARCHAR));
 296  0
                         declareParameter(new SqlParameter(Types.VARCHAR));
 297  0
                         compile();
 298  0
                 }
 299  
 
 300  
                 protected void insert(KeyValue kv) {
 301  0
                         Object[] objs = new Object[] {
 302  
                                 new Integer(kv.userid), kv.key, kv.value 
 303  
                                 };
 304  
                         
 305  0
                         super.update(objs);
 306  0
                 }
 307  
         }
 308  
 }