Author: sletellier Date: 2011-11-04 13:50:00 +0100 (Fri, 04 Nov 2011) New Revision: 10 Url: http://forge.codelutin.com/repositories/revision/echobase/10 Log: - Creating Abstract for services - Creating user service - Creating user action Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchoBaseService.java trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/UserAction.java Modified: trunk/echobase-ui/src/main/resources/config/struts-user.xml trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/users.jsp Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchoBaseService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchoBaseService.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/AbstractEchoBaseService.java 2011-11-04 12:50:00 UTC (rev 10) @@ -0,0 +1,20 @@ +package fr.ifremer.echobase.services; + +import org.nuiton.topia.TopiaContext; + +/** + * @author sletellier + */ +public class AbstractEchoBaseService implements EchoBaseService { + + protected EchoBaseServiceContext serviceContext; + + @Override + public void setServiceContext(EchoBaseServiceContext serviceContext) { + this.serviceContext = serviceContext; + } + + public TopiaContext getTransaction() { + return serviceContext.getTransaction(); + } +} Added: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java (rev 0) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/UserService.java 2011-11-04 12:50:00 UTC (rev 10) @@ -0,0 +1,77 @@ +package fr.ifremer.echobase.services; + +import fr.ifremer.echobase.EchoBaseTechnicalException; +import fr.ifremer.echobase.entities.EchoBaseDAOHelper; +import fr.ifremer.echobase.entities.EchoBaseUser; +import fr.ifremer.echobase.entities.EchoBaseUserDAO; +import fr.ifremer.echobase.entities.EchoBaseUserDTO; +import org.nuiton.topia.TopiaException; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author sletellier + */ +public class UserService extends AbstractEchoBaseService { + + public EchoBaseUserDAO getDAO() throws TopiaException { + return EchoBaseDAOHelper.getEchoBaseUserDAO(getTransaction()); + } + + public List<EchoBaseUserDTO> getUsers() throws EchoBaseTechnicalException { + try { + List<EchoBaseUser> users = getDAO().findAll(); + + // Fill dtos + List<EchoBaseUserDTO> usersDtos = new ArrayList<EchoBaseUserDTO>(users.size()); + for (EchoBaseUser user : users) { + usersDtos.add(user.toDTO()); + } + return usersDtos; + } catch (TopiaException eee) { + throw new EchoBaseTechnicalException(eee); + } + } + + public EchoBaseUserDTO getUserById(String topiaId) { + try { + EchoBaseUser user = getDAO().findByTopiaId(topiaId); + + return user.toDTO(); + } catch (TopiaException eee) { + throw new EchoBaseTechnicalException(eee); + } + } + + public void createOrUpdate(EchoBaseUserDTO userDTO) { + try { + EchoBaseUserDAO dao = getDAO(); + EchoBaseUser user; + + // No id, creating new one entity + String id = userDTO.getId(); + if (id == null) { + user = dao.create(); + } else { + user = dao.findByTopiaId(id); + } + user.fromDTO(userDTO); + + dao.update(user); + } catch (TopiaException eee) { + throw new EchoBaseTechnicalException(eee); + } + } + + public void delete(EchoBaseUserDTO userDTO) { + try { + EchoBaseUserDAO dao = getDAO(); + EchoBaseUser user = dao.findByTopiaId(userDTO.getId()); + + dao.delete(user); + } catch (TopiaException eee) { + throw new EchoBaseTechnicalException(eee); + } + } +} Added: trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/UserAction.java =================================================================== --- trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/UserAction.java (rev 0) +++ trunk/echobase-ui/src/main/java/fr/ifremer/echobase/ui/actions/UserAction.java 2011-11-04 12:50:00 UTC (rev 10) @@ -0,0 +1,33 @@ +package fr.ifremer.echobase.ui.actions; + +import fr.ifremer.echobase.entities.EchoBaseUserDTO; +import fr.ifremer.echobase.services.UserService; + +import java.util.List; + +/** + * @author sletellier + */ +public class UserAction extends EchoBaseActionSupport { + + protected UserService service; + + protected UserService getService() { + if (service == null) { + service = newService(UserService.class); + } + return service; + } + + public List<EchoBaseUserDTO> userList() { + return getService().getUsers(); + } + + public void createOrUpdate(EchoBaseUserDTO userDTO) { + getService().createOrUpdate(userDTO); + } + + public void delete(EchoBaseUserDTO userDTO) { + getService().delete(userDTO); + } +} Modified: trunk/echobase-ui/src/main/resources/config/struts-user.xml =================================================================== --- trunk/echobase-ui/src/main/resources/config/struts-user.xml 2011-11-04 12:06:39 UTC (rev 9) +++ trunk/echobase-ui/src/main/resources/config/struts-user.xml 2011-11-04 12:50:00 UTC (rev 10) @@ -60,31 +60,25 @@ </action> <!-- get lists of users --> - <!--<action name="userList" class="fr.ird.t3.web.actions.admin.UserAction"--> - <!--method="input">--> - <!--<interceptor-ref name="internalBasicStackLoggued"/>--> - <!--<interceptor-ref name="checkUserIsAdmin"/>--> - <!--<result name="input">/WEB-INF/jsp/admin/userList.jsp</result>--> - <!--</action>--> + <action name="userList" class="fr.ifremer.echobase.ui.actions.UserAction"> + <interceptor-ref name="internalBasicStackLoggued"/> + <interceptor-ref name="checkUserIsAdmin"/> + <result name="input">/WEB-INF/jsp/admin/users.jsp</result> + </action> - <!-- get detail of a user --> - <!--<action name="userForm" class="fr.ird.t3.web.actions.admin.UserAction"--> - <!--method="input">--> - <!--<interceptor-ref name="internalParamsPrepareParamsStackLoggued"/>--> - <!--<result name="input">/WEB-INF/jsp/admin/userForm.jsp</result>--> - <!--<result name="error">/WEB-INF/jsp/admin/userForm.jsp</result>--> - <!--<result name="success">/WEB-INF/jsp/admin/userForm.jsp</result>--> - <!--<result name="backToList" type="redirectAction">userList</result>--> - <!--</action>--> + <!-- update or create (if not exist) user --> + <action name="createOrUpdate" class="fr.ifremer.echobase.ui.actions.UserAction"> + <interceptor-ref name="internalBasicStackLoggued"/> + <interceptor-ref name="checkUserIsAdmin"/> + <result name="input">/WEB-INF/jsp/admin/users.jsp</result> + </action> - <!-- download user log file --> - <!--<action name="getUserLog"--> - <!--class="fr.ifremer.echobase.web.actions.data.DownloadUserLogAction">--> - <!--<interceptor-ref name="internalBasicStackLoggued"/>--> - <!--<result name="success" type="stream">--> - <!--<param name="contentCharSet">UTF-8</param>--> - <!--</result>--> - <!--</action>--> + <!-- delete user --> + <action name="delete" class="fr.ifremer.echobase.ui.actions.UserAction"> + <interceptor-ref name="internalBasicStackLoggued"/> + <interceptor-ref name="checkUserIsAdmin"/> + <result name="input">/WEB-INF/jsp/admin/users.jsp</result> + </action> </package> Modified: trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/users.jsp =================================================================== --- trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/users.jsp 2011-11-04 12:06:39 UTC (rev 9) +++ trunk/echobase-ui/src/main/webapp/WEB-INF/jsp/user/users.jsp 2011-11-04 12:50:00 UTC (rev 10) @@ -32,13 +32,13 @@ <hr/> -<s:url id="usersListUrl" namespace="/users" action="list"/> -<s:url id="saveUrl" action="saveUser" /> +<s:url id="userListUrl" namespace="/users" action="userList"/> +<s:url id="saveUrl" namespace="/users" action="createOrUpdate" /> <sjg:grid id="usersList" caption='%{getText("echobase.user.gridTitle")}' dataType="json" - href="%{usersListUrl}" + href="%{userListUrl}" pager="true" navigator="true" navigatorAddOptions="{