Author: glandais Date: 2008-03-18 20:02:53 +0000 (Tue, 18 Mar 2008) New Revision: 1400 Removed: trunk/simexplorer-is/simexplorer-is-security/src/resources/META-INF/orm.xml Modified: trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoActorImpl.java trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoPermissionImpl.java trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Group.java trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/LoginAction.java trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Permission.java trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/User.java trunk/simexplorer-is/simexplorer-is-security/src/resources/META-INF/persistence.xml Log: Removed orm.xml Modified: trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java 2008-03-18 17:42:04 UTC (rev 1399) +++ trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java 2008-03-18 20:02:53 UTC (rev 1400) @@ -77,7 +77,7 @@ if (actor.equals(permission.getActor())) { return 0; } - List<Group> groups = actor.getGroups(); + Collection<Group> groups = actor.getGroups(); for (Group group : groups) { int levelGroup = getRelativeLevel(group, permission); if (levelGroup >= 0) { @@ -114,6 +114,7 @@ p = permission; minLevel = relativeLevel; } + // TODO if minLevel == relativeLevel do OR } } } else { @@ -237,7 +238,7 @@ */ private void getActors(Actor actor, Collection<Actor> actors) { actors.add(actor); - List<Group> groups = actor.getGroups(); + Collection<Group> groups = actor.getGroups(); for (Group group : groups) { getActors(group, actors); } Modified: trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoActorImpl.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoActorImpl.java 2008-03-18 17:42:04 UTC (rev 1399) +++ trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoActorImpl.java 2008-03-18 20:02:53 UTC (rev 1400) @@ -184,7 +184,7 @@ "select la from LoginAction la where la.token=:token").setParameter("token", token)); if (loginAction != null) { loggedUser = loginAction.getLoggedUser(); - loginAction.setLoginDate(new Date()); + loginAction.setLoginDate((new Date()).getTime()); em.merge(loginAction); } return loggedUser; @@ -213,8 +213,9 @@ public void deleteTokens(Actor actor, long before) { Date now = new Date(); Date date = new Date(now.getTime() - before); + long dateLimit = date.getTime(); em.createQuery("delete from LoginAction la where la.loggedUser = :actor and la.loginDate < :dateLimit") - .setParameter("dateLimit", date).setParameter("actor", actor).executeUpdate(); + .setParameter("dateLimit", dateLimit).setParameter("actor", actor).executeUpdate(); } /* (non-Javadoc) Modified: trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoPermissionImpl.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoPermissionImpl.java 2008-03-18 17:42:04 UTC (rev 1399) +++ trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoPermissionImpl.java 2008-03-18 20:02:53 UTC (rev 1400) @@ -61,14 +61,14 @@ @Override public List<Permission> getPermissionsOwnedBy(Actor actor, int indexStart, int count) { List<Permission> permissions = CollectionUtil.toGenericList(em.createQuery( - "select p from Permission p where p.actor=:actor and p.owner = true").setParameter("actor", actor) + "select p from Permission p where p.actor=:actor and p.isOwner = true").setParameter("actor", actor) .setFirstResult(indexStart).setMaxResults(count).getResultList(), Permission.class); return permissions; } public int getPermissionsOwnedByCount(Actor actor) { Object singleResult = em.createQuery( - "select count(p) from Permission p where p.actor=:actor and p.owner = true").setParameter("actor", + "select count(p) from Permission p where p.actor=:actor and p.isOwner = true").setParameter("actor", actor).getSingleResult(); int result = ((Number) singleResult).intValue(); return result; @@ -106,7 +106,7 @@ public List<String> getBusinessIdsVisibleBy(Collection<Actor> actors) { StringBuffer query = new StringBuffer(); query.append("select p.businessId from Permission p").append( - " where (p.canRead = true or p.canAdmin = true or p.owner = true)").append(" and p.actor in (:actors)"); + " where (p.canRead = true or p.canAdmin = true or p.isOwner = true)").append(" and p.actor in (:actors)"); List<String> businessIds = CollectionUtil.toGenericList(em.createQuery(query.toString()).setParameter("actors", actors).getResultList(), String.class); return businessIds; Modified: trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java 2008-03-18 17:42:04 UTC (rev 1399) +++ trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java 2008-03-18 20:02:53 UTC (rev 1400) @@ -19,24 +19,46 @@ import java.io.Serializable; import java.util.ArrayList; +import java.util.Collection; import java.util.Iterator; import java.util.List; +import javax.persistence.Basic; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; +import javax.persistence.ManyToMany; +import javax.persistence.Table; +import javax.persistence.Transient; + /** * The Class Actor. */ + at Entity + at Table(name = "ACTORS") + at Inheritance(strategy = InheritanceType.JOINED) public class Actor implements Serializable { - + /** The Constant serialVersionUID. */ + @Transient private static final long serialVersionUID = 1; /** The id. */ + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE) protected Integer id; /** The groups. */ - private List<Group> groups; + @ManyToMany(fetch = FetchType.EAGER, targetEntity = Group.class) + //@Cascade(value = {CascadeType.ALL}) + private Collection<Group> groups; /** The visible. */ + @Basic private boolean visible; /** @@ -82,7 +104,7 @@ * * @return the groups */ - public List<Group> getGroups() { + public Collection<Group> getGroups() { if (groups == null) { groups = new ArrayList<Group>(); } @@ -107,7 +129,7 @@ * * @return the int */ - private int hashCodeGroups(List<Group> hashedGroups) { + private int hashCodeGroups(Collection<Group> hashedGroups) { final int prime = 31; int result = 1; result = prime * result + hashedGroups.size(); @@ -139,7 +161,7 @@ * * @return true, if successful */ - private boolean equalsGroups(List<Group> groups1, List<Group> groups2) { + private boolean equalsGroups(Collection<Group> groups1, Collection<Group> groups2) { if (groups1 == groups2) return true; if (groups2 == null) Modified: trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Group.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Group.java 2008-03-18 17:42:04 UTC (rev 1399) +++ trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Group.java 2008-03-18 20:02:53 UTC (rev 1400) @@ -17,18 +17,32 @@ * ##% */ package fr.cemagref.simexplorer.is.security.entities; +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.OneToOne; +import javax.persistence.Table; +import javax.persistence.Transient; + /** * The Class Group. */ + at Entity + at Table(name = "GROUPS") public class Group extends Actor { /** The Constant serialVersionUID. */ + @Transient private static final long serialVersionUID = 1; /** The name. */ + @Basic + @Column(unique = true) private String name; /** The owner. */ + @OneToOne(fetch = FetchType.EAGER) private User owner; /** Modified: trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/LoginAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/LoginAction.java 2008-03-18 17:42:04 UTC (rev 1399) +++ trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/LoginAction.java 2008-03-18 20:02:53 UTC (rev 1400) @@ -18,26 +18,47 @@ package fr.cemagref.simexplorer.is.security.entities; import java.io.Serializable; -import java.util.Date; +import javax.persistence.Basic; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToOne; +import javax.persistence.Table; +import javax.persistence.Transient; + /** * The Class LoginAction. */ + at Entity + at Table(name = "LOGINS") public class LoginAction implements Serializable { + /** The Constant log. */ + private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory + .getLog(LoginAction.class); + /** The Constant serialVersionUID. */ + @Transient private static final long serialVersionUID = 1; /** The id. */ + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE) private Integer id; /** The time. */ - private Date loginDate; + @Basic + private long loginDate; /** The logged user. */ + @OneToOne(fetch = FetchType.EAGER) private User loggedUser; /** The token. */ + @Basic private String token; /** @@ -63,7 +84,7 @@ * * @return the login date */ - public Date getLoginDate() { + public long getLoginDate() { return loginDate; } @@ -72,7 +93,7 @@ * * @param loginDate the new login date */ - public void setLoginDate(Date loginDate) { + public void setLoginDate(long loginDate) { this.loginDate = loginDate; } @@ -112,4 +133,44 @@ this.token = token; } + /* (non-Javadoc) + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((loggedUser == null) ? 0 : loggedUser.hashCode()); + result = prime * result + (int) (loginDate ^ (loginDate >>> 32)); + result = prime * result + ((token == null) ? 0 : token.hashCode()); + return result; + } + + /* (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final LoginAction other = (LoginAction) obj; + if (loggedUser == null) { + if (other.loggedUser != null) + return false; + } else if (!loggedUser.equals(other.loggedUser)) + return false; + if (loginDate != other.loginDate) + return false; + if (token == null) { + if (other.token != null) + return false; + } else if (!token.equals(other.token)) + return false; + return true; + } + } Modified: trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Permission.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Permission.java 2008-03-18 17:42:04 UTC (rev 1399) +++ trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Permission.java 2008-03-18 20:02:53 UTC (rev 1400) @@ -19,35 +19,59 @@ import java.io.Serializable; +import javax.persistence.Basic; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToOne; +import javax.persistence.Table; +import javax.persistence.Transient; + /** * The Class Permission. */ + at Entity + at Table(name = "PERMISSIONS") public class Permission implements Serializable { /** The Constant serialVersionUID. */ + @Transient private static final long serialVersionUID = 1; /** The id. */ + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE) private Integer id; /** The business id. */ + @Basic private String businessId; /** The actor. */ + @OneToOne(fetch = FetchType.EAGER) private Actor actor; /** The can read. */ + @Basic private boolean canRead; /** The can write. */ + @Basic private boolean canWrite; /** The can admin. */ + @Basic private boolean canAdmin; /** The is owner. */ + @Basic private boolean isOwner; + /* (non-Javadoc) + * @see java.lang.Object#toString() + */ @Override public String toString() { StringBuffer sb = new StringBuffer(); @@ -188,4 +212,53 @@ this.isOwner = isOwner; } + /* (non-Javadoc) + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((actor == null) ? 0 : actor.hashCode()); + result = prime * result + ((businessId == null) ? 0 : businessId.hashCode()); + result = prime * result + (canAdmin ? 1231 : 1237); + result = prime * result + (canRead ? 1231 : 1237); + result = prime * result + (canWrite ? 1231 : 1237); + result = prime * result + (isOwner ? 1231 : 1237); + return result; + } + + /* (non-Javadoc) + * @see java.lang.Object#equals(java.lang.Object) + */ + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final Permission other = (Permission) obj; + if (actor == null) { + if (other.actor != null) + return false; + } else if (!actor.equals(other.actor)) + return false; + if (businessId == null) { + if (other.businessId != null) + return false; + } else if (!businessId.equals(other.businessId)) + return false; + if (canAdmin != other.canAdmin) + return false; + if (canRead != other.canRead) + return false; + if (canWrite != other.canWrite) + return false; + if (isOwner != other.isOwner) + return false; + return true; + } + } Modified: trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/User.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/User.java 2008-03-18 17:42:04 UTC (rev 1399) +++ trunk/simexplorer-is/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/User.java 2008-03-18 20:02:53 UTC (rev 1400) @@ -17,27 +17,42 @@ * ##% */ package fr.cemagref.simexplorer.is.security.entities; +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; +import javax.persistence.Transient; + /** * The Class User. */ + at Entity + at Table(name = "USERS") public class User extends Actor { /** The Constant serialVersionUID. */ + @Transient private static final long serialVersionUID = 1; /** The login. */ + @Basic + @Column(unique = true) private String login; /** The mail. */ + @Basic private String mail; /** The password hash. */ + @Basic private String passwordHash; /** The admin. */ + @Basic private boolean admin; /** The super admin. */ + @Basic private boolean superAdmin; /** Deleted: trunk/simexplorer-is/simexplorer-is-security/src/resources/META-INF/orm.xml =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/resources/META-INF/orm.xml 2008-03-18 17:42:04 UTC (rev 1399) +++ trunk/simexplorer-is/simexplorer-is-security/src/resources/META-INF/orm.xml 2008-03-18 20:02:53 UTC (rev 1400) @@ -1,82 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" - version="1.0"> - - <persistence-unit-metadata> - <xml-mapping-metadata-complete /> - </persistence-unit-metadata> - - <package>fr.cemagref.simexplorer.is.security.entities</package> - - <entity class="Actor"> - <table name="ACTORS" /> - <inheritance strategy="JOINED" /> - <attributes> - <id name="id"> - <generated-value strategy="SEQUENCE" /> - </id> - <basic name="visible"></basic> - <many-to-many name="groups" target-entity="Group" - fetch="EAGER"> - <cascade> - <cascade-all /> - </cascade> - </many-to-many> - </attributes> - </entity> - - <entity class="Group"> - <table name="GROUPS" /> - <attributes> - <basic name="name"> - <column unique="true" /> - </basic> - <one-to-one name="owner" fetch="EAGER" /> - </attributes> - </entity> - - <entity class="User"> - <table name="USERS" /> - <attributes> - <basic name="login"> - <column unique="true" /> - </basic> - <basic name="mail"></basic> - <basic name="passwordHash"></basic> - <basic name="admin"></basic> - <basic name="superAdmin"></basic> - </attributes> - </entity> - - <entity class="LoginAction"> - <table name="LOGINS" /> - <attributes> - <id name="id"> - <generated-value strategy="SEQUENCE" /> - </id> - <basic name="token" /> - <basic name="loginDate"> - <temporal>DATE</temporal> - </basic> - <one-to-one name="loggedUser" fetch="EAGER" /> - </attributes> - </entity> - - <entity class="Permission"> - <table name="PERMISSIONS" /> - <attributes> - <id name="id"> - <generated-value strategy="SEQUENCE" /> - </id> - <basic name="businessId" /> - <basic name="canRead" /> - <basic name="canWrite" /> - <basic name="canAdmin" /> - <basic name="isOwner" /> - <one-to-one name="actor" fetch="EAGER" /> - </attributes> - </entity> - -</entity-mappings> Modified: trunk/simexplorer-is/simexplorer-is-security/src/resources/META-INF/persistence.xml =================================================================== --- trunk/simexplorer-is/simexplorer-is-security/src/resources/META-INF/persistence.xml 2008-03-18 17:42:04 UTC (rev 1399) +++ trunk/simexplorer-is/simexplorer-is-security/src/resources/META-INF/persistence.xml 2008-03-18 20:02:53 UTC (rev 1400) @@ -10,8 +10,6 @@ <!-- la DataSource JTA gérée par l'environnement Java EE5 --> <jta-data-source>java:/h2datasource</jta-data-source> - <mapping-file>META-INF/orm.xml</mapping-file> - <properties> <!-- logs SQL Hibernate <property name="hibernate.show_sql" value="true"/>