From a794bcdd80379335848a546035f767bb7e924550 Mon Sep 17 00:00:00 2001 From: Henri Herscher Date: Fri, 30 Dec 2005 22:58:32 +0000 Subject: 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 --- orkbasej/java/net/sf/oreka/HibernateManager.java | 2 + orkbasej/java/net/sf/oreka/bo/UserBo.java | 34 ++++- orkbasej/java/net/sf/oreka/persistent/Domain.java | 4 +- .../java/net/sf/oreka/persistent/LoginString.java | 8 +- orkbasej/java/net/sf/oreka/persistent/RecPort.java | 4 +- .../java/net/sf/oreka/persistent/RecPortFace.java | 4 +- .../java/net/sf/oreka/persistent/RecProgram.java | 3 +- .../java/net/sf/oreka/persistent/RecSegment.java | 3 +- .../java/net/sf/oreka/persistent/RecSession.java | 3 +- orkbasej/java/net/sf/oreka/persistent/RecTape.java | 3 +- orkbasej/java/net/sf/oreka/persistent/Service.java | 4 +- orkbasej/java/net/sf/oreka/persistent/User.java | 89 ++++++++++++- orkbasej/java/net/sf/oreka/srvc/UserFilter.java | 5 + orkbasej/java/net/sf/oreka/srvc/UserService.java | 7 + .../java/net/sf/oreka/srvc/UserServiceHbn.java | 145 ++++++++++++++++++++- orkbasej/java/net/sf/oreka/test/FillDatabase.java | 1 + .../java/net/sf/oreka/test/FillDatabaseUser.java | 70 ++++++++++ 17 files changed, 375 insertions(+), 14 deletions(-) create mode 100644 orkbasej/java/net/sf/oreka/srvc/UserFilter.java create mode 100644 orkbasej/java/net/sf/oreka/test/FillDatabaseUser.java 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 loginStrings; /** * @hibernate.property @@ -128,6 +142,79 @@ public class User { * */ public User() { + loginStrings = new HashSet(); + } + + @OneToMany(fetch = FetchType.EAGER) + public Set getLoginStrings() { + return loginStrings; } + + + public void setLoginStrings(Set 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 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 results) { + + Session hbnSession = null; + Transaction tx = null; + logger.debug("Entering getUsers"); + List 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