Simexplorer-si-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
January 2008
- 2 participants
- 470 discussions
r424 - trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components
by glandais@users.labs.libre-entreprise.org 23 Jan '08
by glandais@users.labs.libre-entreprise.org 23 Jan '08
23 Jan '08
Author: glandais
Date: 2008-01-23 10:47:25 +0000 (Wed, 23 Jan 2008)
New Revision: 424
Modified:
trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout.properties
Log:
Menu labels
Modified: trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout.properties
===================================================================
--- trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout.properties 2008-01-23 10:46:20 UTC (rev 423)
+++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Layout.properties 2008-01-23 10:47:25 UTC (rev 424)
@@ -2,11 +2,11 @@
layout-pagetitle=Simexplorer SI
layout-menutitle=Menu
-layout-applications=Application Menu
+layout-applications=Applications
layout-list=List
layout-import=Import
-layout-administration=Administration Menu
+layout-administration=Administration
layout-userlist=User list
layout-grouplist=Group list
1
0
r423 - trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service
by glandais@users.labs.libre-entreprise.org 23 Jan '08
by glandais@users.labs.libre-entreprise.org 23 Jan '08
23 Jan '08
Author: glandais
Date: 2008-01-23 10:46:20 +0000 (Wed, 23 Jan 2008)
New Revision: 423
Modified:
trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java
Log:
Service singature - bug fix
Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java
===================================================================
--- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-01-23 09:40:24 UTC (rev 422)
+++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-01-23 10:46:20 UTC (rev 423)
@@ -112,7 +112,7 @@
public LoggableElement getElement(String token, String uuid, String version)
throws Exception {
- MetaDataEntity mde = getMetadata(uuid, version);
+ MetaDataEntity mde = getMetadata(token, uuid, version);
LoggableElement le = (LoggableElement) BaseEntityFactory.getFactory(
LoggableElement.class.getPackage().getName() + "." + mde.getType())
@@ -161,7 +161,7 @@
public void exportElement(String token, RemoteOutputStream xmlOutputStream, String uuid,
String version) throws Exception {
- MetaDataEntity mde = getMetadata(uuid, version);
+ MetaDataEntity mde = getMetadata(token, uuid, version);
InputStream xmlStream = storageEngine.retrieveData(token, mde, KEY_XML);
OutputStream os = RemoteOutputStreamClient.wrap(xmlOutputStream);
1
0
r422 - trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab
by tchemit@users.labs.libre-entreprise.org 23 Jan '08
by tchemit@users.labs.libre-entreprise.org 23 Jan '08
23 Jan '08
Author: tchemit
Date: 2008-01-23 09:40:24 +0000 (Wed, 23 Jan 2008)
New Revision: 422
Modified:
trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowDetailTabAction.java
Log:
supression m?\195?\169thode inutile
Modified: trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowDetailTabAction.java
===================================================================
--- trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowDetailTabAction.java 2008-01-23 09:32:08 UTC (rev 421)
+++ trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowDetailTabAction.java 2008-01-23 09:40:24 UTC (rev 422)
@@ -84,8 +84,4 @@
}
- @Override
- protected void clear() {
- super.clear();
- }
}
1
0
r421 - trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages
by tchemit@users.labs.libre-entreprise.org 23 Jan '08
by tchemit@users.labs.libre-entreprise.org 23 Jan '08
23 Jan '08
Author: tchemit
Date: 2008-01-23 09:32:08 +0000 (Wed, 23 Jan 2008)
New Revision: 421
Modified:
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java
Log:
supression initializer inutile
il faut utiliser
result.toArray(new String[result.size()])
plutot que result.toArray(new String[0])
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java 2008-01-22 18:53:44 UTC (rev 420)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java 2008-01-23 09:32:08 UTC (rev 421)
@@ -61,7 +61,7 @@
}
public Object exportElement(String uuid, String version) throws Exception {
- StreamResponse response = null;
+ StreamResponse response;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
RemoteOutputStreamServer xmlRemoteOutputStream = new SimpleRemoteOutputStream(
@@ -91,7 +91,7 @@
result.add(s2);
result.add(s3);
result.add("");
- return result.toArray(new String[0]);
+ return result.toArray(new String[result.size()]);
}
private String[] generateStringArray(String s1, String s2, String s3,
@@ -108,7 +108,7 @@
sb.append(actionCaption);
sb.append("</a>");
result.add(sb.toString());
- return result.toArray(new String[0]);
+ return result.toArray(new String[result.size()]);
}
private TreeNode generateElement() {
1
0
r420 - in trunk: simexplorer-is simexplorer-is-ear simexplorer-is-web
by glandais@users.labs.libre-entreprise.org 22 Jan '08
by glandais@users.labs.libre-entreprise.org 22 Jan '08
22 Jan '08
Author: glandais
Date: 2008-01-22 18:53:44 +0000 (Tue, 22 Jan 2008)
New Revision: 420
Modified:
trunk/simexplorer-is-ear/pom.xml
trunk/simexplorer-is-web/pom.xml
trunk/simexplorer-is/pom.xml
Log:
poms
Modified: trunk/simexplorer-is/pom.xml
===================================================================
--- trunk/simexplorer-is/pom.xml 2008-01-22 18:37:33 UTC (rev 419)
+++ trunk/simexplorer-is/pom.xml 2008-01-22 18:53:44 UTC (rev 420)
@@ -112,9 +112,9 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
- <eclipse.useProjectReferences>
- true
- </eclipse.useProjectReferences>
+ <useProjectReferences>true</useProjectReferences>
+ <downloadJavadocs>true</downloadJavadocs>
+ <downloadSources>true</downloadSources>
</configuration>
</plugin>
</plugins>
Modified: trunk/simexplorer-is-ear/pom.xml
===================================================================
--- trunk/simexplorer-is-ear/pom.xml 2008-01-22 18:37:33 UTC (rev 419)
+++ trunk/simexplorer-is-ear/pom.xml 2008-01-22 18:53:44 UTC (rev 420)
@@ -22,7 +22,7 @@
<groupId>org.codehaus.mojo</groupId>
<artifactId>jboss-maven-plugin</artifactId>
<configuration>
- <jbossHome>/opt/jboss-4.2.2.GA/</jbossHome>
+ <jbossHome>/opt/java/jboss-4.2.2.GA/</jbossHome>
<serverName>simexplorer</serverName>
</configuration>
</plugin>
Modified: trunk/simexplorer-is-web/pom.xml
===================================================================
--- trunk/simexplorer-is-web/pom.xml 2008-01-22 18:37:33 UTC (rev 419)
+++ trunk/simexplorer-is-web/pom.xml 2008-01-22 18:53:44 UTC (rev 420)
@@ -58,11 +58,6 @@
<dependencies>
<dependency>
<groupId>simexplorer-is</groupId>
- <artifactId>simexplorer-is-entities</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>simexplorer-is</groupId>
<artifactId>simexplorer-is-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
1
0
r419 - in trunk: simexplorer-is-security/src/java/META-INF simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service simexplorer-is-service/src/java/fr/cemagref/simexplorer
by glandais@users.labs.libre-entreprise.org 22 Jan '08
by glandais@users.labs.libre-entreprise.org 22 Jan '08
22 Jan '08
Author: glandais
Date: 2008-01-22 18:37:33 +0000 (Tue, 22 Jan 2008)
New Revision: 419
Added:
trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Permission.java
Modified:
trunk/simexplorer-is-security/src/java/META-INF/orm.xml
trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManager.java
trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java
trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurity.java
trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java
trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java
trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java
trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java
trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java
trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java
trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java
trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java
Log:
Secured service
Modified: trunk/simexplorer-is-security/src/java/META-INF/orm.xml
===================================================================
--- trunk/simexplorer-is-security/src/java/META-INF/orm.xml 2008-01-22 16:32:43 UTC (rev 418)
+++ trunk/simexplorer-is-security/src/java/META-INF/orm.xml 2008-01-22 18:37:33 UTC (rev 419)
@@ -17,7 +17,8 @@
<id name="id">
<generated-value strategy="SEQUENCE" />
</id>
- <many-to-many name="groups" target-entity="Group" fetch="EAGER">
+ <many-to-many name="groups" target-entity="Group"
+ fetch="EAGER">
<cascade>
<cascade-all />
</cascade>
@@ -62,4 +63,19 @@
</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-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManager.java
===================================================================
--- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManager.java 2008-01-22 16:32:43 UTC (rev 418)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManager.java 2008-01-22 18:37:33 UTC (rev 419)
@@ -2,7 +2,13 @@
import javax.ejb.Local;
+import fr.cemagref.simexplorer.is.security.entities.Permission;
+
@Local
public interface CredentialManager {
+ public Permission getPermission(String token, String businessId);
+
+ public Permission saveElement(String token, String businessId);
+
}
Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java
===================================================================
--- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java 2008-01-22 16:32:43 UTC (rev 418)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java 2008-01-22 18:37:33 UTC (rev 419)
@@ -1,10 +1,71 @@
package fr.cemagref.simexplorer.is.security.credentials;
+import java.util.List;
+
+import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Stateless;
+import javax.ejb.TransactionAttribute;
+import javax.ejb.TransactionAttributeType;
+import fr.cemagref.simexplorer.is.security.dao.DaoSecurity;
+import fr.cemagref.simexplorer.is.security.entities.Actor;
+import fr.cemagref.simexplorer.is.security.entities.Group;
+import fr.cemagref.simexplorer.is.security.entities.Permission;
+
@Stateless(name = "CredentialManager")
@Local(CredentialManager.class)
+ at TransactionAttribute(TransactionAttributeType.REQUIRED)
public class CredentialManagerImpl implements CredentialManager {
+ @EJB
+ private DaoSecurity dao;
+
+ private int getRelativeLevel(Actor actor, Permission permission) {
+ int level = -1;
+ if (actor.equals(permission.getActor())) {
+ return 0;
+ } else {
+ List<Group> groups = actor.getGroups();
+ for (Group group : groups) {
+ int levelGroup = getRelativeLevel(group, permission);
+ if (levelGroup >= 0) {
+ level = levelGroup + 1;
+ }
+ }
+ }
+ return level;
+ }
+
+ public Permission getPermission(String token, String businessId) {
+ Permission p = null;
+
+ Actor actor = dao.getLoggedUser(token);
+ List<Permission> permissions = dao.getPermissions(businessId);
+ int minLevel = 0;
+
+ for (Permission permission : permissions) {
+ int relativeLevel = getRelativeLevel(actor, permission);
+ if (relativeLevel >= 0) {
+ if (p == null || minLevel > relativeLevel) {
+ p = permission;
+ minLevel = relativeLevel;
+ }
+ }
+ }
+ return p;
+ }
+
+ public Permission saveElement(String token, String businessId) {
+ Permission p = new Permission();
+ p.setActor(dao.getLoggedUser(token));
+ p.setBusinessId(businessId);
+ p.setCanAdmin(true);
+ p.setCanRead(true);
+ p.setCanWrite(true);
+ p.setOwner(true);
+ dao.savePermission(p);
+ return p;
+ }
+
}
Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurity.java
===================================================================
--- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurity.java 2008-01-22 16:32:43 UTC (rev 418)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurity.java 2008-01-22 18:37:33 UTC (rev 419)
@@ -4,6 +4,7 @@
import fr.cemagref.simexplorer.is.security.entities.Group;
import fr.cemagref.simexplorer.is.security.entities.LoginAction;
+import fr.cemagref.simexplorer.is.security.entities.Permission;
import fr.cemagref.simexplorer.is.security.entities.User;
public interface DaoSecurity {
@@ -48,4 +49,8 @@
public List<Group> getGroupsOfGroup(Group group);
+ public List<Permission> getPermissions(String businessId);
+
+ public void savePermission(Permission p);
+
}
Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java
===================================================================
--- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java 2008-01-22 16:32:43 UTC (rev 418)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java 2008-01-22 18:37:33 UTC (rev 419)
@@ -10,6 +10,7 @@
import fr.cemagref.simexplorer.is.security.entities.Actor;
import fr.cemagref.simexplorer.is.security.entities.Group;
import fr.cemagref.simexplorer.is.security.entities.LoginAction;
+import fr.cemagref.simexplorer.is.security.entities.Permission;
import fr.cemagref.simexplorer.is.security.entities.User;
@Stateless(name = "DaoSecurity")
@@ -166,4 +167,15 @@
return groups;
}
+ public List<Permission> getPermissions(String businessId) {
+ List<Permission> permissions = em.createQuery(
+ "select p from Permission p where p.businessId=:businessId")
+ .setParameter("businessId", businessId).getResultList();
+ return permissions;
+ }
+
+ public void savePermission(Permission p) {
+ em.persist(p);
+ }
+
}
Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java
===================================================================
--- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java 2008-01-22 16:32:43 UTC (rev 418)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java 2008-01-22 18:37:33 UTC (rev 419)
@@ -34,14 +34,14 @@
private int hashCodeGroups(List<Group> groups) {
final int prime = 31;
- int result = 1;
+ int result = 1;
result = prime * result + groups.size();
for (Group group : groups) {
- result = prime * result + ((group == null) ? 0 : group.hashCode());
- }
- return result;
+ result = prime * result + ((group == null) ? 0 : group.getId());
+ }
+ return result;
}
-
+
@Override
public int hashCode() {
final int prime = 31;
@@ -67,8 +67,10 @@
if (group1 == null) {
if (group2 != null)
return false;
- } else if (!group1.equals(group2))
+ } else if (group1.getId() == null) {
return false;
+ } else if (!group1.getId().equals(group2.getId()))
+ return false;
}
return true;
}
Added: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Permission.java
===================================================================
--- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Permission.java (rev 0)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Permission.java 2008-01-22 18:37:33 UTC (rev 419)
@@ -0,0 +1,69 @@
+package fr.cemagref.simexplorer.is.security.entities;
+
+public class Permission {
+
+ private Integer id;
+ private String businessId;
+ private Actor actor;
+ private boolean canRead;
+ private boolean canWrite;
+ private boolean canAdmin;
+ private boolean isOwner;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getBusinessId() {
+ return businessId;
+ }
+
+ public void setBusinessId(String businessId) {
+ this.businessId = businessId;
+ }
+
+ public Actor getActor() {
+ return actor;
+ }
+
+ public void setActor(Actor actor) {
+ this.actor = actor;
+ }
+
+ public boolean isCanRead() {
+ return canRead;
+ }
+
+ public void setCanRead(boolean canRead) {
+ this.canRead = canRead;
+ }
+
+ public boolean isCanWrite() {
+ return canWrite;
+ }
+
+ public void setCanWrite(boolean canWrite) {
+ this.canWrite = canWrite;
+ }
+
+ public boolean isCanAdmin() {
+ return canAdmin;
+ }
+
+ public void setCanAdmin(boolean canAdmin) {
+ this.canAdmin = canAdmin;
+ }
+
+ public boolean isOwner() {
+ return isOwner;
+ }
+
+ public void setOwner(boolean isOwner) {
+ this.isOwner = isOwner;
+ }
+
+}
Modified: trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java
===================================================================
--- trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java 2008-01-22 16:32:43 UTC (rev 418)
+++ trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java 2008-01-22 18:37:33 UTC (rev 419)
@@ -39,12 +39,20 @@
String token = authenticationService
.loginUser("superadmin", "password");
+ Group everybody = authenticationService.saveGroup(token, "everybody",
+ authenticationService.getLoggedUser(token));
+
+ User me = authenticationService.getLoggedUser(token);
+ me.getGroups().add(everybody);
+ authenticationService.updateUser(token, me);
+
User[] simpleUsers = new User[20];
for (int i = 0; i < 20; i++) {
simpleUsers[i] = authenticationService.saveUser(token, "user" + i,
"landais+simtest at codelutin.com");
simpleUsers[i].setAdmin(false);
simpleUsers[i].setSuperAdmin(false);
+ simpleUsers[i].getGroups().add(everybody);
authenticationService.updateUser(token, simpleUsers[i]);
}
@@ -55,6 +63,7 @@
"landais+simtest at codelutin.com");
adminUsers[i].setAdmin(true);
adminUsers[i].setSuperAdmin(false);
+ adminUsers[i].getGroups().add(everybody);
authenticationService.updateUser(token, adminUsers[i]);
groups[i] = authenticationService.saveGroup(token, "group" + i,
Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java
===================================================================
--- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-01-22 16:32:43 UTC (rev 418)
+++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-01-22 18:37:33 UTC (rev 419)
@@ -80,33 +80,33 @@
}
public MetaDataEntity getMetadata(String token, String uuid) throws Exception {
- return storageEngine.getMetadata(uuid);
+ return storageEngine.getMetadata(token, uuid);
}
public MetaDataEntity getMetadata(String token, String uuid, String version)
throws Exception {
- return storageEngine.getMetadata(uuid, new Version(version));
+ return storageEngine.getMetadata(token, uuid, new Version(version));
}
public MetaDataEntity[] findFullText(String token, String query, boolean onlyLatest,
int indexStart, int count, int dateOrder) throws Exception {
- return storageEngine.findFullText(query, onlyLatest, indexStart, count,
+ return storageEngine.findFullText(token, query, onlyLatest, indexStart, count,
dateOrder);
}
public int findFullTextCount(String token, String query, boolean onlyLatest)
throws Exception {
- return storageEngine.findFullTextCount(query, onlyLatest);
+ return storageEngine.findFullTextCount(token, query, onlyLatest);
}
public int findApplicationsCount(String token, boolean onlyLatest) throws Exception {
- return storageEngine.findElementsByTypeCount(VALUE_METADATA_TYPE_EA,
+ return storageEngine.findElementsByTypeCount(token, VALUE_METADATA_TYPE_EA,
onlyLatest);
}
public MetaDataEntity[] findApplications(String token, boolean onlyLatest, int start,
int count, int dateOrder) throws Exception {
- return storageEngine.findElementsByType(VALUE_METADATA_TYPE_EA,
+ return storageEngine.findElementsByType(token, VALUE_METADATA_TYPE_EA,
onlyLatest, start, count, dateOrder);
}
@@ -116,7 +116,7 @@
LoggableElement le = (LoggableElement) BaseEntityFactory.getFactory(
LoggableElement.class.getPackage().getName() + "." + mde.getType())
- .loadElement(storageEngine.retrieveData(mde, KEY_XML));
+ .loadElement(storageEngine.retrieveData(token, mde, KEY_XML));
return le;
}
@@ -162,7 +162,7 @@
public void exportElement(String token, RemoteOutputStream xmlOutputStream, String uuid,
String version) throws Exception {
MetaDataEntity mde = getMetadata(uuid, version);
- InputStream xmlStream = storageEngine.retrieveData(mde, KEY_XML);
+ InputStream xmlStream = storageEngine.retrieveData(token, mde, KEY_XML);
OutputStream os = RemoteOutputStreamClient.wrap(xmlOutputStream);
// Buffer copy stream to stream
@@ -247,7 +247,7 @@
.retrieveTempData(entry.getValue()));
}
}
- storageEngine.saveElement(metaData, attachments);
+ storageEngine.saveElement(token, metaData, attachments);
storageEngine.commit();
return metaData;
@@ -256,7 +256,7 @@
private void processVersionRules(String token, MetaDataEntity metaData) throws Exception {
// Check existing version in storage
- MetaDataEntity previousVersion = storageEngine.getMetadata(metaData
+ MetaDataEntity previousVersion = storageEngine.getMetadata(token, metaData
.getUuid(), metaData.getVersion());
/*
* MetaDataEntity parentData = storageEngine.getElementVersion(metaData
Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java
===================================================================
--- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java 2008-01-22 16:32:43 UTC (rev 418)
+++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java 2008-01-22 18:37:33 UTC (rev 419)
@@ -7,7 +7,7 @@
import org.jboss.annotation.ejb.RemoteBinding;
import fr.cemagref.simexplorer.is.security.service.AuthenticationService;
-import fr.cemagref.simexplorer.is.storage.engine.StorageEngineSecuImpl;
+import fr.cemagref.simexplorer.is.storage.engine.StorageEngineImpl;
@Stateless(name = "StorageService")
@Remote(StorageService.class)
@@ -18,7 +18,9 @@
private AuthenticationService authenticationService;
public StorageServiceServer() {
- storageEngine = new StorageEngineSecuImpl();
+ // FIXME
+ // storageEngine = new StorageEngineSecuImpl();
+ storageEngine = new StorageEngineImpl();
super.firstOpen();
}
Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java
===================================================================
--- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java 2008-01-22 16:32:43 UTC (rev 418)
+++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java 2008-01-22 18:37:33 UTC (rev 419)
@@ -4,102 +4,124 @@
import java.util.List;
import java.util.Map;
+import javax.ejb.EJB;
+
import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity;
import fr.cemagref.simexplorer.is.entities.metadata.Version;
+import fr.cemagref.simexplorer.is.security.credentials.CredentialManager;
+import fr.cemagref.simexplorer.is.security.entities.Permission;
public class StorageEngineSecuImpl extends StorageEngineImpl {
+ @EJB
+ private CredentialManager credentialManager;
+
@Override
- public void deleteElement(String uuid, Version version) throws Exception {
- // TODO Auto-generated method stub
- super.deleteElement(uuid, version);
+ public void deleteElement(String token, String uuid, Version version)
+ throws Exception {
+ Permission permission = credentialManager.getPermission(token, uuid);
+ // TODO check candelete = canadmin
+ if (permission != null && permission.isCanAdmin()) {
+ super.deleteElement(token, uuid, version);
+ }
}
@Override
- public void deleteElements(String uuid) throws Exception {
- // TODO Auto-generated method stub
- super.deleteElements(uuid);
+ public void deleteElements(String token, String uuid) throws Exception {
+ Permission permission = credentialManager.getPermission(token, uuid);
+ // TODO check candelete = canadmin
+ if (permission != null && permission.isCanAdmin()) {
+ super.deleteElements(token, uuid);
+ }
}
@Override
- public void deleteTempData(String id) throws Exception {
- // TODO Auto-generated method stub
- super.deleteTempData(id);
+ public MetaDataEntity[] findElementsByType(String token, String type,
+ boolean onlyLatest, int start, int count, int dateOrder)
+ throws Exception {
+ MetaDataEntity[] list = super.findElementsByType(token, type,
+ onlyLatest, start, count, dateOrder);
+ // TODO how to filter without losing pagination?
+ return list;
}
@Override
- public MetaDataEntity[] findElementsByType(String type, boolean onlyLatest,
- int start, int count, int dateOrder) throws Exception {
- // TODO Auto-generated method stub
- return super.findElementsByType(type, onlyLatest, start, count,
- dateOrder);
+ public int findElementsByTypeCount(String token, String type,
+ boolean onlyLatest) throws Exception {
+ // TODO how to filter without losing pagination?
+ return super.findElementsByTypeCount(token, type, onlyLatest);
}
@Override
- public int findElementsByTypeCount(String type, boolean onlyLatest)
+ public MetaDataEntity[] findFullText(String token, String query,
+ boolean onlyLatest, int indexStart, int count, int dateOrder)
throws Exception {
- // TODO Auto-generated method stub
- return super.findElementsByTypeCount(type, onlyLatest);
- }
-
- @Override
- public MetaDataEntity[] findFullText(String query, boolean onlyLatest,
- int indexStart, int count, int dateOrder) throws Exception {
- // TODO Auto-generated method stub
- return super.findFullText(query, onlyLatest, indexStart, count,
+ // TODO how to filter without losing pagination?
+ return super.findFullText(token, query, onlyLatest, indexStart, count,
dateOrder);
}
@Override
- public int findFullTextCount(String query, boolean onlyLatest)
+ public int findFullTextCount(String token, String query, boolean onlyLatest)
throws Exception {
- // TODO Auto-generated method stub
- return super.findFullTextCount(query, onlyLatest);
+ // TODO how to filter without losing pagination?
+ return super.findFullTextCount(token, query, onlyLatest);
}
@Override
- public MetaDataEntity getMetadata(String uuid, Version version)
+ public MetaDataEntity getMetadata(String token, String uuid, Version version)
throws Exception {
- // TODO Auto-generated method stub
- return super.getMetadata(uuid, version);
+ MetaDataEntity mde = null;
+ Permission permission = credentialManager.getPermission(token, uuid);
+ if (permission.isCanRead()) {
+ mde = super.getMetadata(token, uuid, version);
+ }
+ return mde;
}
@Override
- public MetaDataEntity getMetadata(String uuid) throws Exception {
- // TODO Auto-generated method stub
- return super.getMetadata(uuid);
+ public MetaDataEntity getMetadata(String token, String uuid)
+ throws Exception {
+ MetaDataEntity mde = null;
+ Permission permission = credentialManager.getPermission(token, uuid);
+ if (permission.isCanRead()) {
+ mde = super.getMetadata(token, uuid);
+ }
+ return mde;
}
@Override
- public List<Version> getVersions(String uuid) throws Exception {
- // TODO Auto-generated method stub
- return super.getVersions(uuid);
- }
-
- @Override
- public InputStream retrieveData(MetaDataEntity entity, String field)
+ public List<Version> getVersions(String token, String uuid)
throws Exception {
- // TODO Auto-generated method stub
- return super.retrieveData(entity, field);
+ List<Version> versions = null;
+ Permission permission = credentialManager.getPermission(token, uuid);
+ if (permission.isCanRead()) {
+ versions = super.getVersions(token, uuid);
+ }
+ return versions;
}
@Override
- public InputStream retrieveTempData(String id) throws Exception {
- // TODO Auto-generated method stub
- return super.retrieveTempData(id);
+ public InputStream retrieveData(String token, MetaDataEntity entity,
+ String field) throws Exception {
+ InputStream stream = null;
+ Permission permission = credentialManager.getPermission(token, entity
+ .getUuid());
+ if (permission.isCanRead()) {
+ stream = super.retrieveData(token, entity, field);
+ }
+ return stream;
}
@Override
- public void saveElement(MetaDataEntity element,
+ public void saveElement(String token, MetaDataEntity element,
Map<String, InputStream> attachments) throws Exception {
- // TODO Auto-generated method stub
- super.saveElement(element, attachments);
+ Permission permission = credentialManager.getPermission(token, element
+ .getUuid());
+ if (permission.isCanWrite()) {
+ super.saveElement(token, element, attachments);
+ credentialManager.saveElement(token, element.getUuid());
+ }
}
- @Override
- public String storeTempData(InputStream stream) throws Exception {
- // TODO Auto-generated method stub
- return super.storeTempData(stream);
- }
-
}
Modified: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java
===================================================================
--- trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java 2008-01-22 16:32:43 UTC (rev 418)
+++ trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java 2008-01-22 18:37:33 UTC (rev 419)
@@ -39,7 +39,7 @@
* Attachments related
* @throws Exception
*/
- public abstract void saveElement(MetaDataEntity element,
+ public abstract void saveElement(String token, MetaDataEntity element,
Map<String, InputStream> attachments) throws Exception;
/**
@@ -50,7 +50,7 @@
* @return The element
* @throws Exception
*/
- public abstract MetaDataEntity getMetadata(String uuid) throws Exception;
+ public abstract MetaDataEntity getMetadata(String token, String uuid) throws Exception;
/**
* Retrieve versions of an element<br>
@@ -62,7 +62,7 @@
*
* @throws Exception
*/
- public abstract List<Version> getVersions(String uuid) throws Exception;
+ public abstract List<Version> getVersions(String token, String uuid) throws Exception;
/**
* Retrieve an element in a specific version
@@ -72,7 +72,7 @@
* @return
* @throws Exception
*/
- public abstract MetaDataEntity getMetadata(String uuid, Version version)
+ public abstract MetaDataEntity getMetadata(String token, String uuid, Version version)
throws Exception;
/**
@@ -85,7 +85,7 @@
* @return Data stream
* @throws Exception
*/
- public abstract InputStream retrieveData(MetaDataEntity entity, String field)
+ public abstract InputStream retrieveData(String token, MetaDataEntity entity, String field)
throws Exception;
/**
@@ -96,7 +96,7 @@
* @return
* @throws Exception
*/
- public abstract int findFullTextCount(String query, boolean onlyLatest)
+ public abstract int findFullTextCount(String token, String query, boolean onlyLatest)
throws Exception;
/**
@@ -110,7 +110,7 @@
* @return
* @throws Exception
*/
- public abstract MetaDataEntity[] findFullText(String query,
+ public abstract MetaDataEntity[] findFullText(String token, String query,
boolean onlyLatest, int indexStart, int count, int dateOrder)
throws Exception;
@@ -125,7 +125,7 @@
* @return
* @throws Exception
*/
- public abstract MetaDataEntity[] findElementsByType(String type,
+ public abstract MetaDataEntity[] findElementsByType(String token, String type,
boolean onlyLatest, int start, int count, int dateOrder)
throws Exception;
@@ -137,7 +137,7 @@
* @return
* @throws Exception
*/
- public abstract int findElementsByTypeCount(String type, boolean onlyLatest)
+ public abstract int findElementsByTypeCount(String token, String type, boolean onlyLatest)
throws Exception;
/**
@@ -146,7 +146,7 @@
* @param uuid
* @throws Exception
*/
- public abstract void deleteElements(String uuid) throws Exception;
+ public abstract void deleteElements(String token, String uuid) throws Exception;
/**
* Delete one element
@@ -155,7 +155,7 @@
* @param version
* @throws Exception
*/
- public abstract void deleteElement(String uuid, Version version)
+ public abstract void deleteElement(String token, String uuid, Version version)
throws Exception;
/**
Modified: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java
===================================================================
--- trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java 2008-01-22 16:32:43 UTC (rev 418)
+++ trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java 2008-01-22 18:37:33 UTC (rev 419)
@@ -81,7 +81,7 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#saveElement(fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity, java.util.Map)
*/
- public void saveElement(MetaDataEntity element,
+ public void saveElement(String token, MetaDataEntity element,
Map<String, InputStream> attachments) throws Exception {
// Save all attachments in system
@@ -124,7 +124,7 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#getMetadata(java.lang.String)
*/
- public MetaDataEntity getMetadata(String uuid) throws Exception {
+ public MetaDataEntity getMetadata(String token, String uuid) throws Exception {
MetaDataEntity mde = null;
Set<MetaDataEntity> set = database.findElementsById(uuid, true);
if (!set.isEmpty()) {
@@ -136,14 +136,14 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#getVersions(java.lang.String)
*/
- public List<Version> getVersions(String uuid) throws Exception {
+ public List<Version> getVersions(String token, String uuid) throws Exception {
return database.getVersions(uuid);
}
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#getMetadata(java.lang.String, fr.cemagref.simexplorer.is.entities.metadata.Version)
*/
- public MetaDataEntity getMetadata(String uuid, Version version)
+ public MetaDataEntity getMetadata(String token, String uuid, Version version)
throws Exception {
MetaDataEntity mde = database.getElement(uuid, version);
return mde;
@@ -152,7 +152,7 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#retrieveData(fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity, java.lang.String)
*/
- public InputStream retrieveData(MetaDataEntity entity, String field)
+ public InputStream retrieveData(String token, MetaDataEntity entity, String field)
throws Exception {
InputStream result = attachmentHandler.retrieveData(entity, field);
return result;
@@ -161,7 +161,7 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findFullTextCount(java.lang.String, boolean)
*/
- public int findFullTextCount(String query, boolean onlyLatest)
+ public int findFullTextCount(String token, String query, boolean onlyLatest)
throws Exception {
return database.findElementsByContentSearchCount(query, onlyLatest);
}
@@ -169,7 +169,7 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findFullText(java.lang.String, boolean, int, int, int)
*/
- public MetaDataEntity[] findFullText(String query, boolean onlyLatest,
+ public MetaDataEntity[] findFullText(String token, String query, boolean onlyLatest,
int indexStart, int count, int dateOrder) throws Exception {
MetaDataEntity[] result = database.findElementsByContentSearch(query,
onlyLatest, indexStart, count, dateOrder).toArray(
@@ -180,7 +180,7 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findElementsByType(java.lang.String, boolean, int, int, int)
*/
- public MetaDataEntity[] findElementsByType(String type, boolean onlyLatest,
+ public MetaDataEntity[] findElementsByType(String token, String type, boolean onlyLatest,
int start, int count, int dateOrder) throws Exception {
MetaDataEntity[] result = database.findElementsByType(type, onlyLatest,
start, count, dateOrder).toArray(new MetaDataEntity[0]);
@@ -190,7 +190,7 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findElementsByTypeCount(java.lang.String, boolean)
*/
- public int findElementsByTypeCount(String type, boolean onlyLatest)
+ public int findElementsByTypeCount(String token, String type, boolean onlyLatest)
throws Exception {
return database.findElementsByTypeCount(type, onlyLatest);
}
@@ -200,18 +200,18 @@
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#deleteElements(java.lang.String)
*/
- public void deleteElements(String uuid) throws Exception {
- List<Version> versions = getVersions(uuid);
+ public void deleteElements(String token, String uuid) throws Exception {
+ List<Version> versions = getVersions(token, uuid);
for (Version version : versions) {
- deleteElement(uuid, version);
+ deleteElement(token, uuid, version);
}
}
/* (non-Javadoc)
* @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#deleteElement(java.lang.String, fr.cemagref.simexplorer.is.entities.metadata.Version)
*/
- public void deleteElement(String uuid, Version version) throws Exception {
- MetaDataEntity element = getMetadata(uuid, version);
+ public void deleteElement(String token, String uuid, Version version) throws Exception {
+ MetaDataEntity element = getMetadata(token, uuid, version);
Map<String, ContentType> attachments = element.getAttachments();
for (Map.Entry<String, ContentType> entry : attachments.entrySet()) {
attachmentHandler.deleteData(element, entry.getKey());
1
0
r418 - in trunk: simexplorer-is-security/src/java/META-INF simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test simexplorer-is-service/src/java/fr/cemagref/simexplorer/is simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine sime
by glandais@users.labs.libre-entreprise.org 22 Jan '08
by glandais@users.labs.libre-entreprise.org 22 Jan '08
22 Jan '08
Author: glandais
Date: 2008-01-22 16:32:43 +0000 (Tue, 22 Jan 2008)
New Revision: 418
Added:
trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/
trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/
trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java
Removed:
trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java
Modified:
trunk/simexplorer-is-security/src/java/META-INF/persistence.xml
trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java
trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationService.java
trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationServiceImpl.java
trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityEqualsTestCase.java
trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserList.java
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/AppModule.java
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/GroupValueEncoder.java
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/UserValueEncoder.java
trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml
trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml
trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.properties
Log:
Secured service
Modified: trunk/simexplorer-is-security/src/java/META-INF/persistence.xml
===================================================================
--- trunk/simexplorer-is-security/src/java/META-INF/persistence.xml 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-security/src/java/META-INF/persistence.xml 2008-01-22 16:32:43 UTC (rev 418)
@@ -13,18 +13,18 @@
<mapping-file>META-INF/orm.xml</mapping-file>
<properties>
- <!-- logs SQL Hibernate -->
+ <!-- logs SQL Hibernate
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="use_sql_comments" value="true"/>
- <!-- -->
+ -->
<!-- le type de SGBD géré -->
<property name="hibernate.dialect"
value="org.hibernate.dialect.H2Dialect" />
<!-- recréation de toutes les tables (drop+create) au déploiement de l'unité de persistence -->
- <property name="hibernate.hbm2ddl.auto" value="create" />
+ <property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>
Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java
===================================================================
--- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java 2008-01-22 16:32:43 UTC (rev 418)
@@ -5,6 +5,7 @@
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
+import javax.persistence.Query;
import fr.cemagref.simexplorer.is.security.entities.Actor;
import fr.cemagref.simexplorer.is.security.entities.Group;
@@ -17,6 +18,26 @@
@PersistenceContext(unitName = "simexploreris-security")
private EntityManager em;
+ private Object getSingleResult(Query query) {
+ Object o;
+ try {
+ o = query.getSingleResult();
+ } catch (RuntimeException e) {
+ o = null;
+ }
+ return o;
+ }
+
+ private Object find(Class clazz, Object arg) {
+ Object o;
+ try {
+ o = em.find(clazz, arg);
+ } catch (RuntimeException e) {
+ o = null;
+ }
+ return o;
+ }
+
public void deleteGroup(Integer id) {
Group g = getGroup(id);
if (g != null) {
@@ -32,18 +53,20 @@
}
public Group getGroup(Integer id) {
- return em.find(Group.class, id);
+ Group g = (Group) find(Group.class, id);
+ return g;
}
public Group getGroup(String name) {
- Group group = (Group) em.createQuery(
+ Group g = (Group) getSingleResult(em.createQuery(
"select g from Group g where g.name=:name").setParameter(
- "name", name).getSingleResult();
- return group;
+ "name", name));
+ return g;
}
public User getUser(Integer id) {
- return em.find(User.class, id);
+ User u = (User) find(User.class, id);
+ return u;
}
public void saveGroup(Group group) {
@@ -64,9 +87,9 @@
public User getLoggedUser(String token) {
User loggedUser = null;
- LoginAction loginAction = (LoginAction) em.createQuery(
+ LoginAction loginAction = (LoginAction) getSingleResult(em.createQuery(
"select la from LoginAction la where la.token=:token")
- .setParameter("token", token).getSingleResult();
+ .setParameter("token", token));
if (loginAction != null) {
loggedUser = loginAction.getLoggedUser();
}
@@ -74,11 +97,11 @@
}
public User loginUser(String login, String passwordHash) {
- User user = (User) em
+ User user = (User) getSingleResult(em
.createQuery(
"select u from User u where u.login=:login and u.passwordHash=:passwordHash")
.setParameter("login", login).setParameter("passwordHash",
- passwordHash).getSingleResult();
+ passwordHash));
return user;
}
@@ -87,18 +110,18 @@
}
public void deleteToken(String token) {
- LoginAction loginAction = (LoginAction) em.createQuery(
+ LoginAction loginAction = (LoginAction) getSingleResult(em.createQuery(
"select la from LoginAction la where la.token=:token")
- .setParameter("token", token).getSingleResult();
+ .setParameter("token", token));
if (loginAction != null) {
em.remove(loginAction);
}
}
public User getUser(String login) {
- User user = (User) em.createQuery(
+ User user = (User) getSingleResult(em.createQuery(
"select u from User u where u.login=:login").setParameter(
- "login", login).getSingleResult();
+ "login", login));
return user;
}
Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationService.java
===================================================================
--- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationService.java 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationService.java 2008-01-22 16:32:43 UTC (rev 418)
@@ -8,53 +8,54 @@
@Remote
public interface AuthenticationService {
- public User requestAccount(String login, String mail);
+ public String loginUser(String login, String password);
- public User saveUser(String login, String mail);
+ public void closeSessionTimer(String token);
- public void resetPassword(String login);
+ public User requestAccount(String login, String mail);
- public void changePassword(String login, String password);
+ public User saveUser(String token, String login, String mail);
- public User getUser(Integer id);
+ public void resetPassword(String token, String login);
- public User getUser(String login);
+ public void changePassword(String token, String login, String password);
- public User updateUser(User user);
+ public User getUser(String token, Integer id);
- public void deleteUser(Integer id);
+ public User getUser(String token, String login);
- public User[] getUsers();
+ public User updateUser(String token, User user);
- public User[] getUsersOfGroup(Group group);
+ public void deleteUser(String token, Integer id);
- public void setUsersOfGroup(Group group, Integer[] usersInGroup);
+ public User[] getUsers(String token);
- public void setGroupsOfGroup(Group group, Integer[] groupsIds);
+ public User[] getUsersOfGroup(String token, Group group);
- public Group[] getGroupsOfUser(User user);
+ public void setUsersOfGroup(String token, Group group,
+ Integer[] usersInGroup);
- public Group[] getGroupsOfGroup(Group group);
+ public void setGroupsOfGroup(String token, Group group, Integer[] groupsIds);
- public void setGroupsOfUser(User user, Integer[] groupsIds);
+ public Group[] getGroupsOfUser(String token, User user);
- public Group saveGroup(String name, User owner);
+ public Group[] getGroupsOfGroup(String token, Group group);
- public Group getGroup(Integer id);
+ public void setGroupsOfUser(String token, User user, Integer[] groupsIds);
- public Group getGroup(String name);
+ public Group saveGroup(String token, String name, User owner);
- public Group updateGroup(Group group);
+ public Group getGroup(String token, Integer id);
- public void deleteGroup(Integer id);
+ public Group getGroup(String token, String name);
- public Group[] getGroups();
+ public Group updateGroup(String token, Group group);
- public Group[] getGroupsOwnedBy(User user);
+ public void deleteGroup(String token, Integer id);
- public String loginUser(String login, String password);
+ public Group[] getGroups(String token);
- public void closeSessionTimer(String token);
+ public Group[] getGroupsOwnedBy(String token, User user);
public User getLoggedUser(String token);
Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationServiceImpl.java
===================================================================
--- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationServiceImpl.java 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationServiceImpl.java 2008-01-22 16:32:43 UTC (rev 418)
@@ -6,6 +6,7 @@
import java.util.List;
import java.util.UUID;
+import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Remote;
@@ -16,6 +17,7 @@
import javax.ejb.TimerService;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
+import javax.interceptor.InvocationContext;
import org.jboss.annotation.ejb.RemoteBinding;
@@ -36,6 +38,8 @@
@Resource
private SessionContext sessionContext;
+ private static boolean superAdminCheck = false;
+
private void sendMail(String login, String mail, String password) {
/*
javax.mail.Session mailSession = (javax.mail.Session) new InitialContext().lookup("java:/Mail");
@@ -83,40 +87,40 @@
}
}
- public void deleteGroup(Integer id) {
+ public void deleteGroup(String token, Integer id) {
dao.deleteGroup(id);
}
- public void deleteUser(Integer id) {
+ public void deleteUser(String token, Integer id) {
dao.deleteUser(id);
}
- public Group getGroup(Integer id) {
+ public Group getGroup(String token, Integer id) {
return dao.getGroup(id);
}
- public Group getGroup(String name) {
+ public Group getGroup(String token, String name) {
return dao.getGroup(name);
- }
+ }
- public User getUser(Integer id) {
+ public User getUser(String token, Integer id) {
return dao.getUser(id);
}
- public User getUser(String login) {
+ public User getUser(String token, String login) {
return dao.getUser(login);
}
- public Group saveGroup(String name, User owner) {
+ public Group saveGroup(String token, String name, User owner) {
Group group = new Group();
group.setName(name);
group.setOwner(owner);
dao.saveGroup(group);
- group = getGroup(group.getId());
+ group = getGroup(token, group.getId());
return group;
}
- public User saveUser(String login, String mail) {
+ public User saveUser(String token, String login, String mail) {
User user = new User();
user.setLogin(login);
user.setMail(mail);
@@ -125,16 +129,17 @@
String passwordHash = computeHash(password);
user.setPasswordHash(passwordHash);
user.setAdmin(false);
+ user.setSuperAdmin(false);
dao.saveUser(user);
- user = getUser(user.getId());
+ user = getUser(token, user.getId());
return user;
}
- public Group updateGroup(Group group) {
+ public Group updateGroup(String token, Group group) {
return dao.updateGroup(group);
}
- public User updateUser(User user) {
+ public User updateUser(String token, User user) {
return dao.updateUser(user);
}
@@ -143,7 +148,25 @@
return loggedUser;
}
+ private void checkSuperAdmin() {
+ if (dao.getUser("superadmin") == null) {
+ User user = new User();
+ user.setLogin("superadmin");
+ user.setMail("");
+ String password = "password";
+ String passwordHash = computeHash(password);
+ user.setPasswordHash(passwordHash);
+ user.setAdmin(true);
+ user.setSuperAdmin(true);
+ dao.saveUser(user);
+ }
+ }
+
public String loginUser(String login, String password) {
+ if (!superAdminCheck) {
+ checkSuperAdmin();
+ superAdminCheck = true;
+ }
String token = null;
User loggedUser = dao.loginUser(login, computeHash(password));
if (loggedUser != null) {
@@ -159,10 +182,10 @@
public void closeSessionTimer(String token) {
// FIXME session length
- TimerService timerService = sessionContext.getTimerService();
- timerService.createTimer(10 * 60 * 1000, token);
+ TimerService timerService = sessionContext.getTimerService();
+ timerService.createTimer(10 * 60 * 1000, token);
}
-
+
@Timeout
public void timeoutHandler(Timer timer) {
String token = (String) timer.getInfo();
@@ -181,15 +204,15 @@
return user;
}
- public void changePassword(String login, String password) {
- User user = getUser(login);
+ public void changePassword(String token, String login, String password) {
+ User user = getUser(token, login);
String passwordHash = computeHash(password);
user.setPasswordHash(passwordHash);
dao.saveUser(user);
}
- public void resetPassword(String login) {
- User user = getUser(login);
+ public void resetPassword(String token, String login) {
+ User user = getUser(token, login);
String password = generatePassword();
sendMail(login, user.getMail(), password);
String passwordHash = computeHash(password);
@@ -197,25 +220,26 @@
dao.saveUser(user);
}
- public Group[] getGroups() {
+ public Group[] getGroups(String token) {
List<Group> groups = dao.getGroups();
Group[] result = groups.toArray(new Group[0]);
return result;
}
- public Group[] getGroupsOwnedBy(User user) {
+ public Group[] getGroupsOwnedBy(String token, User user) {
return dao.getGroupsOwnedBy(user).toArray(new Group[0]);
}
- public User[] getUsers() {
+ public User[] getUsers(String token) {
return dao.getUsers().toArray(new User[0]);
}
- public User[] getUsersOfGroup(Group group) {
+ public User[] getUsersOfGroup(String token, Group group) {
return dao.getUsersOfGroup(group).toArray(new User[0]);
}
- public void setUsersOfGroup(Group group, Integer[] usersInGroup) {
+ public void setUsersOfGroup(String token, Group group,
+ Integer[] usersInGroup) {
List<Integer> newUsers = new ArrayList<Integer>();
for (int i = 0; i < usersInGroup.length; i++) {
newUsers.add(usersInGroup[i]);
@@ -254,7 +278,7 @@
}
}
- public void setGroupsOfUser(User user, Integer[] groupsIds) {
+ public void setGroupsOfUser(String token, User user, Integer[] groupsIds) {
User realUser = dao.getUser(user.getId());
realUser.getGroups().clear();
for (int i = 0; i < groupsIds.length; i++) {
@@ -265,15 +289,15 @@
}
- public Group[] getGroupsOfUser(User user) {
+ public Group[] getGroupsOfUser(String token, User user) {
return dao.getGroupsOfUser(user).toArray(new Group[0]);
}
- public Group[] getGroupsOfGroup(Group group) {
+ public Group[] getGroupsOfGroup(String token, Group group) {
return dao.getGroupsOfGroup(group).toArray(new Group[0]);
}
- public void setGroupsOfGroup(Group group, Integer[] groupsIds) {
+ public void setGroupsOfGroup(String token, Group group, Integer[] groupsIds) {
Group realGroup = dao.getGroup(group.getId());
realGroup.getGroups().clear();
for (int i = 0; i < groupsIds.length; i++) {
@@ -283,5 +307,4 @@
dao.updateGroup(realGroup);
}
-
}
Modified: trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityEqualsTestCase.java
===================================================================
--- trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityEqualsTestCase.java 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityEqualsTestCase.java 2008-01-22 16:32:43 UTC (rev 418)
@@ -28,8 +28,9 @@
}
public void testHashCode() {
- User[] users1 = authenticationService.getUsers();
- User[] users2 = authenticationService.getUsers();
+ String token = authenticationService.loginUser("superadmin", "password");
+ User[] users1 = authenticationService.getUsers(token);
+ User[] users2 = authenticationService.getUsers(token);
for (int i = 0; i < users1.length; i++) {
User user1 = users1[i];
User user2 = users2[i];
Modified: trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java
===================================================================
--- trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java 2008-01-22 16:32:43 UTC (rev 418)
@@ -36,39 +36,42 @@
System.out.println(group.getName());
}
*/
-
+ String token = authenticationService
+ .loginUser("superadmin", "password");
+
User[] simpleUsers = new User[20];
for (int i = 0; i < 20; i++) {
- simpleUsers[i] = authenticationService.saveUser("user" + i,
+ simpleUsers[i] = authenticationService.saveUser(token, "user" + i,
"landais+simtest at codelutin.com");
simpleUsers[i].setAdmin(false);
simpleUsers[i].setSuperAdmin(false);
- authenticationService.updateUser(simpleUsers[i]);
+ authenticationService.updateUser(token, simpleUsers[i]);
}
User[] adminUsers = new User[4];
Group[] groups = new Group[4];
for (int i = 0; i < 4; i++) {
- adminUsers[i] = authenticationService.saveUser("admin" + i,
+ adminUsers[i] = authenticationService.saveUser(token, "admin" + i,
"landais+simtest at codelutin.com");
adminUsers[i].setAdmin(true);
adminUsers[i].setSuperAdmin(false);
- authenticationService.updateUser(adminUsers[i]);
+ authenticationService.updateUser(token, adminUsers[i]);
- groups[i] = authenticationService.saveGroup("group" + i,
+ groups[i] = authenticationService.saveGroup(token, "group" + i,
adminUsers[i]);
for (int j = i * 4; j < (i * 4 + 5); j++) {
simpleUsers[j].getGroups().add(groups[i]);
- authenticationService.updateUser(simpleUsers[j]);
+ authenticationService.updateUser(token, simpleUsers[j]);
}
}
- User superAdminUser = authenticationService.saveUser("superadmin",
- "landais+simtest at codelutin.com");
+ /*
+ User superAdminUser = authenticationService.saveUser(token,
+ "superadmin", "landais+simtest at codelutin.com");
superAdminUser.setAdmin(true);
superAdminUser.setSuperAdmin(true);
- authenticationService.updateUser(superAdminUser);
-
+ authenticationService.updateUser(token, superAdminUser);
+ */
/*
User[] users = new User[10];
Copied: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java (from rev 415, trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java)
===================================================================
--- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java (rev 0)
+++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java 2008-01-22 16:32:43 UTC (rev 418)
@@ -0,0 +1,105 @@
+package fr.cemagref.simexplorer.is.storage.engine;
+
+import java.io.InputStream;
+import java.util.List;
+import java.util.Map;
+
+import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity;
+import fr.cemagref.simexplorer.is.entities.metadata.Version;
+
+public class StorageEngineSecuImpl extends StorageEngineImpl {
+
+ @Override
+ public void deleteElement(String uuid, Version version) throws Exception {
+ // TODO Auto-generated method stub
+ super.deleteElement(uuid, version);
+ }
+
+ @Override
+ public void deleteElements(String uuid) throws Exception {
+ // TODO Auto-generated method stub
+ super.deleteElements(uuid);
+ }
+
+ @Override
+ public void deleteTempData(String id) throws Exception {
+ // TODO Auto-generated method stub
+ super.deleteTempData(id);
+ }
+
+ @Override
+ public MetaDataEntity[] findElementsByType(String type, boolean onlyLatest,
+ int start, int count, int dateOrder) throws Exception {
+ // TODO Auto-generated method stub
+ return super.findElementsByType(type, onlyLatest, start, count,
+ dateOrder);
+ }
+
+ @Override
+ public int findElementsByTypeCount(String type, boolean onlyLatest)
+ throws Exception {
+ // TODO Auto-generated method stub
+ return super.findElementsByTypeCount(type, onlyLatest);
+ }
+
+ @Override
+ public MetaDataEntity[] findFullText(String query, boolean onlyLatest,
+ int indexStart, int count, int dateOrder) throws Exception {
+ // TODO Auto-generated method stub
+ return super.findFullText(query, onlyLatest, indexStart, count,
+ dateOrder);
+ }
+
+ @Override
+ public int findFullTextCount(String query, boolean onlyLatest)
+ throws Exception {
+ // TODO Auto-generated method stub
+ return super.findFullTextCount(query, onlyLatest);
+ }
+
+ @Override
+ public MetaDataEntity getMetadata(String uuid, Version version)
+ throws Exception {
+ // TODO Auto-generated method stub
+ return super.getMetadata(uuid, version);
+ }
+
+ @Override
+ public MetaDataEntity getMetadata(String uuid) throws Exception {
+ // TODO Auto-generated method stub
+ return super.getMetadata(uuid);
+ }
+
+ @Override
+ public List<Version> getVersions(String uuid) throws Exception {
+ // TODO Auto-generated method stub
+ return super.getVersions(uuid);
+ }
+
+ @Override
+ public InputStream retrieveData(MetaDataEntity entity, String field)
+ throws Exception {
+ // TODO Auto-generated method stub
+ return super.retrieveData(entity, field);
+ }
+
+ @Override
+ public InputStream retrieveTempData(String id) throws Exception {
+ // TODO Auto-generated method stub
+ return super.retrieveTempData(id);
+ }
+
+ @Override
+ public void saveElement(MetaDataEntity element,
+ Map<String, InputStream> attachments) throws Exception {
+ // TODO Auto-generated method stub
+ super.saveElement(element, attachments);
+ }
+
+ @Override
+ public String storeTempData(InputStream stream) throws Exception {
+ // TODO Auto-generated method stub
+ return super.storeTempData(stream);
+ }
+
+}
Deleted: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java
===================================================================
--- trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java 2008-01-22 16:32:43 UTC (rev 418)
@@ -1,105 +0,0 @@
-package fr.cemagref.simexplorer.is.storage.engine;
-
-import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
-
-import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity;
-import fr.cemagref.simexplorer.is.entities.metadata.Version;
-
-public class StorageEngineSecuImpl extends StorageEngineImpl {
-
- @Override
- public void deleteElement(String uuid, Version version) throws Exception {
- // TODO Auto-generated method stub
- super.deleteElement(uuid, version);
- }
-
- @Override
- public void deleteElements(String uuid) throws Exception {
- // TODO Auto-generated method stub
- super.deleteElements(uuid);
- }
-
- @Override
- public void deleteTempData(String id) throws Exception {
- // TODO Auto-generated method stub
- super.deleteTempData(id);
- }
-
- @Override
- public MetaDataEntity[] findElementsByType(String type, boolean onlyLatest,
- int start, int count, int dateOrder) throws Exception {
- // TODO Auto-generated method stub
- return super.findElementsByType(type, onlyLatest, start, count,
- dateOrder);
- }
-
- @Override
- public int findElementsByTypeCount(String type, boolean onlyLatest)
- throws Exception {
- // TODO Auto-generated method stub
- return super.findElementsByTypeCount(type, onlyLatest);
- }
-
- @Override
- public MetaDataEntity[] findFullText(String query, boolean onlyLatest,
- int indexStart, int count, int dateOrder) throws Exception {
- // TODO Auto-generated method stub
- return super.findFullText(query, onlyLatest, indexStart, count,
- dateOrder);
- }
-
- @Override
- public int findFullTextCount(String query, boolean onlyLatest)
- throws Exception {
- // TODO Auto-generated method stub
- return super.findFullTextCount(query, onlyLatest);
- }
-
- @Override
- public MetaDataEntity getMetadata(String uuid, Version version)
- throws Exception {
- // TODO Auto-generated method stub
- return super.getMetadata(uuid, version);
- }
-
- @Override
- public MetaDataEntity getMetadata(String uuid) throws Exception {
- // TODO Auto-generated method stub
- return super.getMetadata(uuid);
- }
-
- @Override
- public List<Version> getVersions(String uuid) throws Exception {
- // TODO Auto-generated method stub
- return super.getVersions(uuid);
- }
-
- @Override
- public InputStream retrieveData(MetaDataEntity entity, String field)
- throws Exception {
- // TODO Auto-generated method stub
- return super.retrieveData(entity, field);
- }
-
- @Override
- public InputStream retrieveTempData(String id) throws Exception {
- // TODO Auto-generated method stub
- return super.retrieveTempData(id);
- }
-
- @Override
- public void saveElement(MetaDataEntity element,
- Map<String, InputStream> attachments) throws Exception {
- // TODO Auto-generated method stub
- super.saveElement(element, attachments);
- }
-
- @Override
- public String storeTempData(InputStream stream) throws Exception {
- // TODO Auto-generated method stub
- return super.storeTempData(stream);
- }
-
-}
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java 2008-01-22 16:32:43 UTC (rev 418)
@@ -31,10 +31,12 @@
@Persist
private List<Group> groupsInGroup;
- private static final UserValueEncoder userEncoder = new UserValueEncoder();
-
- private static final GroupValueEncoder groupEncoder = new GroupValueEncoder();
-
+ @Persist
+ private UserValueEncoder userEncoder;
+
+ @Persist
+ private GroupValueEncoder groupEncoder;
+
void setup(int groupId) throws Exception {
this.usersInGroup = new ArrayList<User>();
this.groupsInGroup = new ArrayList<Group>();
@@ -42,26 +44,28 @@
this.group = new Group();
this.group.setOwner(getUserLogged());
} else {
- this.group = RemoteSecurityService.getAuthentificationService().getGroup(
- groupId);
+ this.group = RemoteSecurityService.getAuthentificationService()
+ .getGroup(getToken(), groupId);
User[] users = RemoteSecurityService.getAuthentificationService()
- .getUsersOfGroup(group);
+ .getUsersOfGroup(getToken(), group);
this.usersInGroup.addAll(Arrays.asList(users));
Group[] groups = RemoteSecurityService.getAuthentificationService()
- .getGroupsOfGroup(group);
+ .getGroupsOfGroup(getToken(), group);
this.groupsInGroup.addAll(Arrays.asList(groups));
}
+ userEncoder = new UserValueEncoder(getToken());
+ groupEncoder = new GroupValueEncoder(getToken());
}
public Object onSuccess() throws Exception {
if (group.getId() == null) {
- group = RemoteSecurityService.getAuthentificationService().saveGroup(
- group.getName(), getUserLogged());
+ group = RemoteSecurityService.getAuthentificationService()
+ .saveGroup(getToken(), group.getName(), getUserLogged());
} else {
- group = RemoteSecurityService.getAuthentificationService().updateGroup(
- group);
+ group = RemoteSecurityService.getAuthentificationService()
+ .updateGroup(getToken(), group);
}
Integer[] usersIds = new Integer[usersInGroup.size()];
@@ -70,8 +74,8 @@
usersIds[i] = user.getId();
i++;
}
- RemoteSecurityService.getAuthentificationService().setUsersOfGroup(group,
- usersIds);
+ RemoteSecurityService.getAuthentificationService().setUsersOfGroup(
+ getToken(), group, usersIds);
Integer[] groupsIds = new Integer[groupsInGroup.size()];
i = 0;
@@ -79,8 +83,8 @@
groupsIds[i] = group.getId();
i++;
}
- RemoteSecurityService.getAuthentificationService().setGroupsOfGroup(group,
- groupsIds);
+ RemoteSecurityService.getAuthentificationService().setGroupsOfGroup(
+ getToken(), group, groupsIds);
return groupList;
}
@@ -90,14 +94,16 @@
}
public List<User> getUsers() throws Exception {
- User[] users = RemoteSecurityService.getAuthentificationService().getUsers();
+ User[] users = RemoteSecurityService.getAuthentificationService()
+ .getUsers(getToken());
List<User> result = new ArrayList<User>();
result.addAll(Arrays.asList(users));
return result;
}
public List<Group> getGroups() throws Exception {
- Group[] groups = RemoteSecurityService.getAuthentificationService().getGroups();
+ Group[] groups = RemoteSecurityService.getAuthentificationService()
+ .getGroups(getToken());
List<Group> result = new ArrayList<Group>();
result.addAll(Arrays.asList(groups));
return result;
@@ -106,21 +112,20 @@
public ValueEncoder getUserEncoder() {
return userEncoder;
}
-
+
public ValueEncoder getGroupEncoder() {
return groupEncoder;
}
-
+
public boolean getSuperAdmin() {
return isUserSuperAdmin();
}
-
+
public List<User> getUsersInGroup() throws NamingException {
return usersInGroup;
}
- public void setUsersInGroup(List<User> usersInGroup)
- throws NamingException {
+ public void setUsersInGroup(List<User> usersInGroup) throws NamingException {
this.usersInGroup = usersInGroup;
}
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java 2008-01-22 16:32:43 UTC (rev 418)
@@ -47,16 +47,16 @@
public Group[] getGroups() throws Exception {
Group[] groups;
if (isUserSuperAdmin()) {
- groups = RemoteSecurityService.getAuthentificationService().getGroups();
+ groups = RemoteSecurityService.getAuthentificationService().getGroups(getToken());
} else {
groups = RemoteSecurityService.getAuthentificationService()
- .getGroupsOwnedBy(getUserLogged());
+ .getGroupsOwnedBy(getToken(),getUserLogged());
}
return groups;
}
public Object onActionFromDelete(Integer context) throws Exception {
- RemoteSecurityService.getAuthentificationService().deleteGroup(context);
+ RemoteSecurityService.getAuthentificationService().deleteGroup(getToken(),context);
return null;
}
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java 2008-01-22 16:32:43 UTC (rev 418)
@@ -4,9 +4,14 @@
import java.util.List;
import java.util.Arrays;
+import org.apache.tapestry.ComponentResources;
import org.apache.tapestry.ValueEncoder;
import org.apache.tapestry.annotations.InjectPage;
import org.apache.tapestry.annotations.Persist;
+import org.apache.tapestry.annotations.Retain;
+import org.apache.tapestry.beaneditor.BeanModel;
+import org.apache.tapestry.ioc.annotations.Inject;
+import org.apache.tapestry.services.BeanModelSource;
import fr.cemagref.simexplorer.is.security.entities.Group;
import fr.cemagref.simexplorer.is.security.entities.User;
@@ -25,28 +30,54 @@
@Persist
private List<Group> groupsOfUser;
- private static final GroupValueEncoder groupEncoder = new GroupValueEncoder();
+ @Persist
+ private GroupValueEncoder groupEncoder;
+ @Retain
+ private BeanModel groupModel;
+
+ @Inject
+ private BeanModelSource beanModelSource;
+
+ @Inject
+ private ComponentResources resources;
+
+ private Group group;
+
+ void pageLoaded() {
+ groupModel = beanModelSource.create(Group.class, true, resources);
+ List<String> wantedProperties = new ArrayList<String>();
+ wantedProperties.add("name");
+ List<String> properties = groupModel.getPropertyNames();
+ for (String property : properties) {
+ if (!wantedProperties.contains(property)) {
+ groupModel = groupModel.remove(property);
+ }
+ }
+ }
+
void setup(int groupId) throws Exception {
this.groupsOfUser = new ArrayList<Group>();
if (groupId == -1) {
this.user = new User();
} else {
- this.user = RemoteSecurityService.getAuthentificationService().getUser(
- groupId);
+ this.user = RemoteSecurityService.getAuthentificationService()
+ .getUser(getToken(), groupId);
Group[] groups = RemoteSecurityService.getAuthentificationService()
- .getGroupsOfUser(this.user);
+ .getGroupsOfUser(getToken(), this.user);
groupsOfUser.addAll(Arrays.asList(groups));
}
+ groupEncoder = new GroupValueEncoder(getToken());
}
public Object onSuccess() throws Exception {
if (user.getId() == null) {
user = RemoteSecurityService.getAuthentificationService().saveUser(
- user.getLogin(), user.getMail());
+ getToken(), user.getLogin(), user.getMail());
} else {
- user = RemoteSecurityService.getAuthentificationService().updateUser(user);
+ user = RemoteSecurityService.getAuthentificationService()
+ .updateUser(getToken(), user);
}
Integer[] groupsIds = new Integer[groupsOfUser.size()];
@@ -55,19 +86,25 @@
groupsIds[i] = group.getId();
i++;
}
- RemoteSecurityService.getAuthentificationService().setGroupsOfUser(user,
- groupsIds);
+ RemoteSecurityService.getAuthentificationService().setGroupsOfUser(
+ getToken(), user, groupsIds);
return userList;
}
public List<Group> getGroups() throws Exception {
- Group[] groups = RemoteSecurityService.getAuthentificationService().getGroups();
+ Group[] groups = RemoteSecurityService.getAuthentificationService()
+ .getGroups(getToken());
List<Group> result = new ArrayList<Group>();
result.addAll(Arrays.asList(groups));
return result;
}
+ public Group[] getOwnedGroups() throws Exception {
+ return RemoteSecurityService.getAuthentificationService()
+ .getGroupsOwnedBy(getToken(), user);
+ }
+
public ValueEncoder getGroupEncoder() {
return groupEncoder;
}
@@ -100,4 +137,16 @@
this.groupsOfUser = groupsOfUser;
}
+ public BeanModel getGroupModel() {
+ return groupModel;
+ }
+
+ public Group getGroup() {
+ return group;
+ }
+
+ public void setGroup(Group group) {
+ this.group = group;
+ }
+
}
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserList.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserList.java 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserList.java 2008-01-22 16:32:43 UTC (rev 418)
@@ -50,12 +50,12 @@
public User[] getUsers() throws Exception {
User[] users;
- users = RemoteSecurityService.getAuthentificationService().getUsers();
+ users = RemoteSecurityService.getAuthentificationService().getUsers(getToken());
return users;
}
public Object onActionFromDelete(Integer context) throws Exception {
- RemoteSecurityService.getAuthentificationService().deleteUser(context);
+ RemoteSecurityService.getAuthentificationService().deleteUser(getToken(),context);
return null;
}
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/AppModule.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/AppModule.java 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/AppModule.java 2008-01-22 16:32:43 UTC (rev 418)
@@ -38,10 +38,12 @@
public static void contributeValueEncoderSource(
MappedConfiguration<Class, ValueEncoderFactory> configuration) {
+ /*
configuration.add(User.class, new GenericValueEncoderFactory<User>(
new UserValueEncoder()));
configuration.add(Group.class, new GenericValueEncoderFactory<Group>(
new GroupValueEncoder()));
+ */
}
/**
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/GroupValueEncoder.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/GroupValueEncoder.java 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/GroupValueEncoder.java 2008-01-22 16:32:43 UTC (rev 418)
@@ -6,6 +6,13 @@
public class GroupValueEncoder implements ValueEncoder<Group> {
+ private String token;
+
+ public GroupValueEncoder(String token) {
+ super();
+ this.token = token;
+ }
+
public String toClient(Group arg0) {
return Integer.toString(arg0.getId());
}
@@ -13,7 +20,8 @@
public Group toValue(String arg0) {
Group group = null;
try {
- group = RemoteSecurityService.getAuthentificationService().getGroup(Integer.decode(arg0));
+ group = RemoteSecurityService.getAuthentificationService()
+ .getGroup(token, Integer.decode(arg0));
} catch (Exception e) {
// TODO: handle exception
}
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/UserValueEncoder.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/UserValueEncoder.java 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/UserValueEncoder.java 2008-01-22 16:32:43 UTC (rev 418)
@@ -6,6 +6,13 @@
public class UserValueEncoder implements ValueEncoder<User> {
+ private String token;
+
+ public UserValueEncoder(String token) {
+ super();
+ this.token = token;
+ }
+
public String toClient(User arg0) {
return Integer.toString(arg0.getId());
}
@@ -14,7 +21,7 @@
User user = null;
try {
user = RemoteSecurityService.getAuthentificationService().getUser(
- Integer.decode(arg0));
+ token, Integer.decode(arg0));
} catch (Exception e) {
// TODO: handle exception
}
Modified: trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml
===================================================================
--- trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml 2008-01-22 16:32:43 UTC (rev 418)
@@ -11,7 +11,7 @@
<t:if test="superAdmin">
<p><t:label for="owner" /> : <input t:type="Select" t:id="owner"
- t:value="owner" model="users" /></p>
+ t:value="owner" model="users" encoder="userEncoder" /></p>
</t:if>
<p>${message:userMembers} : <input t:type="Palette" model="users"
Modified: trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml
===================================================================
--- trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml 2008-01-22 16:32:43 UTC (rev 418)
@@ -28,6 +28,16 @@
<p>${message:memberOf} : <input t:type="Palette" model="groups"
selected="groupsOfUser" encoder="groupEncoder" /></p>
+ <p>${message:ownerOf} :
+ <table t:type="Grid" source="ownedGroups" row="group"
+ model="groupModel">
+ <t:parameter name="empty">
+ ${message:none}
+ </t:parameter>
+
+ </table>
+ </p>
+
<input t:type="Submit" t:value="message:submit" />
<a t:type="actionlink" t:id="cancel">${message:cancel}</a>
</t:form>
Modified: trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.properties
===================================================================
--- trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.properties 2008-01-22 15:15:54 UTC (rev 417)
+++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.properties 2008-01-22 16:32:43 UTC (rev 418)
@@ -8,4 +8,6 @@
cancel=Cancel
password=Password
resetPassword=Reset password
-memberOf=Member of
\ No newline at end of file
+memberOf=Member of
+ownerOf=Owner of
+none=None
\ No newline at end of file
1
0
r417 - in trunk/simexplorer-is-web: . src/java/fr/cemagref/simexplorer/is/ui/web/grid src/java/fr/cemagref/simexplorer/is/ui/web/pages src/java/fr/cemagref/simexplorer/is/ui/web/pages/security
by glandais@users.labs.libre-entreprise.org 22 Jan '08
by glandais@users.labs.libre-entreprise.org 22 Jan '08
22 Jan '08
Author: glandais
Date: 2008-01-22 15:15:54 +0000 (Tue, 22 Jan 2008)
New Revision: 417
Modified:
trunk/simexplorer-is-web/pom.xml
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/grid/ElementDataSource.java
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationImport.java
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/ProtectedPage.java
Log:
Secured service
Modified: trunk/simexplorer-is-web/pom.xml
===================================================================
--- trunk/simexplorer-is-web/pom.xml 2008-01-22 15:15:22 UTC (rev 416)
+++ trunk/simexplorer-is-web/pom.xml 2008-01-22 15:15:54 UTC (rev 417)
@@ -58,11 +58,6 @@
<dependencies>
<dependency>
<groupId>simexplorer-is</groupId>
- <artifactId>simexplorer-is-security</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>simexplorer-is</groupId>
<artifactId>simexplorer-is-entities</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/grid/ElementDataSource.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/grid/ElementDataSource.java 2008-01-22 15:15:22 UTC (rev 416)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/grid/ElementDataSource.java 2008-01-22 15:15:54 UTC (rev 417)
@@ -2,6 +2,7 @@
import javax.naming.NamingException;
+import org.apache.tapestry.annotations.ApplicationState;
import org.apache.tapestry.beaneditor.PropertyModel;
import org.apache.tapestry.grid.GridDataSource;
import org.apache.tapestry.ioc.annotations.Inject;
@@ -15,6 +16,9 @@
private int indexStart = 0;
private MetaDataEntity[] entities = null;
+ @ApplicationState
+ private String token;
+
public ElementDataSource(String query) {
super();
this.query = query;
@@ -29,9 +33,9 @@
int result = 0;
try {
if (query.equals("")) {
- result = RemoteStorageService.getStorageService().findApplicationsCount(false);
+ result = RemoteStorageService.getStorageService().findApplicationsCount(token, false);
} else {
- result = RemoteStorageService.getStorageService().findFullTextCount(query, false);
+ result = RemoteStorageService.getStorageService().findFullTextCount(token, query, false);
}
} catch (NamingException e) {
// TODO Auto-generated catch block
@@ -68,10 +72,10 @@
if (query.equals("")) {
entities = RemoteStorageService.getStorageService()
- .findApplications(false, startIndex,
+ .findApplications(token, false, startIndex,
1 + endIndex - startIndex, dateOrder);
} else {
- entities = RemoteStorageService.getStorageService().findFullText(
+ entities = RemoteStorageService.getStorageService().findFullText(token,
query, false, startIndex, 1 + endIndex - startIndex,
dateOrder);
}
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationImport.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationImport.java 2008-01-22 15:15:22 UTC (rev 416)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationImport.java 2008-01-22 15:15:54 UTC (rev 417)
@@ -34,7 +34,7 @@
if (fileEA != null) {
RemoteInputStreamServer zipRemoteStream = new SimpleRemoteInputStream(
fileEA.getStream());
- RemoteStorageService.getStorageService().saveElement(
+ RemoteStorageService.getStorageService().saveElement(getToken(),
zipRemoteStream.export());
}
}
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java 2008-01-22 15:15:22 UTC (rev 416)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java 2008-01-22 15:15:54 UTC (rev 417)
@@ -41,7 +41,8 @@
private LoggableElement element;
public void setup(String uuid, String version) throws Exception {
- element = RemoteStorageService.getStorageService().getElement(uuid, version);
+ element = RemoteStorageService.getStorageService().getElement(
+ getToken(), uuid, version);
}
public List<String> getHeaders() {
@@ -65,11 +66,11 @@
ByteArrayOutputStream bos = new ByteArrayOutputStream();
RemoteOutputStreamServer xmlRemoteOutputStream = new SimpleRemoteOutputStream(
bos);
- RemoteStorageService.getStorageService().exportElement(
+ RemoteStorageService.getStorageService().exportElement(getToken(),
xmlRemoteOutputStream.export(), uuid, version);
- MetaDataEntity mde = RemoteStorageService.getStorageService().getMetadata(
- uuid, version);
+ MetaDataEntity mde = RemoteStorageService.getStorageService()
+ .getMetadata(uuid, version);
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
response = new XMLAttachment(bis, mde.getType() + "." + mde.getUuid()
+ ".v" + mde.getVersion());
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/ProtectedPage.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/ProtectedPage.java 2008-01-22 15:15:22 UTC (rev 416)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/ProtectedPage.java 2008-01-22 15:15:54 UTC (rev 417)
@@ -17,12 +17,16 @@
return null;
}
+ public String getToken() {
+ return token;
+ }
+
public User getUserLogged() {
User loggedUser = null;
if (token != null) {
try {
- loggedUser = RemoteSecurityService.getAuthentificationService().getLoggedUser(
- token);
+ loggedUser = RemoteSecurityService.getAuthentificationService()
+ .getLoggedUser(token);
} catch (Exception e) {
// TODO: handle exception
}
1
0
r416 - in trunk: simexplorer-is-service simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/test simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab
by glandais@users.labs.libre-entreprise.org 22 Jan '08
by glandais@users.labs.libre-entreprise.org 22 Jan '08
22 Jan '08
Author: glandais
Date: 2008-01-22 15:15:22 +0000 (Tue, 22 Jan 2008)
New Revision: 416
Added:
trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceClient.java
trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java
trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java
trunk/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/test/StorageServiceServerTest.java
Removed:
trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceImpl.java
Modified:
trunk/simexplorer-is-service/pom.xml
trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java
trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageService.java
trunk/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/test/StorageServiceMassInsert.java
trunk/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/test/StorageServiceTest.java
trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/SimExplorerAbstractTabAction.java
trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowLocalTabAction.java
trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowRemoteTabAction.java
Log:
Secured service
Modified: trunk/simexplorer-is-service/pom.xml
===================================================================
--- trunk/simexplorer-is-service/pom.xml 2008-01-22 14:12:45 UTC (rev 415)
+++ trunk/simexplorer-is-service/pom.xml 2008-01-22 15:15:22 UTC (rev 416)
@@ -23,6 +23,11 @@
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
+ <groupId>simexplorer-is</groupId>
+ <artifactId>simexplorer-is-security</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+ <dependency>
<groupId>com.healthmarketscience.rmiio</groupId>
<artifactId>rmiio</artifactId>
<version>2.0.0</version>
Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java
===================================================================
--- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java 2008-01-22 14:12:45 UTC (rev 415)
+++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/MockStorageServiceImpl.java 2008-01-22 15:15:22 UTC (rev 416)
@@ -60,39 +60,39 @@
throw new IllegalStateException("not implemented");
}
- public MetaDataEntity saveElement(RemoteInputStream zipRemoteStream) throws Exception {
+ public MetaDataEntity saveElement(String token, RemoteInputStream zipRemoteStream) throws Exception {
return (MetaDataEntity) checkImplemented();
}
- public MetaDataEntity saveElement(RemoteInputStream xmlRemoteStream, Map<String, RemoteInputStream> attachmentsRemoteStream) throws Exception {
+ public MetaDataEntity saveElement(String token, RemoteInputStream xmlRemoteStream, Map<String, RemoteInputStream> attachmentsRemoteStream) throws Exception {
return (MetaDataEntity) checkImplemented();
}
- public MetaDataEntity getMetadata(String uuid) throws Exception {
+ public MetaDataEntity getMetadata(String token, String uuid) throws Exception {
return mockData().get(uuid);
}
- public MetaDataEntity getMetadata(String uuid, String version) throws Exception {
+ public MetaDataEntity getMetadata(String token, String uuid, String version) throws Exception {
return mockData().get(uuid);
}
- public void exportElement(RemoteOutputStream xmlOutputStream, String uuid, String version) throws Exception {
+ public void exportElement(String token, RemoteOutputStream xmlOutputStream, String uuid, String version) throws Exception {
checkImplemented();
}
- public int findFullTextCount(String query, boolean onlyLatest) throws Exception {
+ public int findFullTextCount(String token, String query, boolean onlyLatest) throws Exception {
return (Integer) checkImplemented();
}
- public MetaDataEntity[] findFullText(String query, boolean onlyLatest, int indexStart, int count, int dateOrder) throws Exception {
+ public MetaDataEntity[] findFullText(String token, String query, boolean onlyLatest, int indexStart, int count, int dateOrder) throws Exception {
return (MetaDataEntity[]) checkImplemented();
}
- public int findApplicationsCount(boolean onlyLatest) throws Exception {
+ public int findApplicationsCount(String token, boolean onlyLatest) throws Exception {
return mockData().size();
}
- public MetaDataEntity[] findApplications(boolean onlyLatest, int start, int count, int dateOrder) throws Exception {
+ public MetaDataEntity[] findApplications(String token, boolean onlyLatest, int start, int count, int dateOrder) throws Exception {
int last = start + count;
System.out.println("ask data from " + start + " width:" + count);
SortedMap<String, MetaDataEntity> map = mockData();
@@ -107,7 +107,11 @@
return result;
}
- public LoggableElement getElement(String uuid, String version) throws Exception {
+ public LoggableElement getElement(String token, String uuid, String version) throws Exception {
return (LoggableElement) checkImplemented();
}
+
+ public String loginUser(String login, String password) {
+ return (String) checkImplemented();
+ }
}
Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageService.java
===================================================================
--- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageService.java 2008-01-22 14:12:45 UTC (rev 415)
+++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageService.java 2008-01-22 15:15:22 UTC (rev 416)
@@ -27,6 +27,17 @@
void commit() throws Exception;
/**
+ * Login user onto system Not used for local usages
+ *
+ * @param login
+ * Login
+ * @param password
+ * Password
+ * @return Token as logon evidence
+ */
+ String loginUser(String login, String password);
+
+ /**
* Save a remote element
*
* @param zipRemoteStream
@@ -34,7 +45,7 @@
* @return Metadata of element imported
* @throws Exception
*/
- MetaDataEntity saveElement(RemoteInputStream zipRemoteStream)
+ MetaDataEntity saveElement(String token, RemoteInputStream zipRemoteStream)
throws Exception;
/**
@@ -48,7 +59,7 @@
* @return Metadata of element saved
* @throws Exception
*/
- MetaDataEntity saveElement(RemoteInputStream xmlRemoteStream,
+ MetaDataEntity saveElement(String token, RemoteInputStream xmlRemoteStream,
Map<String, RemoteInputStream> attachmentsRemoteStream)
throws Exception;
@@ -59,7 +70,7 @@
* @return
* @throws Exception
*/
- MetaDataEntity getMetadata(String uuid) throws Exception;
+ MetaDataEntity getMetadata(String token, String uuid) throws Exception;
/**
* Retrieve metadata
@@ -69,7 +80,8 @@
* @return
* @throws Exception
*/
- MetaDataEntity getMetadata(String uuid, String version) throws Exception;
+ MetaDataEntity getMetadata(String token, String uuid, String version)
+ throws Exception;
/**
* Export element to a remote stream
@@ -80,8 +92,8 @@
* @param version
* @throws Exception
*/
- void exportElement(RemoteOutputStream xmlOutputStream, String uuid,
- String version) throws Exception;
+ void exportElement(String token, RemoteOutputStream xmlOutputStream,
+ String uuid, String version) throws Exception;
/**
* Retrieve number of elements matching query
@@ -91,7 +103,8 @@
* @return
* @throws Exception
*/
- int findFullTextCount(String query, boolean onlyLatest) throws Exception;
+ int findFullTextCount(String token, String query, boolean onlyLatest)
+ throws Exception;
/**
* Find elements matching query
@@ -104,8 +117,9 @@
* @return
* @throws Exception
*/
- MetaDataEntity[] findFullText(String query, boolean onlyLatest,
- int indexStart, int count, int dateOrder) throws Exception;
+ MetaDataEntity[] findFullText(String token, String query,
+ boolean onlyLatest, int indexStart, int count, int dateOrder)
+ throws Exception;
/**
* Retrieve number of applications
@@ -114,7 +128,8 @@
* @return
* @throws Exception
*/
- int findApplicationsCount(boolean onlyLatest) throws Exception;
+ int findApplicationsCount(String token, boolean onlyLatest)
+ throws Exception;
/**
* Get a list of applications
@@ -126,8 +141,8 @@
* @return
* @throws Exception
*/
- MetaDataEntity[] findApplications(boolean onlyLatest, int start, int count,
- int dateOrder) throws Exception;
+ MetaDataEntity[] findApplications(String token, boolean onlyLatest,
+ int start, int count, int dateOrder) throws Exception;
/**
* Fully load an element
@@ -137,7 +152,7 @@
* @return
* @throws Exception
*/
- LoggableElement getElement(String uuid, String version)
+ LoggableElement getElement(String token, String uuid, String version)
throws Exception;
}
Added: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceClient.java
===================================================================
--- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceClient.java (rev 0)
+++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceClient.java 2008-01-22 15:15:22 UTC (rev 416)
@@ -0,0 +1,16 @@
+package fr.cemagref.simexplorer.is.service;
+
+import fr.cemagref.simexplorer.is.storage.engine.StorageEngineImpl;
+
+public class StorageServiceClient extends StorageServiceCommon {
+
+ public StorageServiceClient() {
+ storageEngine = new StorageEngineImpl();
+ super.firstOpen();
+ }
+
+ public String loginUser(String login, String password) {
+ return null;
+ }
+
+}
Copied: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java (from rev 415, trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceImpl.java)
===================================================================
--- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java (rev 0)
+++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-01-22 15:15:22 UTC (rev 416)
@@ -0,0 +1,329 @@
+package fr.cemagref.simexplorer.is.service;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+import javax.ejb.Remote;
+import javax.ejb.Stateless;
+
+import org.jboss.annotation.ejb.RemoteBinding;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import com.healthmarketscience.rmiio.RemoteInputStream;
+import com.healthmarketscience.rmiio.RemoteInputStreamClient;
+import com.healthmarketscience.rmiio.RemoteOutputStream;
+import com.healthmarketscience.rmiio.RemoteOutputStreamClient;
+
+import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
+import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity;
+import fr.cemagref.simexplorer.is.entities.metadata.Version;
+import fr.cemagref.simexplorer.is.factories.BaseEntityFactory;
+import fr.cemagref.simexplorer.is.factories.MetaDataEntityFactory;
+import fr.cemagref.simexplorer.is.factories.XmlConstants;
+import fr.cemagref.simexplorer.is.storage.engine.StorageEngine;
+import fr.cemagref.simexplorer.is.storage.engine.StorageEngineImpl;
+
+public abstract class StorageServiceCommon implements StorageService, XmlConstants {
+
+ protected StorageEngine storageEngine;
+
+ private static final String KEY_XML = "_xml";
+
+ protected void firstOpen() {
+ try {
+ storageEngine.open();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ public void open() throws Exception {
+ storageEngine.open();
+ }
+
+ public void close() throws Exception {
+ storageEngine.close();
+ }
+
+ public void commit() throws Exception {
+ storageEngine.commit();
+ }
+
+ public MetaDataEntity saveElement(String token, RemoteInputStream zipRemoteStream)
+ throws Exception {
+ InputStream zipStream = RemoteInputStreamClient.wrap(zipRemoteStream);
+ return saveElement(token, zipStream);
+ }
+
+ public MetaDataEntity saveElement(String token, RemoteInputStream xmlRemoteStream,
+ Map<String, RemoteInputStream> attachmentsRemoteStream)
+ throws Exception {
+ InputStream xmlStream = RemoteInputStreamClient.wrap(xmlRemoteStream);
+ Map<String, InputStream> attachmentStreams = new HashMap<String, InputStream>();
+ for (Map.Entry<String, RemoteInputStream> entry : attachmentsRemoteStream
+ .entrySet()) {
+ InputStream stream = RemoteInputStreamClient.wrap(entry.getValue());
+ attachmentStreams.put(entry.getKey(), stream);
+ }
+ return saveElement(token, xmlStream, attachmentStreams);
+ }
+
+ public MetaDataEntity getMetadata(String token, String uuid) throws Exception {
+ return storageEngine.getMetadata(uuid);
+ }
+
+ public MetaDataEntity getMetadata(String token, String uuid, String version)
+ throws Exception {
+ return storageEngine.getMetadata(uuid, new Version(version));
+ }
+
+ public MetaDataEntity[] findFullText(String token, String query, boolean onlyLatest,
+ int indexStart, int count, int dateOrder) throws Exception {
+ return storageEngine.findFullText(query, onlyLatest, indexStart, count,
+ dateOrder);
+ }
+
+ public int findFullTextCount(String token, String query, boolean onlyLatest)
+ throws Exception {
+ return storageEngine.findFullTextCount(query, onlyLatest);
+ }
+
+ public int findApplicationsCount(String token, boolean onlyLatest) throws Exception {
+ return storageEngine.findElementsByTypeCount(VALUE_METADATA_TYPE_EA,
+ onlyLatest);
+ }
+
+ public MetaDataEntity[] findApplications(String token, boolean onlyLatest, int start,
+ int count, int dateOrder) throws Exception {
+ return storageEngine.findElementsByType(VALUE_METADATA_TYPE_EA,
+ onlyLatest, start, count, dateOrder);
+ }
+
+ public LoggableElement getElement(String token, String uuid, String version)
+ throws Exception {
+ MetaDataEntity mde = getMetadata(uuid, version);
+
+ LoggableElement le = (LoggableElement) BaseEntityFactory.getFactory(
+ LoggableElement.class.getPackage().getName() + "." + mde.getType())
+ .loadElement(storageEngine.retrieveData(mde, KEY_XML));
+
+ return le;
+ }
+
+ private MetaDataEntity saveElement(String token, InputStream zipStream) throws Exception {
+ String xmlFile = null;
+ Map<String, String> attachments = new HashMap<String, String>();
+
+ ZipInputStream zis = new ZipInputStream(zipStream);
+
+ ZipEntry entry;
+ while ((entry = zis.getNextEntry()) != null) {
+ if (!entry.isDirectory()) {
+ String entryName = entry.getName();
+ if (entryName.equals(FILE_XML)) {
+ xmlFile = storageEngine.storeTempData(zis);
+ } else {
+ if (entryName.startsWith(FILE_DATA_PREFIX)) {
+ String fileName = entryName.replace(FILE_DATA_PREFIX
+ + "/", "");
+ String idFile = storageEngine.storeTempData(zis);
+ attachments.put(fileName, idFile);
+ }
+ }
+ }
+ }
+
+ return saveElement(token, xmlFile, attachments);
+ }
+
+ public MetaDataEntity saveElement(String token, InputStream xmlFile,
+ Map<String, InputStream> attachments) throws Exception {
+ // Store temporary data
+ String idxml = storageEngine.storeTempData(xmlFile);
+ Map<String, String> idsattachment = new HashMap<String, String>();
+ for (Map.Entry<String, InputStream> entry : attachments.entrySet()) {
+ String idattachment = storageEngine.storeTempData(entry.getValue());
+ idsattachment.put(entry.getKey(), idattachment);
+ }
+ return saveElement(token, idxml, idsattachment);
+ }
+
+ public void exportElement(String token, RemoteOutputStream xmlOutputStream, String uuid,
+ String version) throws Exception {
+ MetaDataEntity mde = getMetadata(uuid, version);
+ InputStream xmlStream = storageEngine.retrieveData(mde, KEY_XML);
+ OutputStream os = RemoteOutputStreamClient.wrap(xmlOutputStream);
+
+ // Buffer copy stream to stream
+ BufferedInputStream bin = new BufferedInputStream(xmlStream);
+ BufferedOutputStream bout = new BufferedOutputStream(os);
+ while (true) {
+ int datum = bin.read();
+ if (datum == -1)
+ break;
+ bout.write(datum);
+ }
+ bout.flush();
+
+ }
+
+ /**
+ * Real implementation of saveElement
+ *
+ * @param idxml
+ * @param idsattachment
+ * @return
+ * @throws Exception
+ */
+ private MetaDataEntity saveElement(String token, String idxml,
+ Map<String, String> idsattachment) throws Exception {
+ // Load metadata xml
+ MetaDataEntityFactory mdeFactory = (MetaDataEntityFactory) BaseEntityFactory
+ .getFactory(MetaDataEntity.class);
+ MetaDataEntity metaData = mdeFactory
+ .loadElementFromParentXML(storageEngine.retrieveTempData(idxml));
+
+ if (metaData.getType() != null
+ && VALUE_METADATA_TYPE_EA.equals(metaData.getType())) {
+
+ /*
+ ExplorationApplication ea = (ExplorationApplication) BaseEntityFactory
+ .getFactory(ExplorationApplication.class).loadElement(
+ storageEngine.retrieveTempData(idxml));
+ */
+
+ // If element is an EA, save inner Components and Data
+ List<String> components = new ArrayList<String>();
+ List<String[]> explorationDatas = new ArrayList<String[]>();
+
+ // Retrieve elements
+ extractChildren(token, idxml, idsattachment, components, explorationDatas);
+
+ // For each exploration data
+ for (String[] explorationData : explorationDatas) {
+ // where is stored xml
+ String idxmlED = explorationData[0];
+
+ // where is stored result
+ Map<String, String> attachmentsED = new HashMap<String, String>();
+ if (explorationData.length > 1) {
+ attachmentsED.put(explorationData[1], idsattachment
+ .get(explorationData[1]));
+ }
+ // recursive save
+ saveElement(token, idxmlED, attachmentsED);
+
+ }
+
+ // For each component
+ for (String idComponent : components) {
+ saveElement(token, idComponent, new HashMap<String, String>());
+ }
+
+ }
+
+ // Process version rules
+ processVersionRules(token, metaData);
+
+ // Prepare saving
+ Map<String, InputStream> attachments = new HashMap<String, InputStream>();
+
+ attachments.put(KEY_XML, storageEngine.retrieveTempData(idxml));
+ if (metaData.getType() != null
+ && !VALUE_METADATA_TYPE_EA.equals(metaData.getType())) {
+ for (Map.Entry<String, String> entry : idsattachment.entrySet()) {
+ attachments.put(entry.getKey(), storageEngine
+ .retrieveTempData(entry.getValue()));
+ }
+ }
+ storageEngine.saveElement(metaData, attachments);
+ storageEngine.commit();
+
+ return metaData;
+ }
+
+ private void processVersionRules(String token, MetaDataEntity metaData) throws Exception {
+
+ // Check existing version in storage
+ MetaDataEntity previousVersion = storageEngine.getMetadata(metaData
+ .getUuid(), metaData.getVersion());
+ /*
+ * MetaDataEntity parentData = storageEngine.getElementVersion(metaData
+ * .getParentData().getUuid(), metaData.getParentData() .getVersion());
+ * MetaDataEntity parentVersion =
+ * storageEngine.getElementVersion(metaData
+ * .getParentVersion().getUuid(), metaData.getParentVersion()
+ * .getVersion());
+ */
+
+ // Version rules
+ if (previousVersion != null) {
+ metaData.setVersion(previousVersion.getVersion().incVersion(0)
+ .toString());
+ }
+
+ }
+
+ private void extractChildren(String token, String idxml,
+ Map<String, String> idsattachment, List<String> components,
+ List<String[]> explorationDatas) throws Exception {
+
+ MetaDataEntityFactory<MetaDataEntity> elementFactory = (MetaDataEntityFactory) BaseEntityFactory
+ .getFactory(MetaDataEntity.class);
+
+ Document document = BaseEntityFactory.getXMLBuilder().parse(
+ storageEngine.retrieveTempData(idxml));
+
+ Element rootElement = (Element) document.getFirstChild();
+
+ // Components
+ Element componentsElement = elementFactory.getXMLElementByTagName(
+ rootElement, KEY_EXPLORATIONAPPLICATION_COMPONENTS);
+ Set<Element> componentElements = elementFactory
+ .getXMLElementsByTagName(componentsElement,
+ KEY_EXPLORATIONAPPLICATION_COMPONENT_NODE);
+ for (Element element : componentElements) {
+ components.add(storageEngine.storeTempData(elementFactory
+ .serializeElement(element)));
+ }
+
+ Element applicationDatasElement = elementFactory
+ .getXMLElementByTagName(rootElement,
+ KEY_EXPLORATIONAPPLICATION_DATA);
+ Set<Element> applicationDataElements = elementFactory
+ .getXMLElementsByTagName(applicationDatasElement,
+ KEY_EXPLORATIONAPPLICATION_DATA_NODE);
+
+ for (Element elementAD : applicationDataElements) {
+ Element element = elementFactory.getXMLElementByTagName(elementAD,
+ KEY_EXPLORATIONDATA_RESULT);
+ String result = elementFactory.getXMLProperty(element,
+ KEY_RESULT_FILE);
+
+ String[] explorationDataArray = null;
+ if (result != null) {
+ explorationDataArray = new String[2];
+ explorationDataArray[1] = result;
+ } else {
+ explorationDataArray = new String[1];
+ }
+ explorationDataArray[0] = storageEngine
+ .storeTempData(elementFactory.serializeElement(elementAD));
+
+ explorationDatas.add(explorationDataArray);
+ }
+
+ }
+
+}
Deleted: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceImpl.java
===================================================================
--- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceImpl.java 2008-01-22 14:12:45 UTC (rev 415)
+++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceImpl.java 2008-01-22 15:15:22 UTC (rev 416)
@@ -1,334 +0,0 @@
-package fr.cemagref.simexplorer.is.service;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-import javax.ejb.Remote;
-import javax.ejb.Stateless;
-
-import org.jboss.annotation.ejb.RemoteBinding;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import com.healthmarketscience.rmiio.RemoteInputStream;
-import com.healthmarketscience.rmiio.RemoteInputStreamClient;
-import com.healthmarketscience.rmiio.RemoteOutputStream;
-import com.healthmarketscience.rmiio.RemoteOutputStreamClient;
-
-import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
-import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity;
-import fr.cemagref.simexplorer.is.entities.metadata.Version;
-import fr.cemagref.simexplorer.is.factories.BaseEntityFactory;
-import fr.cemagref.simexplorer.is.factories.MetaDataEntityFactory;
-import fr.cemagref.simexplorer.is.factories.XmlConstants;
-import fr.cemagref.simexplorer.is.storage.engine.StorageEngine;
-import fr.cemagref.simexplorer.is.storage.engine.StorageEngineImpl;
-
- at Stateless(name = "StorageService")
- at Remote(StorageService.class)
- at RemoteBinding(jndiBinding = "StorageService")
-public class StorageServiceImpl implements StorageService, XmlConstants {
-
- private StorageEngine storageEngineImpl = null;
-
- private static final String KEY_XML = "_xml";
-
- public StorageServiceImpl() {
- super();
- storageEngineImpl = new StorageEngineImpl();
- try {
- storageEngineImpl.open();
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
-
- public void open() throws Exception {
- storageEngineImpl.open();
- }
-
- public void close() throws Exception {
- storageEngineImpl.close();
- }
-
- public void commit() throws Exception {
- storageEngineImpl.commit();
- }
-
- public MetaDataEntity saveElement(RemoteInputStream zipRemoteStream)
- throws Exception {
- InputStream zipStream = RemoteInputStreamClient.wrap(zipRemoteStream);
- return saveElement(zipStream);
- }
-
- public MetaDataEntity saveElement(RemoteInputStream xmlRemoteStream,
- Map<String, RemoteInputStream> attachmentsRemoteStream)
- throws Exception {
- InputStream xmlStream = RemoteInputStreamClient.wrap(xmlRemoteStream);
- Map<String, InputStream> attachmentStreams = new HashMap<String, InputStream>();
- for (Map.Entry<String, RemoteInputStream> entry : attachmentsRemoteStream
- .entrySet()) {
- InputStream stream = RemoteInputStreamClient.wrap(entry.getValue());
- attachmentStreams.put(entry.getKey(), stream);
- }
- return saveElement(xmlStream, attachmentStreams);
- }
-
- public MetaDataEntity getMetadata(String uuid) throws Exception {
- return storageEngineImpl.getMetadata(uuid);
- }
-
- public MetaDataEntity getMetadata(String uuid, String version)
- throws Exception {
- return storageEngineImpl.getMetadata(uuid, new Version(version));
- }
-
- public MetaDataEntity[] findFullText(String query, boolean onlyLatest,
- int indexStart, int count, int dateOrder) throws Exception {
- return storageEngineImpl.findFullText(query, onlyLatest, indexStart, count,
- dateOrder);
- }
-
- public int findFullTextCount(String query, boolean onlyLatest)
- throws Exception {
- return storageEngineImpl.findFullTextCount(query, onlyLatest);
- }
-
- public int findApplicationsCount(boolean onlyLatest) throws Exception {
- return storageEngineImpl.findElementsByTypeCount(VALUE_METADATA_TYPE_EA,
- onlyLatest);
- }
-
- public MetaDataEntity[] findApplications(boolean onlyLatest, int start,
- int count, int dateOrder) throws Exception {
- return storageEngineImpl.findElementsByType(VALUE_METADATA_TYPE_EA,
- onlyLatest, start, count, dateOrder);
- }
-
- public LoggableElement getElement(String uuid, String version)
- throws Exception {
- MetaDataEntity mde = getMetadata(uuid, version);
-
- LoggableElement le = (LoggableElement) BaseEntityFactory.getFactory(
- LoggableElement.class.getPackage().getName() + "." + mde.getType())
- .loadElement(storageEngineImpl.retrieveData(mde, KEY_XML));
-
- return le;
- }
-
- private MetaDataEntity saveElement(InputStream zipStream) throws Exception {
- String xmlFile = null;
- Map<String, String> attachments = new HashMap<String, String>();
-
- ZipInputStream zis = new ZipInputStream(zipStream);
-
- ZipEntry entry;
- while ((entry = zis.getNextEntry()) != null) {
- if (!entry.isDirectory()) {
- String entryName = entry.getName();
- if (entryName.equals(FILE_XML)) {
- xmlFile = storageEngineImpl.storeTempData(zis);
- } else {
- if (entryName.startsWith(FILE_DATA_PREFIX)) {
- String fileName = entryName.replace(FILE_DATA_PREFIX
- + "/", "");
- String idFile = storageEngineImpl.storeTempData(zis);
- attachments.put(fileName, idFile);
- }
- }
- }
- }
-
- return saveElement(xmlFile, attachments);
- }
-
- public MetaDataEntity saveElement(InputStream xmlFile,
- Map<String, InputStream> attachments) throws Exception {
- // Store temporary data
- String idxml = storageEngineImpl.storeTempData(xmlFile);
- Map<String, String> idsattachment = new HashMap<String, String>();
- for (Map.Entry<String, InputStream> entry : attachments.entrySet()) {
- String idattachment = storageEngineImpl.storeTempData(entry.getValue());
- idsattachment.put(entry.getKey(), idattachment);
- }
- return saveElement(idxml, idsattachment);
- }
-
- public void exportElement(RemoteOutputStream xmlOutputStream, String uuid,
- String version) throws Exception {
- MetaDataEntity mde = getMetadata(uuid, version);
- InputStream xmlStream = storageEngineImpl.retrieveData(mde, KEY_XML);
- OutputStream os = RemoteOutputStreamClient.wrap(xmlOutputStream);
-
- // Buffer copy stream to stream
- BufferedInputStream bin = new BufferedInputStream(xmlStream);
- BufferedOutputStream bout = new BufferedOutputStream(os);
- while (true) {
- int datum = bin.read();
- if (datum == -1)
- break;
- bout.write(datum);
- }
- bout.flush();
-
- }
-
- /**
- * Real implementation of saveElement
- *
- * @param idxml
- * @param idsattachment
- * @return
- * @throws Exception
- */
- private MetaDataEntity saveElement(String idxml,
- Map<String, String> idsattachment) throws Exception {
- // Load metadata xml
- MetaDataEntityFactory mdeFactory = (MetaDataEntityFactory) BaseEntityFactory
- .getFactory(MetaDataEntity.class);
- MetaDataEntity metaData = mdeFactory
- .loadElementFromParentXML(storageEngineImpl.retrieveTempData(idxml));
-
- if (metaData.getType() != null
- && VALUE_METADATA_TYPE_EA.equals(metaData.getType())) {
-
- /*
- ExplorationApplication ea = (ExplorationApplication) BaseEntityFactory
- .getFactory(ExplorationApplication.class).loadElement(
- storageEngine.retrieveTempData(idxml));
- */
-
- // If element is an EA, save inner Components and Data
- List<String> components = new ArrayList<String>();
- List<String[]> explorationDatas = new ArrayList<String[]>();
-
- // Retrieve elements
- extractChildren(idxml, idsattachment, components, explorationDatas);
-
- // For each exploration data
- for (String[] explorationData : explorationDatas) {
- // where is stored xml
- String idxmlED = explorationData[0];
-
- // where is stored result
- Map<String, String> attachmentsED = new HashMap<String, String>();
- if (explorationData.length > 1) {
- attachmentsED.put(explorationData[1], idsattachment
- .get(explorationData[1]));
- }
- // recursive save
- saveElement(idxmlED, attachmentsED);
-
- }
-
- // For each component
- for (String idComponent : components) {
- saveElement(idComponent, new HashMap<String, String>());
- }
-
- }
-
- // Process version rules
- processVersionRules(metaData);
-
- // Prepare saving
- Map<String, InputStream> attachments = new HashMap<String, InputStream>();
-
- attachments.put(KEY_XML, storageEngineImpl.retrieveTempData(idxml));
- if (metaData.getType() != null
- && !VALUE_METADATA_TYPE_EA.equals(metaData.getType())) {
- for (Map.Entry<String, String> entry : idsattachment.entrySet()) {
- attachments.put(entry.getKey(), storageEngineImpl
- .retrieveTempData(entry.getValue()));
- }
- }
- storageEngineImpl.saveElement(metaData, attachments);
- storageEngineImpl.commit();
-
- return metaData;
- }
-
- private void processVersionRules(MetaDataEntity metaData) throws Exception {
-
- // Check existing version in storage
- MetaDataEntity previousVersion = storageEngineImpl.getMetadata(metaData
- .getUuid(), metaData.getVersion());
- /*
- * MetaDataEntity parentData = storageEngine.getElementVersion(metaData
- * .getParentData().getUuid(), metaData.getParentData() .getVersion());
- * MetaDataEntity parentVersion =
- * storageEngine.getElementVersion(metaData
- * .getParentVersion().getUuid(), metaData.getParentVersion()
- * .getVersion());
- */
-
- // Version rules
- if (previousVersion != null) {
- metaData.setVersion(previousVersion.getVersion().incVersion(0)
- .toString());
- }
-
- }
-
- private void extractChildren(String idxml,
- Map<String, String> idsattachment, List<String> components,
- List<String[]> explorationDatas) throws Exception {
-
- MetaDataEntityFactory<MetaDataEntity> elementFactory = (MetaDataEntityFactory) BaseEntityFactory
- .getFactory(MetaDataEntity.class);
-
- Document document = BaseEntityFactory.getXMLBuilder().parse(
- storageEngineImpl.retrieveTempData(idxml));
-
- Element rootElement = (Element) document.getFirstChild();
-
- // Components
- Element componentsElement = elementFactory.getXMLElementByTagName(
- rootElement, KEY_EXPLORATIONAPPLICATION_COMPONENTS);
- Set<Element> componentElements = elementFactory
- .getXMLElementsByTagName(componentsElement,
- KEY_EXPLORATIONAPPLICATION_COMPONENT_NODE);
- for (Element element : componentElements) {
- components.add(storageEngineImpl.storeTempData(elementFactory
- .serializeElement(element)));
- }
-
- Element applicationDatasElement = elementFactory
- .getXMLElementByTagName(rootElement,
- KEY_EXPLORATIONAPPLICATION_DATA);
- Set<Element> applicationDataElements = elementFactory
- .getXMLElementsByTagName(applicationDatasElement,
- KEY_EXPLORATIONAPPLICATION_DATA_NODE);
-
- for (Element elementAD : applicationDataElements) {
- Element element = elementFactory.getXMLElementByTagName(elementAD,
- KEY_EXPLORATIONDATA_RESULT);
- String result = elementFactory.getXMLProperty(element,
- KEY_RESULT_FILE);
-
- String[] explorationDataArray = null;
- if (result != null) {
- explorationDataArray = new String[2];
- explorationDataArray[1] = result;
- } else {
- explorationDataArray = new String[1];
- }
- explorationDataArray[0] = storageEngineImpl
- .storeTempData(elementFactory.serializeElement(elementAD));
-
- explorationDatas.add(explorationDataArray);
- }
-
- }
-
-}
Added: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java
===================================================================
--- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java (rev 0)
+++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java 2008-01-22 15:15:22 UTC (rev 416)
@@ -0,0 +1,36 @@
+package fr.cemagref.simexplorer.is.service;
+
+import javax.ejb.EJB;
+import javax.ejb.Remote;
+import javax.ejb.Stateless;
+
+import org.jboss.annotation.ejb.RemoteBinding;
+
+import fr.cemagref.simexplorer.is.security.service.AuthenticationService;
+import fr.cemagref.simexplorer.is.storage.engine.StorageEngineSecuImpl;
+
+ at Stateless(name = "StorageService")
+ at Remote(StorageService.class)
+ at RemoteBinding(jndiBinding = "StorageService")
+public class StorageServiceServer extends StorageServiceCommon {
+
+ @EJB
+ private AuthenticationService authenticationService;
+
+ public StorageServiceServer() {
+ storageEngine = new StorageEngineSecuImpl();
+ super.firstOpen();
+ }
+
+ public String loginUser(String login, String password) {
+ String token = authenticationService.loginUser(login, password);
+ if (token != null) {
+ // FIXME datasource différent pour la secu et les timers =
+ // impossible de faire des requêtes sur les deux dans la même
+ // transaction
+ // authenticationService.closeSessionTimer(token);
+ }
+ return token;
+ }
+
+}
Modified: trunk/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/test/StorageServiceMassInsert.java
===================================================================
--- trunk/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/test/StorageServiceMassInsert.java 2008-01-22 14:12:45 UTC (rev 415)
+++ trunk/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/test/StorageServiceMassInsert.java 2008-01-22 15:15:22 UTC (rev 416)
@@ -8,18 +8,19 @@
import fr.cemagref.simexplorer.is.entities.data.ExplorationApplication;
import fr.cemagref.simexplorer.is.factories.BaseEntityFactory;
import fr.cemagref.simexplorer.is.factories.XmlConstants;
-import fr.cemagref.simexplorer.is.service.StorageServiceImpl;
+import fr.cemagref.simexplorer.is.service.StorageServiceClient;
+import fr.cemagref.simexplorer.is.service.StorageServiceCommon;
public class StorageServiceMassInsert extends TestCase {
- private StorageServiceImpl storageService;
+ private StorageServiceCommon storageService;
private ElementGenerator elementGenerator;
protected void setUp() throws Exception {
super.setUp();
elementGenerator = new ElementGenerator();
- storageService = new StorageServiceImpl();
+ storageService = new StorageServiceClient();
storageService.open();
}
@@ -63,7 +64,7 @@
ExplorationApplication.class).saveElement(
XmlConstants.VALUE_METADATA_TYPE_EA, ea);
- storageService.saveElement(xmlStream,
+ storageService.saveElement(null, xmlStream,
new HashMap<String, InputStream>());
if (i > 0 && i % 100 == 0) {
Added: trunk/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/test/StorageServiceServerTest.java
===================================================================
--- trunk/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/test/StorageServiceServerTest.java (rev 0)
+++ trunk/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/test/StorageServiceServerTest.java 2008-01-22 15:15:22 UTC (rev 416)
@@ -0,0 +1,34 @@
+package fr.cemagref.simexplorer.is.service.test;
+
+import java.util.Properties;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+
+import junit.framework.TestCase;
+import fr.cemagref.simexplorer.is.service.StorageService;
+
+public class StorageServiceServerTest extends TestCase {
+
+ private StorageService storageService;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ Properties properties = (Properties) System.getProperties().clone();
+ properties.put("java.naming.provider.url", "jnp://localhost:1099");
+ properties.put("java.naming.factory.initial",
+ "org.jnp.interfaces.NamingContextFactory");
+ properties.put("java.naming.factory.url.pkgs", "org.jnp.interfaces");
+
+ Context context = new InitialContext(properties);
+ storageService = (StorageService) context.lookup("StorageService");
+
+ }
+
+ public void testLogin() {
+ String token = storageService.loginUser("superadmin", "password");
+ System.out.println(token);
+ }
+
+}
Modified: trunk/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/test/StorageServiceTest.java
===================================================================
--- trunk/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/test/StorageServiceTest.java 2008-01-22 14:12:45 UTC (rev 415)
+++ trunk/simexplorer-is-service/src/test/fr/cemagref/simexplorer/is/service/test/StorageServiceTest.java 2008-01-22 15:15:22 UTC (rev 416)
@@ -15,110 +15,113 @@
import com.healthmarketscience.rmiio.SimpleRemoteInputStream;
import fr.cemagref.simexplorer.is.service.StorageService;
-import fr.cemagref.simexplorer.is.service.StorageServiceImpl;
+import fr.cemagref.simexplorer.is.service.StorageServiceClient;
+import fr.cemagref.simexplorer.is.service.StorageServiceCommon;
public class StorageServiceTest extends TestCase {
- private StorageService storageService;
- private Random r = new Random();
+ private StorageService storageService;
+ private Random r = new Random();
- protected void setUp() throws Exception {
- super.setUp();
+ protected void setUp() throws Exception {
+ super.setUp();
- storageService = new StorageServiceImpl();
- }
+ storageService = new StorageServiceClient();
+ }
- protected void tearDown() throws Exception {
- super.tearDown();
- }
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
- public void testInsertElementZip() throws Exception {
- InputStream zipStream = new FileInputStream(
- "./src/ressources/testImport/test.zip");
- RemoteInputStreamServer zipRemoteStream = new SimpleRemoteInputStream(
- zipStream);
- storageService.saveElement(zipRemoteStream);
- storageService.commit();
- assertNotNull(storageService.getMetadata("abcd"));
- }
+ public void testInsertElementZip() throws Exception {
+ InputStream zipStream = new FileInputStream(
+ "./src/ressources/testImport/test.zip");
+ RemoteInputStreamServer zipRemoteStream = new SimpleRemoteInputStream(
+ zipStream);
+ storageService.saveElement(null, zipRemoteStream);
+ storageService.commit();
+ assertNotNull(storageService.getMetadata(null, "abcd"));
+ }
- public void testInsertElementStreams() throws Exception {
- String id = UUID.randomUUID().toString();
- String[] randomcontent = new String[2];
- for (int i = 0; i < randomcontent.length; i++) {
- randomcontent[i] = Long.toHexString(r.nextLong());
- }
+ public void testInsertElementStreams() throws Exception {
+ String id = UUID.randomUUID().toString();
+ String[] randomcontent = new String[2];
+ for (int i = 0; i < randomcontent.length; i++) {
+ randomcontent[i] = Long.toHexString(r.nextLong());
+ }
- StringBuffer xmlString = new StringBuffer(
- "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
- xmlString.append("<data>");
- xmlString.append("<metadata>");
- xmlString.append("<uuid>" + id + "</uuid>");
- xmlString.append("<version>1.0</version>");
- xmlString.append("<name>Test element</name>");
- xmlString.append("<type>TEST</type>");
- xmlString.append("<description>Element test</description>");
- xmlString.append("<creationdate>0</creationdate>");
- xmlString.append("<hash>AAAAA</hash>");
- /*
- * xmlString.append("<parentdatauuid></parentdatauuid>");
- * xmlString.append("<parentdataversion></parentdataversion>");
- * xmlString.append("<parentversionuuid></parentversionuuid>");
- * xmlString.append("<parentversionversion></parentversionversion>");
- */
- xmlString.append("<descriptors>");
- xmlString
- .append("<descriptor><name>a</name><value>1</value></descriptor>");
- xmlString
- .append("<descriptor><name>b</name><value>2</value></descriptor>");
- xmlString
- .append("<descriptor><name>c</name><value>3</value></descriptor>");
- xmlString.append("</descriptors>");
- xmlString.append("<attachments>");
- for (int i = 0; i < randomcontent.length; i++) {
- xmlString.append("<attachment>");
- xmlString.append("<name>content" + i
- + "</name><type>RawType</type>");
- xmlString.append("</attachment>");
- }
- xmlString.append("</attachments>");
- xmlString.append("</metadata>");
- xmlString.append("</data>");
+ StringBuffer xmlString = new StringBuffer(
+ "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>");
+ xmlString.append("<data>");
+ xmlString.append("<metadata>");
+ xmlString.append("<uuid>" + id + "</uuid>");
+ xmlString.append("<version>1.0</version>");
+ xmlString.append("<name>Test element</name>");
+ xmlString.append("<type>TEST</type>");
+ xmlString.append("<description>Element test</description>");
+ xmlString.append("<creationdate>0</creationdate>");
+ xmlString.append("<hash>AAAAA</hash>");
+ /*
+ * xmlString.append("<parentdatauuid></parentdatauuid>");
+ * xmlString.append("<parentdataversion></parentdataversion>");
+ * xmlString.append("<parentversionuuid></parentversionuuid>");
+ * xmlString.append("<parentversionversion></parentversionversion>");
+ */
+ xmlString.append("<descriptors>");
+ xmlString
+ .append("<descriptor><name>a</name><value>1</value></descriptor>");
+ xmlString
+ .append("<descriptor><name>b</name><value>2</value></descriptor>");
+ xmlString
+ .append("<descriptor><name>c</name><value>3</value></descriptor>");
+ xmlString.append("</descriptors>");
+ xmlString.append("<attachments>");
+ for (int i = 0; i < randomcontent.length; i++) {
+ xmlString.append("<attachment>");
+ xmlString.append("<name>content" + i
+ + "</name><type>RawType</type>");
+ xmlString.append("</attachment>");
+ }
+ xmlString.append("</attachments>");
+ xmlString.append("</metadata>");
+ xmlString.append("</data>");
- InputStream xmlStream = new ByteArrayInputStream(xmlString.toString()
- .getBytes());
- RemoteInputStreamServer xmlRemoteStream = new SimpleRemoteInputStream(
- xmlStream);
+ InputStream xmlStream = new ByteArrayInputStream(xmlString.toString()
+ .getBytes());
+ RemoteInputStreamServer xmlRemoteStream = new SimpleRemoteInputStream(
+ xmlStream);
- Map<String, RemoteInputStream> attachmentsRemoteStream = new HashMap<String, RemoteInputStream>();
+ Map<String, RemoteInputStream> attachmentsRemoteStream = new HashMap<String, RemoteInputStream>();
- for (int j = 0; j < randomcontent.length; j++) {
+ for (int j = 0; j < randomcontent.length; j++) {
- StringBuffer contentString = new StringBuffer("");
- for (int i = 0; i < 50; i++) {
- contentString.append(Long.toHexString(r.nextLong()))
- .append(" ");
- }
- contentString.append(randomcontent[j]).append(" ");
- for (int i = 0; i < 100; i++) {
- contentString.append(Long.toHexString(r.nextLong()))
- .append(" ");
- }
+ StringBuffer contentString = new StringBuffer("");
+ for (int i = 0; i < 50; i++) {
+ contentString.append(Long.toHexString(r.nextLong()))
+ .append(" ");
+ }
+ contentString.append(randomcontent[j]).append(" ");
+ for (int i = 0; i < 100; i++) {
+ contentString.append(Long.toHexString(r.nextLong()))
+ .append(" ");
+ }
- InputStream contentStream = new ByteArrayInputStream(contentString
- .toString().getBytes());
- RemoteInputStreamServer contentRemoteStream = new SimpleRemoteInputStream(
- contentStream);
- attachmentsRemoteStream.put("content" + j, contentRemoteStream);
+ InputStream contentStream = new ByteArrayInputStream(contentString
+ .toString().getBytes());
+ RemoteInputStreamServer contentRemoteStream = new SimpleRemoteInputStream(
+ contentStream);
+ attachmentsRemoteStream.put("content" + j, contentRemoteStream);
- }
+ }
- storageService.saveElement(xmlRemoteStream, attachmentsRemoteStream);
- storageService.commit();
- assertNotNull(storageService.getMetadata(id));
- for (int i = 0; i < randomcontent.length; i++) {
- assertTrue(storageService.findFullTextCount(randomcontent[i], false) > 0);
- }
- }
+ storageService.saveElement(null, xmlRemoteStream,
+ attachmentsRemoteStream);
+ storageService.commit();
+ assertNotNull(storageService.getMetadata(null, id));
+ for (int i = 0; i < randomcontent.length; i++) {
+ assertTrue(storageService.findFullTextCount(null, randomcontent[i],
+ false) > 0);
+ }
+ }
}
Modified: trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/SimExplorerAbstractTabAction.java
===================================================================
--- trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/SimExplorerAbstractTabAction.java 2008-01-22 14:12:45 UTC (rev 415)
+++ trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/SimExplorerAbstractTabAction.java 2008-01-22 15:15:22 UTC (rev 416)
@@ -107,7 +107,7 @@
StorageService service;
service = getTab() == SimExplorerTab.local ? SimExplorer.getStorageService() : SimExplorer.getRemoteStorageService();
MetaDataEntity[] data;
- data = service.findApplications(onlyLatest, (int) newFirstIndex, width, rowOrder);
+ data = service.findApplications(null, onlyLatest, (int) newFirstIndex, width, rowOrder);
return data;
}
Modified: trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowLocalTabAction.java
===================================================================
--- trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowLocalTabAction.java 2008-01-22 14:12:45 UTC (rev 415)
+++ trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowLocalTabAction.java 2008-01-22 15:15:22 UTC (rev 416)
@@ -76,7 +76,7 @@
if (data == null) {
// first local query, build model
- long size = SimExplorer.getStorageService().findApplicationsCount(false);
+ long size = SimExplorer.getStorageService().findApplicationsCount(null, false);
// init pagination
PaginationModel paginationModel = new PaginationModel();
Modified: trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowRemoteTabAction.java
===================================================================
--- trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowRemoteTabAction.java 2008-01-22 14:12:45 UTC (rev 415)
+++ trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowRemoteTabAction.java 2008-01-22 15:15:22 UTC (rev 416)
@@ -75,7 +75,7 @@
if (data == null) {
// first local query, build model
- long size = SimExplorer.getRemoteStorageService().findApplicationsCount(false);
+ long size = SimExplorer.getRemoteStorageService().findApplicationsCount(null, false);
// init pagination
PaginationModel paginationModel = new PaginationModel();
1
0
r415 - in trunk: simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine
by glandais@users.labs.libre-entreprise.org 22 Jan '08
by glandais@users.labs.libre-entreprise.org 22 Jan '08
22 Jan '08
Author: glandais
Date: 2008-01-22 14:12:45 +0000 (Tue, 22 Jan 2008)
New Revision: 415
Added:
trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java
trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java
Modified:
trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceImpl.java
Log:
StorageEngine interface
Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceImpl.java
===================================================================
--- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceImpl.java 2008-01-22 14:11:10 UTC (rev 414)
+++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceImpl.java 2008-01-22 14:12:45 UTC (rev 415)
@@ -31,21 +31,22 @@
import fr.cemagref.simexplorer.is.factories.MetaDataEntityFactory;
import fr.cemagref.simexplorer.is.factories.XmlConstants;
import fr.cemagref.simexplorer.is.storage.engine.StorageEngine;
+import fr.cemagref.simexplorer.is.storage.engine.StorageEngineImpl;
@Stateless(name = "StorageService")
@Remote(StorageService.class)
@RemoteBinding(jndiBinding = "StorageService")
public class StorageServiceImpl implements StorageService, XmlConstants {
- private StorageEngine storageEngine = null;
+ private StorageEngine storageEngineImpl = null;
private static final String KEY_XML = "_xml";
public StorageServiceImpl() {
super();
- storageEngine = new StorageEngine();
+ storageEngineImpl = new StorageEngineImpl();
try {
- storageEngine.open();
+ storageEngineImpl.open();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
@@ -53,15 +54,15 @@
}
public void open() throws Exception {
- storageEngine.open();
+ storageEngineImpl.open();
}
public void close() throws Exception {
- storageEngine.close();
+ storageEngineImpl.close();
}
public void commit() throws Exception {
- storageEngine.commit();
+ storageEngineImpl.commit();
}
public MetaDataEntity saveElement(RemoteInputStream zipRemoteStream)
@@ -84,33 +85,33 @@
}
public MetaDataEntity getMetadata(String uuid) throws Exception {
- return storageEngine.getMetadata(uuid);
+ return storageEngineImpl.getMetadata(uuid);
}
public MetaDataEntity getMetadata(String uuid, String version)
throws Exception {
- return storageEngine.getMetadata(uuid, new Version(version));
+ return storageEngineImpl.getMetadata(uuid, new Version(version));
}
public MetaDataEntity[] findFullText(String query, boolean onlyLatest,
int indexStart, int count, int dateOrder) throws Exception {
- return storageEngine.findFullText(query, onlyLatest, indexStart, count,
+ return storageEngineImpl.findFullText(query, onlyLatest, indexStart, count,
dateOrder);
}
public int findFullTextCount(String query, boolean onlyLatest)
throws Exception {
- return storageEngine.findFullTextCount(query, onlyLatest);
+ return storageEngineImpl.findFullTextCount(query, onlyLatest);
}
public int findApplicationsCount(boolean onlyLatest) throws Exception {
- return storageEngine.findElementsByTypeCount(VALUE_METADATA_TYPE_EA,
+ return storageEngineImpl.findElementsByTypeCount(VALUE_METADATA_TYPE_EA,
onlyLatest);
}
public MetaDataEntity[] findApplications(boolean onlyLatest, int start,
int count, int dateOrder) throws Exception {
- return storageEngine.findElementsByType(VALUE_METADATA_TYPE_EA,
+ return storageEngineImpl.findElementsByType(VALUE_METADATA_TYPE_EA,
onlyLatest, start, count, dateOrder);
}
@@ -120,7 +121,7 @@
LoggableElement le = (LoggableElement) BaseEntityFactory.getFactory(
LoggableElement.class.getPackage().getName() + "." + mde.getType())
- .loadElement(storageEngine.retrieveData(mde, KEY_XML));
+ .loadElement(storageEngineImpl.retrieveData(mde, KEY_XML));
return le;
}
@@ -136,12 +137,12 @@
if (!entry.isDirectory()) {
String entryName = entry.getName();
if (entryName.equals(FILE_XML)) {
- xmlFile = storageEngine.storeTempData(zis);
+ xmlFile = storageEngineImpl.storeTempData(zis);
} else {
if (entryName.startsWith(FILE_DATA_PREFIX)) {
String fileName = entryName.replace(FILE_DATA_PREFIX
+ "/", "");
- String idFile = storageEngine.storeTempData(zis);
+ String idFile = storageEngineImpl.storeTempData(zis);
attachments.put(fileName, idFile);
}
}
@@ -154,10 +155,10 @@
public MetaDataEntity saveElement(InputStream xmlFile,
Map<String, InputStream> attachments) throws Exception {
// Store temporary data
- String idxml = storageEngine.storeTempData(xmlFile);
+ String idxml = storageEngineImpl.storeTempData(xmlFile);
Map<String, String> idsattachment = new HashMap<String, String>();
for (Map.Entry<String, InputStream> entry : attachments.entrySet()) {
- String idattachment = storageEngine.storeTempData(entry.getValue());
+ String idattachment = storageEngineImpl.storeTempData(entry.getValue());
idsattachment.put(entry.getKey(), idattachment);
}
return saveElement(idxml, idsattachment);
@@ -166,7 +167,7 @@
public void exportElement(RemoteOutputStream xmlOutputStream, String uuid,
String version) throws Exception {
MetaDataEntity mde = getMetadata(uuid, version);
- InputStream xmlStream = storageEngine.retrieveData(mde, KEY_XML);
+ InputStream xmlStream = storageEngineImpl.retrieveData(mde, KEY_XML);
OutputStream os = RemoteOutputStreamClient.wrap(xmlOutputStream);
// Buffer copy stream to stream
@@ -196,7 +197,7 @@
MetaDataEntityFactory mdeFactory = (MetaDataEntityFactory) BaseEntityFactory
.getFactory(MetaDataEntity.class);
MetaDataEntity metaData = mdeFactory
- .loadElementFromParentXML(storageEngine.retrieveTempData(idxml));
+ .loadElementFromParentXML(storageEngineImpl.retrieveTempData(idxml));
if (metaData.getType() != null
&& VALUE_METADATA_TYPE_EA.equals(metaData.getType())) {
@@ -243,16 +244,16 @@
// Prepare saving
Map<String, InputStream> attachments = new HashMap<String, InputStream>();
- attachments.put(KEY_XML, storageEngine.retrieveTempData(idxml));
+ attachments.put(KEY_XML, storageEngineImpl.retrieveTempData(idxml));
if (metaData.getType() != null
&& !VALUE_METADATA_TYPE_EA.equals(metaData.getType())) {
for (Map.Entry<String, String> entry : idsattachment.entrySet()) {
- attachments.put(entry.getKey(), storageEngine
+ attachments.put(entry.getKey(), storageEngineImpl
.retrieveTempData(entry.getValue()));
}
}
- storageEngine.saveElement(metaData, attachments);
- storageEngine.commit();
+ storageEngineImpl.saveElement(metaData, attachments);
+ storageEngineImpl.commit();
return metaData;
}
@@ -260,7 +261,7 @@
private void processVersionRules(MetaDataEntity metaData) throws Exception {
// Check existing version in storage
- MetaDataEntity previousVersion = storageEngine.getMetadata(metaData
+ MetaDataEntity previousVersion = storageEngineImpl.getMetadata(metaData
.getUuid(), metaData.getVersion());
/*
* MetaDataEntity parentData = storageEngine.getElementVersion(metaData
@@ -287,7 +288,7 @@
.getFactory(MetaDataEntity.class);
Document document = BaseEntityFactory.getXMLBuilder().parse(
- storageEngine.retrieveTempData(idxml));
+ storageEngineImpl.retrieveTempData(idxml));
Element rootElement = (Element) document.getFirstChild();
@@ -298,7 +299,7 @@
.getXMLElementsByTagName(componentsElement,
KEY_EXPLORATIONAPPLICATION_COMPONENT_NODE);
for (Element element : componentElements) {
- components.add(storageEngine.storeTempData(elementFactory
+ components.add(storageEngineImpl.storeTempData(elementFactory
.serializeElement(element)));
}
@@ -322,7 +323,7 @@
} else {
explorationDataArray = new String[1];
}
- explorationDataArray[0] = storageEngine
+ explorationDataArray[0] = storageEngineImpl
.storeTempData(elementFactory.serializeElement(elementAD));
explorationDatas.add(explorationDataArray);
Copied: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java (from rev 288, trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java)
===================================================================
--- trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java (rev 0)
+++ trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java 2008-01-22 14:12:45 UTC (rev 415)
@@ -0,0 +1,248 @@
+package fr.cemagref.simexplorer.is.storage.engine;
+
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+import fr.cemagref.simexplorer.is.contenttype.ContentType;
+import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity;
+import fr.cemagref.simexplorer.is.entities.metadata.Version;
+import fr.cemagref.simexplorer.is.storage.attachment.AttachmentHandler;
+import fr.cemagref.simexplorer.is.storage.attachment.FileSystemAttachmentHandler;
+import fr.cemagref.simexplorer.is.storage.database.Database;
+import fr.cemagref.simexplorer.is.storage.database.lucene.LuceneDatabase;
+
+/**
+ * Handle data storage and indexing
+ *
+ * @author landais
+ *
+ */
+public class StorageEngineImpl implements StorageEngine {
+
+ /**
+ * Indexing
+ */
+ protected Database database;
+
+ /**
+ * Storage
+ */
+ protected AttachmentHandler attachmentHandler;
+
+ /**
+ * Metadata handling temporary data
+ */
+ private MetaDataEntity mdTmp;
+
+ /**
+ * Default constructor with default implementations of storage and indexing
+ */
+ public StorageEngineImpl() {
+ super();
+ // Indexing
+ database = new LuceneDatabase();
+ // Storage
+ attachmentHandler = new FileSystemAttachmentHandler();
+ // Storing tmp data
+ mdTmp = new MetaDataEntity();
+ mdTmp.setUuid(UUID.randomUUID().toString());
+ mdTmp.setVersion("0");
+ }
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#open()
+ */
+ public void open() throws Exception {
+ database.open();
+ }
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#close()
+ */
+ public void close() throws Exception {
+ database.close();
+ }
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#commit()
+ */
+ public void commit() throws Exception {
+ database.commit();
+ }
+
+ // Create / update
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#saveElement(fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity, java.util.Map)
+ */
+ public void saveElement(MetaDataEntity element,
+ Map<String, InputStream> attachments) throws Exception {
+
+ // Save all attachments in system
+ for (Map.Entry<String, InputStream> entry : attachments.entrySet()) {
+ attachmentHandler.storeData(element, entry.getKey(), entry
+ .getValue());
+ }
+
+ // Parse all attachments for indexing
+ List<Reader> readers = new ArrayList<Reader>();
+ for (Map.Entry<String, InputStream> entry : attachments.entrySet()) {
+ String field = entry.getKey();
+ InputStream content = attachmentHandler
+ .retrieveData(element, field);
+ if (element.getAttachments() != null) {
+ ContentType contentType = element.getAttachments().get(field);
+ if (contentType != null) {
+ // Transform stream into indexable text
+ Reader reader = contentType.renderToText(content);
+ readers.add(reader);
+ }
+ }
+ }
+
+ if (element.getName() != null) {
+ Reader reader = new StringReader(element.getName());
+ readers.add(reader);
+ }
+ if (element.getDescription() != null) {
+ Reader reader = new StringReader(element.getDescription());
+ readers.add(reader);
+ }
+
+ // Insert element in database
+ database.insertElement(element, readers);
+ }
+
+ // Read
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#getMetadata(java.lang.String)
+ */
+ public MetaDataEntity getMetadata(String uuid) throws Exception {
+ MetaDataEntity mde = null;
+ Set<MetaDataEntity> set = database.findElementsById(uuid, true);
+ if (!set.isEmpty()) {
+ mde = set.iterator().next();
+ }
+ return mde;
+ }
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#getVersions(java.lang.String)
+ */
+ public List<Version> getVersions(String uuid) throws Exception {
+ return database.getVersions(uuid);
+ }
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#getMetadata(java.lang.String, fr.cemagref.simexplorer.is.entities.metadata.Version)
+ */
+ public MetaDataEntity getMetadata(String uuid, Version version)
+ throws Exception {
+ MetaDataEntity mde = database.getElement(uuid, version);
+ return mde;
+ }
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#retrieveData(fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity, java.lang.String)
+ */
+ public InputStream retrieveData(MetaDataEntity entity, String field)
+ throws Exception {
+ InputStream result = attachmentHandler.retrieveData(entity, field);
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findFullTextCount(java.lang.String, boolean)
+ */
+ public int findFullTextCount(String query, boolean onlyLatest)
+ throws Exception {
+ return database.findElementsByContentSearchCount(query, onlyLatest);
+ }
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findFullText(java.lang.String, boolean, int, int, int)
+ */
+ public MetaDataEntity[] findFullText(String query, boolean onlyLatest,
+ int indexStart, int count, int dateOrder) throws Exception {
+ MetaDataEntity[] result = database.findElementsByContentSearch(query,
+ onlyLatest, indexStart, count, dateOrder).toArray(
+ new MetaDataEntity[0]);
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findElementsByType(java.lang.String, boolean, int, int, int)
+ */
+ public MetaDataEntity[] findElementsByType(String type, boolean onlyLatest,
+ int start, int count, int dateOrder) throws Exception {
+ MetaDataEntity[] result = database.findElementsByType(type, onlyLatest,
+ start, count, dateOrder).toArray(new MetaDataEntity[0]);
+ return result;
+ }
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findElementsByTypeCount(java.lang.String, boolean)
+ */
+ public int findElementsByTypeCount(String type, boolean onlyLatest)
+ throws Exception {
+ return database.findElementsByTypeCount(type, onlyLatest);
+ }
+
+ // Delete
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#deleteElements(java.lang.String)
+ */
+ public void deleteElements(String uuid) throws Exception {
+ List<Version> versions = getVersions(uuid);
+ for (Version version : versions) {
+ deleteElement(uuid, version);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#deleteElement(java.lang.String, fr.cemagref.simexplorer.is.entities.metadata.Version)
+ */
+ public void deleteElement(String uuid, Version version) throws Exception {
+ MetaDataEntity element = getMetadata(uuid, version);
+ Map<String, ContentType> attachments = element.getAttachments();
+ for (Map.Entry<String, ContentType> entry : attachments.entrySet()) {
+ attachmentHandler.deleteData(element, entry.getKey());
+ }
+ database.deleteElement(element);
+ }
+
+ // Tools
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#storeTempData(java.io.InputStream)
+ */
+ public String storeTempData(InputStream stream) throws Exception {
+ String id = UUID.randomUUID().toString();
+ attachmentHandler.storeData(mdTmp, id, stream);
+ return id;
+ }
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#retrieveTempData(java.lang.String)
+ */
+ public InputStream retrieveTempData(String id) throws Exception {
+ InputStream is = attachmentHandler.retrieveData(mdTmp, id);
+ return is;
+ }
+
+ /* (non-Javadoc)
+ * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#deleteTempData(java.lang.String)
+ */
+ public void deleteTempData(String id) throws Exception {
+ attachmentHandler.deleteData(mdTmp, id);
+ }
+
+}
Added: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java
===================================================================
--- trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java (rev 0)
+++ trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java 2008-01-22 14:12:45 UTC (rev 415)
@@ -0,0 +1,105 @@
+package fr.cemagref.simexplorer.is.storage.engine;
+
+import java.io.InputStream;
+import java.util.List;
+import java.util.Map;
+
+import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity;
+import fr.cemagref.simexplorer.is.entities.metadata.Version;
+
+public class StorageEngineSecuImpl extends StorageEngineImpl {
+
+ @Override
+ public void deleteElement(String uuid, Version version) throws Exception {
+ // TODO Auto-generated method stub
+ super.deleteElement(uuid, version);
+ }
+
+ @Override
+ public void deleteElements(String uuid) throws Exception {
+ // TODO Auto-generated method stub
+ super.deleteElements(uuid);
+ }
+
+ @Override
+ public void deleteTempData(String id) throws Exception {
+ // TODO Auto-generated method stub
+ super.deleteTempData(id);
+ }
+
+ @Override
+ public MetaDataEntity[] findElementsByType(String type, boolean onlyLatest,
+ int start, int count, int dateOrder) throws Exception {
+ // TODO Auto-generated method stub
+ return super.findElementsByType(type, onlyLatest, start, count,
+ dateOrder);
+ }
+
+ @Override
+ public int findElementsByTypeCount(String type, boolean onlyLatest)
+ throws Exception {
+ // TODO Auto-generated method stub
+ return super.findElementsByTypeCount(type, onlyLatest);
+ }
+
+ @Override
+ public MetaDataEntity[] findFullText(String query, boolean onlyLatest,
+ int indexStart, int count, int dateOrder) throws Exception {
+ // TODO Auto-generated method stub
+ return super.findFullText(query, onlyLatest, indexStart, count,
+ dateOrder);
+ }
+
+ @Override
+ public int findFullTextCount(String query, boolean onlyLatest)
+ throws Exception {
+ // TODO Auto-generated method stub
+ return super.findFullTextCount(query, onlyLatest);
+ }
+
+ @Override
+ public MetaDataEntity getMetadata(String uuid, Version version)
+ throws Exception {
+ // TODO Auto-generated method stub
+ return super.getMetadata(uuid, version);
+ }
+
+ @Override
+ public MetaDataEntity getMetadata(String uuid) throws Exception {
+ // TODO Auto-generated method stub
+ return super.getMetadata(uuid);
+ }
+
+ @Override
+ public List<Version> getVersions(String uuid) throws Exception {
+ // TODO Auto-generated method stub
+ return super.getVersions(uuid);
+ }
+
+ @Override
+ public InputStream retrieveData(MetaDataEntity entity, String field)
+ throws Exception {
+ // TODO Auto-generated method stub
+ return super.retrieveData(entity, field);
+ }
+
+ @Override
+ public InputStream retrieveTempData(String id) throws Exception {
+ // TODO Auto-generated method stub
+ return super.retrieveTempData(id);
+ }
+
+ @Override
+ public void saveElement(MetaDataEntity element,
+ Map<String, InputStream> attachments) throws Exception {
+ // TODO Auto-generated method stub
+ super.saveElement(element, attachments);
+ }
+
+ @Override
+ public String storeTempData(InputStream stream) throws Exception {
+ // TODO Auto-generated method stub
+ return super.storeTempData(stream);
+ }
+
+}
1
0