summaryrefslogtreecommitdiff
path: root/orkbasej
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
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')
-rw-r--r--orkbasej/.classpath1
-rw-r--r--orkbasej/java/net/sf/oreka/bo/UserBo.java25
-rw-r--r--orkbasej/java/net/sf/oreka/persistent/LoginString.java19
-rw-r--r--orkbasej/java/net/sf/oreka/persistent/User.java28
-rw-r--r--orkbasej/java/net/sf/oreka/srvc/ObjectService.java7
-rw-r--r--orkbasej/java/net/sf/oreka/srvc/ObjectServiceHbn.java67
-rw-r--r--orkbasej/java/net/sf/oreka/srvc/UserService.java3
-rw-r--r--orkbasej/java/net/sf/oreka/srvc/UserServiceHbn.java149
-rw-r--r--orkbasej/java/net/sf/oreka/test/FillDatabaseUser.java6
9 files changed, 273 insertions, 32 deletions
diff --git a/orkbasej/.classpath b/orkbasej/.classpath
index 2c1efe8..6245939 100644
--- a/orkbasej/.classpath
+++ b/orkbasej/.classpath
@@ -7,5 +7,6 @@
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/hibernate-3.1beta1"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/hsqldb1.8.0.2"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/servlet"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/apache-commons"/>
<classpathentry kind="output" path="bin"/>
</classpath>
diff --git a/orkbasej/java/net/sf/oreka/bo/UserBo.java b/orkbasej/java/net/sf/oreka/bo/UserBo.java
index 7824b00..f5ef2ea 100644
--- a/orkbasej/java/net/sf/oreka/bo/UserBo.java
+++ b/orkbasej/java/net/sf/oreka/bo/UserBo.java
@@ -44,17 +44,22 @@ public class UserBo implements Serializable {
this.user = user;
}
- public String getLoginStringsCsv() {
+// public String getLoginStringsCsv() {
+//
+// String loginStringsCsv = "";
+// Iterator it = user.getLoginStrings().iterator();
+// if(it.hasNext()) {
+// loginStringsCsv = ((LoginString)it.next()).getLoginString();
+// }
+// while(it.hasNext()) {
+// loginStringsCsv += ", " + ((LoginString)it.next()).getLoginString();
+// }
+// return loginStringsCsv;
+// }
- String loginStringsCsv = "";
- Iterator it = user.getLoginStrings().iterator();
- if(it.hasNext()) {
- loginStringsCsv = ((LoginString)it.next()).getLoginString();
- }
- while(it.hasNext()) {
- loginStringsCsv += ", " + ((LoginString)it.next()).getLoginString();
- }
- return loginStringsCsv;
+ public void setLoginStringsCsv() {
+
+
}
}
diff --git a/orkbasej/java/net/sf/oreka/persistent/LoginString.java b/orkbasej/java/net/sf/oreka/persistent/LoginString.java
index d3dc932..b8f092e 100644
--- a/orkbasej/java/net/sf/oreka/persistent/LoginString.java
+++ b/orkbasej/java/net/sf/oreka/persistent/LoginString.java
@@ -106,11 +106,20 @@ public class LoginString implements Serializable {
this.user = user;
}
- public void bidirSetUser(User user) {
- this.user = user;
- user.getLoginStrings().add(this);
- }
-
+// public void bidirSetUser(User user) {
+// this.user = user;
+// if(user != null) {
+// user.getLoginStrings().add(this);
+// }
+// }
+//
+// public void bidirRemoveUser(User user) {
+// this.user = null;
+// if(user != null) {
+// user.getLoginStrings().remove(this);
+// }
+// }
+
/**
*
*/
diff --git a/orkbasej/java/net/sf/oreka/persistent/User.java b/orkbasej/java/net/sf/oreka/persistent/User.java
index 04ffc42..26cf656 100644
--- a/orkbasej/java/net/sf/oreka/persistent/User.java
+++ b/orkbasej/java/net/sf/oreka/persistent/User.java
@@ -44,7 +44,7 @@ public class User implements Serializable {
private Date dateDisabled = new Date(0);
private Date dateDeleted = new Date(0);
- private Set<LoginString> loginStrings;
+ //private Set<LoginString> loginStrings;
/**
* @hibernate.property
@@ -142,19 +142,19 @@ public class User implements Serializable {
*
*/
public User() {
- loginStrings = new HashSet<LoginString>();
- }
-
- @OneToMany(fetch = FetchType.EAGER)
- public Set<LoginString> getLoginStrings() {
- return loginStrings;
- }
-
-
-
- public void setLoginStrings(Set<LoginString> loginStrings) {
- this.loginStrings = loginStrings;
- }
+ //loginStrings = new HashSet<LoginString>();
+ }
+
+// @OneToMany(fetch = FetchType.EAGER)
+// public Set<LoginString> getLoginStrings() {
+// return loginStrings;
+// }
+//
+//
+//
+// public void setLoginStrings(Set<LoginString> loginStrings) {
+// this.loginStrings = loginStrings;
+// }
public Date getDateCreated() {
diff --git a/orkbasej/java/net/sf/oreka/srvc/ObjectService.java b/orkbasej/java/net/sf/oreka/srvc/ObjectService.java
new file mode 100644
index 0000000..a15f323
--- /dev/null
+++ b/orkbasej/java/net/sf/oreka/srvc/ObjectService.java
@@ -0,0 +1,7 @@
+package net.sf.oreka.srvc;
+
+public interface ObjectService {
+
+ public void saveObject(Object obj);
+ public Object getObjectById(java.lang.Class cl, int id);
+}
diff --git a/orkbasej/java/net/sf/oreka/srvc/ObjectServiceHbn.java b/orkbasej/java/net/sf/oreka/srvc/ObjectServiceHbn.java
new file mode 100644
index 0000000..d23bc30
--- /dev/null
+++ b/orkbasej/java/net/sf/oreka/srvc/ObjectServiceHbn.java
@@ -0,0 +1,67 @@
+package net.sf.oreka.srvc;
+
+import net.sf.oreka.HibernateManager;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.hibernate.HibernateException;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+
+public class ObjectServiceHbn implements ObjectService {
+
+ static Logger logger = Logger.getLogger(ObjectServiceHbn.class);
+
+ public Object getObjectById(java.lang.Class cl, int id) {
+
+ Session hbnSession = null;
+ Object obj = null;
+
+ logger.debug("Retrieving " + cl.getName() + " object with id:" + id);
+
+ try
+ {
+ hbnSession = HibernateManager.instance().getSession();
+ obj = hbnSession.get(cl, id);
+ }
+ catch ( HibernateException he ) {
+ logger.error("getObjectById: exception:" + he.getClass().getName());
+ }
+ catch (Exception e)
+ {
+ logger.error("getObjectById: exception:", e);
+ }
+ finally {
+ if(hbnSession != null) {hbnSession.close();}
+ }
+ return obj;
+ }
+
+ public void saveObject(Object obj) {
+
+ Session hbnSession = null;
+ Transaction tx = null;
+
+ logger.debug("Saving " + obj.getClass().getName());
+
+ try
+ {
+ hbnSession = HibernateManager.instance().getSession();
+ tx = hbnSession.beginTransaction();
+ hbnSession.saveOrUpdate(obj); // was merge
+ tx.commit();
+ }
+ catch ( HibernateException he ) {
+ logger.log(Level.ERROR, he.toString());
+ he.printStackTrace();
+ }
+ catch (Exception e)
+ {
+ logger.error(e);
+ e.printStackTrace();
+ }
+ finally {
+ if(hbnSession != null) {hbnSession.close();}
+ }
+ }
+}
diff --git a/orkbasej/java/net/sf/oreka/srvc/UserService.java b/orkbasej/java/net/sf/oreka/srvc/UserService.java
index 95e6e37..39e71c7 100644
--- a/orkbasej/java/net/sf/oreka/srvc/UserService.java
+++ b/orkbasej/java/net/sf/oreka/srvc/UserService.java
@@ -14,4 +14,7 @@ public interface UserService {
public void deleteUser(int userId);
public void disableUser(int userId);
+
+ public String getUserLoginStrings(int userId);
+ public void setUserLoginStrings(int userId, String loginStringsCsv);
}
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;
+ }
}
diff --git a/orkbasej/java/net/sf/oreka/test/FillDatabaseUser.java b/orkbasej/java/net/sf/oreka/test/FillDatabaseUser.java
index b3cdbc5..6942312 100644
--- a/orkbasej/java/net/sf/oreka/test/FillDatabaseUser.java
+++ b/orkbasej/java/net/sf/oreka/test/FillDatabaseUser.java
@@ -36,12 +36,14 @@ public class FillDatabaseUser {
LoginString ls = new LoginString();
ls.setLoginString("ls" + i);
- ls.bidirSetUser(user);
+ //ls.bidirSetUser(user);
+ ls.setUser(user);
hbnSession.save(ls);
LoginString ls2 = new LoginString();
ls2.setLoginString("ls2" + i);
- ls2.bidirSetUser(user);
+ //ls2.bidirSetUser(user);
+ ls2.setUser(user);
hbnSession.save(ls2);
}