summaryrefslogtreecommitdiff
path: root/orkbasej/java/net/sf/oreka/srvc/UserServiceHbn.java
diff options
context:
space:
mode:
authorHenri Herscher <henri@oreka.org>2006-01-03 21:21:24 +0000
committerHenri Herscher <henri@oreka.org>2006-01-03 21:21:24 +0000
commitf28ce4161078c289e5eb0fb769c18fa9dce06cbc (patch)
treee0f9beb96513a1d1cfa1de536bdca525c544b2fe /orkbasej/java/net/sf/oreka/srvc/UserServiceHbn.java
parenta794bcdd80379335848a546035f767bb7e924550 (diff)
Worked on LoginStrings
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@115 09dcff7a-b715-0410-9601-b79a96267cd0
Diffstat (limited to 'orkbasej/java/net/sf/oreka/srvc/UserServiceHbn.java')
-rw-r--r--orkbasej/java/net/sf/oreka/srvc/UserServiceHbn.java149
1 files changed, 148 insertions, 1 deletions
diff --git a/orkbasej/java/net/sf/oreka/srvc/UserServiceHbn.java b/orkbasej/java/net/sf/oreka/srvc/UserServiceHbn.java
index f33f243..069f1d3 100644
--- a/orkbasej/java/net/sf/oreka/srvc/UserServiceHbn.java
+++ b/orkbasej/java/net/sf/oreka/srvc/UserServiceHbn.java
@@ -1,16 +1,20 @@
package net.sf.oreka.srvc;
import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import net.sf.oreka.HibernateManager;
import net.sf.oreka.OrkBase;
+import net.sf.oreka.OrkException;
import net.sf.oreka.bo.UserBo;
+import net.sf.oreka.persistent.LoginString;
import net.sf.oreka.persistent.User;
+import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
-import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.ScrollableResults;
@@ -242,4 +246,147 @@ public class UserServiceHbn implements UserService {
if(hbnSession != null) {hbnSession.close();}
}
}
+
+ public void setUserLoginStrings(int userId, String loginStringsCsv) {
+
+ if(loginStringsCsv == null) {
+ loginStringsCsv = "";
+ }
+ logger.debug("Entering setUserLoginStrings; userId:" + userId + " loginStringsCsv:" + loginStringsCsv);
+
+ HashSet<String> oldLoginStrings = new HashSet<String>();
+ HashSet<String> newLoginStrings = new HashSet<String>();
+ HashMap<String, LoginString> loginStringMap = new HashMap<String, LoginString>();
+
+ Session hbnSession = null;
+ Transaction tx = null;
+
+ try
+ {
+ hbnSession = HibernateManager.instance().getSession();
+ tx = hbnSession.beginTransaction();
+
+ // 1. extract all new login strings from CSV
+ String[] loginStrings = StringUtils.split(loginStringsCsv, ", ");
+ for(int i=0; i<loginStrings.length; i++) {
+ newLoginStrings.add(loginStrings[i]);
+
+ // see if the login string exists for another user
+ String queryString = new String("from LoginString as ls where ls.loginString=:loginString");
+ Query query = hbnSession.createQuery(queryString);
+ query.setString("loginString", loginStrings[i]);
+ List list = query.list();
+ LoginString ls = null;
+
+ if(list.size() > 0) {
+ ls = (LoginString)list.get(0);
+ if(ls != null) {
+ if(ls.getUser() != null) {
+ if(ls.getUser().getId() != userId && !ls.getUser().isDeleted()) {
+ throw new OrkException("Login String:" + loginStrings[i] + " belongs to userid:" + ls.getUser().getId());
+ }
+ }
+ }
+
+ }
+ // Create a new login string if it does not exist yet in the DB
+ if(ls == null) {
+ ls = new LoginString();
+ ls.setLoginString(loginStrings[i]);
+ hbnSession.save(ls);
+ }
+ loginStringMap.put(loginStrings[i], ls);
+ }
+
+ // 2. get the user and extract all old login strings
+ User user = (User)hbnSession.get(User.class, userId);
+ if(user == null) {
+ throw new OrkException("UserId:" + userId + " does not exist");
+ }
+ String queryString = new String("from LoginString as ls where ls.user=:user");
+ Query query = hbnSession.createQuery(queryString);
+ query.setEntity("user", user);
+ List list = query.list();
+ Iterator it = list.iterator();
+ while(it.hasNext()) {
+ LoginString ls = (LoginString)it.next();
+ oldLoginStrings.add(ls.getLoginString());
+ loginStringMap.put(ls.getLoginString(), ls);
+ }
+
+ // Add all new login strings to the user
+ it = newLoginStrings.iterator();
+ while(it.hasNext()) {
+ String ls = (String)it.next();
+ if(oldLoginStrings.contains(ls) == false) {
+ LoginString lso = loginStringMap.get(ls);
+ lso.setUser(user);
+ logger.debug("Added loginstring:" + lso.getLoginString() + " to user:" + user.getFirstname());
+ }
+ }
+
+ // Remove all old login strings from the user
+ it = oldLoginStrings.iterator();
+ while(it.hasNext()) {
+ String ls = (String)it.next();
+ if(newLoginStrings.contains(ls) == false) {
+ LoginString lso = loginStringMap.get(ls);
+ lso.setUser(null);
+ logger.debug("Removed loginstring:" + lso.getLoginString() + " from user:" + user.getFirstname());
+ }
+ }
+
+ tx.commit();
+ }
+ catch ( HibernateException he ) {
+ logger.error("setUserLoginStrings: exception:" + he.getClass().getName());
+ }
+ catch ( OrkException oe ) {
+ logger.error("OrkException:" + oe.getMessage());
+ }
+ catch (Exception e)
+ {
+ logger.error("setUserLoginStrings: exception:", e);
+ }
+ finally {
+ if(hbnSession != null) {hbnSession.close();}
+ }
+ }
+
+
+ public String getUserLoginStrings(int userId) {
+
+ Session hbnSession = null;
+ User user = null;
+ String loginStringsCsv = "";
+
+ try
+ {
+ hbnSession = HibernateManager.instance().getSession();
+ user = (User)hbnSession.get(User.class, userId);
+ String queryString = new String("from LoginString as ls where ls.user=:user");
+ Query query = hbnSession.createQuery(queryString);
+ query.setEntity("user", user);
+ List list = query.list();
+
+ Iterator it = list.iterator();
+ if(it.hasNext()) {
+ loginStringsCsv = ((LoginString)it.next()).getLoginString();
+ }
+ while(it.hasNext()) {
+ loginStringsCsv += ", " + ((LoginString)it.next()).getLoginString();
+ }
+ }
+ catch ( HibernateException he ) {
+ logger.error("getUserLoginStrings: exception:" + he.getClass().getName());
+ }
+ catch (Exception e)
+ {
+ logger.error("getUserLoginStrings: exception:", e);
+ }
+ finally {
+ if(hbnSession != null) {hbnSession.close();}
+ }
+ return loginStringsCsv;
+ }
}