Author: glandais Date: 2008-01-25 15:44:03 +0000 (Fri, 25 Jan 2008) New Revision: 542 Added: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/components/Back.java trunk/simexplorer-is-web/src/main/webapp/WEB-INF/app.properties trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Back.tml Removed: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationExport.java trunk/simexplorer-is-web/src/main/webapp/ApplicationExport.tml trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationExport.properties 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/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/Permission.java trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationService.java trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationServiceImpl.java trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/MockAuthenticationServiceImpl.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/ElementDelete.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/ElementExport.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementHistory.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementPage.java trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementRights.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/pages/security/ProtectedPage.java trunk/simexplorer-is-web/src/main/webapp/ApplicationImport.tml trunk/simexplorer-is-web/src/main/webapp/ElementDelete.tml trunk/simexplorer-is-web/src/main/webapp/ElementDetail.tml trunk/simexplorer-is-web/src/main/webapp/ElementExport.tml trunk/simexplorer-is-web/src/main/webapp/ElementHistory.tml trunk/simexplorer-is-web/src/main/webapp/ElementRights.tml trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml trunk/simexplorer-is-web/src/main/webapp/GroupList.tml trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml trunk/simexplorer-is-web/src/main/webapp/UserList.tml trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationImport.properties 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/GroupList.properties trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/Login.properties 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/UserList.properties Log: Rights edit page 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-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManager.java 2008-01-25 15:44:03 UTC (rev 542) @@ -17,6 +17,8 @@ * ##% */ package fr.cemagref.simexplorer.is.security.credentials; +import java.util.List; + import javax.ejb.Local; import fr.cemagref.simexplorer.is.security.entities.Permission; 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-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurity.java 2008-01-25 15:44:03 UTC (rev 542) @@ -70,4 +70,6 @@ public void savePermission(Permission p); + public void setPermissions(String uuid, Permission[] permissions); + } 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-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java 2008-01-25 15:44:03 UTC (rev 542) @@ -197,4 +197,13 @@ em.persist(p); } + public void setPermissions(String uuid, Permission[] permissions) { + em.createQuery( + "delete from Permission p where p.businessId=:businessId") + .setParameter("businessId", uuid).executeUpdate(); + for (Permission permission : permissions) { + em.persist(permission); + } + } + } Modified: 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 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Permission.java 2008-01-25 15:44:03 UTC (rev 542) @@ -17,8 +17,12 @@ * ##% */ package fr.cemagref.simexplorer.is.security.entities; -public class Permission { +import java.io.Serializable; +public class Permission implements Serializable { + + private static final long serialVersionUID = 2753683847549451125L; + private Integer id; private String businessId; private Actor actor; Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationService.java =================================================================== --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationService.java 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationService.java 2008-01-25 15:44:03 UTC (rev 542) @@ -20,6 +20,7 @@ import javax.ejb.Remote; import fr.cemagref.simexplorer.is.security.entities.Group; +import fr.cemagref.simexplorer.is.security.entities.Permission; import fr.cemagref.simexplorer.is.security.entities.User; @Remote @@ -97,4 +98,8 @@ public User getLoggedUser(String token) throws SimExplorerServiceException; + public Permission[] getPermissions(String uuid); + + public void setPermissions(String uuid, Permission[] permissions); + } Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationServiceImpl.java =================================================================== --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationServiceImpl.java 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/AuthenticationServiceImpl.java 2008-01-25 15:44:03 UTC (rev 542) @@ -41,6 +41,7 @@ import fr.cemagref.simexplorer.is.security.dao.DaoSecurity; 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 = "AuthenticationService") @@ -74,7 +75,8 @@ */ } - private String computeHash(String clearString) throws SimExplorerServiceException { + private String computeHash(String clearString) + throws SimExplorerServiceException { MessageDigest messageDigest = null; try { messageDigest = MessageDigest.getInstance("SHA-1"); @@ -138,7 +140,8 @@ return group; } - public User saveUser(String token, String login, String mail) throws SimExplorerServiceException { + public User saveUser(String token, String login, String mail) + throws SimExplorerServiceException { User user = new User(); user.setLogin(login); user.setMail(mail); @@ -181,7 +184,8 @@ } } - public String loginUser(String login, String password) throws SimExplorerServiceException { + public String loginUser(String login, String password) + throws SimExplorerServiceException { if (!superAdminCheck) { checkSuperAdmin(); superAdminCheck = true; @@ -211,7 +215,8 @@ dao.deleteToken(token); } - public User requestAccount(String login, String mail) throws SimExplorerServiceException { + public User requestAccount(String login, String mail) + throws SimExplorerServiceException { User user = new User(); user.setLogin(login); user.setMail(mail); @@ -223,14 +228,16 @@ return user; } - public void changePassword(String token, String login, String password) throws SimExplorerServiceException { + public void changePassword(String token, String login, String password) + throws SimExplorerServiceException { User user = getUser(token, login); String passwordHash = computeHash(password); user.setPasswordHash(passwordHash); dao.saveUser(user); } - public void resetPassword(String token, String login) throws SimExplorerServiceException { + public void resetPassword(String token, String login) + throws SimExplorerServiceException { User user = getUser(token, login); String password = generatePassword(); sendMail(login, user.getMail(), password); @@ -329,4 +336,13 @@ dao.updateGroup(realGroup); } + public Permission[] getPermissions(String uuid) { + List<Permission> permissions = dao.getPermissions(uuid); + return permissions.toArray(new Permission[permissions.size()]); + } + + public void setPermissions(String uuid, Permission[] permissions) { + dao.setPermissions(uuid, permissions); + } + } Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/MockAuthenticationServiceImpl.java =================================================================== --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/MockAuthenticationServiceImpl.java 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/MockAuthenticationServiceImpl.java 2008-01-25 15:44:03 UTC (rev 542) @@ -18,6 +18,7 @@ package fr.cemagref.simexplorer.is.service; import fr.cemagref.simexplorer.is.security.entities.Group; +import fr.cemagref.simexplorer.is.security.entities.Permission; import fr.cemagref.simexplorer.is.security.entities.User; @@ -127,4 +128,14 @@ private Object checkImplemented() { throw new IllegalStateException("not implemented"); } + + public Permission[] getPermissions(String uuid) { + // TODO Auto-generated method stub + return null; + } + + public void setPermissions(String uuid, Permission[] permissions) { + // TODO Auto-generated method stub + + } } \ No newline at end of file Added: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/components/Back.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/components/Back.java (rev 0) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/components/Back.java 2008-01-25 15:44:03 UTC (rev 542) @@ -0,0 +1,35 @@ +/* +* ##% Copyright (C) 2008 Code Lutin, Gabriel Landais +* +* This program is free software; you can redistribute it and/or +* modify it under the terms of the GNU General Public License +* as published by the Free Software Foundation; either version 2 +* of the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* ##% */ +package fr.cemagref.simexplorer.is.ui.web.components; + +import org.apache.tapestry.annotations.Parameter; + +public class Back { + + @Parameter(required = true) + private String label; + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + +} Deleted: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationExport.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationExport.java 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationExport.java 2008-01-25 15:44:03 UTC (rev 542) @@ -1,24 +0,0 @@ -/* -* ##% Copyright (C) 2008 Code Lutin, Gabriel Landais -* -* This program is free software; you can redistribute it and/or -* modify it under the terms of the GNU General Public License -* as published by the Free Software Foundation; either version 2 -* of the License, or (at your option) any later version. -* -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -* ##% */ -package fr.cemagref.simexplorer.is.ui.web.pages; - -import fr.cemagref.simexplorer.is.ui.web.pages.security.UserPage; - -public class ApplicationExport extends UserPage { - -} 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-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationImport.java 2008-01-25 15:44:03 UTC (rev 542) @@ -60,4 +60,8 @@ } } + public String getWindowTitle() { + return ""; + } + } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDelete.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDelete.java 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDelete.java 2008-01-25 15:44:03 UTC (rev 542) @@ -40,4 +40,8 @@ // return null; // } + public String getWindowTitle() { + return ""; + } + } 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-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementDetail.java 2008-01-25 15:44:03 UTC (rev 542) @@ -64,6 +64,10 @@ @InjectPage private ElementRights elementRights; + public String getWindowTitle() { + return ""; + } + /** * Headers of tree grid * @@ -143,14 +147,14 @@ private TreeNode generateElement() { TreeNode node = null; - if (element instanceof ExplorationApplication) { + if (getElement() instanceof ExplorationApplication) { node = generateExplorationApplication(); } - if (element instanceof ExplorationData) { - node = generateExplorationData((ExplorationData) element); + if (getElement() instanceof ExplorationData) { + node = generateExplorationData((ExplorationData) getElement()); } - if (element instanceof Component) { - node = generateComponent((Component) element); + if (getElement() instanceof Component) { + node = generateComponent((Component) getElement()); } return node; @@ -219,22 +223,24 @@ node.setType(TreeNode.TYPE_FOLDER); - node.setColumns(generateStringArray("Application exploration", element - .getMetaData().getName(), element.getMetaData().getVersion() - .toString(), element, "export", "history", "delete")); + node.setColumns(generateStringArray("Application exploration", + getElement().getMetaData().getName(), getElement() + .getMetaData().getVersion().toString(), getElement(), + "export", "history", "delete")); List<TreeNode> children = new ArrayList<TreeNode>(); TreeNode node1 = new TreeNode(); node1.setType(TreeNode.TYPE_FOLDER); node1.setColumns(generateStringArray("Components", "", "")); - node1.setChildren(generateComponents((ExplorationApplication) element)); + node1 + .setChildren(generateComponents((ExplorationApplication) getElement())); children.add(node1); TreeNode node2 = new TreeNode(); node2.setType(TreeNode.TYPE_FOLDER); node2.setColumns(generateStringArray("Explorations", "", "")); node2 - .setChildren(generateExplorations((ExplorationApplication) element)); + .setChildren(generateExplorations((ExplorationApplication) getElement())); children.add(node2); node.setChildren(children); Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementExport.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementExport.java 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementExport.java 2008-01-25 15:44:03 UTC (rev 542) @@ -19,6 +19,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.util.Set; import com.healthmarketscience.rmiio.RemoteOutputStreamServer; import com.healthmarketscience.rmiio.SimpleRemoteOutputStream; @@ -30,11 +31,17 @@ public class ElementExport extends ElementPage { - public Object onDownloadXML() { + private String attachment; + public String getWindowTitle() { + return ""; + } + + public Object onActionFromDownloadXML() { + Object response; - MetaDataEntity mde = element.getMetaData(); + MetaDataEntity mde = getElement().getMetaData(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); RemoteOutputStreamServer xmlRemoteOutputStream = new SimpleRemoteOutputStream( @@ -54,4 +61,18 @@ return response; } + public Set<String> getAttachments() { + Set<String> result = getElement().getMetaData().getAttachments() + .keySet(); + return result; + } + + public String getAttachment() { + return attachment; + } + + public void setAttachment(String attachment) { + this.attachment = attachment; + } + } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementHistory.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementHistory.java 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementHistory.java 2008-01-25 15:44:03 UTC (rev 542) @@ -55,6 +55,10 @@ } } + public String getWindowTitle() { + return ""; + } + /** * Headers of tree grid * Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementPage.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementPage.java 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementPage.java 2008-01-25 15:44:03 UTC (rev 542) @@ -29,7 +29,7 @@ public abstract class ElementPage extends UserPage { @Persist - protected LoggableElement element; + private LoggableElement element; /** * Prepare page @@ -48,4 +48,8 @@ } } + public LoggableElement getElement() { + return element; + } + } Modified: trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementRights.java =================================================================== --- trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementRights.java 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/ElementRights.java 2008-01-25 15:44:03 UTC (rev 542) @@ -17,16 +17,265 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.web.pages; -import org.apache.tapestry.ComponentResources; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.tapestry.annotations.InjectPage; import org.apache.tapestry.annotations.Persist; -import org.apache.tapestry.ioc.annotations.Inject; -import fr.cemagref.simexplorer.is.entities.data.LoggableElement; -import fr.cemagref.simexplorer.is.ui.web.pages.security.UserPage; -import fr.cemagref.simexplorer.is.ui.web.services.RemoteStorageService; +import fr.cemagref.simexplorer.is.security.entities.Actor; +import fr.cemagref.simexplorer.is.security.entities.Group; +import fr.cemagref.simexplorer.is.security.entities.Permission; +import fr.cemagref.simexplorer.is.security.entities.User; +import fr.cemagref.simexplorer.is.service.SimExplorerServiceException; +import fr.cemagref.simexplorer.is.ui.web.SimExplorerWebException; +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 ElementRights extends ElementPage { + @Persist + private UserValueEncoder userEncoder; + + @Persist + private GroupValueEncoder groupEncoder; + + @Persist + private List<User> ownerUsers; + @Persist + private List<Group> ownerGroups; + + @Persist + private List<User> readUsers; + @Persist + private List<Group> readGroups; + + @Persist + private List<User> writeUsers; + @Persist + private List<Group> writeGroups; + + @Persist + private List<User> adminUsers; + @Persist + private List<Group> adminGroups; + + @InjectPage + private ElementDetail elementDetail; + + public String getWindowTitle() { + return ""; + } + @Override + public void setup(String uuid, String version) { + super.setup(uuid, version); + userEncoder = new UserValueEncoder(getToken()); + groupEncoder = new GroupValueEncoder(getToken()); + ownerUsers = new ArrayList<User>(); + ownerGroups = new ArrayList<Group>(); + + readUsers = new ArrayList<User>(); + readGroups = new ArrayList<Group>(); + + writeUsers = new ArrayList<User>(); + writeGroups = new ArrayList<Group>(); + + adminUsers = new ArrayList<User>(); + adminGroups = new ArrayList<Group>(); + + Permission[] permissions = RemoteSecurityService + .getAuthentificationService().getPermissions( + getElement().getMetaData().getUuid()); + for (Permission permission : permissions) { + if (permission.isOwner() && permission.getActor() instanceof User) { + ownerUsers.add((User) permission.getActor()); + } + if (permission.isCanRead() && permission.getActor() instanceof User) { + readUsers.add((User) permission.getActor()); + } + if (permission.isCanWrite() + && permission.getActor() instanceof User) { + writeUsers.add((User) permission.getActor()); + } + if (permission.isCanAdmin() + && permission.getActor() instanceof User) { + adminUsers.add((User) permission.getActor()); + } + + if (permission.isOwner() && permission.getActor() instanceof Group) { + ownerGroups.add((Group) permission.getActor()); + } + if (permission.isCanRead() + && permission.getActor() instanceof Group) { + readGroups.add((Group) permission.getActor()); + } + if (permission.isCanWrite() + && permission.getActor() instanceof Group) { + writeGroups.add((Group) permission.getActor()); + } + if (permission.isCanAdmin() + && permission.getActor() instanceof Group) { + adminGroups.add((Group) permission.getActor()); + } + } + + } + + private Permission getPermission(Actor actor, + Map<Actor, Permission> permissions) { + Permission permission = permissions.get(actor); + if (permission == null) { + permission = new Permission(); + permission.setActor(actor); + permission.setBusinessId(getElement().getMetaData().getUuid()); + permission.setOwner(false); + permission.setCanRead(false); + permission.setCanWrite(false); + permission.setCanAdmin(false); + permissions.put(actor, permission); + } + return permission; + } + + public Object onSuccess() { + Map<Actor, Permission> permissions = new HashMap<Actor, Permission>(); + + for (User user : ownerUsers) { + getPermission(user, permissions).setOwner(true); + } + for (User user : readUsers) { + getPermission(user, permissions).setCanRead(true); + } + for (User user : writeUsers) { + getPermission(user, permissions).setCanWrite(true); + } + for (User user : adminUsers) { + getPermission(user, permissions).setCanAdmin(true); + } + + for (Group group : ownerGroups) { + getPermission(group, permissions).setOwner(true); + } + for (Group group : readGroups) { + getPermission(group, permissions).setCanRead(true); + } + for (Group group : writeGroups) { + getPermission(group, permissions).setCanWrite(true); + } + for (Group group : adminGroups) { + getPermission(group, permissions).setCanAdmin(true); + } + + Permission[] permissionsArray = permissions.values().toArray( + new Permission[permissions.values().size()]); + + RemoteSecurityService.getAuthentificationService().setPermissions( + getElement().getMetaData().getUuid(), permissionsArray); + + return elementDetail; + } + + public List<User> getUsers() { + List<User> result = new ArrayList<User>(); + try { + User[] users = RemoteSecurityService.getAuthentificationService() + .getUsers(getToken()); + result.addAll(Arrays.asList(users)); + } catch (SimExplorerServiceException e) { + throw new SimExplorerWebException(e); + } + return result; + } + + public List<Group> getGroups() { + List<Group> result = new ArrayList<Group>(); + try { + Group[] groups = RemoteSecurityService.getAuthentificationService() + .getGroups(getToken()); + result.addAll(Arrays.asList(groups)); + } catch (SimExplorerServiceException e) { + throw new SimExplorerWebException(e); + } + + return result; + } + + public List<User> getOwnerUsers() { + return ownerUsers; + } + + public void setOwnerUsers(List<User> ownerUsers) { + this.ownerUsers = ownerUsers; + } + + public List<User> getReadUsers() { + return readUsers; + } + + public void setReadUsers(List<User> readUsers) { + this.readUsers = readUsers; + } + + public List<Group> getReadGroups() { + return readGroups; + } + + public void setReadGroups(List<Group> readGroups) { + this.readGroups = readGroups; + } + + public List<User> getWriteUsers() { + return writeUsers; + } + + public void setWriteUsers(List<User> writeUsers) { + this.writeUsers = writeUsers; + } + + public List<Group> getWriteGroups() { + return writeGroups; + } + + public void setWriteGroups(List<Group> writeGroups) { + this.writeGroups = writeGroups; + } + + public List<User> getAdminUsers() { + return adminUsers; + } + + public void setAdminUsers(List<User> adminUsers) { + this.adminUsers = adminUsers; + } + + public List<Group> getAdminGroups() { + return adminGroups; + } + + public void setAdminGroups(List<Group> adminGroups) { + this.adminGroups = adminGroups; + } + + public UserValueEncoder getUserEncoder() { + return userEncoder; + } + + public GroupValueEncoder getGroupEncoder() { + return groupEncoder; + } + + public List<Group> getOwnerGroups() { + return ownerGroups; + } + + public void setOwnerGroups(List<Group> ownerGroups) { + this.ownerGroups = ownerGroups; + } + } 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-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.java 2008-01-25 15:44:03 UTC (rev 542) @@ -54,6 +54,10 @@ @Persist private GroupValueEncoder groupEncoder; + public String getWindowTitle() { + return ""; + } + void setup(int groupId) { this.usersInGroup = new ArrayList<User>(); this.groupsInGroup = new ArrayList<Group>(); 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-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.java 2008-01-25 15:44:03 UTC (rev 542) @@ -49,6 +49,10 @@ @InjectPage private GroupEdit groupEdit; + public String getWindowTitle() { + return ""; + } + void pageLoaded() { model = beanModelSource.create(Group.class, true, resources); List<String> wantedProperties = new ArrayList<String>(); 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-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.java 2008-01-25 15:44:03 UTC (rev 542) @@ -63,6 +63,10 @@ private Group group; + public String getWindowTitle() { + return ""; + } + void pageLoaded() { groupModel = beanModelSource.create(Group.class, true, resources); List<String> wantedProperties = new ArrayList<String>(); 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-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/UserList.java 2008-01-25 15:44:03 UTC (rev 542) @@ -49,6 +49,10 @@ @InjectPage private UserEdit userEdit; + public String getWindowTitle() { + return ""; + } + void pageLoaded() { model = beanModelSource.create(User.class, true, resources); List<String> wantedProperties = new ArrayList<String>(); 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-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/java/fr/cemagref/simexplorer/is/ui/web/pages/security/ProtectedPage.java 2008-01-25 15:44:03 UTC (rev 542) @@ -81,6 +81,8 @@ abstract boolean hasAccessToPage(); + public abstract String getWindowTitle(); + public User getUserLogged() { return user; } Deleted: trunk/simexplorer-is-web/src/main/webapp/ApplicationExport.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/ApplicationExport.tml 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/main/webapp/ApplicationExport.tml 2008-01-25 15:44:03 UTC (rev 542) @@ -1,4 +0,0 @@ -<t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" - title="message:windowtitle"> - -</t:layout> Modified: trunk/simexplorer-is-web/src/main/webapp/ApplicationImport.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/ApplicationImport.tml 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/main/webapp/ApplicationImport.tml 2008-01-25 15:44:03 UTC (rev 542) @@ -1,5 +1,5 @@ <t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" - title="message:windowtitle"> + title="${windowtitle}"> <t:form> <t:errors/> Modified: trunk/simexplorer-is-web/src/main/webapp/ElementDelete.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/ElementDelete.tml 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/main/webapp/ElementDelete.tml 2008-01-25 15:44:03 UTC (rev 542) @@ -1,4 +1,10 @@ <t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" - title="message:windowtitle"> + title="${windowtitle}"> + <p>${message:confirmdelete}</p> + <p><t:actionlink t:id="confirm">${message:confirm}</t:actionlink> - + <t:back label="${message:cancel}" /></p> + + <p><t:back label="${message:back}" /></p> + </t:layout> Modified: trunk/simexplorer-is-web/src/main/webapp/ElementDetail.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/ElementDetail.tml 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/main/webapp/ElementDetail.tml 2008-01-25 15:44:03 UTC (rev 542) @@ -1,5 +1,5 @@ <t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" - title="message:windowtitle"> + title="${windowtitle}"> <table t:type="cl/TreeGrid" source="nodes" columnHeaders="headers"> </table> Modified: trunk/simexplorer-is-web/src/main/webapp/ElementExport.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/ElementExport.tml 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/main/webapp/ElementExport.tml 2008-01-25 15:44:03 UTC (rev 542) @@ -1,7 +1,19 @@ <t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" - title="message:windowtitle"> + title="${windowtitle}"> - <p><t:actionlink t:id="downloadXML">${message:downloadxml}</t:actionlink>* + <p><t:actionlink t:id="downloadXML">${message:downloadxml}</t:actionlink> </p> + <p> + <h2>${message:attachments}</h2> + <br /> + <table t:type="Grid" source="attachments" row="attachment"> + <t:parameter name="empty"> + ${message:noAttachment} + </t:parameter> + </table> + </p> + + <p><t:back label="${message:back}" /></p> + </t:layout> Modified: trunk/simexplorer-is-web/src/main/webapp/ElementHistory.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/ElementHistory.tml 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/main/webapp/ElementHistory.tml 2008-01-25 15:44:03 UTC (rev 542) @@ -1,7 +1,9 @@ <t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" - title="message:windowtitle"> + title="${windowtitle}"> - <table t:type="cl/TreeGrid" source="versions" columnHeaders="headers"> - </table> - + <table t:type="cl/TreeGrid" source="versions" columnHeaders="headers"> + </table> + + <p><t:back label="${message:back}" /></p> + </t:layout> Modified: trunk/simexplorer-is-web/src/main/webapp/ElementRights.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/ElementRights.tml 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/main/webapp/ElementRights.tml 2008-01-25 15:44:03 UTC (rev 542) @@ -1,4 +1,52 @@ <t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" - title="message:windowtitle"> + title="${windowtitle}"> + <t:form> + + <p> + <h2>${message:properties}</h2> + </p> + <p></p> + <hr /> + + <p> + <h2>${message:owner}</h2> + </p> + <p><input t:type="Palette" model="users" selected="ownerUsers" + encoder="userEncoder" />${message:groups} :<input t:type="Palette" + model="groups" selected="ownerGroups" encoder="groupEncoder" /></p> + <hr /> + + <p> + <h2>${message:read}</h2> + </p> + <p>${message:users} :<input t:type="Palette" model="users" + selected="readUsers" encoder="userEncoder" />${message:groups} :<input + t:type="Palette" model="groups" selected="readGroups" + encoder="groupEncoder" /></p> + <hr /> + + <p> + <h2>${message:write}</h2> + </p> + <p>${message:users} :<input t:type="Palette" model="users" + selected="writeUsers" encoder="userEncoder" />${message:groups} :<input + t:type="Palette" model="groups" selected="writeGroups" + encoder="groupEncoder" /></p> + <hr /> + + <p> + <h2>${message:admin}</h2> + </p> + <p>${message:users} :<input t:type="Palette" model="users" + selected="adminUsers" encoder="userEncoder" />${message:groups} :<input + t:type="Palette" model="groups" selected="adminGroups" + encoder="groupEncoder" /></p> + <hr /> + + <p><input t:type="Submit" t:value="message:submit" /> <t:back + label="${message:back}" /></p> + + </t:form> + </t:layout> Modified: trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/main/webapp/GroupEdit.tml 2008-01-25 15:44:03 UTC (rev 542) @@ -1,11 +1,9 @@ <t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" - title="message:windowtitle"> + title="${windowtitle}"> <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> Modified: trunk/simexplorer-is-web/src/main/webapp/GroupList.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/GroupList.tml 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/main/webapp/GroupList.tml 2008-01-25 15:44:03 UTC (rev 542) @@ -1,5 +1,5 @@ <t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" - title="message:windowtitle"> + title="${windowtitle}"> <table t:type="Grid" source="groups" row="group" model="model"> <t:parameter name="editCell"> Modified: trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/main/webapp/UserEdit.tml 2008-01-25 15:44:03 UTC (rev 542) @@ -1,5 +1,5 @@ <t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" - title="message:windowtitle"> + title="${windowtitle}"> <t:form> <t:errors /> Modified: trunk/simexplorer-is-web/src/main/webapp/UserList.tml =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/UserList.tml 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/main/webapp/UserList.tml 2008-01-25 15:44:03 UTC (rev 542) @@ -1,5 +1,5 @@ <t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" - title="message:windowtitle"> + title="${windowtitle}"> <table t:type="Grid" source="users" row="user" model="model"> Added: trunk/simexplorer-is-web/src/main/webapp/WEB-INF/app.properties =================================================================== --- trunk/simexplorer-is-web/src/main/webapp/WEB-INF/app.properties (rev 0) +++ trunk/simexplorer-is-web/src/main/webapp/WEB-INF/app.properties 2008-01-25 15:44:03 UTC (rev 542) @@ -0,0 +1,45 @@ +explorationapplication=Exploration application +library=Library + +back=Back +cancel=Cancel +confirm=Confirm +submit=Submit +modify=Modify +delete=Delete +add=Add +remove=Remove +login=Login +upload=Upload + +confirmdelete=Confirm delete? +resetPassword=Reset password + +name=Name +user=User +password=Password +firstname=First name +mail=Mail +properties=Properties + +groups=Groups + +userMembers=User members +groupMembers=Group members + +addgroup=Add group +adduser=Add user + +memberOf=Member of +ownerOf=Owner of +none=None +owner=Owner +read=Read +write=Write +admin=Admin +users=Users + +downloadxml=Download XML +noAttachment=No attachment +attachments=Attachments + Added: trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Back.tml =================================================================== --- trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Back.tml (rev 0) +++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/components/Back.tml 2008-01-25 15:44:03 UTC (rev 542) @@ -0,0 +1,5 @@ +<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"> +<body> +<t:pagelink page="ElementDetail">${label}</t:pagelink> +</body> +</html> \ No newline at end of file Deleted: trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationExport.properties =================================================================== Modified: trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationImport.properties =================================================================== --- trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationImport.properties 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/ApplicationImport.properties 2008-01-25 15:44:03 UTC (rev 542) @@ -1,4 +1 @@ windowtitle=Import -upload=Upload -explorationapplication=Exploration application -library=Library \ No newline at end of file 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-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/GroupEdit.properties 2008-01-25 15:44:03 UTC (rev 542) @@ -1,6 +1 @@ windowtitle=Edit group -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/GroupList.properties =================================================================== --- trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.properties 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/GroupList.properties 2008-01-25 15:44:03 UTC (rev 542) @@ -1,5 +1 @@ windowtitle=Manage groups -name=Name -modify=Modify -delete=Delete -addgroup=Add group \ No newline at end of file Modified: trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/Login.properties =================================================================== --- trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/Login.properties 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/Login.properties 2008-01-25 15:44:03 UTC (rev 542) @@ -1,4 +1 @@ windowtitle=Login -user=User -password=Password -login=Login 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-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserEdit.properties 2008-01-25 15:44:03 UTC (rev 542) @@ -1,14 +1 @@ windowtitle=Edit user -name=Name -firstname=First name -mail=Mail -groups=Groups -add=Add -remove=Remove -submit=Submit -cancel=Cancel -password=Password -resetPassword=Reset password -memberOf=Member of -ownerOf=Owner of -none=None \ No newline at end of file Modified: trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserList.properties =================================================================== --- trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserList.properties 2008-01-25 11:06:29 UTC (rev 541) +++ trunk/simexplorer-is-web/src/resources/fr/cemagref/simexplorer/is/ui/web/pages/UserList.properties 2008-01-25 15:44:03 UTC (rev 542) @@ -1,6 +1 @@ windowtitle=Manage users -name=Name -firstname=First name -modify=Modify -delete=Delete -adduser=Add user \ No newline at end of file