1 package com.mvnforum.db.ldap; 2 3 import java.sql.Connection ; 4 import java.sql.Date ; 5 import java.sql.PreparedStatement ; 6 import java.sql.ResultSet ; 7 import java.sql.SQLException ; 8 import java.sql.Timestamp ; 9 import java.util.Collection ; 10 import java.util.Hashtable ; 11 12 import javax.naming.Context ; 13 import javax.naming.NamingException ; 14 import javax.naming.directory.Attributes ; 15 import javax.naming.directory.DirContext ; 16 import javax.naming.directory.InitialDirContext ; 17 18 import net.myvietnam.mvncore.db.DBUtils; 19 import net.myvietnam.mvncore.exception.AssertionException; 20 import net.myvietnam.mvncore.exception.CreateException; 21 import net.myvietnam.mvncore.exception.DatabaseException; 22 import net.myvietnam.mvncore.exception.DuplicateKeyException; 23 import net.myvietnam.mvncore.exception.ObjectNotFoundException; 24 25 import org.apache.commons.logging.Log; 26 import org.apache.commons.logging.LogFactory; 27 28 import com.mvnforum.db.MemberBean; 29 import com.mvnforum.db.MemberDAO; 30 import com.mvnforum.db.jdbc.MemberDAOImplJDBC; 31 32 public class MemberDAOImplLDAP implements MemberDAO { 33 34 private static Log log = LogFactory.getLog(MemberDAOImplLDAP.class); 35 36 private MemberDAO memberDAO = new MemberDAOImplJDBC(); 37 38 private DirContext connectLDAP() 39 throws NamingException { 40 String url = LDAPConfig.PROVIDER_URL; 41 Hashtable env = new Hashtable (); 42 env.put(Context.INITIAL_CONTEXT_FACTORY, LDAPConfig.INITIAL_CONTEXT_FACTORY); 43 env.put(Context.PROVIDER_URL, url); 44 env.put(Context.SECURITY_AUTHENTICATION, LDAPConfig.SECURITY_AUTHENTICATION); 45 env.put(Context.SECURITY_PRINCIPAL, LDAPConfig.SECURITY_PRINCIPAL); 46 env.put(Context.SECURITY_CREDENTIALS, LDAPConfig.SECURITY_CREDENTIALS); 47 DirContext ctx = new InitialDirContext (env); 48 return ctx; 49 } 50 51 public final String getNameFromID(int memberID) 52 throws ObjectNotFoundException, DatabaseException { 53 54 Connection connection = null; 55 PreparedStatement statement = null; 56 ResultSet resultSet = null; 57 String sql = "SELECT MemberName FROM " + TABLE_NAME + " WHERE MemberID = ?"; 58 try { 59 connection = DBUtils.getConnection(); 60 statement = connection.prepareStatement(sql); 61 statement.setInt(1, memberID); 62 resultSet = statement.executeQuery(); 63 if (!resultSet.next()) { 64 throw new ObjectNotFoundException("Cannot find the row in table Member where MemberName = " + memberID); 65 } 66 return resultSet.getString(1); 67 } catch (SQLException sqle) { 68 log.error("Sql Execution Error!", sqle); 69 throw new DatabaseException("Error executing SQL in MemberDAOImplJDBC.getMemberIDFromMemberName."); 70 } finally { 71 DBUtils.closeResultSet(resultSet); 72 DBUtils.closeStatement(statement); 73 DBUtils.closeConnection(connection); 74 } 75 } 76 public MemberBean getMember_forPublic(int memberID) 77 throws ObjectNotFoundException, DatabaseException { 78 String memberName = getNameFromID (memberID); 79 MemberBean bean = new MemberBean(); 80 try { 82 DirContext context = connectLDAP(); 83 String [] attrIDs = {"cn", "memberEmail", "memberFirstEmail", "memberEmailVisible", "memberNameVisible", 86 "memberFirstIP", "memberLastIP", "memberViewCount", "memberPostCount", "memberCreationDate", 87 "memberModifiedDate", "memberExpireDate", "memberLastLogon", "memberOption", "memberStatus", 88 "memberActivateCode", "memberTempPassword", "memberMessageCount", "memberMessageOption", 89 "memberPostsPerPage", "memberWarnCount", "memberVoteCount", "memberVoteTotalStars", 90 "memberRewardPoints", "memberTimeZone", "memberSignature", "memberAvatar", "memberSkin", 91 "memberLanguage", "memberFirstname", "memberLastname", "memberGender", "memberBirthday", 92 "memberAddress", "memberCity", "memberState", "memberCountry", "memberPhone", "memberMobile", 93 "memberFax", "memberCareer", "memberHomepage", "memberYahoo", "memberAol", "memberIcq", 94 "memberMsn", "memberCoolLink1", "memberCoolLink2"}; 95 Attributes answer = context.getAttributes("CN=" + memberName + ",ou=users", attrIDs); 96 97 bean.setMemberID(memberID); 98 bean.setMemberName(AttributeUtil.attributeToString(answer, "cn")); 99 bean.setMemberFirstEmail(AttributeUtil.attributeToString(answer, "memberFirstEmail")); 100 bean.setMemberEmail(AttributeUtil.attributeToString(answer, "memberEmail")); 101 bean.setMemberEmailVisible(AttributeUtil.attributeToInt(answer, "memberEmailVisible")); 102 bean.setMemberNameVisible(AttributeUtil.attributeToInt(answer, "memberNameVisible")); 103 bean.setMemberViewCount(AttributeUtil.attributeToInt(answer, "memberViewCount")); 104 bean.setMemberPostCount(AttributeUtil.attributeToInt(answer, "memberPostCount")); 105 bean.setMemberCreationDate(AttributeUtil.attributeToTimeStamp(answer, "memberCreationDate")); 106 bean.setMemberModifiedDate(AttributeUtil.attributeToTimeStamp(answer, "memberModifiedDate")); 107 bean.setMemberExpireDate(AttributeUtil.attributeToTimeStamp(answer, "memberExpireDate")); 108 bean.setMemberLastLogon(AttributeUtil.attributeToTimeStamp(answer, "memberLastLogon")); 109 bean.setMemberOption(AttributeUtil.attributeToInt(answer, "memberOption")); 110 bean.setMemberStatus(AttributeUtil.attributeToInt(answer, "memberStatus")); 111 bean.setMemberWarnCount(AttributeUtil.attributeToInt(answer, "memberWarnCount")); 112 bean.setMemberVoteCount(AttributeUtil.attributeToInt(answer, "memberVoteCount")); 113 bean.setMemberVoteTotalStars(AttributeUtil.attributeToInt(answer, "memberVoteTotalStars")); 114 bean.setMemberRewardPoints(AttributeUtil.attributeToInt(answer, "memberRewardPoints")); 115 bean.setMemberTitle(AttributeUtil.attributeToString(answer, "memberTitle")); 116 bean.setMemberSignature(AttributeUtil.attributeToString(answer, "memberSignature")); 117 bean.setMemberAvatar(AttributeUtil.attributeToString(answer, "memberAvatar")); 118 bean.setMemberFirstname(AttributeUtil.attributeToString(answer, "memberFirstname")); 119 bean.setMemberLastname(AttributeUtil.attributeToString(answer, "memberLastname")); 120 bean.setMemberGender(AttributeUtil.attributeToInt(answer, "memberGender")); 121 bean.setMemberBirthday(AttributeUtil.attributeToDate(answer, "memberBirthday")); 122 bean.setMemberLanguage(AttributeUtil.attributeToString(answer, "memberLanguage")); 123 bean.setMemberAddress(AttributeUtil.attributeToString(answer, "memberAddress")); 124 bean.setMemberCity(AttributeUtil.attributeToString(answer, "memberCity")); 125 bean.setMemberState(AttributeUtil.attributeToString(answer, "memberState")); 126 bean.setMemberCountry(AttributeUtil.attributeToString(answer, "memberCountry")); 127 bean.setMemberPhone(AttributeUtil.attributeToString(answer, "memberPhone")); 128 bean.setMemberMobile(AttributeUtil.attributeToString(answer, "memberMobile")); 129 bean.setMemberFax(AttributeUtil.attributeToString(answer, "memberFax")); 130 bean.setMemberCareer(AttributeUtil.attributeToString(answer, "memberCareer")); 131 bean.setMemberHomepage(AttributeUtil.attributeToString(answer, "memberHomepage")); 132 bean.setMemberYahoo(AttributeUtil.attributeToString(answer, "memberYahoo")); 133 bean.setMemberAol(AttributeUtil.attributeToString(answer, "memberAol")); 134 bean.setMemberIcq(AttributeUtil.attributeToString(answer, "memberIcq")); 135 bean.setMemberMsn(AttributeUtil.attributeToString(answer, "memberMsn")); 136 bean.setMemberCoolLink1(AttributeUtil.attributeToString(answer, "memberCoolLink1")); 137 bean.setMemberCoolLink2(AttributeUtil.attributeToString(answer, "memberCoolLink2")); 138 bean.setMemberActivateCode(AttributeUtil.attributeToString(answer, "memberActivateCode")); 139 bean.setMemberFirstIP(AttributeUtil.attributeToString(answer, "memberFirstIP")); 140 bean.setMemberLastIP(AttributeUtil.attributeToString(answer, "memberLastIP")); 141 } catch (NamingException e) { 142 e.printStackTrace(); 143 throw new DatabaseException("Error connecting to LDAP."); 144 } 145 146 return bean; 147 } 148 149 public void create(String memberName, String memberPassword, String memberFirstEmail, String memberEmail, int memberEmailVisible, int memberNameVisible, String memberFirstIP, String memberLastIP, int memberViewCount, int memberPostCount, Timestamp memberCreationDate, Timestamp memberModifiedDate, Timestamp memberExpireDate, Timestamp memberLastLogon, int memberOption, int memberStatus, String memberActivateCode, String memberTempPassword, int memberMessageCount, int memberMessageOption, int memberPostsPerPage, int memberWarnCount, int memberVoteCount, int memberVoteTotalStars, int memberRewardPoints, String memberTitle, double memberTimeZone, String memberSignature, String memberAvatar, String memberSkin, String memberLanguage, String memberFirstname, String memberLastname, int memberGender, Date memberBirthday, String memberAddress, String memberCity, String memberState, String memberCountry, String memberPhone, String memberMobile, String memberFax, String memberCareer, String memberHomepage, String memberYahoo, String memberAol, String memberIcq, String memberMsn, String memberCoolLink1, String memberCoolLink2) 150 throws CreateException, DatabaseException, DuplicateKeyException { 151 memberDAO.create(memberName, memberPassword, memberFirstEmail, memberEmail, memberEmailVisible, memberNameVisible, memberFirstIP, memberLastIP, memberViewCount, memberPostCount, memberCreationDate, memberModifiedDate, memberExpireDate, memberLastLogon, memberOption, memberStatus, memberActivateCode, memberTempPassword, memberMessageCount, memberMessageOption, memberPostsPerPage, memberWarnCount, memberVoteCount, memberVoteTotalStars, memberRewardPoints, memberTitle, memberTimeZone, memberSignature, memberAvatar, memberSkin, memberLanguage, memberFirstname, memberLastname, memberGender, memberBirthday, memberAddress, memberCity, memberState, memberCountry, memberPhone, memberMobile, memberFax, memberCareer, memberHomepage, memberYahoo, memberAol, memberIcq, memberMsn, memberCoolLink1, memberCoolLink2); 152 } 153 154 public void deleteByPrimaryKey(int memberID) 155 throws DatabaseException { 156 memberDAO.deleteByPrimaryKey(memberID); 157 } 158 159 public void findByAlternateKey_MemberEmail(String memberEmail) 160 throws ObjectNotFoundException, DatabaseException { 161 memberDAO.findByAlternateKey_MemberEmail(memberEmail); 162 } 163 164 public void findByAlternateKey_MemberName(String memberName) 165 throws ObjectNotFoundException, DatabaseException { 166 memberDAO.findByAlternateKey_MemberName(memberName); 167 } 168 169 public void findByPrimaryKey(int memberID) 170 throws ObjectNotFoundException, DatabaseException { 171 memberDAO.findByPrimaryKey(memberID); 172 } 173 174 public void findByPrimaryKey2(int memberID, String memberName) 175 throws ObjectNotFoundException, DatabaseException { 176 memberDAO.findByPrimaryKey2(memberID, memberName); 177 } 178 179 public String getActivateCode(int memberID) 180 throws ObjectNotFoundException, DatabaseException { 181 return memberDAO.getActivateCode(memberID); 182 } 183 184 public Collection getAuthorizedMembers() 185 throws DatabaseException { 186 return memberDAO.getAuthorizedMembers(); 187 } 188 189 public Collection getEnableMembers_inActivationStatus(String kind) 190 throws DatabaseException { 191 return memberDAO.getEnableMembers_inActivationStatus(kind); 192 } 193 194 public Collection getEnableMembers_inGroup(int groupID) 195 throws DatabaseException { 196 return memberDAO.getEnableMembers_inGroup(groupID); 197 } 198 199 public Collection getForumsAuthorizedMembers() 200 throws DatabaseException { 201 return memberDAO.getForumsAuthorizedMembers(); 202 } 203 204 public MemberBean getMember_forEditCurrentMember(int memberID) 205 throws ObjectNotFoundException, DatabaseException { 206 return memberDAO.getMember_forEditCurrentMember(memberID); 207 } 208 209 public MemberBean getMember_forViewCurrentMember(int memberID) 210 throws ObjectNotFoundException, DatabaseException { 211 return memberDAO.getMember_forViewCurrentMember(memberID); 212 } 213 214 public int getMemberIDFromMemberEmail(String memberEmail) 215 throws ObjectNotFoundException, DatabaseException { 216 return memberDAO.getMemberIDFromMemberEmail(memberEmail); 217 } 218 219 public int getMemberIDFromMemberName(String memberName) 220 throws ObjectNotFoundException, DatabaseException { 221 return memberDAO.getMemberIDFromMemberName(memberName); 222 } 223 224 public Collection getMembers_inExpire_limit(Timestamp expireDate, int offset, int rowsToReturn, String sort, String order) 225 throws IllegalArgumentException , DatabaseException { 226 return memberDAO.getMembers_inExpire_limit(expireDate, offset, rowsToReturn, sort, order); 227 } 228 229 public Collection getMembers_withSortSupport_limit(int offset, int rowsToReturn, String sort, String order) 230 throws IllegalArgumentException , DatabaseException { 231 return memberDAO.getMembers_withSortSupport_limit(offset, rowsToReturn, sort, order); 232 } 233 234 public Collection getMembers() 235 throws DatabaseException { 236 return memberDAO.getMembers(); 237 } 238 239 public Collection getNonActivatedNoPostMembers(Timestamp before) 240 throws DatabaseException { 241 return memberDAO.getNonActivatedNoPostMembers(before); 242 } 243 244 public int getNumberOfMembers_inActivationStatus(boolean activationStatus) 245 throws AssertionException, DatabaseException { 246 return memberDAO.getNumberOfMembers_inActivationStatus(activationStatus); 247 } 248 249 public int getNumberOfMembers_inExpire(Timestamp expireDate) 250 throws AssertionException, DatabaseException { 251 return memberDAO.getNumberOfMembers_inExpire(expireDate); 252 } 253 254 public int getNumberOfMembers_inMemberStatus(int memberStatus) 255 throws AssertionException, DatabaseException { 256 return memberDAO.getNumberOfMembers_inMemberStatus(memberStatus); 257 } 258 259 public int getNumberOfMembers() 260 throws AssertionException, DatabaseException { 261 return memberDAO.getNumberOfMembers(); 262 } 263 264 public String getPassword(int memberID) 265 throws ObjectNotFoundException, DatabaseException { 266 return memberDAO.getPassword(memberID); 267 } 268 269 public String getTempPassword(int memberID) 270 throws ObjectNotFoundException, DatabaseException { 271 return memberDAO.getTempPassword(memberID); 272 } 273 274 public void increasePostCount(int memberID) 275 throws DatabaseException, ObjectNotFoundException { 276 memberDAO.increasePostCount(memberID); 277 } 278 279 public void increaseViewCount(int memberID) 280 throws DatabaseException, ObjectNotFoundException { 281 memberDAO.increaseViewCount(memberID); 282 } 283 284 public void update(int memberID, int memberEmailVisible, int memberNameVisible, Timestamp memberModifiedDate, int memberOption, int memberStatus, int memberMessageOption, int memberPostsPerPage, double memberTimeZone, String memberSkin, String memberLanguage, String memberFirstname, String memberLastname, int memberGender, Date memberBirthday, String memberAddress, String memberCity, String memberState, String memberCountry, String memberPhone, String memberMobile, String memberFax, String memberCareer, String memberHomepage, String memberYahoo, String memberAol, String memberIcq, String memberMsn, String memberCoolLink1, String memberCoolLink2) 285 throws ObjectNotFoundException, DatabaseException { 286 memberDAO.update(memberID, memberEmailVisible, memberNameVisible, memberModifiedDate, memberOption, memberStatus, memberMessageOption, memberPostsPerPage, memberTimeZone, memberSkin, memberLanguage, memberFirstname, memberLastname, memberGender, memberBirthday, memberAddress, memberCity, memberState, memberCountry, memberPhone, memberMobile, memberFax, memberCareer, memberHomepage, memberYahoo, memberAol, memberIcq, memberMsn, memberCoolLink1, memberCoolLink2); 287 } 288 289 public void updateActivateCode(int memberID, String memberActivateCode) 290 throws ObjectNotFoundException, DatabaseException { 291 memberDAO.updateActivateCode(memberID, memberActivateCode); 292 } 293 294 public void updateAvatar(int memberID, String memberAvatar) 295 throws ObjectNotFoundException, DatabaseException { 296 memberDAO.updateAvatar(memberID, memberAvatar); 297 } 298 299 public void updateEmail(int memberID, String memberEmail) 300 throws ObjectNotFoundException, DatabaseException, DuplicateKeyException { 301 memberDAO.updateEmail(memberID, memberEmail); 302 } 303 304 public void updateLastLogon(int memberID, Timestamp memberLastLogon, String lastIP) 305 throws ObjectNotFoundException, DatabaseException { 306 memberDAO.updateLastLogon(memberID, memberLastLogon, lastIP); 307 } 308 309 public void updateMember_expireDate(int memberID, Timestamp expireDate) 310 throws ObjectNotFoundException, DatabaseException { 311 memberDAO.updateMember_expireDate(memberID, expireDate); 312 } 313 314 public void updatePassword(int memberID, String memberPassword) 315 throws ObjectNotFoundException, DatabaseException { 316 memberDAO.updatePassword(memberID, memberPassword); 317 } 318 319 public void updatePostCount(int memberID, int memberPostCount) 320 throws ObjectNotFoundException, DatabaseException { 321 memberDAO.updatePostCount(memberID, memberPostCount); 322 } 323 324 public void updateSignature(int memberID, String memberSignature) 325 throws ObjectNotFoundException, DatabaseException { 326 memberDAO.updateSignature(memberID, memberSignature); 327 } 328 329 public void updateStatus(int memberID, int memberStatus) 330 throws ObjectNotFoundException, DatabaseException { 331 memberDAO.updateStatus(memberID, memberStatus); 332 } 333 334 public void updateTempPassword(int memberID, String memberTempPassword) 335 throws ObjectNotFoundException, DatabaseException { 336 memberDAO.updateTempPassword(memberID, memberTempPassword); 337 } 338 339 public void updateTitle(int memberID, String memberTitle) 340 throws ObjectNotFoundException, DatabaseException { 341 memberDAO.updateTitle(memberID, memberTitle); 342 } 343 344 } 345 | Popular Tags |