Author: glandais
Date: 2008-01-21 18:44:16 +0000 (Mon, 21 Jan 2008)
New Revision: 335
Added:
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/RemoteSecurityService.java
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/RemoteService.java
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/RemoteStorageService.java
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/UserValueEncoder.java
Removed:
trunk/simexplorer-is-web/deploy.sh
trunk/simexplorer-is-web/redeploy.sh
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/beans/
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/errors/
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/ServiceFactory.java
trunk/simexplorer-is-web/tomcatstart.sh
trunk/simexplorer-is-web/tomcatstop.sh
trunk/simexplorer-is-web/undeploy.sh
Modified:
trunk/simexplorer-is-security/pom.xml
trunk/simexplorer-is-security/src/java/META-INF/orm.xml
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/java/fr/cemagref/simexplorer/is/security/entities/Group.java
trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/User.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/java/h2-ds.xml
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/components/Layout.java
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/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/Login.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/pages/security/AdminPage.java
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/SuperAdminPage.java
trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/UserPage.java
trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml
trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml
trunk/simexplorer-is-web/src/main/webapp/WEB-INF/web.xml
trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/css/Layout.css
trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.properties
trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.properties
Log:
User/group edit
Modified: trunk/simexplorer-is-security/pom.xml
===================================================================
--- trunk/simexplorer-is-security/pom.xml 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-security/pom.xml 2008-01-21 18:44:16 UTC (rev 335)
@@ -47,7 +47,7 @@
<groupId>jboss</groupId>
<artifactId>jbossall-client</artifactId>
<version>4.2.2.GA</version>
- <scope>test</scope>
+ <scope>provided</scope>
</dependency>
</dependencies>
</project>
Modified: trunk/simexplorer-is-security/src/java/META-INF/orm.xml
===================================================================
--- trunk/simexplorer-is-security/src/java/META-INF/orm.xml 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-security/src/java/META-INF/orm.xml 2008-01-21 18:44:16 UTC (rev 335)
@@ -10,7 +10,9 @@
<package>fr.cemagref.simexplorer.is.security.entities</package>
- <mapped-superclass class="Actor">
+ <entity class="Actor">
+ <table name="ACTORS" />
+ <inheritance strategy="JOINED" />
<attributes>
<id name="id">
<generated-value strategy="SEQUENCE" />
@@ -21,12 +23,14 @@
</cascade>
</many-to-many>
</attributes>
- </mapped-superclass>
+ </entity>
<entity class="Group">
<table name="GROUPS" />
<attributes>
- <basic name="name"></basic>
+ <basic name="name">
+ <column unique="true" />
+ </basic>
<one-to-one name="owner" fetch="EAGER" />
</attributes>
</entity>
@@ -34,7 +38,9 @@
<entity class="User">
<table name="USERS" />
<attributes>
- <basic name="login"></basic>
+ <basic name="login">
+ <column unique="true" />
+ </basic>
<basic name="mail"></basic>
<basic name="passwordHash"></basic>
<basic name="admin"></basic>
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-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurity.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -22,6 +22,8 @@
public Group getGroup(Integer id);
+ public Group getGroup(String name);
+
public Group updateGroup(Group group);
public void deleteGroup(Integer id);
@@ -32,6 +34,8 @@
public void saveToken(LoginAction loginAction);
+ public void deleteToken(String token);
+
public List<Group> getGroups();
public List<Group> getGroupsOwnedBy(User user);
@@ -42,4 +46,6 @@
public List<Group> getGroupsOfUser(User user);
+ public List<Group> getGroupsOfGroup(Group group);
+
}
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-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -34,6 +34,13 @@
return em.find(Group.class, id);
}
+ public Group getGroup(String name) {
+ Group group = (Group) em.createQuery(
+ "select g from Group g where g.name=:name").setParameter(
+ "name", name).getSingleResult();
+ return group;
+ }
+
public User getUser(Integer id) {
return em.find(User.class, id);
}
@@ -78,6 +85,15 @@
em.persist(loginAction);
}
+ public void deleteToken(String token) {
+ LoginAction loginAction = (LoginAction) em.createQuery(
+ "select la from LoginAction la where la.token=:token")
+ .setParameter("token", token).getSingleResult();
+ if (loginAction != null) {
+ em.remove(loginAction);
+ }
+ }
+
public User getUser(String login) {
User user = (User) em.createQuery(
"select u from User u where u.login=:login").setParameter(
@@ -111,4 +127,10 @@
.setParameter("user", user).getResultList();
}
+ public List<Group> getGroupsOfGroup(Group group) {
+ return em.createQuery(
+ "select distinct g.groups from Group g where g = :group")
+ .setParameter("group", group).getResultList();
+ }
+
}
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-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -8,7 +8,7 @@
private static final long serialVersionUID = 813823268950750281L;
- private Integer id;
+ protected Integer id;
private List<Group> groups;
Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Group.java
===================================================================
--- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Group.java 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Group.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -22,4 +22,34 @@
this.owner = owner;
}
+ @Override
+ public String toString() {
+ return name;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final Actor other = (Actor) obj;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ return true;
+ }
+
}
Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/User.java
===================================================================
--- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/User.java 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/User.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -49,4 +49,34 @@
this.superAdmin = superAdmin;
}
+ @Override
+ public String toString() {
+ return login;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ final Actor other = (Actor) obj;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ return true;
+ }
+
}
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-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationService.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -15,7 +15,7 @@
public void resetPassword(String login);
public void changePassword(String login, String password);
-
+
public User getUser(Integer id);
public User getUser(String login);
@@ -23,29 +23,35 @@
public User updateUser(User user);
public void deleteUser(Integer id);
-
+
public User[] getUsers();
public User[] getUsersOfGroup(Group group);
-
+
public void setUsersOfGroup(Group group, Integer[] usersInGroup);
-
+
+ public void setGroupsOfGroup(Group group, Integer[] groupsIds);
+
public Group[] getGroupsOfUser(User user);
+ public Group[] getGroupsOfGroup(Group group);
+
public void setGroupsOfUser(User user, Integer[] groupsIds);
-
+
public Group saveGroup(String name, User owner);
public Group getGroup(Integer id);
+ public Group getGroup(String name);
+
public Group updateGroup(Group group);
public void deleteGroup(Integer id);
public Group[] getGroups();
-
+
public Group[] getGroupsOwnedBy(User user);
-
+
public String loginUser(String login, String password);
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-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/service/AuthenticationServiceImpl.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -3,13 +3,17 @@
import java.security.MessageDigest;
import java.util.ArrayList;
import java.util.Date;
-import java.util.Iterator;
import java.util.List;
import java.util.UUID;
+import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Remote;
+import javax.ejb.SessionContext;
import javax.ejb.Stateless;
+import javax.ejb.Timeout;
+import javax.ejb.Timer;
+import javax.ejb.TimerService;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
@@ -29,6 +33,9 @@
@EJB
private DaoSecurity dao;
+ @Resource
+ private SessionContext sessionContext;
+
private void sendMail(String login, String mail, String password) {
/*
javax.mail.Session mailSession = (javax.mail.Session) new InitialContext().lookup("java:/Mail");
@@ -88,6 +95,10 @@
return dao.getGroup(id);
}
+ public Group getGroup(String name) {
+ return dao.getGroup(name);
+ }
+
public User getUser(Integer id) {
return dao.getUser(id);
}
@@ -142,10 +153,19 @@
loginAction.setToken(UUID.randomUUID().toString());
dao.saveToken(loginAction);
token = loginAction.getToken();
+ // FIXME session length
+ TimerService timerService = sessionContext.getTimerService();
+ //timerService.createTimer(10 * 60 * 1000, token);
}
return token;
}
+ @Timeout
+ public void timeoutHandler(Timer timer) {
+ String token = (String) timer.getInfo();
+ dao.deleteToken(token);
+ }
+
public User requestAccount(String login, String mail) {
User user = new User();
user.setLogin(login);
@@ -236,9 +256,9 @@
realUser.getGroups().clear();
for (int i = 0; i < groupsIds.length; i++) {
Group group = dao.getGroup(groupsIds[i]);
- realUser.getGroups().add(group);
+ realUser.getGroups().add(group);
}
- dao.updateUser(user);
+ dao.updateUser(realUser);
}
@@ -246,4 +266,19 @@
return dao.getGroupsOfUser(user).toArray(new Group[0]);
}
+ public Group[] getGroupsOfGroup(Group group) {
+ return dao.getGroupsOfGroup(group).toArray(new Group[0]);
+ }
+
+ public void setGroupsOfGroup(Group group, Integer[] groupsIds) {
+ Group realGroup = dao.getGroup(group.getId());
+ realGroup.getGroups().clear();
+ for (int i = 0; i < groupsIds.length; i++) {
+ Group groupOwned = dao.getGroup(groupsIds[i]);
+ realGroup.getGroups().add(groupOwned);
+ }
+ dao.updateGroup(realGroup);
+ }
+
+
}
Modified: trunk/simexplorer-is-security/src/java/h2-ds.xml
===================================================================
--- trunk/simexplorer-is-security/src/java/h2-ds.xml 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-security/src/java/h2-ds.xml 2008-01-21 18:44:16 UTC (rev 335)
@@ -16,7 +16,7 @@
<local-tx-datasource>
<jndi-name>h2datasource</jndi-name>
<connection-url>
- jdbc:h2:/var/local/simexplorer/security/database
+ jdbc:h2:/var/local/simexplorer/h2/security
</connection-url>
<driver-class>org.h2.Driver</driver-class>
<user-name></user-name>
Deleted: trunk/simexplorer-is-web/deploy.sh
===================================================================
--- trunk/simexplorer-is-web/deploy.sh 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/deploy.sh 2008-01-21 18:44:16 UTC (rev 335)
@@ -1 +0,0 @@
-mvn war:inplace tomcat:inplace
Deleted: trunk/simexplorer-is-web/redeploy.sh
===================================================================
--- trunk/simexplorer-is-web/redeploy.sh 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/redeploy.sh 2008-01-21 18:44:16 UTC (rev 335)
@@ -1 +0,0 @@
-mvn war:inplace tomcat:redeploy
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/components/Layout.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/components/Layout.java 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/components/Layout.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -32,7 +32,6 @@
import org.apache.tapestry.services.PersistentLocale;
import fr.cemagref.simexplorer.is.ui.web.pages.ElementList;
-import fr.cemagref.simexplorer.is.ui.web.pages.security.ProtectedPage;
/**
* AbstractPage.java
@@ -123,19 +122,19 @@
}
public String getLoginName() {
- return ProtectedPage.getUserLogged(getToken()).getLogin();
+ return elementList.getUserLogged().getLogin();
}
public boolean getLogged() {
- return ProtectedPage.isUserLogged(getToken());
+ return elementList.isUserLogged();
}
public boolean getAdministrator() {
- return ProtectedPage.isUserAdmin(getToken());
+ return elementList.isUserAdmin();
}
public boolean getSuperAdministrator() {
- return ProtectedPage.isUserSuperAdmin(getToken());
+ return elementList.isUserSuperAdmin();
}
public String getToken() {
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-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/grid/ElementDataSource.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -4,9 +4,10 @@
import org.apache.tapestry.beaneditor.PropertyModel;
import org.apache.tapestry.grid.GridDataSource;
+import org.apache.tapestry.ioc.annotations.Inject;
import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity;
-import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory;
+import fr.cemagref.simexplorer.is.ui.web.services.RemoteStorageService;
public class ElementDataSource implements GridDataSource {
@@ -28,11 +29,9 @@
int result = 0;
try {
if (query.equals("")) {
- result = ServiceFactory.getStorageService()
- .findApplicationsCount(false);
+ result = RemoteStorageService.getStorageService().findApplicationsCount(false);
} else {
- result = ServiceFactory.getStorageService().findFullTextCount(
- query, false);
+ result = RemoteStorageService.getStorageService().findFullTextCount(query, false);
}
} catch (NamingException e) {
// TODO Auto-generated catch block
@@ -68,11 +67,11 @@
}
if (query.equals("")) {
- entities = ServiceFactory.getStorageService()
+ entities = RemoteStorageService.getStorageService()
.findApplications(false, startIndex,
1 + endIndex - startIndex, dateOrder);
} else {
- entities = ServiceFactory.getStorageService().findFullText(
+ entities = RemoteStorageService.getStorageService().findFullText(
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-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationImport.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -1,12 +1,13 @@
package fr.cemagref.simexplorer.is.ui.web.pages;
+import org.apache.tapestry.ioc.annotations.Inject;
import org.apache.tapestry.upload.services.UploadedFile;
import com.healthmarketscience.rmiio.RemoteInputStreamServer;
import com.healthmarketscience.rmiio.SimpleRemoteInputStream;
import fr.cemagref.simexplorer.is.ui.web.pages.security.UserPage;
-import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory;
+import fr.cemagref.simexplorer.is.ui.web.services.RemoteStorageService;
public class ApplicationImport extends UserPage {
@@ -33,7 +34,7 @@
if (fileEA != null) {
RemoteInputStreamServer zipRemoteStream = new SimpleRemoteInputStream(
fileEA.getStream());
- ServiceFactory.getStorageService().saveElement(
+ RemoteStorageService.getStorageService().saveElement(
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-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -29,7 +29,7 @@
import fr.cemagref.simexplorer.is.entities.data.Structure;
import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity;
import fr.cemagref.simexplorer.is.ui.web.pages.security.UserPage;
-import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory;
+import fr.cemagref.simexplorer.is.ui.web.services.RemoteStorageService;
import fr.cemagref.simexplorer.is.ui.web.tools.XMLAttachment;
public class ElementDetail extends UserPage {
@@ -41,7 +41,7 @@
private LoggableElement element;
public void setup(String uuid, String version) throws Exception {
- element = ServiceFactory.getStorageService().getElement(uuid, version);
+ element = RemoteStorageService.getStorageService().getElement(uuid, version);
}
public List<String> getHeaders() {
@@ -65,10 +65,10 @@
ByteArrayOutputStream bos = new ByteArrayOutputStream();
RemoteOutputStreamServer xmlRemoteOutputStream = new SimpleRemoteOutputStream(
bos);
- ServiceFactory.getStorageService().exportElement(
+ RemoteStorageService.getStorageService().exportElement(
xmlRemoteOutputStream.export(), uuid, version);
- MetaDataEntity mde = ServiceFactory.getStorageService().getMetadata(
+ MetaDataEntity mde = RemoteStorageService.getStorageService().getMetadata(
uuid, version);
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
response = new XMLAttachment(bis, mde.getType() + "." + mde.getUuid()
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-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -6,14 +6,16 @@
import javax.naming.NamingException;
+import org.apache.tapestry.ValueEncoder;
import org.apache.tapestry.annotations.InjectPage;
import org.apache.tapestry.annotations.Persist;
-import org.apache.tapestry.internal.services.StringValueEncoder;
import fr.cemagref.simexplorer.is.security.entities.Group;
import fr.cemagref.simexplorer.is.security.entities.User;
import fr.cemagref.simexplorer.is.ui.web.pages.security.AdminPage;
-import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory;
+import fr.cemagref.simexplorer.is.ui.web.services.GroupValueEncoder;
+import fr.cemagref.simexplorer.is.ui.web.services.RemoteSecurityService;
+import fr.cemagref.simexplorer.is.ui.web.services.UserValueEncoder;
public class GroupEdit extends AdminPage {
@@ -23,56 +25,67 @@
@InjectPage
private GroupList groupList;
- private StringValueEncoder stringEncoder = new StringValueEncoder();
-
@Persist
- private List<String> usersInGroup;
+ private List<User> usersInGroup;
@Persist
- private List<String> groupsInGroup;
+ private List<Group> groupsInGroup;
- void setup(int groupId) throws NamingException {
- this.usersInGroup = new ArrayList<String>();
+ private static final UserValueEncoder userEncoder = new UserValueEncoder();
+
+ private static final GroupValueEncoder groupEncoder = new GroupValueEncoder();
+
+ void setup(int groupId) throws Exception {
+ this.usersInGroup = new ArrayList<User>();
+ this.groupsInGroup = new ArrayList<Group>();
if (groupId == -1) {
this.group = new Group();
+ this.group.setOwner(getUserLogged());
} else {
- this.group = ServiceFactory.getSecurityService().getGroup(groupId);
- User[] users = ServiceFactory.getSecurityService().getUsersOfGroup(
- group);
+ this.group = RemoteSecurityService.getSecurityService().getGroup(
+ groupId);
+
+ User[] users = RemoteSecurityService.getSecurityService()
+ .getUsersOfGroup(group);
for (User user : users) {
- this.usersInGroup.add(user.getId() + "/" + user.getLogin());
+ this.usersInGroup.add(user);
}
+
+ Group[] groups = RemoteSecurityService.getSecurityService()
+ .getGroupsOfGroup(group);
+ for (Group group : groups) {
+ this.groupsInGroup.add(group);
+ }
}
}
- public Object onSuccess() throws NamingException {
+ public Object onSuccess() throws Exception {
if (group.getId() == null) {
- ServiceFactory.getSecurityService().saveGroup(group.getName(),
- getUserLogged(getToken()));
+ group = RemoteSecurityService.getSecurityService().saveGroup(
+ group.getName(), getUserLogged());
} else {
- ServiceFactory.getSecurityService().updateGroup(group);
+ group = RemoteSecurityService.getSecurityService().updateGroup(
+ group);
}
-
+
Integer[] usersIds = new Integer[usersInGroup.size()];
int i = 0;
- for (String user : usersInGroup) {
- StringTokenizer st = new StringTokenizer(user, "/");
- usersIds[i] = new Integer(st.nextToken());
+ for (User user : usersInGroup) {
+ usersIds[i] = new Integer(user.getId());
i++;
}
- ServiceFactory.getSecurityService().setUsersOfGroup(group, usersIds);
+ RemoteSecurityService.getSecurityService().setUsersOfGroup(group,
+ usersIds);
- /*
Integer[] groupsIds = new Integer[groupsInGroup.size()];
i = 0;
- for (String group : groupsInGroup) {
- StringTokenizer st = new StringTokenizer(group, "/");
- groupsIds[i] = new Integer(st.nextToken());
+ for (Group group : groupsInGroup) {
+ groupsIds[i] = new Integer(group.getId());
i++;
}
- ServiceFactory.getSecurityService().setGroupsOfGroup(group, groupsIds);
- */
-
+ RemoteSecurityService.getSecurityService().setGroupsOfGroup(group,
+ groupsIds);
+
return groupList;
}
@@ -80,20 +93,41 @@
return groupList;
}
- public List<String> getUsers() throws NamingException {
- User[] users = ServiceFactory.getSecurityService().getUsers();
- List<String> result = new ArrayList<String>();
- for (int i = 0; i < users.length; i++) {
- result.add(users[i].getId() + "/" + users[i].getLogin());
+ public List<User> getUsers() throws Exception {
+ User[] users = RemoteSecurityService.getSecurityService().getUsers();
+ List<User> result = new ArrayList<User>();
+ for (User user : users) {
+ result.add(user);
}
return result;
}
- public List<String> getUsersInGroup() throws NamingException {
+ public List<Group> getGroups() throws Exception {
+ Group[] groups = RemoteSecurityService.getSecurityService().getGroups();
+ List<Group> result = new ArrayList<Group>();
+ for (Group group : groups) {
+ result.add(group);
+ }
+ return result;
+ }
+
+ 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<String> usersInGroup)
+ public void setUsersInGroup(List<User> usersInGroup)
throws NamingException {
this.usersInGroup = usersInGroup;
}
@@ -102,10 +136,6 @@
return group;
}
- public StringValueEncoder getStringEncoder() {
- return stringEncoder;
- }
-
public GroupList getGroupList() {
return groupList;
}
@@ -114,4 +144,20 @@
this.groupList = groupList;
}
+ public List<Group> getGroupsInGroup() {
+ return groupsInGroup;
+ }
+
+ public void setGroupsInGroup(List<Group> groupsInGroup) {
+ this.groupsInGroup = groupsInGroup;
+ }
+
+ public User getOwner() {
+ return this.group.getOwner();
+ }
+
+ public void setOwner(User owner) {
+ this.group.setOwner(owner);
+ }
+
}
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-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -3,8 +3,6 @@
import java.util.ArrayList;
import java.util.List;
-import javax.naming.NamingException;
-
import org.apache.tapestry.ComponentResources;
import org.apache.tapestry.annotations.InjectPage;
import org.apache.tapestry.annotations.Retain;
@@ -12,10 +10,9 @@
import org.apache.tapestry.ioc.annotations.Inject;
import org.apache.tapestry.services.BeanModelSource;
-import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity;
import fr.cemagref.simexplorer.is.security.entities.Group;
import fr.cemagref.simexplorer.is.ui.web.pages.security.AdminPage;
-import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory;
+import fr.cemagref.simexplorer.is.ui.web.services.RemoteSecurityService;
public class GroupList extends AdminPage {
@@ -23,7 +20,7 @@
private BeanModel model;
private Group group;
-
+
@Inject
private BeanModelSource beanModelSource;
@@ -32,7 +29,7 @@
@InjectPage
private GroupEdit groupEdit;
-
+
void pageLoaded() {
model = beanModelSource.create(Group.class, true, resources);
List<String> wantedProperties = new ArrayList<String>();
@@ -46,32 +43,33 @@
model.add("edit", null);
model.add("delete", null);
}
-
- public Group[] getGroups() throws NamingException {
+
+ public Group[] getGroups() throws Exception {
Group[] groups = null;
- if (isUserSuperAdmin(getToken())) {
- groups = ServiceFactory.getSecurityService().getGroups();
+ if (isUserSuperAdmin()) {
+ groups = RemoteSecurityService.getSecurityService().getGroups();
} else {
- groups = ServiceFactory.getSecurityService().getGroupsOwnedBy(getUserLogged(getToken()));
- }
+ groups = RemoteSecurityService.getSecurityService()
+ .getGroupsOwnedBy(getUserLogged());
+ }
return groups;
}
public Object onActionFromDelete(Integer context) throws Exception {
- ServiceFactory.getSecurityService().deleteGroup(context);
+ RemoteSecurityService.getSecurityService().deleteGroup(context);
return null;
}
-
+
public Object onActionFromEdit(Integer context) throws Exception {
groupEdit.setup(context);
return groupEdit;
}
-
+
public Object onActionFromAdd() throws Exception {
groupEdit.setup(-1);
return groupEdit;
}
-
+
public Group getGroup() {
return group;
}
@@ -91,5 +89,5 @@
public void setGroupEdit(GroupEdit groupEdit) {
this.groupEdit = groupEdit;
}
-
+
}
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/Login.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/Login.java 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/Login.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -1,12 +1,11 @@
package fr.cemagref.simexplorer.is.ui.web.pages;
-import javax.naming.NamingException;
-
import org.apache.tapestry.annotations.ApplicationState;
import org.apache.tapestry.annotations.InjectPage;
import org.apache.tapestry.annotations.Persist;
+import org.apache.tapestry.ioc.annotations.Inject;
-import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory;
+import fr.cemagref.simexplorer.is.ui.web.services.RemoteSecurityService;
public class Login {
@@ -19,10 +18,10 @@
@ApplicationState
private String token;
-
- public Object onSuccess() throws NamingException {
+
+ public Object onSuccess() throws Exception {
Object result = null;
- token = ServiceFactory.getSecurityService().loginUser(user,
+ token = RemoteSecurityService.getSecurityService().loginUser(user,
password);
if (token != null) {
result = elementList;
@@ -53,5 +52,5 @@
public String getWindowTitle() {
return "Login";
}
-
+
}
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-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -2,18 +2,16 @@
import java.util.ArrayList;
import java.util.List;
-import java.util.StringTokenizer;
-import javax.naming.NamingException;
-
+import org.apache.tapestry.ValueEncoder;
import org.apache.tapestry.annotations.InjectPage;
import org.apache.tapestry.annotations.Persist;
-import org.apache.tapestry.internal.services.StringValueEncoder;
import fr.cemagref.simexplorer.is.security.entities.Group;
import fr.cemagref.simexplorer.is.security.entities.User;
import fr.cemagref.simexplorer.is.ui.web.pages.security.AdminPage;
-import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory;
+import fr.cemagref.simexplorer.is.ui.web.services.GroupValueEncoder;
+import fr.cemagref.simexplorer.is.ui.web.services.RemoteSecurityService;
public class UserEdit extends AdminPage {
@@ -23,55 +21,64 @@
@InjectPage
private UserList userList;
- private StringValueEncoder stringEncoder = new StringValueEncoder();
-
@Persist
- private List<String> groupsOfUser;
+ private List<Group> groupsOfUser;
- void setup(int groupId) throws NamingException {
- this.groupsOfUser = new ArrayList<String>();
+ private static final GroupValueEncoder groupEncoder = new GroupValueEncoder();
+
+ void setup(int groupId) throws Exception {
+ this.groupsOfUser = new ArrayList<Group>();
if (groupId == -1) {
this.user = new User();
} else {
- this.user = ServiceFactory.getSecurityService().getUser(groupId);
- Group[] groups = ServiceFactory.getSecurityService()
+ this.user = RemoteSecurityService.getSecurityService().getUser(
+ groupId);
+ Group[] groups = RemoteSecurityService.getSecurityService()
.getGroupsOfUser(this.user);
for (Group group : groups) {
- groupsOfUser.add(group.getId() + "/" + group.getName());
+ groupsOfUser.add(group);
}
}
}
- public Object onSuccess() throws NamingException {
+ public Object onSuccess() throws Exception {
if (user.getId() == null) {
- ServiceFactory.getSecurityService().saveUser(user.getLogin(),
- user.getMail());
+ user = RemoteSecurityService.getSecurityService().saveUser(
+ user.getLogin(), user.getMail());
} else {
- ServiceFactory.getSecurityService().updateUser(user);
+ user = RemoteSecurityService.getSecurityService().updateUser(user);
}
Integer[] groupsIds = new Integer[groupsOfUser.size()];
int i = 0;
- for (String group : groupsOfUser) {
- StringTokenizer st = new StringTokenizer(group, "/");
- groupsIds[i] = new Integer(st.nextToken());
+ for (Group group : groupsOfUser) {
+ groupsIds[i] = group.getId();
i++;
}
- ServiceFactory.getSecurityService().setGroupsOfUser(user, groupsIds);
+ RemoteSecurityService.getSecurityService().setGroupsOfUser(user,
+ groupsIds);
return userList;
}
- public List<String> getGroups() throws NamingException {
- Group[] groups = ServiceFactory.getSecurityService().getGroups();
- List<String> result = new ArrayList<String>();
- for (int i = 0; i < groups.length; i++) {
- result.add(groups[i].getId() + "/" + groups[i].getName());
+ public List<Group> getGroups() throws Exception {
+ Group[] groups = RemoteSecurityService.getSecurityService().getGroups();
+ List<Group> result = new ArrayList<Group>();
+ for (Group group : groups) {
+ result.add(group);
}
return result;
}
+ public ValueEncoder getGroupEncoder() {
+ return groupEncoder;
+ }
+
+ public boolean getCreating() {
+ return (user.getId() == null);
+ }
+
public Object onActionFromCancel() {
return userList;
}
@@ -88,16 +95,12 @@
return user;
}
- public List<String> getGroupsOfUser() {
+ public List<Group> getGroupsOfUser() {
return groupsOfUser;
}
- public void setGroupsOfUser(List<String> groupsOfUser) {
+ public void setGroupsOfUser(List<Group> groupsOfUser) {
this.groupsOfUser = groupsOfUser;
}
- public StringValueEncoder getStringEncoder() {
- return stringEncoder;
- }
-
}
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-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserList.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -3,8 +3,6 @@
import java.util.ArrayList;
import java.util.List;
-import javax.naming.NamingException;
-
import org.apache.tapestry.ComponentResources;
import org.apache.tapestry.annotations.InjectPage;
import org.apache.tapestry.annotations.Retain;
@@ -14,7 +12,7 @@
import fr.cemagref.simexplorer.is.security.entities.User;
import fr.cemagref.simexplorer.is.ui.web.pages.security.AdminPage;
-import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory;
+import fr.cemagref.simexplorer.is.ui.web.services.RemoteSecurityService;
public class UserList extends AdminPage {
@@ -50,14 +48,14 @@
model.add("delete", null);
}
- public User[] getUsers() throws NamingException {
+ public User[] getUsers() throws Exception {
User[] users = null;
- users = ServiceFactory.getSecurityService().getUsers();
+ users = RemoteSecurityService.getSecurityService().getUsers();
return users;
}
public Object onActionFromDelete(Integer context) throws Exception {
- ServiceFactory.getSecurityService().deleteUser(context);
+ RemoteSecurityService.getSecurityService().deleteUser(context);
return null;
}
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/AdminPage.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/AdminPage.java 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/AdminPage.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -3,7 +3,7 @@
public abstract class AdminPage extends ProtectedPage {
public boolean hasAccessToPage() {
- return isUserAdmin(getToken());
+ return isUserAdmin();
}
}
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-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/ProtectedPage.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -1,11 +1,10 @@
package fr.cemagref.simexplorer.is.ui.web.pages.security;
-import javax.naming.NamingException;
-
import org.apache.tapestry.annotations.ApplicationState;
+import org.apache.tapestry.ioc.annotations.Inject;
import fr.cemagref.simexplorer.is.security.entities.User;
-import fr.cemagref.simexplorer.is.ui.web.services.ServiceFactory;
+import fr.cemagref.simexplorer.is.ui.web.services.RemoteSecurityService;
public abstract class ProtectedPage {
@@ -18,12 +17,12 @@
return null;
}
- public static User getUserLogged(String aToken) {
+ public User getUserLogged() {
User loggedUser = null;
- if (aToken != null) {
+ if (token != null) {
try {
- loggedUser = ServiceFactory.getSecurityService().getLoggedUser(
- aToken);
+ loggedUser = RemoteSecurityService.getSecurityService().getLoggedUser(
+ token);
} catch (Exception e) {
// TODO: handle exception
}
@@ -31,10 +30,10 @@
return loggedUser;
}
- public static boolean isUserLogged(String aToken) {
+ public boolean isUserLogged() {
boolean result = false;
try {
- if (getUserLogged(aToken) != null) {
+ if (getUserLogged() != null) {
result = true;
}
} catch (Exception e) {
@@ -43,10 +42,10 @@
return result;
}
- public static boolean isUserAdmin(String aToken) {
+ public boolean isUserAdmin() {
boolean result = false;
try {
- User user = getUserLogged(aToken);
+ User user = getUserLogged();
if (user != null && user.isAdmin()) {
result = true;
}
@@ -56,10 +55,10 @@
return result;
}
- public static boolean isUserSuperAdmin(String aToken) {
+ public boolean isUserSuperAdmin() {
boolean result = false;
try {
- User user = getUserLogged(aToken);
+ User user = getUserLogged();
if (user != null && user.isSuperAdmin()) {
result = true;
}
@@ -71,12 +70,4 @@
abstract boolean hasAccessToPage();
- public String getToken() {
- return token;
- }
-
- public void setToken(String token) {
- this.token = token;
- }
-
}
\ No newline at end of file
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/SuperAdminPage.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/SuperAdminPage.java 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/SuperAdminPage.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -3,7 +3,7 @@
public abstract class SuperAdminPage extends ProtectedPage {
public boolean hasAccessToPage() {
- return isUserSuperAdmin(getToken());
+ return isUserSuperAdmin();
}
}
Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/UserPage.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/UserPage.java 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/UserPage.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -3,7 +3,7 @@
public abstract class UserPage extends ProtectedPage {
public boolean hasAccessToPage() {
- return isUserLogged(getToken());
+ return isUserLogged();
}
}
Added: 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 (rev 0)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/AppModule.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -0,0 +1,106 @@
+package fr.cemagref.simexplorer.is.ui.web.services;
+
+import java.io.IOException;
+
+import org.apache.tapestry.internal.services.GenericValueEncoderFactory;
+import org.apache.tapestry.ioc.MappedConfiguration;
+import org.apache.tapestry.ioc.OrderedConfiguration;
+import org.apache.tapestry.ioc.ServiceBinder;
+import org.apache.tapestry.ioc.annotations.InjectService;
+import org.apache.tapestry.services.Request;
+import org.apache.tapestry.services.RequestFilter;
+import org.apache.tapestry.services.RequestHandler;
+import org.apache.tapestry.services.Response;
+import org.apache.tapestry.services.ValueEncoderFactory;
+import org.slf4j.Logger;
+
+import fr.cemagref.simexplorer.is.security.entities.Group;
+import fr.cemagref.simexplorer.is.security.entities.User;
+
+public class AppModule {
+ public static void bind(ServiceBinder binder) {
+ /*
+ binder.bind(RemoteStorageService.class, RemoteStorageServiceImpl.class);
+ binder.bind(RemoteSecurityService.class, RemoteSecurityServiceImpl.class);
+ */
+
+ // Make bind() calls on the binder object to define most IoC services.
+ // Use service builder methods (example below) when the implementation
+ // is provided inline, or requires more initialization than simply
+ // invoking the constructor.
+ }
+
+ public static void contributeApplicationDefaults(
+ MappedConfiguration<String, String> configuration) {
+ configuration.add("tapestry.supported-locales", "en");
+ configuration.add("tapestry.supported-locales", "fr");
+ }
+
+ 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()));
+ }
+
+ /**
+ * This is a service definition, the service will be named "TimingFilter".
+ * The interface, RequestFilter, is used within the RequestHandler service
+ * pipeline, which is built from the RequestHandler service configuration.
+ * Tapestry IoC is responsible for passing in an appropriate Log instance.
+ * Requests for static resources are handled at a higher level, so this
+ * filter will only be invoked for Tapestry related requests.
+ *
+ * <p>
+ * Service builder methods are useful when the implementation is inline as
+ * an inner class (as here) or require some other kind of special
+ * initialization. In most cases, use the static bind() method instead.
+ *
+ * <p>
+ * If this method was named "build", then the service id would be taken from
+ * the service interface and would be "RequestFilter". Since Tapestry
+ * already defines a service named "RequestFilter" we use an explicit
+ * service id that we can reference inside the contribution method.
+ */
+ public RequestFilter buildTimingFilter(final Logger log) {
+ return new RequestFilter() {
+ public boolean service(Request request, Response response,
+ RequestHandler handler) throws IOException {
+ long startTime = System.currentTimeMillis();
+
+ try {
+ // The reponsibility of a filter is to invoke the
+ // corresponding method
+ // in the handler. When you chain multiple filters together,
+ // each filter
+ // received a handler that is a bridge to the next filter.
+
+ return handler.service(request, response);
+ } finally {
+ long elapsed = System.currentTimeMillis() - startTime;
+
+ log.info(String.format("Request time: %d ms", elapsed));
+ }
+ }
+ };
+ }
+
+ /**
+ * This is a contribution to the RequestHandler service configuration. This
+ * is how we extend Tapestry using the timing filter. A common use for this
+ * kind of filter is transaction management or security.
+ */
+ public void contributeRequestHandler(
+ OrderedConfiguration<RequestFilter> configuration,
+ @InjectService("TimingFilter")
+ RequestFilter filter) {
+ // Each contribution to an ordered configuration has a name, When
+ // necessary, you may
+ // set constraints to precisely control the invocation order of the
+ // contributed filter
+ // within the pipeline.
+
+ configuration.add("Timing", filter);
+ }
+}
Added: 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 (rev 0)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/GroupValueEncoder.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -0,0 +1,23 @@
+package fr.cemagref.simexplorer.is.ui.web.services;
+
+import org.apache.tapestry.ValueEncoder;
+
+import fr.cemagref.simexplorer.is.security.entities.Group;
+
+public class GroupValueEncoder implements ValueEncoder<Group> {
+
+ public String toClient(Group arg0) {
+ return Integer.toString(arg0.getId());
+ }
+
+ public Group toValue(String arg0) {
+ Group group = null;
+ try {
+ group = RemoteSecurityService.getSecurityService().getGroup(Integer.decode(arg0));
+ } catch (Exception e) {
+ // TODO: handle exception
+ }
+ return group;
+ }
+
+}
Added: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/RemoteSecurityService.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/RemoteSecurityService.java (rev 0)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/RemoteSecurityService.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -0,0 +1,10 @@
+package fr.cemagref.simexplorer.is.ui.web.services;
+
+import fr.cemagref.simexplorer.is.security.service.AuthenticationService;
+
+public class RemoteSecurityService extends RemoteService {
+
+ public static AuthenticationService getSecurityService() throws Exception {
+ return (AuthenticationService) getService("AuthenticationService");
+ }
+}
Added: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/RemoteService.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/RemoteService.java (rev 0)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/RemoteService.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -0,0 +1,31 @@
+package fr.cemagref.simexplorer.is.ui.web.services;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+public abstract class RemoteService {
+
+ protected static Map<String, Object> services = new HashMap<String, Object>();
+
+ protected static Object getService(String serviceName)
+ throws NamingException {
+ if (services.get(serviceName) == null) {
+ 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);
+ services.put(serviceName, context.lookup(serviceName));
+ }
+ return services.get(serviceName);
+ }
+
+}
Added: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/RemoteStorageService.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/RemoteStorageService.java (rev 0)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/RemoteStorageService.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -0,0 +1,10 @@
+package fr.cemagref.simexplorer.is.ui.web.services;
+
+import fr.cemagref.simexplorer.is.service.StorageService;
+
+public class RemoteStorageService extends RemoteService {
+
+ public static StorageService getStorageService() throws Exception {
+ return (StorageService) getService("StorageService");
+ }
+}
Deleted: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/ServiceFactory.java
===================================================================
--- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/ServiceFactory.java 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/ServiceFactory.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -1,42 +0,0 @@
-package fr.cemagref.simexplorer.is.ui.web.services;
-
-import java.util.Properties;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-
-import fr.cemagref.simexplorer.is.security.service.AuthenticationService;
-import fr.cemagref.simexplorer.is.service.StorageService;
-
-public class ServiceFactory {
-
- private static StorageService serviceProjets = null;
- private static AuthenticationService securityProjets = null;
-
- public static StorageService getStorageService() throws NamingException {
- if (serviceProjets == null) {
- serviceProjets = (StorageService) getService("StorageService");
- }
- return serviceProjets;
- }
-
- public static AuthenticationService getSecurityService() throws NamingException {
- if (securityProjets == null) {
- securityProjets = (AuthenticationService) getService("AuthenticationService");
- }
- return securityProjets;
- }
-
- private static Object getService(String serviceName) throws NamingException {
- 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);
- return context.lookup(serviceName);
- }
-
-}
Added: 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 (rev 0)
+++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/services/UserValueEncoder.java 2008-01-21 18:44:16 UTC (rev 335)
@@ -0,0 +1,24 @@
+package fr.cemagref.simexplorer.is.ui.web.services;
+
+import org.apache.tapestry.ValueEncoder;
+
+import fr.cemagref.simexplorer.is.security.entities.User;
+
+public class UserValueEncoder implements ValueEncoder<User> {
+
+ public String toClient(User arg0) {
+ return Integer.toString(arg0.getId());
+ }
+
+ public User toValue(String arg0) {
+ User user = null;
+ try {
+ user = RemoteSecurityService.getSecurityService().getUser(
+ Integer.decode(arg0));
+ } catch (Exception e) {
+ // TODO: handle exception
+ }
+ return user;
+ }
+
+}
Modified: trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml
===================================================================
--- trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml 2008-01-21 18:44:16 UTC (rev 335)
@@ -4,20 +4,22 @@
<t:form>
<t:errors />
- <t:errors/>
-
- <p>${message:name} :
- <input t:type="TextField" t:id="name" t:validate="required,minlength=3"
- t:value="group.name" size="30"/></p>
+ <t:errors />
- <p>${message:userMembers} :
- <input t:type="Palette" model="users" selected="usersInGroup" encoder="stringEncoder"/>
- </p>
+ <p>${message:name} : <input t:type="TextField" t:id="name"
+ t:validate="required,minlength=3" t:value="group.name" size="30" /></p>
- <p>${message:groupMembers} :
- <input t:type="Palette" model="groups" selected="groupsInGroup" encoder="stringEncoder"/>
- </p>
-
+ <t:if test="superAdmin">
+ <p><t:label for="owner" /> : <input t:type="Select" t:id="owner"
+ t:value="owner" model="users" /></p>
+ </t:if>
+
+ <p>${message:userMembers} : <input t:type="Palette" model="users"
+ selected="usersInGroup" encoder="userEncoder" /></p>
+
+ <p>${message:groupMembers} : <input t:type="Palette"
+ model="groups" selected="groupsInGroup" encoder="groupEncoder" /></p>
+
<input t:type="Submit" t:value="message:submit" />
<a t:type="actionlink" t:id="cancel">${message:cancel}</a>
Modified: trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml
===================================================================
--- trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml 2008-01-21 18:44:16 UTC (rev 335)
@@ -4,7 +4,13 @@
<t:form>
<t:errors />
- <p>${message:name} : ${user.login}</p>
+ <p>${message:name} : <t:if test="creating">
+ <input t:type="TextField" t:id="login"
+ t:validate="required,minlength=4" t:value="user.login" size="40" />
+ <t:parameter name="else">
+ ${user.login}
+ </t:parameter>
+ </t:if></p>
<p><t:label for="mail" />: <input t:type="TextField" t:id="mail"
t:validate="required,minlength=4" t:value="user.mail" size="40" /></p>
@@ -18,11 +24,10 @@
<p>${message:password} : <a t:type="ActionLink"
t:id="resetPassword" t:context="user.id">${message:resetPassword}</a>
</p>
-
- <p>${message:memberOf} :
- <input t:type="Palette" model="groups" selected="groupsOfUser" encoder="stringEncoder"/>
- </p>
-
+
+ <p>${message:memberOf} : <input t:type="Palette" model="groups"
+ selected="groupsOfUser" encoder="groupEncoder" /></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/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/simexplorer-is-web/src/main/webapp/WEB-INF/web.xml 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/main/webapp/WEB-INF/web.xml 2008-01-21 18:44:16 UTC (rev 335)
@@ -13,11 +13,12 @@
</context-param>
<filter>
- <filter-name>tapestryfilter</filter-name>
+ <filter-name>app</filter-name>
<filter-class>org.apache.tapestry.TapestryFilter</filter-class>
</filter>
<filter-mapping>
- <filter-name>tapestryfilter</filter-name>
+ <!-- do not change app as it uses for finding AppModule -->
+ <filter-name>app</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Modified: trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/css/Layout.css
===================================================================
--- trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/css/Layout.css 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/css/Layout.css 2008-01-21 18:44:16 UTC (rev 335)
@@ -166,6 +166,10 @@
font-family: verdana, arial, helvetica, sans-serif;
}
+menu.Menu>li>a.Link:Visited {
+ color: black;
+}
+
.Hide {
display: none;
}
Modified: trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.properties
===================================================================
--- trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.properties 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.properties 2008-01-21 18:44:16 UTC (rev 335)
@@ -1,3 +1,5 @@
name=Name
+userMembers=User members
+groupMembers=Group members
cancel=Cancel
submit=Submit
\ No newline at end of file
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-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.properties 2008-01-21 18:44:16 UTC (rev 335)
@@ -7,4 +7,5 @@
submit=Submit
cancel=Cancel
password=Password
-resetPassword=Reset password
\ No newline at end of file
+resetPassword=Reset password
+memberOf=Member of
\ No newline at end of file
Deleted: trunk/simexplorer-is-web/tomcatstart.sh
===================================================================
--- trunk/simexplorer-is-web/tomcatstart.sh 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/tomcatstart.sh 2008-01-21 18:44:16 UTC (rev 335)
@@ -1,3 +0,0 @@
-export JPDA_TRANSPORT=dt_socket
-export JPDA_ADDRESS=8786
-/opt/apache-tomcat-5.5.25/bin/catalina.sh jpda start
Deleted: trunk/simexplorer-is-web/tomcatstop.sh
===================================================================
--- trunk/simexplorer-is-web/tomcatstop.sh 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/tomcatstop.sh 2008-01-21 18:44:16 UTC (rev 335)
@@ -1,4 +0,0 @@
-export JPDA_TRANSPORT=dt_socket
-export JPDA_ADDRESS=8786
-/opt/apache-tomcat-5.5.25/bin/catalina.sh jpda stop
-
Deleted: trunk/simexplorer-is-web/undeploy.sh
===================================================================
--- trunk/simexplorer-is-web/undeploy.sh 2008-01-21 09:35:17 UTC (rev 334)
+++ trunk/simexplorer-is-web/undeploy.sh 2008-01-21 18:44:16 UTC (rev 335)
@@ -1 +0,0 @@
-mvn tomcat:undeploy