summaryrefslogtreecommitdiff
path: root/orkbasej
diff options
context:
space:
mode:
authorHenri Herscher <henri@oreka.org>2005-12-30 22:58:32 +0000
committerHenri Herscher <henri@oreka.org>2005-12-30 22:58:32 +0000
commita794bcdd80379335848a546035f767bb7e924550 (patch)
tree1700b94b0140d1c51b2bf6b85a1964c268a24763 /orkbasej
parent5a06af8527d6d9a0d12652529e16b02861b43888 (diff)
Made all persistent objects serializable - added user management stuff
git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@114 09dcff7a-b715-0410-9601-b79a96267cd0
Diffstat (limited to 'orkbasej')
-rw-r--r--orkbasej/java/net/sf/oreka/HibernateManager.java2
-rw-r--r--orkbasej/java/net/sf/oreka/bo/UserBo.java34
-rw-r--r--orkbasej/java/net/sf/oreka/persistent/Domain.java4
-rw-r--r--orkbasej/java/net/sf/oreka/persistent/LoginString.java8
-rw-r--r--orkbasej/java/net/sf/oreka/persistent/RecPort.java4
-rw-r--r--orkbasej/java/net/sf/oreka/persistent/RecPortFace.java4
-rw-r--r--orkbasej/java/net/sf/oreka/persistent/RecProgram.java3
-rw-r--r--orkbasej/java/net/sf/oreka/persistent/RecSegment.java3
-rw-r--r--orkbasej/java/net/sf/oreka/persistent/RecSession.java3
-rw-r--r--orkbasej/java/net/sf/oreka/persistent/RecTape.java3
-rw-r--r--orkbasej/java/net/sf/oreka/persistent/Service.java4
-rw-r--r--orkbasej/java/net/sf/oreka/persistent/User.java89
-rw-r--r--orkbasej/java/net/sf/oreka/srvc/UserFilter.java5
-rw-r--r--orkbasej/java/net/sf/oreka/srvc/UserService.java7
-rw-r--r--orkbasej/java/net/sf/oreka/srvc/UserServiceHbn.java145
-rw-r--r--orkbasej/java/net/sf/oreka/test/FillDatabase.java1
-rw-r--r--orkbasej/java/net/sf/oreka/test/FillDatabaseUser.java70
17 files changed, 375 insertions, 14 deletions
diff --git a/orkbasej/java/net/sf/oreka/HibernateManager.java b/orkbasej/java/net/sf/oreka/HibernateManager.java
index f154db6..a22c44c 100644
--- a/orkbasej/java/net/sf/oreka/HibernateManager.java
+++ b/orkbasej/java/net/sf/oreka/HibernateManager.java
@@ -107,6 +107,8 @@ public class HibernateManager {
if(admin == null) {
admin = new User();
admin.setPassword("admin");
+ admin.setFirstname("adminfn");
+ admin.setLastname("adminln");
LoginString ls = new LoginString();
ls.setUser(admin);
ls.setLoginString("admin");
diff --git a/orkbasej/java/net/sf/oreka/bo/UserBo.java b/orkbasej/java/net/sf/oreka/bo/UserBo.java
index 2751d2f..7824b00 100644
--- a/orkbasej/java/net/sf/oreka/bo/UserBo.java
+++ b/orkbasej/java/net/sf/oreka/bo/UserBo.java
@@ -1,14 +1,29 @@
package net.sf.oreka.bo;
-import org.apache.log4j.Logger;
+import java.io.Serializable;
+import java.util.Iterator;
+import net.sf.oreka.persistent.LoginString;
import net.sf.oreka.persistent.User;
-import net.sf.oreka.srvc.UserServiceHbn;
-public class UserBo {
+import org.apache.log4j.Logger;
+
+public class UserBo implements Serializable {
static Logger logger = Logger.getLogger(UserBo.class);
private User user = new User();
+
+ private boolean selected = false;
+
+ public boolean isSelected() {
+ return selected;
+ }
+
+
+ public void setSelected(boolean selected) {
+ this.selected = selected;
+ }
+
public boolean isAdmin() {
@@ -29,4 +44,17 @@ public class UserBo {
this.user = user;
}
+ 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;
+ }
+
}
diff --git a/orkbasej/java/net/sf/oreka/persistent/Domain.java b/orkbasej/java/net/sf/oreka/persistent/Domain.java
index edb463d..27e3716 100644
--- a/orkbasej/java/net/sf/oreka/persistent/Domain.java
+++ b/orkbasej/java/net/sf/oreka/persistent/Domain.java
@@ -15,6 +15,8 @@
*
*/
package net.sf.oreka.persistent;
+import java.io.Serializable;
+
import javax.persistence.Entity;
import javax.persistence.GeneratorType;
import javax.persistence.Id;
@@ -23,7 +25,7 @@ import javax.persistence.Id;
* @hibernate.class
*/
@Entity
-public class Domain {
+public class Domain implements Serializable {
private int id;
private String name = "";
diff --git a/orkbasej/java/net/sf/oreka/persistent/LoginString.java b/orkbasej/java/net/sf/oreka/persistent/LoginString.java
index ad44057..d3dc932 100644
--- a/orkbasej/java/net/sf/oreka/persistent/LoginString.java
+++ b/orkbasej/java/net/sf/oreka/persistent/LoginString.java
@@ -16,6 +16,8 @@
*/
package net.sf.oreka.persistent;
+import java.io.Serializable;
+
import javax.persistence.Entity;
import javax.persistence.GeneratorType;
import javax.persistence.Id;
@@ -25,7 +27,7 @@ import javax.persistence.ManyToOne;
* @hibernate.class
*/
@Entity
-public class LoginString {
+public class LoginString implements Serializable {
private int id;
private String loginString;
@@ -104,6 +106,10 @@ public class LoginString {
this.user = user;
}
+ public void bidirSetUser(User user) {
+ this.user = user;
+ user.getLoginStrings().add(this);
+ }
/**
*
diff --git a/orkbasej/java/net/sf/oreka/persistent/RecPort.java b/orkbasej/java/net/sf/oreka/persistent/RecPort.java
index 9886bdc..83d6630 100644
--- a/orkbasej/java/net/sf/oreka/persistent/RecPort.java
+++ b/orkbasej/java/net/sf/oreka/persistent/RecPort.java
@@ -13,12 +13,14 @@
package net.sf.oreka.persistent;
+import java.io.Serializable;
+
import javax.persistence.Entity;
import javax.persistence.GeneratorType;
import javax.persistence.Id;
@Entity
-public class RecPort {
+public class RecPort implements Serializable {
private int id;
diff --git a/orkbasej/java/net/sf/oreka/persistent/RecPortFace.java b/orkbasej/java/net/sf/oreka/persistent/RecPortFace.java
index 2824926..46350bc 100644
--- a/orkbasej/java/net/sf/oreka/persistent/RecPortFace.java
+++ b/orkbasej/java/net/sf/oreka/persistent/RecPortFace.java
@@ -13,12 +13,14 @@
package net.sf.oreka.persistent;
+import java.io.Serializable;
+
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
@Entity
-public class RecPortFace {
+public class RecPortFace implements Serializable {
private RecPort recPort;
private Service service;
diff --git a/orkbasej/java/net/sf/oreka/persistent/RecProgram.java b/orkbasej/java/net/sf/oreka/persistent/RecProgram.java
index fed2425..6b8da30 100644
--- a/orkbasej/java/net/sf/oreka/persistent/RecProgram.java
+++ b/orkbasej/java/net/sf/oreka/persistent/RecProgram.java
@@ -16,6 +16,7 @@
*/
package net.sf.oreka.persistent;
+import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
@@ -37,7 +38,7 @@ import net.sf.oreka.Direction;
* @hibernate.class
*/
@Entity
-public class RecProgram {
+public class RecProgram implements Serializable {
private int id;
private String name = "";
diff --git a/orkbasej/java/net/sf/oreka/persistent/RecSegment.java b/orkbasej/java/net/sf/oreka/persistent/RecSegment.java
index 30a848e..1091ff5 100644
--- a/orkbasej/java/net/sf/oreka/persistent/RecSegment.java
+++ b/orkbasej/java/net/sf/oreka/persistent/RecSegment.java
@@ -13,6 +13,7 @@
package net.sf.oreka.persistent;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
@@ -33,7 +34,7 @@ import net.sf.oreka.Direction;
* @hibernate.class
*/
@Entity
-public class RecSegment {
+public class RecSegment implements Serializable {
private int id;
private RecSession recSession;
diff --git a/orkbasej/java/net/sf/oreka/persistent/RecSession.java b/orkbasej/java/net/sf/oreka/persistent/RecSession.java
index 214f678..8e77bfb 100644
--- a/orkbasej/java/net/sf/oreka/persistent/RecSession.java
+++ b/orkbasej/java/net/sf/oreka/persistent/RecSession.java
@@ -13,6 +13,7 @@
package net.sf.oreka.persistent;
+import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
@@ -24,7 +25,7 @@ import javax.persistence.Transient;
* @hibernate.class
*/
@Entity
-public class RecSession {
+public class RecSession implements Serializable {
private int id;
private Date timestamp = new Date(0);
private long duration;
diff --git a/orkbasej/java/net/sf/oreka/persistent/RecTape.java b/orkbasej/java/net/sf/oreka/persistent/RecTape.java
index 8278c29..193f105 100644
--- a/orkbasej/java/net/sf/oreka/persistent/RecTape.java
+++ b/orkbasej/java/net/sf/oreka/persistent/RecTape.java
@@ -13,6 +13,7 @@
package net.sf.oreka.persistent;
+import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
@@ -27,7 +28,7 @@ import net.sf.oreka.Direction;
* @hibernate.class
*/
@Entity
-public class RecTape {
+public class RecTape implements Serializable {
private int id;
private Date timestamp = new Date(0);
diff --git a/orkbasej/java/net/sf/oreka/persistent/Service.java b/orkbasej/java/net/sf/oreka/persistent/Service.java
index 6eac75a..5369365 100644
--- a/orkbasej/java/net/sf/oreka/persistent/Service.java
+++ b/orkbasej/java/net/sf/oreka/persistent/Service.java
@@ -16,6 +16,8 @@
*/
package net.sf.oreka.persistent;
+import java.io.Serializable;
+
import javax.persistence.Entity;
import javax.persistence.GeneratorType;
import javax.persistence.Id;
@@ -26,7 +28,7 @@ import net.sf.oreka.ServiceClass;
* @hibernate.class
*/
@Entity
-public class Service {
+public class Service implements Serializable {
private int id;
private String name = "";
diff --git a/orkbasej/java/net/sf/oreka/persistent/User.java b/orkbasej/java/net/sf/oreka/persistent/User.java
index 45fa9ad..04ffc42 100644
--- a/orkbasej/java/net/sf/oreka/persistent/User.java
+++ b/orkbasej/java/net/sf/oreka/persistent/User.java
@@ -16,21 +16,35 @@
*/
package net.sf.oreka.persistent;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Set;
+
import javax.persistence.Entity;
+import javax.persistence.FetchType;
import javax.persistence.GeneratorType;
import javax.persistence.Id;
+import javax.persistence.OneToMany;
/**
* @hibernate.class
*/
@Entity
-public class User {
+public class User implements Serializable {
private int id = 0;
private String password = "";
private String firstname = "";
private String lastname = "";
private String email = "";
+ private boolean deleted = false;
+ private boolean disabled = false;
+ private Date dateCreated = new Date(0);
+ private Date dateDisabled = new Date(0);
+ private Date dateDeleted = new Date(0);
+
+ private Set<LoginString> loginStrings;
/**
* @hibernate.property
@@ -128,6 +142,79 @@ public class User {
*
*/
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;
+ }
+
+
+ public Date getDateCreated() {
+ return dateCreated;
+ }
+
+
+
+ public void setDateCreated(Date dateCreated) {
+ this.dateCreated = dateCreated;
+ }
+
+
+
+ public Date getDateDeleted() {
+ return dateDeleted;
+ }
+
+
+
+ public void setDateDeleted(Date dateDeleted) {
+ this.dateDeleted = dateDeleted;
+ }
+
+
+
+ public Date getDateDisabled() {
+ return dateDisabled;
+ }
+
+
+
+ public void setDateDisabled(Date dateDisabled) {
+ this.dateDisabled = dateDisabled;
+ }
+
+
+
+ public boolean isDeleted() {
+ return deleted;
+ }
+
+
+
+ public void setDeleted(boolean deleted) {
+ this.deleted = deleted;
+ }
+
+
+
+ public boolean isDisabled() {
+ return disabled;
+ }
+
+
+
+ public void setDisabled(boolean disabled) {
+ this.disabled = disabled;
+ }
+
+
+
}
diff --git a/orkbasej/java/net/sf/oreka/srvc/UserFilter.java b/orkbasej/java/net/sf/oreka/srvc/UserFilter.java
new file mode 100644
index 0000000..4b35bee
--- /dev/null
+++ b/orkbasej/java/net/sf/oreka/srvc/UserFilter.java
@@ -0,0 +1,5 @@
+package net.sf.oreka.srvc;
+
+public class UserFilter {
+
+}
diff --git a/orkbasej/java/net/sf/oreka/srvc/UserService.java b/orkbasej/java/net/sf/oreka/srvc/UserService.java
index 0b2b17e..95e6e37 100644
--- a/orkbasej/java/net/sf/oreka/srvc/UserService.java
+++ b/orkbasej/java/net/sf/oreka/srvc/UserService.java
@@ -1,10 +1,17 @@
package net.sf.oreka.srvc;
+import java.util.List;
+
import net.sf.oreka.bo.UserBo;
+import net.sf.oreka.persistent.User;
public interface UserService {
public UserBo login(String username, String password);
public boolean changePassword(int userId, String oldPassword, String newPassword);
+ public int getUsers(UserFilter filter, int offset, int number, String orderBy, boolean ascending, List<UserBo> results);
+
+ public void deleteUser(int userId);
+ public void disableUser(int userId);
}
diff --git a/orkbasej/java/net/sf/oreka/srvc/UserServiceHbn.java b/orkbasej/java/net/sf/oreka/srvc/UserServiceHbn.java
index 71a2a0c..f33f243 100644
--- a/orkbasej/java/net/sf/oreka/srvc/UserServiceHbn.java
+++ b/orkbasej/java/net/sf/oreka/srvc/UserServiceHbn.java
@@ -1,6 +1,8 @@
package net.sf.oreka.srvc;
import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
import net.sf.oreka.HibernateManager;
import net.sf.oreka.OrkBase;
@@ -8,8 +10,10 @@ import net.sf.oreka.bo.UserBo;
import net.sf.oreka.persistent.User;
import org.apache.log4j.Logger;
+import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
+import org.hibernate.ScrollableResults;
import org.hibernate.Session;
import org.hibernate.Transaction;
@@ -28,7 +32,7 @@ public class UserServiceHbn implements UserService {
{
hbnSession = HibernateManager.instance().getSession();
- String queryString = new String("from LoginString as ls left join ls.user as user where ls.loginString=:ls");
+ String queryString = new String("from LoginString as ls left join ls.user as user where ls.loginString=:ls and user.deleted=0 ");
if (OrkBase.instance().isDebugSwitch() == false) {
queryString = queryString + " and user.password=:password";
}
@@ -99,4 +103,143 @@ public class UserServiceHbn implements UserService {
}
return success;
}
+
+ public int getUsers(UserFilter filter, int offset, int number, String orderBy, boolean ascending, List<UserBo> results) {
+
+ Session hbnSession = null;
+ Transaction tx = null;
+ logger.debug("Entering getUsers");
+ List<User> users;
+ int numResults = 0;
+
+ try
+ {
+ hbnSession = HibernateManager.instance().getSession();
+
+ /*
+ Criteria crit = hbnSession.createCriteria(User.class);
+ //crit.add( Expression.eq( "color", eg.Color.BLACK ) );
+
+ // figure out total number of users returned
+ ScrollableResults scrollRes = crit.scroll();
+ if ( scrollRes.last() ) {
+ numResults = scrollRes.getRowNumber()+1;
+ }
+
+ // get only one page worth of users
+ crit.setMaxResults(number);
+ crit.setFirstResult(offset);
+ users = crit.list();
+
+ Iterator it = users.iterator();
+ while(it.hasNext()) {
+ UserBo ubo = new UserBo();
+ ubo.setUser((User)it.next());
+ results.add(ubo);
+ }
+ */
+
+ StringBuffer queryString = new StringBuffer("from User as user where user.deleted=0 ");
+ Query query = hbnSession.createQuery(queryString.toString());
+
+ ScrollableResults scrollRes = query.scroll();
+ if ( scrollRes.last() ) {
+ numResults = scrollRes.getRowNumber()+1;
+ }
+
+ // get only one page worth of users
+ scrollRes.setRowNumber(offset);
+ int numRetrieved = 0;
+
+ while(scrollRes.next() && numRetrieved<number) {
+ numRetrieved++;
+ UserBo ubo = new UserBo();
+ ubo.setUser((User)scrollRes.get()[0]);
+ results.add(ubo);
+ }
+
+ logger.debug("getUsers: got " + numResults + " users");
+ }
+ catch ( HibernateException he ) {
+ logger.error("getUsers: exception:" + he.getClass().getName());
+ }
+ catch (Exception e)
+ {
+ logger.error("getUsers: exception:", e);
+ }
+ finally {
+ if(hbnSession != null) {hbnSession.close();}
+ }
+ return numResults;
+ }
+
+ public void deleteUser(int userId) {
+
+ Session hbnSession = null;
+ Transaction tx = null;
+ User user = null;
+
+ logger.debug("Deleting userid:" + userId);
+
+ try
+ {
+ hbnSession = HibernateManager.instance().getSession();
+
+
+ user = (User)hbnSession.get(User.class, userId);
+ if(user == null) {
+ logger.warn("Userid:" + userId + " does not exist");
+ }
+ else {
+ tx = hbnSession.beginTransaction();
+ user.setDeleted(true);
+ hbnSession.save(user);
+ tx.commit();
+ }
+ }
+ catch ( HibernateException he ) {
+ logger.error("deleteUser: exception:" + he.getClass().getName());
+ }
+ catch (Exception e)
+ {
+ logger.error("deleteUser: exception:", e);
+ }
+ finally {
+ if(hbnSession != null) {hbnSession.close();}
+ }
+ }
+
+ public void disableUser(int userId) {
+
+ Session hbnSession = null;
+ Transaction tx = null;
+ User user = null;
+
+ logger.debug("Disabling userid:" + userId);
+
+ try
+ {
+ hbnSession = HibernateManager.instance().getSession();
+ user = (User)hbnSession.get(User.class, userId);
+ if(user == null) {
+ logger.warn("Userid:" + userId + " does not exist");
+ }
+ else {
+ tx = hbnSession.beginTransaction();
+ user.setDisabled(true);
+ hbnSession.save(user);
+ tx.commit();
+ }
+ }
+ catch ( HibernateException he ) {
+ logger.error("disableUser: exception:" + he.getClass().getName());
+ }
+ catch (Exception e)
+ {
+ logger.error("disableUser: exception:", e);
+ }
+ finally {
+ if(hbnSession != null) {hbnSession.close();}
+ }
+ }
}
diff --git a/orkbasej/java/net/sf/oreka/test/FillDatabase.java b/orkbasej/java/net/sf/oreka/test/FillDatabase.java
index 0b0596c..7aa6873 100644
--- a/orkbasej/java/net/sf/oreka/test/FillDatabase.java
+++ b/orkbasej/java/net/sf/oreka/test/FillDatabase.java
@@ -57,6 +57,7 @@ public class FillDatabase {
// create program that does not filter anything
RecProgram prog1 = new RecProgram();
+ prog1.setName("Test program");
hbnSession.save(prog1);
// Create a bunch of segments
diff --git a/orkbasej/java/net/sf/oreka/test/FillDatabaseUser.java b/orkbasej/java/net/sf/oreka/test/FillDatabaseUser.java
new file mode 100644
index 0000000..b3cdbc5
--- /dev/null
+++ b/orkbasej/java/net/sf/oreka/test/FillDatabaseUser.java
@@ -0,0 +1,70 @@
+package net.sf.oreka.test;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import net.sf.oreka.HibernateManager;
+import net.sf.oreka.persistent.LoginString;
+import net.sf.oreka.persistent.User;
+
+import org.apache.log4j.PropertyConfigurator;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+
+public class FillDatabaseUser {
+
+ static HibernateManager hibernateManager = HibernateManager.instance();
+
+ public static void main(String args[]) throws Exception
+ {
+ User usr = null;
+
+ try {
+ PropertyConfigurator.configure("c:/oreka/test/log4j.properties");
+ hibernateManager.configure("c:/oreka/test/mysql.hbm.xml");
+
+
+ Session hbnSession = hibernateManager.getSession();
+ Transaction tx = hbnSession.beginTransaction();
+
+ for(int i=0; i<100; i++) {
+ User user = new User();
+ user.setFirstname("fn" + i);
+ user.setLastname("ln" + i);
+ user.setPassword("password");
+ hbnSession.save(user);
+
+ LoginString ls = new LoginString();
+ ls.setLoginString("ls" + i);
+ ls.bidirSetUser(user);
+ hbnSession.save(ls);
+
+ LoginString ls2 = new LoginString();
+ ls2.setLoginString("ls2" + i);
+ ls2.bidirSetUser(user);
+ hbnSession.save(ls2);
+
+ }
+ tx.commit();
+ hbnSession.close();
+
+// hbnSession = hibernateManager.getSession();
+// tx = hbnSession.beginTransaction();
+// usr = (User)hbnSession.get(User.class, 4);
+// tx.commit();
+// hbnSession.close();
+ System.out.println("Done");
+ }
+ catch(Exception e) {
+ e.printStackTrace();
+ }
+
+// Collection col = usr.getLoginStrings();
+// String loginStringsCsv = "";
+// Iterator it = col.iterator();
+// while(it.hasNext()) {
+// loginStringsCsv = loginStringsCsv + ((LoginString)it.next()).getLoginString() + ":";
+// }
+// System.out.println("~~~" + usr.getFirstname() + " " + loginStringsCsv);
+ }
+}