Wao-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
June 2010
- 3 participants
- 97 discussions
[Suiviobsmer-commits] r514 - in trunk: . wao-ui/src/main/webapp wao-ui/src/main/webapp/css
by fdesbois@users.labs.libre-entreprise.org 12 Jun '10
by fdesbois@users.labs.libre-entreprise.org 12 Jun '10
12 Jun '10
Author: fdesbois
Date: 2010-06-12 19:55:13 +0000 (Sat, 12 Jun 2010)
New Revision: 514
Log:
- Use nuiton-web stable
- Improve style for userRole popup
Modified:
trunk/pom.xml
trunk/wao-ui/src/main/webapp/Connexion.tml
trunk/wao-ui/src/main/webapp/css/main.css
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-06-12 18:47:55 UTC (rev 513)
+++ trunk/pom.xml 2010-06-12 19:55:13 UTC (rev 514)
@@ -240,9 +240,7 @@
<!-- libraries version -->
<i18n.version>1.2.2</i18n.version>
<nuitonutils.version>1.3.1</nuitonutils.version>
- <nuitonweb.version>0.1-SNAPSHOT</nuitonweb.version>
- <!--<topia.version>2.3.3</topia.version>-->
- <!--<eugene.version>2.0.1</eugene.version>-->
+ <nuitonweb.version>0.1</nuitonweb.version>
<topia.version>2.4-SNAPSHOT</topia.version>
<eugene.version>2.0.2</eugene.version>
<tapestry.version>5.1.0.5</tapestry.version>
Modified: trunk/wao-ui/src/main/webapp/Connexion.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Connexion.tml 2010-06-12 18:47:55 UTC (rev 513)
+++ trunk/wao-ui/src/main/webapp/Connexion.tml 2010-06-12 19:55:13 UTC (rev 514)
@@ -76,8 +76,8 @@
</div>
<div t:type="minimalWindow" t:id="roleWindow" t:show="${showRoleWindow}" t:modal="true"
- t:center="false" t:top="50" t:right="100"
- t:title="literal:Sélectionnez le rôle dans la liste" t:width="300" t:height="40">
+ t:center="false" t:top="70" t:width="300" t:height="60"
+ t:title="literal:Choisissez dans la liste votre profil de connexion : ">
<form t:id="roleForm" t:type="form" action="tapestry">
<p class="roleSelect">
<select t:type="select" t:id="userRole" t:value="userRole" t:model="roleSelectModel"
Modified: trunk/wao-ui/src/main/webapp/css/main.css
===================================================================
--- trunk/wao-ui/src/main/webapp/css/main.css 2010-06-12 18:47:55 UTC (rev 513)
+++ trunk/wao-ui/src/main/webapp/css/main.css 2010-06-12 19:55:13 UTC (rev 514)
@@ -111,9 +111,13 @@
background: url(../img/logo-wao-48px.png) no-repeat center center;
}
+div#roleWindow {
+ left: 38.6% !important;
+}
+
div#roleWindow p.roleSelect {
text-align: center;
- margin-top: 10px;
+ margin-top: 25px;
}
/* Module SESSION */
1
0
[Suiviobsmer-commits] r513 - in trunk: . wao-business/src/main/java/fr/ifremer/wao/service wao-business/src/main/xmi wao-ui/src/main/java/fr/ifremer/wao/ui/components wao-ui/src/main/java/fr/ifremer/wao/ui/data wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/java/fr/ifremer/wao/ui/services wao-ui/src/main/webapp wao-ui/src/main/webapp/css wao-ui/src/test/java/test/fr/ifremer/wao/ui wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages
by fdesbois@users.labs.libre-entreprise.org 12 Jun '10
by fdesbois@users.labs.libre-entreprise.org 12 Jun '10
12 Jun '10
Author: fdesbois
Date: 2010-06-12 18:47:55 +0000 (Sat, 12 Jun 2010)
New Revision: 513
Log:
- Use Eugene 2.0.2
- Evo #2325 : Change connection managment for userRoles : user is connected then he choose a role if it's necessary using a simple window.
Added:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/MinimalWindow.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/AuthenticationUtil.java
Modified:
trunk/pom.xml
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/RequiresAuthenticationFilter.java
trunk/wao-ui/src/main/webapp/Connexion.tml
trunk/wao-ui/src/main/webapp/css/main.css
trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java
trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-06-12 15:20:45 UTC (rev 512)
+++ trunk/pom.xml 2010-06-12 18:47:55 UTC (rev 513)
@@ -244,7 +244,7 @@
<!--<topia.version>2.3.3</topia.version>-->
<!--<eugene.version>2.0.1</eugene.version>-->
<topia.version>2.4-SNAPSHOT</topia.version>
- <eugene.version>2.0.2-SNAPSHOT</eugene.version>
+ <eugene.version>2.0.2</eugene.version>
<tapestry.version>5.1.0.5</tapestry.version>
</properties>
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-06-12 15:20:45 UTC (rev 512)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-06-12 18:47:55 UTC (rev 513)
@@ -89,7 +89,7 @@
@Override
public ConnectedUser executeConnect(TopiaContext transaction,
- String login, String password, UserRole role)
+ String login, String password)
throws TopiaException, WaoBusinessException {
WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction);
@@ -99,34 +99,32 @@
WaoUser.LOGIN, login,
WaoUser.PASSWORD, passwordEncoded);
- ConnectedUser result = null;
-
- if (user != null && user.getActive()) {
- // load company entity
- user.getCompany();
-
- if (user.hasUserRole(role)) {
- // Instantiate the connected user
- result = new ConnectedUserImpl();
- result.setUser(user);
- result.setRole(role);
- } else {
- throw new WaoBusinessException(Type.ILLEGAL_CONNECTION,
+ if (user == null) {
+ throw new WaoBusinessException(Type.BAD_CONNECTION,
this.getClass(),
- "Rôle non autorisé, veuillez en choisir un autre.");
- }
- } else if (user != null && !user.getActive()) {
+ "Login ou mot de passe incorrect, veuillez réessayer.");
+ }
+
+ if (!user.getActive()) {
throw new WaoBusinessException(Type.ILLEGAL_CONNECTION,
this.getClass(),
"Vous n'avez plus les droits nécessaires pour" +
" vous connecter. Veuillez contacter un" +
" administrateur.");
- } else {
- throw new WaoBusinessException(Type.BAD_CONNECTION,
- this.getClass(),
- "Mot de passe incorrect, veuillez réessayer.");
}
+ // load company entity
+ user.getCompany();
+
+ ConnectedUser result = new ConnectedUserImpl();
+ result.setUser(user);
+
+ List<UserRole> roles = user.getUserRoles();
+ // Set unique role
+ if (roles.size() == 1) {
+ result.setRole(roles.get(0));
+ }
+
return result;
}
@@ -447,34 +445,34 @@
}
}
- @Override
- public boolean executeExistLogin(TopiaContext transaction, String login)
- throws TopiaException {
+// @Override
+// public boolean executeExistLogin(TopiaContext transaction, String login)
+// throws TopiaException {
+//
+// WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction);
+//
+// boolean exist = dao.existByProperties(WaoUser.LOGIN, login);
+//
+// return exist;
+// }
+//
+// @Override
+// public List<UserRole> executeGetUserRolesByLogin(TopiaContext transaction,
+// String login)
+// throws TopiaException {
+//
+// WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction);
+//
+// WaoUser user = dao.findByLogin(login);
+//
+// List<UserRole> results = new ArrayList<UserRole>();
+// if (user != null) {
+// results = user.getUserRoles();
+// }
+//
+// return results;
+// }
- WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction);
- boolean exist = dao.existByProperties(WaoUser.LOGIN, login);
- return exist;
- }
-
- @Override
- public List<UserRole> executeGetUserRolesByLogin(TopiaContext transaction,
- String login)
- throws TopiaException {
-
- WaoUserDAO dao = WaoDAOHelper.getWaoUserDAO(transaction);
-
- WaoUser user = dao.findByLogin(login);
-
- List<UserRole> results = new ArrayList<UserRole>();
- if (user != null) {
- results = user.getUserRoles();
- }
-
- return results;
- }
-
-
-
}
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Added: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/MinimalWindow.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/MinimalWindow.java (rev 0)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/MinimalWindow.java 2010-06-12 18:47:55 UTC (rev 513)
@@ -0,0 +1,112 @@
+package fr.ifremer.wao.ui.components;
+
+import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.RenderSupport;
+import org.apache.tapestry5.annotations.AfterRender;
+import org.apache.tapestry5.annotations.AfterRenderBody;
+import org.apache.tapestry5.annotations.BeforeRenderBody;
+import org.apache.tapestry5.annotations.Environmental;
+import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.json.JSONObject;
+import org.chenillekit.tapestry.core.base.AbstractWindow;
+
+/**
+ * Created: 12 juin 2010
+ *
+ * @author fdesbois <fdesbois at codelutin.com>
+ * @version $Id$
+ */
+public class MinimalWindow extends AbstractWindow {
+
+ @Environmental
+ private RenderSupport renderSupport;
+
+ @Parameter
+ private Integer top;
+
+ @Parameter
+ private Integer bottom;
+
+ @Parameter
+ private Integer right;
+
+ @Parameter
+ private Integer left;
+
+ private boolean hasBody = false;
+
+ /**
+ * Tapestry render phase method.
+ * Called before component body is rendered.
+ *
+ * @param writer the markup writer
+ */
+ @BeforeRenderBody
+ void beforeRenderBody(MarkupWriter writer)
+ {
+ hasBody = true;
+ writer.element("div",
+ "id", getClientId() + "Content",
+ "style", "display:none;");
+ }
+
+ /**
+ * Tapestry render phase method.
+ * Called after component body is rendered.
+ * return false to render body again.
+ *
+ * @param writer the markup writer
+ */
+ @AfterRenderBody
+ void afterRenderBody(MarkupWriter writer)
+ {
+ writer.end();
+ }
+
+
+ /**
+ * Tapestry render phase method. End a tag here.
+ *
+ * @param writer the markup writer
+ */
+ @AfterRender
+ void afterRender(MarkupWriter writer)
+ {
+ JSONObject options = new JSONObject();
+
+ options.put("className", getClassName());
+ options.put("width", getWidth());
+ options.put("height", getHeight());
+ options.put("id", getClientId());
+ options.put("title", getTitle());
+ options.put("draggable", false);
+ options.put("closable", false);
+ options.put("minimizable", false);
+ options.put("maximizable", false);
+ if (top != null) {
+ options.put("top", top);
+ }
+ if (bottom != null) {
+ options.put("bottom", bottom);
+ }
+ if (right != null) {
+ options.put("right", right);
+ }
+ if (left != null) {
+ options.put("left", left);
+ }
+
+ //
+ // Let subclasses do more.
+ //
+ configure(options);
+
+ renderSupport.addScript("%s = new Window(%s);", getClientId(), options);
+
+ if (hasBody)
+ renderSupport.addScript("%s.setContent('%sContent');", getClientId(), getClientId());
+
+ if (isShow())
+ renderSupport.addScript("%s.show%s(%s);", getClientId(), isCenter() ? "Center" : "", isModal());
+ }
+}
Added: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/AuthenticationUtil.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/AuthenticationUtil.java (rev 0)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/AuthenticationUtil.java 2010-06-12 18:47:55 UTC (rev 513)
@@ -0,0 +1,30 @@
+package fr.ifremer.wao.ui.data;
+
+import java.util.Arrays;
+
+/**
+ * Created: 12 juin 2010
+ *
+ * @author fdesbois <fdesbois at codelutin.com>
+ * @version $Id$
+ */
+public class AuthenticationUtil {
+
+ public static String getRedirectPageName(Object[] activationContext) {
+ String redirectPage = null;
+ if (activationContext.length > 0) {
+ redirectPage = (String)activationContext[0];
+ }
+ return redirectPage;
+ }
+
+ public static Object[] getRedirectPageContext(Object[] activationContext) {
+ if (activationContext.length > 1) {
+ Object[] redirectPageContext =
+ Arrays.copyOfRange(activationContext, 1,
+ activationContext.length);
+ return redirectPageContext;
+ }
+ return null;
+ }
+}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-06-12 15:20:45 UTC (rev 512)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-06-12 18:47:55 UTC (rev 513)
@@ -6,12 +6,14 @@
import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.UserRole;
+import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.service.ServiceUser;
import fr.ifremer.wao.ui.components.FeedBack;
+import fr.ifremer.wao.ui.data.AuthenticationUtil;
import fr.ifremer.wao.ui.services.ServiceAuthentication;
import org.apache.tapestry5.Link;
+import org.apache.tapestry5.OptionModel;
import org.apache.tapestry5.PersistenceConstants;
-import org.apache.tapestry5.RenderSupport;
import org.apache.tapestry5.SelectModel;
import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
import org.apache.tapestry5.annotations.InjectComponent;
@@ -21,11 +23,10 @@
import org.apache.tapestry5.internal.OptionModelImpl;
import org.apache.tapestry5.internal.SelectModelImpl;
import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.json.JSONObject;
import org.apache.tapestry5.services.PageRenderLinkSource;
import org.slf4j.Logger;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -57,8 +58,6 @@
private Object[] activationContext;
- private String redirectPage;
-
/**
* User for connexion form data
*/
@@ -68,19 +67,14 @@
@Property
private String password;
- @Property
- private UserRole userRole;
-
@Persist(PersistenceConstants.FLASH)
@Property
private String email;
+ @Persist(PersistenceConstants.FLASH)
@Property
- private SelectModel emptySelectModel = new SelectModelImpl(new OptionModelImpl(null));
+ private boolean showRoleWindow;
- @Inject
- private RenderSupport renderSupport;
-
void onActivate(Object... activationContext) {
if (logger.isDebugEnabled()) {
logger.debug("Activiation context : " +
@@ -93,117 +87,110 @@
return activationContext;
}
- String getRedirectPageName() {
- if (redirectPage == null && activationContext.length > 0) {
- redirectPage = (String)activationContext[0];
- }
- return redirectPage;
- }
-
- Object[] getRedirectPageContext() {
- if (activationContext.length > 1) {
- Object[] redirectPageContext =
- Arrays.copyOfRange(activationContext, 1,
- activationContext.length);
- return redirectPageContext;
- }
- return null;
- }
-
- /**
- * ON_CHANGE :: Callback method for change event on Login textfield component.
- * Login will be checked to refresh the userRole select using {@link
- * JSONObject} that contains data for select options to display in javascript.
- *
- * @param login User login
- * @return a JSONObject with userRole select data to refresh in Ajax
- */
+// /**
+// * ON_CHANGE :: Callback method for change event on Login textfield component.
+// * Login will be checked to refresh the userRole select using {@link
+// * JSONObject} that contains data for select options to display in javascript.
+// *
+// * @param login User login
+// * @return a JSONObject with userRole select data to refresh in Ajax
+// */
+// @Log
+// JSONObject onChangeFromLogin(String login) {
+// JSONObject json = new JSONObject();
+// if (serviceUser.existLogin(login)) {
+//
+// List<UserRole> roles = serviceUser.getUserRolesByLogin(login);
+//
+// JSONArray array = new JSONArray();
+// for (UserRole role : roles) {
+// JSONObject option = new JSONObject();
+// option.put("name", role.name());
+// option.put("label", role.getLabel());
+// array.put(option);
+// }
+// json.put("select", array);
+// }
+// return json;
+// }
+//
@Log
- JSONObject onChangeFromLogin(String login) {
- JSONObject json = new JSONObject();
- if (serviceUser.existLogin(login)) {
-
- List<UserRole> roles = serviceUser.getUserRolesByLogin(login);
-
- JSONArray array = new JSONArray();
- for (UserRole role : roles) {
- JSONObject option = new JSONObject();
- option.put("name", role.name());
- option.put("label", role.getLabel());
- array.put(option);
+ void onValidateFormFromConnexionForm() {
+ try {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Login : " + login);
}
- json.put("select", array);
- }
- return json;
- }
-
- @Log
- void onValidateFormFromConnexionForm() {
- if (login != null && !serviceUser.existLogin(login)) {
- connexionFeedback.addError("Identifiant de connexion inconnu, " +
- "veuillez réessayer.");
- } else {
- try {
+ if (login != null && password != null) {
+ ConnectedUser user = serviceUser.connect(login, password);
+ // Authenticate the user in appropriate service
+ serviceAuthentication.setConnectedUser(user);
if (logger.isDebugEnabled()) {
- logger.debug("Login : " + login);
- logger.debug("Role : " + userRole);
+ logger.debug("User connected : " +
+ user.getFullName());
}
- if (login != null && password != null && userRole != null) {
- ConnectedUser user = serviceUser.connect(login, password, userRole);
- // Authenticate the user in appropriate service
- serviceAuthentication.setConnectedUser(user);
- if (logger.isDebugEnabled()) {
- logger.debug("User connected : " +
- user.getFullName());
- }
- }
- } catch (WaoBusinessException eee) {
- if (eee.getType().equals(Type.BAD_CONNECTION)) {
- connexionFeedback.addError(eee.getMessage());
- email = login;
- } else if (eee.getType().equals(Type.ILLEGAL_CONNECTION)) {
- connexionFeedback.addInfo(eee.getMessage());
- }
- if (logger.isDebugEnabled()) {
- logger.error("WaoBusinessException : " + eee.getMessage(), eee);
- }
}
+ } catch (WaoBusinessException eee) {
+ if (eee.getType().equals(Type.BAD_CONNECTION)) {
+ connexionFeedback.addError(eee.getMessage());
+ email = login;
+ } else if (eee.getType().equals(Type.ILLEGAL_CONNECTION)) {
+ connexionFeedback.addInfo(eee.getMessage());
+ }
+ if (logger.isDebugEnabled()) {
+ logger.error("WaoBusinessException : " + eee.getMessage(), eee);
+ }
}
}
+ public boolean hasConnexionErrors() {
+ return connexionFeedback.hasErrors();
+ }
+
@Log
Object onSuccessFromConnexionForm() throws WaoException {
if (hasConnexionErrors()) {
return this;
}
+ if (serviceAuthentication.getConnectedUser().getRole() == null) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Not only one role, window will be open to select the role");
+ }
+ showRoleWindow = true;
+ return this;
+ }
+ return getRedirectLink();
+ }
+
+ private Link getRedirectLink() {
+ String redirectPage =
+ AuthenticationUtil.getRedirectPageName(activationContext);
+
// If redirectPage is not defined, the default one is the Index page
- if (getRedirectPageName() == null) {
+ if (redirectPage == null) {
redirectPage = "index";
}
- Object[] redirectPageContext = getRedirectPageContext();
- Link redirectLink = null;
+ Object[] redirectPageContext =
+ AuthenticationUtil.getRedirectPageContext(activationContext);
if (logger.isDebugEnabled()) {
logger.debug("Redirect page '" + redirectPage + "' " +
- "context : " + Arrays.toString(redirectPageContext));
- }
+ "context : " + Arrays.toString(redirectPageContext));
+ }
+ Link redirectLink = null;
+
// Check existence of redirectPageContext, the redirectLink depends on
// context
if (redirectPageContext == null) {
redirectLink = pageRender.createPageRenderLink(redirectPage);
} else {
redirectLink = pageRender.createPageRenderLinkWithContext(
- redirectPage, redirectPageContext);
+ redirectPage, redirectPageContext);
}
return redirectLink;
}
- public boolean hasConnexionErrors() {
- return connexionFeedback.hasErrors();
- }
-
void onSuccessFromForgetPassword() throws WaoException {
try {
serviceUser.forgetPassword(email);
@@ -212,5 +199,52 @@
} catch (WaoBusinessException eee) {
connexionFeedback.addError(eee.getMessage());
}
+ }
+
+ private SelectModel roleSelectModel;
+
+ @Property
+ private UserRole userRole;
+
+ /**
+ * Retrieve the SelectModel for user roles. Will be loaded only if user is
+ * already connected. This list is useful if user as more than one role.
+ *
+ * @return the SelectModel for user roles
+ */
+ public SelectModel getRoleSelectModel() {
+ if (serviceAuthentication.existConnectedUser()) {
+ WaoUser user = serviceAuthentication.getConnectedUser().getUser();
+
+ if (logger.isDebugEnabled()) {
+ logger.debug("Load user roles for " + user.getLogin());
+ }
+
+ List<OptionModel> options = new ArrayList<OptionModel>();
+ for (UserRole role : user.getUserRoles()) {
+ OptionModel option = new OptionModelImpl(role.getLabel(), role);
+ options.add(option);
+ }
+ roleSelectModel = new SelectModelImpl(null, options);
+ } else if (roleSelectModel == null) {
+ roleSelectModel = new SelectModelImpl(new OptionModelImpl(null));
+ }
+ return roleSelectModel;
}
+
+ /**
+ * ON_SUCCESS :: Callback method for success event on roleForm. Will be
+ * triggered when roleForm is submit on roleSelect change. The userRole
+ * will be set to connectedUser and redirectPage will be loaded.
+ *
+ * @return the redirect link to load after submission
+ * @see #getRedirectLink()
+ */
+ Link onSuccessFromRoleForm() {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Connection with role : " + userRole);
+ }
+ serviceAuthentication.getConnectedUser().setRole(userRole);
+ return getRedirectLink();
+ }
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/RequiresAuthenticationFilter.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/RequiresAuthenticationFilter.java 2010-06-12 15:20:45 UTC (rev 512)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/RequiresAuthenticationFilter.java 2010-06-12 18:47:55 UTC (rev 513)
@@ -135,6 +135,13 @@
if (serviceAuthentication.existConnectedUser()) {
ConnectedUser user = serviceAuthentication.getConnectedUser();
+
+ // Check role, if not set, the user will be reset from session and redirect to login page.
+ if (user.getRole() == null) {
+ serviceAuthentication.setConnectedUser(null);
+ return false;
+ }
+
if (logger.isTraceEnabled()) {
logger.trace("User connected : " + user);
logger.trace("User role : " + user.getRole());
Modified: trunk/wao-ui/src/main/webapp/Connexion.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Connexion.tml 2010-06-12 15:20:45 UTC (rev 512)
+++ trunk/wao-ui/src/main/webapp/Connexion.tml 2010-06-12 18:47:55 UTC (rev 513)
@@ -56,15 +56,14 @@
<div class="fleft clearfix" id="so-connexion-form">
<p><t:label for="login" /> : </p>
<p>
- <input t:type="textfield" t:id="login" t:value="login"
- t:mixins="ck/onEvent" t:event="change" t:onCompleteCallback="refreshUserRoles"/>
+ <input t:type="textfield" t:id="login" t:value="login"/>
<img class="hidden" id="loginValid" src="${asset:context:img/valid-16px.png}" alt="Login valide" title="Login valide" />
<img class="hidden" id="loginInvalid" src="${asset:context:img/invalid-16px.png}" alt="Login invalide" title="Login invalide" />
</p>
<p><t:label for="password" /> : </p>
<p><input t:type="passwordfield" t:id="password" t:value="password" /></p>
- <p><t:label for="userRole" /> : </p>
- <p><select t:type="select" t:id="userRole" t:value="userRole" t:model="emptySelectModel"/></p>
+ <!--<p><t:label for="userRole" /> : </p>-->
+ <!--<p><select t:type="select" t:id="userRole" t:value="userRole" t:model="emptySelectModel"/></p>-->
<!--<div class="fright" id="so-connexion-form-buttons">-->
<!--<input class="ico accept" t:type="submit" value="Connexion" title="Connexion à l'application Wao" />-->
<!--</div>-->
@@ -76,6 +75,17 @@
</form>
</div>
+ <div t:type="minimalWindow" t:id="roleWindow" t:show="${showRoleWindow}" t:modal="true"
+ t:center="false" t:top="50" t:right="100"
+ t:title="literal:Sélectionnez le rôle dans la liste" t:width="300" t:height="40">
+ <form t:id="roleForm" t:type="form" action="tapestry">
+ <p class="roleSelect">
+ <select t:type="select" t:id="userRole" t:value="userRole" t:model="roleSelectModel"
+ onChange="this.form.submit()"/>
+ </p>
+ </form>
+ </div>
+
</body>
<!--<div class="acenter">
<img src="${asset:context:}/img/logo_WAO.png" alt="Logo WAO" title="WAO - Web Applicatif Obsmer"/>
Modified: trunk/wao-ui/src/main/webapp/css/main.css
===================================================================
--- trunk/wao-ui/src/main/webapp/css/main.css 2010-06-12 15:20:45 UTC (rev 512)
+++ trunk/wao-ui/src/main/webapp/css/main.css 2010-06-12 18:47:55 UTC (rev 513)
@@ -81,8 +81,8 @@
margin-top: 50px;
margin-left: auto;
margin-right: auto;
- height: 120px;
- width: 280px;
+ height: 90px;
+ width: 260px;
border: 2px solid #007CC2;
background-color: #DEE7EC;
padding: 20px;
@@ -102,7 +102,7 @@
}
div#so-connexion-logo {
- margin-top: 80px;
+ margin-top: 40px;
}
div#so-connexion-logo input.ico {
@@ -111,6 +111,11 @@
background: url(../img/logo-wao-48px.png) no-repeat center center;
}
+div#roleWindow p.roleSelect {
+ text-align: center;
+ margin-top: 10px;
+}
+
/* Module SESSION */
div#so-session {
width: 80%;
Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java
===================================================================
--- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java 2010-06-12 15:20:45 UTC (rev 512)
+++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java 2010-06-12 18:47:55 UTC (rev 513)
@@ -27,14 +27,20 @@
import com.formos.tapestry.testify.core.TapestryTester;
import com.formos.tapestry.testify.junit4.TapestryTest;
import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.ConnectedUserImpl;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.Company;
+import fr.ifremer.wao.entity.WaoUser;
import test.fr.ifremer.wao.ui.demo.DemoModule;
import fr.ifremer.wao.ui.services.AppModule;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.ApplicationStateManager;
import org.mockito.MockitoAnnotations;
import org.mockito.Mock;
+
+import java.util.ArrayList;
+import java.util.List;
+
import static org.mockito.Mockito.*;
Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java
===================================================================
--- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java 2010-06-12 15:20:45 UTC (rev 512)
+++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java 2010-06-12 18:47:55 UTC (rev 513)
@@ -29,8 +29,11 @@
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.ConnectedUserImpl;
import fr.ifremer.wao.bean.UserRole;
+import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.News;
+import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.service.ServiceNews;
import fr.ifremer.wao.service.ServiceUser;
import java.util.ArrayList;
@@ -38,6 +41,7 @@
import fr.ifremer.wao.ui.services.ServiceAuthentication;
import test.fr.ifremer.wao.ui.AbstractApplicationTest;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import org.apache.tapestry5.dom.Document;
import org.apache.tapestry5.dom.Element;
@@ -58,24 +62,13 @@
private static final Logger logger =
LoggerFactory.getLogger(ConnectionTest.class);
- @ForComponents
- @Mock
- private ServiceUser serviceUser;
-
- @ForComponents
- @Mock
- private ServiceNews serviceNews;
-
@Inject
private ApplicationStateManager stateManager;
- @Inject
- private ServiceAuthentication serviceAuthentication;
-
@Test
- public void testObserverSession()
+ public void testUserSession()
throws WaoException, WaoBusinessException {
- logger.info("## testObserverSession");
+ logger.info("## testUserSession");
prepareObserverUser(true);
ConnectedUser sso = stateManager.getIfExists(ConnectedUser.class);
@@ -92,57 +85,117 @@
Assert.assertNotNull(main);
}
- @Test
- public void testObserverConnection()
- throws WaoException, WaoBusinessException {
- logger.info("## testObserverConnection");
+ @ForComponents
+ @Mock
+ private ServiceUser serviceUser;
- when(serviceNews.getNews()).thenReturn(new ArrayList<News>());
- Document page = tester.renderPage("index");
- // Will be redirect to Connexion page
- if (logger.isInfoEnabled()) {
- logger.info("Content : " + page.getRootElement());
- }
+ @ForComponents
+ @Mock
+ private ServiceNews serviceNews;
- prepareObserverUser(false);
- // Connect the user with connection page
- connectUser(page);
- }
+ @Inject
+ private ServiceAuthentication serviceAuthentication;
@Test
- public void testAdminConnection()
+ public void testUserConnection()
throws WaoException, WaoBusinessException {
- logger.info("## testAdminConnection");
-
- when(serviceNews.getNews()).thenReturn(new ArrayList<News>());
- Document page = tester.renderPage("index");
- if (logger.isInfoEnabled()) {
- logger.info("Content : " + page.getRootElement());
+ logger.info("## testUserConnection");
+
+ logger.info("-- Load 'Index' page : redirection to 'Connexion' page");
+ Document connectionPage = tester.renderPage("index");
+ // Redirection to Connexion page
+ if (logger.isDebugEnabled()) {
+ logger.debug("Content : " + connectionPage.getRootElement());
}
+ Assert.assertNotNull(connectionPage.getElementById("so-connexion-box"));
+ // Prepare user connection
prepareAdminUser();
- connectUser(page);
+
+ logger.info("-- Connect user : rediction to 'Index' page");
+ Document indexPage = connect(connectionPage, user);
+
+ Assert.assertNotNull(indexPage);
+ Assert.assertTrue(serviceAuthentication.existConnectedUser());
+
+ checkIndexPage(indexPage);
}
- private Element connectUser(Document page)
- throws WaoException, WaoBusinessException {
- // Need to use correct role
- when(serviceUser.connect("jmichmuche", "password", UserRole.OBSERVER)).thenReturn(user);
- when(serviceUser.existLogin("jmichmuche")).thenReturn(true);
+ private Document connect(Document connectionPage, ConnectedUser user)
+ throws WaoBusinessException {
+ when(serviceUser.connect("login", "password")).thenReturn(user);
+ when(serviceNews.getNews()).thenReturn(new ArrayList<News>());
Map<String, String> fieldValues = new HashMap<String, String>();
- fieldValues.put("login", "jmichmuche");
+ fieldValues.put("login", "login");
fieldValues.put("password", "password");
- fieldValues.put("userRole", UserRole.OBSERVER.name());
Document result = tester.submitForm(
- page.getElementById("connexionForm"), fieldValues);
+ connectionPage.getElementById("connexionForm"), fieldValues);
+ return result;
+ }
- Element main = result.getElementById("so-news");
- if (logger.isInfoEnabled()) {
- logger.info("Content page News : " + main);
+ private Element checkIndexPage(Document page) {
+ Element main = page.getElementById("so-news");
+ if (logger.isDebugEnabled()) {
+ logger.debug("Content page News : " + main);
}
Assert.assertNotNull(main);
return main;
}
+ private WaoUser getMultiRoleUser() {
+ Company company = mock(Company.class);
+ when(company.getName()).thenReturn("TEST");
+
+ List<UserRole> roles = new ArrayList<UserRole>();
+ roles.add(UserRole.ADMIN);
+ roles.add(UserRole.OBSERVER);
+
+ WaoUser user = mock(WaoUser.class);
+ when(user.getUserRoles()).thenReturn(roles);
+ when(user.getLogin()).thenReturn("multiroleUser");
+ when(user.getFullName()).thenReturn("User Test");
+ when(user.getCompany()).thenReturn(company);
+ when(user.isReadOnly(UserRole.ADMIN)).thenReturn(false);
+ when(user.isReadOnly(UserRole.OBSERVER)).thenReturn(false);
+
+ return user;
+ }
+
+ @Test
+ public void testMultiRoleUserConnection() throws WaoBusinessException {
+ logger.info("## testMultiRoleUserConnection");
+
+ /** PREPARE LOADING **/
+
+ logger.info("-- Load 'Index' page : redirection to 'Connexion' page");
+ when(serviceNews.getNews()).thenReturn(new ArrayList<News>());
+ Document connectionPage1 = tester.renderPage("index");
+
+ // Prepare user for connection
+ ConnectedUser userConnected = new ConnectedUserImpl();
+ userConnected.setUser(getMultiRoleUser());
+
+ logger.info("-- Connect user : no unique role found, refresh 'Connexion' page");
+ Document connectionPage2 = connect(connectionPage1, userConnected);
+ if (logger.isInfoEnabled()) {
+ logger.info("Content with popup roles : " + connectionPage2);
+ }
+ Assert.assertNotNull(connectionPage2.getElementById("so-connexion-box"));
+ Assert.assertNotNull(connectionPage2.getElementById("roleForm"));
+ Assert.assertTrue(serviceAuthentication.existConnectedUser());
+
+ /** EXECUTE SUBMISSION FOR ROLE **/
+ logger.info("-- Choose role ADMIN : redirection to 'Index' page");
+
+ Map<String, String> fieldValues = new HashMap<String, String>();
+ fieldValues.put("userRole", UserRole.ADMIN.name());
+ Document result = tester.submitForm(
+ connectionPage2.getElementById("roleForm"), fieldValues);
+
+ Assert.assertNotNull(serviceAuthentication.getConnectedUser().getRole());
+
+ checkIndexPage(result);
+ }
+
}
1
0
12 Jun '10
Author: fdesbois
Date: 2010-06-12 15:20:45 +0000 (Sat, 12 Jun 2010)
New Revision: 512
Log:
- Update changelog
- Use nuiton-utils 1.3.1
Modified:
trunk/changelog.txt
trunk/pom.xml
Modified: trunk/changelog.txt
===================================================================
--- trunk/changelog.txt 2010-06-12 14:55:37 UTC (rev 511)
+++ trunk/changelog.txt 2010-06-12 15:20:45 UTC (rev 512)
@@ -14,6 +14,8 @@
Anomalies
+++++++++
+- [fdesbois] Ano #2331 : Aucun message de confirmation lors d'une saisie d'un
+ nouveau contact sur une ligne arrivée à échéance.
- [fdesbois] Ano #2327 : Le filtre 'depuis le' des contacts ne s'applique pas que
sur la date de création du contact.
- [fdesbois] Ano #2324 : Un admin en mode lecture peut accéder à la page
@@ -27,6 +29,8 @@
- **i18n** 1.2.1 -> 1.2.2 [http://maven-site.nuiton.org/i18n]
- **ToPIA** 2.3.3 -> 2.4 [http://maven-site.nuiton.org/topia/topia-persistence]
- **EUGene** 2.0.1 -> 2.0.2 [http://maven-site.nuiton.org/eugene]
+- **Nuiton-utils** 1.2.2 -> 1.3.1 [http://maven-site.nuiton.org/nuiton-utils]
+- **Nuiton-web** 0.1
1.2.1
-----
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-06-12 14:55:37 UTC (rev 511)
+++ trunk/pom.xml 2010-06-12 15:20:45 UTC (rev 512)
@@ -239,7 +239,7 @@
<!-- libraries version -->
<i18n.version>1.2.2</i18n.version>
- <nuitonutils.version>1.2.2</nuitonutils.version>
+ <nuitonutils.version>1.3.1</nuitonutils.version>
<nuitonweb.version>0.1-SNAPSHOT</nuitonweb.version>
<!--<topia.version>2.3.3</topia.version>-->
<!--<eugene.version>2.0.1</eugene.version>-->
1
0
[Suiviobsmer-commits] r511 - in trunk/wao-ui/src/main: java/fr/ifremer/wao/ui/pages webapp
by fdesbois@users.labs.libre-entreprise.org 12 Jun '10
by fdesbois@users.labs.libre-entreprise.org 12 Jun '10
12 Jun '10
Author: fdesbois
Date: 2010-06-12 14:55:37 +0000 (Sat, 12 Jun 2010)
New Revision: 511
Log:
Ano #2331 : Add confirm message for finished sampleRow when user want to create a new contact
Modified:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
trunk/wao-ui/src/main/webapp/Boats.tml
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2010-06-12 14:43:58 UTC (rev 510)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2010-06-12 14:55:37 UTC (rev 511)
@@ -739,6 +739,19 @@
return false;
}
+ /**
+ * This method detect if the sampleRow from current elligibleBoat is finished.
+ * This condition is necessary for confirm message dialog, only this condition
+ * is needed to display the dialog message to be sure user is aware about
+ * this sampleRow state.
+ *
+ * @return true if the sampleRow from current elligibleBoat is finished
+ */
+ public boolean isSampleRowFinished() {
+ boolean result = elligibleBoat.getSampleRow().isFinished(0);
+ return result;
+ }
+
public String getElligibleRowStyle() {
boolean condition1 = elligibleBoat.getCompanyActive() == null && !elligibleBoat.getGlobalActive();
return condition1 || isElligibleBoatCompanyActiveFalse() ? "line-through" : "";
Modified: trunk/wao-ui/src/main/webapp/Boats.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Boats.tml 2010-06-12 14:43:58 UTC (rev 510)
+++ trunk/wao-ui/src/main/webapp/Boats.tml 2010-06-12 14:55:37 UTC (rev 511)
@@ -302,7 +302,9 @@
</span>
</span>
<t:if t:test="canCreateNewContactFromElligibleBoat()">
- <a t:type="actionlink" t:id="addNewContactFromSampleRow" t:context="elligibleBoat.sampleRow.code">
+ <a t:type="actionlink" t:id="addNewContactFromSampleRow" t:context="elligibleBoat.sampleRow.code"
+ t:mixins="nuiton/confirm" t:message="literal:Attention, cette ligne du plan est terminée, êtes-vous sûr de vouloir créer un nouveau contact ?"
+ t:condition="sampleRowFinished">
<img src="${asset:context:}/img/contact-22px.png" title="Créer un nouveau contact pour ce navire et cette ligne du plan"/>
</a>
<p:else>
1
0
[Suiviobsmer-commits] r510 - in trunk/wao-ui/src/main: java/fr/ifremer/wao/ui/mixins resources/fr/ifremer/wao/ui/pages webapp webapp/js
by fdesbois@users.labs.libre-entreprise.org 12 Jun '10
by fdesbois@users.labs.libre-entreprise.org 12 Jun '10
12 Jun '10
Author: fdesbois
Date: 2010-06-12 14:43:58 +0000 (Sat, 12 Jun 2010)
New Revision: 510
Log:
Use confirm mixin from nuiton-web
Removed:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/mixins/Confirm.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/mixins/PopupPageLink.java
trunk/wao-ui/src/main/webapp/js/dialog.js
Modified:
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/SamplingPlan.properties
trunk/wao-ui/src/main/webapp/Administration.tml
trunk/wao-ui/src/main/webapp/Contacts.tml
trunk/wao-ui/src/main/webapp/Index.tml
trunk/wao-ui/src/main/webapp/SamplingPlan.tml
Deleted: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/mixins/Confirm.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/mixins/Confirm.java 2010-06-11 16:20:21 UTC (rev 509)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/mixins/Confirm.java 2010-06-12 14:43:58 UTC (rev 510)
@@ -1,67 +0,0 @@
-/*
- * #%L
- * Wao :: Web Interface
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2009 - 2010 Ifremer
- * %%
- * 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 3 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, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-package fr.ifremer.wao.ui.mixins;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ClientElement;
-import org.apache.tapestry5.RenderSupport;
-import org.apache.tapestry5.annotations.AfterRender;
-import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
-import org.apache.tapestry5.annotations.InjectContainer;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-/**
- * Confirm.java
- *
- * A simple mixin for attaching a javascript confirmation box to the onclick
- * event of any component that implements ClientElement.
- *
- * @author fdesbois <fdesbois at codelutin.com>
- */
- at IncludeJavaScriptLibrary("context:js/dialog.js")
-public class Confirm {
-
- @Parameter(value = "Are you sure?", defaultPrefix = BindingConstants.LITERAL)
- private String message;
-
- @Inject
- private RenderSupport renderSupport;
-
- @InjectContainer
- private ClientElement element;
-
- @Parameter
- private boolean wDisabled;
-
- @AfterRender
- public void afterRender() {
- if (!wDisabled) {
- renderSupport.addScript(String.format("new Confirm('%s', '%s');",element.getClientId(), message));
- }
- }
-
-}
Deleted: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/mixins/PopupPageLink.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/mixins/PopupPageLink.java 2010-06-11 16:20:21 UTC (rev 509)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/mixins/PopupPageLink.java 2010-06-12 14:43:58 UTC (rev 510)
@@ -1,88 +0,0 @@
-/*
- * #%L
- * Wao :: Web Interface
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2009 - 2010 Ifremer
- * %%
- * 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 3 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, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-
-package fr.ifremer.wao.ui.mixins;
-
-/**
- * PopupPageLink
- *
- * Created: 17 janv. 2010
- *
- * @author fdesbois <fdesbois at codelutin.com>
- */
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ClientElement;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.RenderSupport;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
-import org.apache.tapestry5.annotations.InjectContainer;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.PageRenderLinkSource;
-
- at IncludeJavaScriptLibrary("context:js/dialog.js")
-public class PopupPageLink {
-
- @Inject
- private ComponentResources resources;
-
- @Environmental
- private RenderSupport renderSupport;
-
- @InjectContainer
- private ClientElement container;
-
- @Parameter(required = true, defaultPrefix = BindingConstants.LITERAL)
- private String page;
-
- @Parameter(defaultPrefix = BindingConstants.LITERAL, value="800")
- private String width;
-
- @Parameter(defaultPrefix = BindingConstants.LITERAL, value="600")
- private String height;
-
- @Parameter
- private Object[] context;
-
- @Inject
- private PageRenderLinkSource pageRender;
-
- void afterRender() {
- Link link = null;
- if (context != null) {
- link = pageRender.createPageRenderLinkWithContext(page, context);
- } else {
- link = pageRender.createPageRenderLink(page);
- }
-// Link link = null;
-// pageRender.createPageLink(page, true, context);
-
- renderSupport.addScript("new PopupPageLink('%s', '%s', %s, %s);", container.getClientId(), link, width, height);
-
- }
-
-}
Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/SamplingPlan.properties
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/SamplingPlan.properties 2010-06-11 16:20:21 UTC (rev 509)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/SamplingPlan.properties 2010-06-12 14:43:58 UTC (rev 510)
@@ -32,3 +32,5 @@
facadeName-label: Fa\u00e7ade
sectorName-label: Zone
sampleRow-label: Code ligne
+
+sampleRow-delete-confirmMessage: Etes-vous s\u00fbr de vouloir supprimer d\u00e9finitivement la ligne %1$s du plan d\'\u00e9chantillonnage ?
Modified: trunk/wao-ui/src/main/webapp/Administration.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Administration.tml 2010-06-11 16:20:21 UTC (rev 509)
+++ trunk/wao-ui/src/main/webapp/Administration.tml 2010-06-12 14:43:58 UTC (rev 510)
@@ -81,7 +81,7 @@
<!--</a>-->
<input t:type="submit" t:id="showUser" class="ico search" value="Show Details" t:title="Afficher détails" />
<input t:type="submit" t:id="deleteUser" class="ico22px delete" value="Delete user" t:title="Supprimer cet utilisateur"
- t:mixins="Confirm" t:message="Etes-vous sûr de vouloir supprimer définitivement cet utilisateur ?" />
+ t:mixins="nuiton/confirm" t:message="literal:Etes-vous sûr de vouloir supprimer définitivement cet utilisateur ?" />
<input t:type="submit" t:id="addNewUser" class="ico add" value="Add new company" t:title="Ajouter un nouvel utilisateur" />
</div>
</form>
Modified: trunk/wao-ui/src/main/webapp/Contacts.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Contacts.tml 2010-06-11 16:20:21 UTC (rev 509)
+++ trunk/wao-ui/src/main/webapp/Contacts.tml 2010-06-12 14:43:58 UTC (rev 510)
@@ -303,7 +303,7 @@
t:context="contact.topiaId" title="Modifier le contact" />
<input t:type="submitContext" t:id="deleteContact" class="ico22px delete" value="Delete"
t:context="contact.topiaId" title="Supprimer le contact"
- t:mixins="confirm" t:message="Etes-vous sûr de vouloir supprimer définitivement ce contact ?" />
+ t:mixins="nuiton/confirm" t:message="literal:Etes-vous sûr de vouloir supprimer définitivement ce contact ?" />
</p:else>
</t:if>
<p:else>
Modified: trunk/wao-ui/src/main/webapp/Index.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Index.tml 2010-06-11 16:20:21 UTC (rev 509)
+++ trunk/wao-ui/src/main/webapp/Index.tml 2010-06-12 14:43:58 UTC (rev 510)
@@ -69,7 +69,7 @@
<img src="${asset:context:img/edit.png}" alt="Edit" />
</a>
<a t:type="actionlink" t:id="deleteNews" t:context="rowIndex" title="Supprimer l'article"
- t:mixins="confirm" t:message="Etes-vous sûr de vouloir supprimer définitivement cet article ?">
+ t:mixins="nuiton/confirm" t:message="literal:Etes-vous sûr de vouloir supprimer définitivement cet article ?">
<img src="${asset:context:img/delete2.png}" alt="Delete" />
</a>
</p:else>
Modified: trunk/wao-ui/src/main/webapp/SamplingPlan.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2010-06-11 16:20:21 UTC (rev 509)
+++ trunk/wao-ui/src/main/webapp/SamplingPlan.tml 2010-06-12 14:43:58 UTC (rev 510)
@@ -286,7 +286,7 @@
</a>
<t:unless t:test="row.hasSampleMonthRealTideTime()">
<a t:type="actionlink" t:id="deleteSampleRow" t:context="rowIndex" title="Supprimer la ligne d'échantillon"
- t:mixins="confirm" t:message="Etes-vous sûr de vouloir supprimer définitivement la ligne ${row.code} du plan d\'échantillonnage ?">
+ t:mixins="nuiton/confirm" t:message="format:sampleRow-delete-confirmMessage=row.code">
<img src="${asset:context:}/img/delete2.png" alt="Supprimer" title="Supprimer la ligne"/>
</a>
<p:else>
Deleted: trunk/wao-ui/src/main/webapp/js/dialog.js
===================================================================
--- trunk/wao-ui/src/main/webapp/js/dialog.js 2010-06-11 16:20:21 UTC (rev 509)
+++ trunk/wao-ui/src/main/webapp/js/dialog.js 2010-06-12 14:43:58 UTC (rev 510)
@@ -1,92 +0,0 @@
-/*
- * #%L
- * Wao :: Web Interface
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2009 - 2010 Ifremer
- * %%
- * 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 3 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, see
- * <http://www.gnu.org/licenses/gpl-3.0.html>.
- * #L%
- */
-/**
- * Dialogue de confirmation
- */
-var Confirm = Class.create({
- /**
- * element : Element DOM depuis lequel le dialogue de confirmation va s'ouvrir
- * message : Message à afficher dans la boîte de dialogue
- */
- initialize: function(element, message) {
- this.message = message;
- Event.observe($(element), 'click', this.doConfirm.bindAsEventListener(this));
- },
- doConfirm: function(e) {
- //Tapestry.debug('click ' + element);
- if(! confirm(this.message)) {
- //Tapestry.debug('STOP ' + e);
- Event.stop(e);
- }
- }
-});
-
-//var BlockPopup = Class.create({
-// initialize: function(linkElement, title, width, height, blockElement) {
-// this.window = new Window({
-// className: 'alphacube',
-// title: title,
-// hideEffect:Element.hide,
-// showEffect:Element.show,
-// width: width,
-// height: height
-// });
-//
-// this.block = $(blockElement).innerHTML;
-// $(linkElement).observe('click',this.openWindow.bindAsEventListener(this));
-// },
-// openWindow: function(e) {
-// this.window.getContent().update(this.block);
-// this.window.showCenter(true);
-// }
-//});
-//
-//var PopupPageLink = Class.create({
-//
-// initialize: function(id, link, width, height) {
-//
-// this.element = $(id);
-//
-// this.link = link;
-//
-// this.width = width;
-//
-// this.height = height;
-//
-// Event.observe(this.element, 'click', this.onclick.bindAsEventListener(this));
-//
-// },
-//
-// onclick: function() {
-//
-// var name = 'dialogWindow';
-//
-// var win = window.open(this.link,name,'width=' + this.width + ',height=' + this.height + ',resizable=yes,scrollbars=yes,menubar=no,screenX=0,screenY=0,left=0,top=0' );
-//
-// win.focus();
-//
-// }
-//
-//});
1
0
[Suiviobsmer-commits] r509 - trunk/wao-business/src/main/java/fr/ifremer/wao
by fdesbois@users.labs.libre-entreprise.org 11 Jun '10
by fdesbois@users.labs.libre-entreprise.org 11 Jun '10
11 Jun '10
Author: fdesbois
Date: 2010-06-11 16:20:21 +0000 (Fri, 11 Jun 2010)
New Revision: 509
Log:
Bug on migration
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-06-11 15:45:32 UTC (rev 508)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-06-11 16:20:21 UTC (rev 509)
@@ -129,11 +129,11 @@
queries.add("ALTER TABLE SampleRowLog ADD fromAdmin BOOLEAN;");
// EXISTS will return TRUE for admin author and false for others
queries.add("UPDATE SampleRowLog A SET fromAdmin = EXISTS (" +
- "SELECT B FROM SampleRowLog B, WaoUser U " +
- "WHERE B.topiaId = A.topiaId " +
- "AND B.author = U.topiaId" +
+ "SELECT U FROM SampleRowLog B, WaoUser U" +
+ " WHERE B.topiaId = A.topiaId" +
+ " AND B.author = U.topiaId" +
// Admin role = 1
- "AND U.role = 1);"
+ " AND U.role = 1);"
);
}
1
0
11 Jun '10
Author: fdesbois
Date: 2010-06-11 15:45:32 +0000 (Fri, 11 Jun 2010)
New Revision: 508
Log:
Evo #2325 :
- Add migration for SampleRowLog (need fromAdmin boolean)
- Refactor creation of sampleRowLog (moved from sampleRow entity to serviceSampling)
- Clean imports for WaoUser in ui
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties
trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties
trunk/wao-business/src/main/resources/oldmappings/Wao/1.3/fr/ifremer/wao/entity/SampleRowLogImpl.hbm.xml
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/BoatActivityCalendar.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfile.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthentication.java
trunk/wao-ui/src/main/webapp/SampleRowHistoric.tml
trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java
trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/demo/pages/LayoutDemo.java
trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -106,7 +106,7 @@
}
@Override
- protected void updateWaoUserRoleColumns_1_3(List<String> queries) {
+ protected void updateWaoUserRoleColumns_1_3a(List<String> queries) {
// Update COORDINATOR
queries.add("UPDATE WaoUser SET role = 4 WHERE role = 2;");
// Update OBSERVER
@@ -114,7 +114,8 @@
// Update ADMIN
queries.add("UPDATE WaoUser SET role = 1 WHERE role = 0;");
- // Update ReadOnly with role value if set to TRUE
+ // Update ReadOnly with role value if set to TRUE, otherwise initialize
+ // it with 0
queries.add("ALTER TABLE WaoUser ADD roleReadOnly INTEGER;");
queries.add("UPDATE WaoUser SET roleReadOnly = role WHERE readOnly = TRUE;");
queries.add("UPDATE WaoUser SET roleReadOnly = 0 WHERE readOnly = FALSE;");
@@ -122,5 +123,18 @@
// Clean readOnly old field
queries.add("ALTER TABLE WaoUser DROP COLUMN readOnly;");
}
+
+ @Override
+ protected void createSampleRowLogFromAdminColumn_1_3b(List<String> queries) {
+ queries.add("ALTER TABLE SampleRowLog ADD fromAdmin BOOLEAN;");
+ // EXISTS will return TRUE for admin author and false for others
+ queries.add("UPDATE SampleRowLog A SET fromAdmin = EXISTS (" +
+ "SELECT B FROM SampleRowLog B, WaoUser U " +
+ "WHERE B.topiaId = A.topiaId " +
+ "AND B.author = U.topiaId" +
+ // Admin role = 1
+ "AND U.role = 1);"
+ );
+ }
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/WaoMigrationCallBack.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -59,8 +59,10 @@
protected abstract void createSampleMonthEstimatedTidesColumn_1_2b(
List<String> queries);
- protected abstract void updateWaoUserRoleColumns_1_3(List<String> queries);
+ protected abstract void updateWaoUserRoleColumns_1_3a(List<String> queries);
+ protected abstract void createSampleRowLogFromAdminColumn_1_3b(List<String> queries);
+
@Override
public boolean askUser(Version dbVersion,
Version applicationVersion,
@@ -122,8 +124,10 @@
List<String> queries = new ArrayList <String>();
- updateWaoUserRoleColumns_1_3(queries);
+ updateWaoUserRoleColumns_1_3a(queries);
+ createSampleRowLogFromAdminColumn_1_3b(queries);
+
String[] strings = queries.toArray(new String[queries.size()]);
executeSQL(tx, showSql, showProgression, strings);
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowImpl.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowImpl.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -31,6 +31,7 @@
import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.WaoDAOHelper;
import fr.ifremer.wao.WaoProperty;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.UserRole;
import java.io.Serializable;
import java.text.DateFormat;
@@ -315,76 +316,77 @@
SampleMonth month = getSampleMonth(begin);
return month != null;
}
+//
+// @Override
+// public SampleRowLog getNewSampleRowLog(ConnectedUser user) {
+// SampleRowLog rowLog = new SampleRowLogImpl();
+// rowLog.setSampleRow(this);
+// rowLog.setAuthor(user.getUser());
+// rowLog.setFromAdmin(user.isAdmin());
+// return rowLog;
+// }
+//
+// /**
+// * Save a sampleRowLog to the sampleRow. This log is used to comment the
+// * row. For a comment added by a coordinator, a mail will be sent to the
+// * admin.
+// *
+// * @param rowLog the sampleRowLog to save
+// * @throws WaoException
+// */
+// @Override
+// public void saveSampleRowLog(SampleRowLog rowLog)
+// throws WaoException, WaoBusinessException {
+// TopiaContext transaction = null;
+// try {
+// WaoUser author = rowLog.getAuthor();
+// if (log.isInfoEnabled()) {
+// log.info("W:[ saveSampleRowLog ] : " +
+// "authorName = " + author.getFullName() +
+// " _ authorRole = " + author.getUserRoles());
+// }
+//
+// transaction = WaoUtils.beginTransaction();
+//
+// SampleRowLogDAO logDAO =
+// WaoDAOHelper.getSampleRowLogDAO(transaction);
+//
+// logDAO.create(rowLog);
+//
+// transaction.commitTransaction();
+//
+// // Send mail to admin if author is a coordinator :
+// if (author.hasUserRole(UserRole.COORDINATOR)) {
+// String sampleRowCode = rowLog.getSampleRow().getCode();
+// String to = WaoProperty.EMAIL_CONTACT.getValue();
+// String subject = "[WAO] Ajout d'un commentaire sur la ligne " +
+// sampleRowCode;
+// String msg = "Bonjour,\n\n" +
+// "Un nouveau commentaire a été ajouté par " +
+// author.getFullName() + " de la société " +
+// author.getCompany().getName() + " :\n " +
+// "\t" + rowLog.getComment() + "\n\n" +
+// "Vous pouvez consulter l'historique de la ligne " +
+// sampleRowCode + " sur la page :\n" +
+// "http://" + WaoProperty.SERVER_PATH.getValue() +
+// "/samplerowhistoric/" + sampleRowCode + "\n\n" +
+// "Cordialement,\n\n" +
+// "L'Equipe WAO";
+// WaoUtils.sendEmail(to, subject, msg);
+// }
+//
+// } catch (EmailException eee) {
+// throw new WaoBusinessException(Type.SMTP_NOT_FOUND, this.getClass(),
+// "Aucun serveur smtp disponible, aucun email n'a été" +
+// " envoyé à " + rowLog.getAuthor().getLogin(),
+// eee);
+// } catch (Exception eee) {
+// WaoUtils.treateError(transaction, eee,
+// I18n.n_("wao.error.sampleRow.saveSampleRowLog"),
+// rowLog.getAuthor().getFullName());
+// } finally {
+// WaoUtils.closeTransaction(transaction);
+// }
+// }
- @Override
- public SampleRowLog getNewSampleRowLog(WaoUser user) {
- SampleRowLog rowLog = new SampleRowLogImpl();
- rowLog.setSampleRow(this);
- rowLog.setAuthor(user);
- return rowLog;
- }
-
- /**
- * Save a sampleRowLog to the sampleRow. This log is used to comment the
- * row. For a comment added by a coordinator, a mail will be sent to the
- * admin.
- *
- * @param rowLog the sampleRowLog to save
- * @throws WaoException
- */
- @Override
- public void saveSampleRowLog(SampleRowLog rowLog)
- throws WaoException, WaoBusinessException {
- TopiaContext transaction = null;
- try {
- WaoUser author = rowLog.getAuthor();
- if (log.isInfoEnabled()) {
- log.info("W:[ saveSampleRowLog ] : " +
- "authorName = " + author.getFullName() +
- " _ authorRole = " + author.getUserRoles());
- }
-
- transaction = WaoUtils.beginTransaction();
-
- SampleRowLogDAO logDAO =
- WaoDAOHelper.getSampleRowLogDAO(transaction);
-
- logDAO.create(rowLog);
-
- transaction.commitTransaction();
-
- // Send mail to admin if author is a coordinator :
- if (author.hasUserRole(UserRole.COORDINATOR)) {
- String sampleRowCode = rowLog.getSampleRow().getCode();
- String to = WaoProperty.EMAIL_CONTACT.getValue();
- String subject = "[WAO] Ajout d'un commentaire sur la ligne " +
- sampleRowCode;
- String msg = "Bonjour,\n\n" +
- "Un nouveau commentaire a été ajouté par " +
- author.getFullName() + " de la société " +
- author.getCompany().getName() + " :\n " +
- "\t" + rowLog.getComment() + "\n\n" +
- "Vous pouvez consulter l'historique de la ligne " +
- sampleRowCode + " sur la page :\n" +
- "http://" + WaoProperty.SERVER_PATH.getValue() +
- "/samplerowhistoric/" + sampleRowCode + "\n\n" +
- "Cordialement,\n\n" +
- "L'Equipe WAO";
- WaoUtils.sendEmail(to, subject, msg);
- }
-
- } catch (EmailException eee) {
- throw new WaoBusinessException(Type.SMTP_NOT_FOUND, this.getClass(),
- "Aucun serveur smtp disponible, aucun email n'a été" +
- " envoyé à " + rowLog.getAuthor().getLogin(),
- eee);
- } catch (Exception eee) {
- WaoUtils.treateError(transaction, eee,
- I18n.n_("wao.error.sampleRow.saveSampleRowLog"),
- rowLog.getAuthor().getFullName());
- } finally {
- WaoUtils.closeTransaction(transaction);
- }
- }
-
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowLogImpl.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -27,6 +27,7 @@
import java.text.DateFormat;
import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.nuiton.util.PeriodDates;
@@ -155,5 +156,10 @@
removedBoats);
}
}
+
+ @Override
+ public Date getCreateDate() {
+ return getTopiaCreateDate();
+ }
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -27,25 +27,62 @@
import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;
-import fr.ifremer.wao.*;
+import fr.ifremer.wao.WaoBusinessException;
+import fr.ifremer.wao.WaoBusinessException.Type;
+import fr.ifremer.wao.WaoContext;
+import fr.ifremer.wao.WaoDAOHelper;
+import fr.ifremer.wao.WaoException;
+import fr.ifremer.wao.WaoProperty;
+import fr.ifremer.wao.WaoQueryBuilder;
import fr.ifremer.wao.bean.ConnectedUser;
-import fr.ifremer.wao.io.ImportHelper;
-import fr.ifremer.wao.WaoBusinessException.Type;
import fr.ifremer.wao.bean.FacadeRow;
import fr.ifremer.wao.bean.FacadeRowImpl;
import fr.ifremer.wao.bean.ImportResults;
import fr.ifremer.wao.bean.ImportResultsImpl;
import fr.ifremer.wao.bean.SamplingFilter;
-import fr.ifremer.wao.entity.*;
+import fr.ifremer.wao.bean.UserRole;
+import fr.ifremer.wao.entity.Boat;
+import fr.ifremer.wao.entity.Company;
+import fr.ifremer.wao.entity.CompanyDAO;
+import fr.ifremer.wao.entity.ElligibleBoat;
+import fr.ifremer.wao.entity.ElligibleBoatDAO;
+import fr.ifremer.wao.entity.FishingZone;
+import fr.ifremer.wao.entity.FishingZoneDAO;
+import fr.ifremer.wao.entity.Profession;
+import fr.ifremer.wao.entity.ProfessionDAO;
+import fr.ifremer.wao.entity.ProfessionImpl;
+import fr.ifremer.wao.entity.SampleMonth;
+import fr.ifremer.wao.entity.SampleMonthDAO;
+import fr.ifremer.wao.entity.SampleMonthImpl;
+import fr.ifremer.wao.entity.SampleRow;
+import fr.ifremer.wao.entity.SampleRowDAO;
+import fr.ifremer.wao.entity.SampleRowImpl;
+import fr.ifremer.wao.entity.SampleRowLog;
+import fr.ifremer.wao.entity.SampleRowLogDAO;
+import fr.ifremer.wao.entity.SampleRowLogImpl;
+import fr.ifremer.wao.entity.WaoUser;
+import fr.ifremer.wao.io.ImportHelper;
+import fr.ifremer.wao.io.SamplingExport;
import fr.ifremer.wao.io.WaoCsvHeader.FISHING_ZONE;
import fr.ifremer.wao.io.WaoCsvHeader.SAMPLING;
-import fr.ifremer.wao.io.SamplingExport;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.mail.EmailException;
+import org.nuiton.topia.TopiaContext;
+import org.nuiton.topia.TopiaException;
+import org.nuiton.topia.framework.TopiaQuery;
+import org.nuiton.topia.framework.TopiaQuery.Op;
+import org.nuiton.util.DateUtils;
+import org.nuiton.util.PeriodDates;
+import org.nuiton.util.beans.BinderBuilder;
+import org.nuiton.util.beans.BinderProvider;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.lang.reflect.Array;
import java.text.DateFormat;
import java.text.NumberFormat;
import java.text.ParseException;
@@ -58,17 +95,6 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.commons.lang.StringUtils;
-import org.nuiton.topia.TopiaContext;
-import org.nuiton.topia.TopiaException;
-import org.nuiton.topia.framework.TopiaQuery;
-import org.nuiton.topia.framework.TopiaQuery.Op;
-import org.nuiton.util.DateUtils;
-import org.nuiton.util.PeriodDates;
-import org.nuiton.util.beans.BinderBuilder;
-import org.nuiton.util.beans.BinderProvider;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* ServiceSamplingImpl
@@ -243,7 +269,10 @@
if (log.isDebugEnabled()) {
log.debug("update row : " + row);
}
+ // Not useful, sampleRowLog is instantiate using getNewSampleRowLog(SampleRow, ConnectedUser);
rowLog.setSampleRow(row);
+ rowLog.setFromAdmin(true);
+
rowDAO.update(row);
if (log.isDebugEnabled()) {
@@ -560,7 +589,64 @@
return newProfession;
}
+ @Override
+ public SampleRowLog executeGetNewSampleRowLog(SampleRow row,
+ ConnectedUser user) {
+ SampleRowLog rowLog = new SampleRowLogImpl();
+ rowLog.setSampleRow(row);
+ rowLog.setAuthor(user.getUser());
+ rowLog.setFromAdmin(user.isAdmin());
+ return rowLog;
+ }
+
/**
+ * Save a sampleRowLog to the sampleRow. This log is used to comment the
+ * row. For a comment added by a coordinator, a mail will be sent to the
+ * admin.
+ *
+ * @param transaction
+ * @param rowLog the sampleRowLog to save
+ * @throws WaoBusinessException SMTP error when sending email to admin
+ */
+ @Override
+ public void executeCreateSampleRowLog(TopiaContext transaction, SampleRowLog rowLog)
+ throws WaoBusinessException, TopiaException {
+
+ WaoDAOHelper.getSampleRowLogDAO(transaction).create(rowLog);
+
+ transaction.commitTransaction();
+
+ try {
+ WaoUser author = rowLog.getAuthor();
+ // Send mail to admin if author is a coordinator :
+ if (author.hasUserRole(UserRole.COORDINATOR)) {
+ String sampleRowCode = rowLog.getSampleRow().getCode();
+ String to = WaoProperty.EMAIL_CONTACT.getValue();
+ String subject = "[WAO] Ajout d'un commentaire sur la ligne " +
+ sampleRowCode;
+ String msg = "Bonjour,\n\n" +
+ "Un nouveau commentaire a été ajouté par " +
+ author.getFullName() + " de la société " +
+ author.getCompany().getName() + " :\n " +
+ "\t" + rowLog.getComment() + "\n\n" +
+ "Vous pouvez consulter l'historique de la ligne " +
+ sampleRowCode + " sur la page :\n" +
+ "http://" + WaoProperty.SERVER_PATH.getValue() +
+ "/samplerowhistoric/" + sampleRowCode + "\n\n" +
+ "Cordialement,\n\n" +
+ "L'Equipe WAO";
+ context.sendEmail(to, subject, msg);
+ }
+
+ } catch (EmailException eee) {
+ throw new WaoBusinessException(Type.SMTP_NOT_FOUND, this.getClass(),
+ "Aucun serveur smtp disponible, aucun email n'a été" +
+ " envoyé à " + rowLog.getAuthor().getLogin(),
+ eee);
+ }
+ }
+
+ /**
* Prepare the Binder for Profession copy. This method is called in
* service constructor. The copy from two Profession will be available
* anywhere using BinderProvider.get(Profession.class).copy(source, dest);
Modified: trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties
===================================================================
--- trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-business/src/main/resources/i18n/wao-business-en_GB.properties 2010-06-11 15:45:32 UTC (rev 508)
@@ -39,6 +39,7 @@
wao.error.serviceReferential.getProfessions=
wao.error.serviceReferential.getSectors=
wao.error.serviceReferential.importFishingZoneCsv=
+wao.error.serviceSampling.createSampleRowLog=
wao.error.serviceSampling.createUpdateSampleRow=
wao.error.serviceSampling.deleteSampleRow=
wao.error.serviceSampling.exportSamplingPlanCsv=
@@ -46,6 +47,7 @@
wao.error.serviceSampling.getNewSampleMonth=
wao.error.serviceSampling.getNewSampleRow=
wao.error.serviceSampling.getNewSampleRowCode=
+wao.error.serviceSampling.getNewSampleRowLog=
wao.error.serviceSampling.getPrograms=
wao.error.serviceSampling.getSampleRow=
wao.error.serviceSampling.getSampleRowByCode=
Modified: trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties
===================================================================
--- trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-06-11 15:45:32 UTC (rev 508)
@@ -38,6 +38,7 @@
wao.error.serviceReferential.getProfessions=Impossible de charger la liste des m\u00E9tiers
wao.error.serviceReferential.getSectors=Impossible de charger la liste des zones de p\u00EAche
wao.error.serviceReferential.importFishingZoneCsv=Probl\u00E8me d'import du fichier CSV. V\u00E9rifiez l'en-t\u00EAte du fichier \: [ PECHE_DIVISION,PECHE_ZONE,PECHE_FACADE ]. Voir documentation pour plus de d\u00E9tails.
+wao.error.serviceSampling.createSampleRowLog=
wao.error.serviceSampling.createUpdateSampleRow=Impossible de sauvegarder la ligne d'\u00E9chantillon
wao.error.serviceSampling.deleteSampleRow=Impossible de supprimer la ligne d'\u00E9chantillon \: %1$s
wao.error.serviceSampling.exportSamplingPlanCsv=Impossible d'exporter le plan d'\u00E9chantillonnage sur la p\u00E9riode du %1$s au %2$s
@@ -45,6 +46,7 @@
wao.error.serviceSampling.getNewSampleMonth=
wao.error.serviceSampling.getNewSampleRow=
wao.error.serviceSampling.getNewSampleRowCode=Impossible de r\u00E9cup\u00E9rer un nouveau code pour une ligne d'\u00E9chantillonnage
+wao.error.serviceSampling.getNewSampleRowLog=
wao.error.serviceSampling.getPrograms=Impossible de charger la liste des programmes
wao.error.serviceSampling.getSampleRow=Impossible de charger la ligne d'\u00E9chantillon ayant pour identifiant \: %1$s
wao.error.serviceSampling.getSampleRowByCode=Impossible de charger la ligne d'\u00E9chantillon ayant pour code %1$s
Modified: trunk/wao-business/src/main/resources/oldmappings/Wao/1.3/fr/ifremer/wao/entity/SampleRowLogImpl.hbm.xml
===================================================================
--- trunk/wao-business/src/main/resources/oldmappings/Wao/1.3/fr/ifremer/wao/entity/SampleRowLogImpl.hbm.xml 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-business/src/main/resources/oldmappings/Wao/1.3/fr/ifremer/wao/entity/SampleRowLogImpl.hbm.xml 2010-06-11 15:45:32 UTC (rev 508)
@@ -7,6 +7,7 @@
<property name="topiaCreateDate" type="timestamp" node="@topiaCreateDate"/>
<property name="logText" type="text" access="field" column="logText" node="logText"/>
<property name="comment" type="text" access="field" column="comment" node="comment"/>
+ <property name="fromAdmin" type="boolean" access="field" column="fromAdmin" node="fromAdmin"/>
<many-to-one name="sampleRow" class="fr.ifremer.wao.entity.SampleRowImpl" column="sampleRow" node="sampleRow/@topiaId" embed-xml="false"/>
<many-to-one name="author" class="fr.ifremer.wao.entity.WaoUserImpl" column="author" lazy="false" node="author/@topiaId" embed-xml="false"/>
</class>
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -27,7 +27,6 @@
import fr.ifremer.wao.WaoProperty;
import fr.ifremer.wao.bean.ConnectedUser;
-import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.ui.pages.Index;
import fr.ifremer.wao.ui.services.ServiceAuthentication;
import fr.ifremer.wao.ui.services.WaoManager;
@@ -103,7 +102,7 @@
/**
* Test if the current user in session is a valid user.
- * Test topia id existence because WaoUser can be empty when session is lost
+ * Test topia id existence because ConnectedUser can be empty when session is lost
*
* @return true if the current user is a valide user (not empty).
* @see fr.ifremer.wao.ui.services.AppModule#
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/BoatActivityCalendar.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/BoatActivityCalendar.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/BoatActivityCalendar.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -26,7 +26,6 @@
package fr.ifremer.wao.ui.pages;
import fr.ifremer.wao.WaoBusinessException;
-import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.ActivityCalendar;
@@ -34,22 +33,21 @@
import fr.ifremer.wao.entity.ActivityProfession;
import fr.ifremer.wao.entity.ActivityZone;
import fr.ifremer.wao.entity.Boat;
-import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.service.ServiceBoat;
import fr.ifremer.wao.ui.components.Layout;
import fr.ifremer.wao.ui.data.RequiresAuthentication;
-import java.util.Collections;
-import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.tapestry5.annotations.IncludeStylesheet;
import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.nuiton.util.DateUtils;
import org.slf4j.Logger;
+import java.util.Collections;
+import java.util.List;
+
/**
* ActivityCalendarPage
*
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -27,13 +27,17 @@
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoException;
-import fr.ifremer.wao.bean.*;
+import fr.ifremer.wao.bean.BoatFilter;
+import fr.ifremer.wao.bean.BoatFilterImpl;
+import fr.ifremer.wao.bean.CompanyBoatInfos;
+import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.SamplingFilter;
+import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.Boat;
import fr.ifremer.wao.entity.BoatInfos;
import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.Contact;
import fr.ifremer.wao.entity.ElligibleBoat;
-import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.entity.Profession;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.service.ServiceBoat;
@@ -41,21 +45,14 @@
import fr.ifremer.wao.service.ServiceSampling;
import fr.ifremer.wao.service.ServiceUser;
import fr.ifremer.wao.ui.base.AbstractFilteredPage;
-import fr.ifremer.wao.ui.data.*;
-import fr.ifremer.wao.ui.data.GenericSelectModel;
import fr.ifremer.wao.ui.components.FeedBack;
import fr.ifremer.wao.ui.components.Layout;
+import fr.ifremer.wao.ui.data.BoatDataSource;
+import fr.ifremer.wao.ui.data.BusinessUtils;
+import fr.ifremer.wao.ui.data.ExportStreamResponse;
+import fr.ifremer.wao.ui.data.GenericSelectModel;
+import fr.ifremer.wao.ui.data.RequiresAuthentication;
import fr.ifremer.wao.ui.services.WaoManager;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.List;
-import java.util.zip.GZIPInputStream;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.tapestry5.Block;
@@ -79,6 +76,17 @@
import org.apache.tapestry5.upload.services.UploadedFile;
import org.slf4j.Logger;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.List;
+import java.util.zip.GZIPInputStream;
+
/**
* Boats
*
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -6,13 +6,10 @@
import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.UserRole;
-import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.service.ServiceUser;
import fr.ifremer.wao.ui.components.FeedBack;
import fr.ifremer.wao.ui.services.ServiceAuthentication;
-import org.apache.tapestry5.EventContext;
import org.apache.tapestry5.Link;
-import org.apache.tapestry5.OptionModel;
import org.apache.tapestry5.PersistenceConstants;
import org.apache.tapestry5.RenderSupport;
import org.apache.tapestry5.SelectModel;
@@ -21,18 +18,14 @@
import org.apache.tapestry5.annotations.Log;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.internal.OptionModelImpl;
import org.apache.tapestry5.internal.SelectModelImpl;
-import org.apache.tapestry5.internal.services.PartialMarkupDocumentLinker;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.json.JSONArray;
import org.apache.tapestry5.json.JSONObject;
import org.apache.tapestry5.services.PageRenderLinkSource;
-import org.apache.tapestry5.services.Request;
import org.slf4j.Logger;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -118,7 +111,7 @@
}
/**
- * ON_CHANGE :: Callback method for blur event on Login textfield component.
+ * ON_CHANGE :: Callback method for change event on Login textfield component.
* Login will be checked to refresh the userRole select using {@link
* JSONObject} that contains data for select options to display in javascript.
*
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowForm.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -27,6 +27,7 @@
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoException;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.Boat;
import fr.ifremer.wao.entity.Company;
@@ -36,7 +37,6 @@
import fr.ifremer.wao.entity.SampleMonth;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.SampleRowLog;
-import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.service.ServiceBoat;
import fr.ifremer.wao.service.ServiceReferential;
import fr.ifremer.wao.service.ServiceSampling;
@@ -45,11 +45,6 @@
import fr.ifremer.wao.ui.data.RequiresAuthentication;
import fr.ifremer.wao.ui.data.WaoPropertyChangeListener;
import fr.ifremer.wao.ui.services.WaoManager;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.EventContext;
@@ -72,6 +67,12 @@
import org.nuiton.util.PeriodDates;
import org.slf4j.Logger;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
/**
* SampleRowForm
*
@@ -100,7 +101,7 @@
@SessionState
@Property
- private WaoUser user;
+ private ConnectedUser user;
@Inject
private PropertyAccess propertyAccess;
@@ -513,7 +514,7 @@
public SampleRowLog getSampleRowLog() throws WaoException {
if (sampleRowLog == null) {
- sampleRowLog = getSampleRow().getNewSampleRowLog(user);
+ sampleRowLog = serviceSampling.getNewSampleRowLog(getSampleRow(), user);
}
return sampleRowLog;
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -31,14 +31,10 @@
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.SampleRowLog;
-import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.service.ServiceSampling;
import fr.ifremer.wao.ui.components.FeedBack;
import fr.ifremer.wao.ui.components.Layout;
import fr.ifremer.wao.ui.data.RequiresAuthentication;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Locale;
import org.apache.commons.lang.StringUtils;
import org.apache.tapestry5.annotations.IncludeStylesheet;
import org.apache.tapestry5.annotations.InjectComponent;
@@ -48,6 +44,10 @@
import org.apache.tapestry5.ioc.annotations.Inject;
import org.slf4j.Logger;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+
/**
* SampleRowHistoric
*
@@ -136,23 +136,17 @@
public String getLogStyle() {
String styleClass = "head-";
- if (sampleRowLog.getAuthor().hasUserRole(UserRole.ADMIN)) {
+ if (sampleRowLog.getFromAdmin()) {
styleClass += "admin";
- } else if (sampleRowLog.getAuthor().hasUserRole(UserRole.COORDINATOR)) {
+ } else {
styleClass += "company";
}
return styleClass;
}
- public boolean isAdminAuthor() {
- // Note : maybe problematic way if admin role is removed from user
- // Maybe need add admin field in sampleRowLog
- return sampleRowLog.getAuthor().hasUserRole(UserRole.ADMIN);
- }
-
public SampleRowLog getNewLog() throws WaoBusinessException {
if (newLog == null) {
- newLog = getSampleRow().getNewSampleRowLog(user.getUser());
+ newLog = serviceSampling.getNewSampleRowLog(getSampleRow(), user);
}
return newLog;
}
@@ -165,7 +159,7 @@
public void onSuccessFromAddComment() throws WaoException {
if (canAddComment()) {
try {
- sampleRow.saveSampleRowLog(newLog);
+ serviceSampling.createSampleRowLog(newLog);
} catch (WaoBusinessException eee) {
layout.addInfo(eee.getMessage());
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -27,24 +27,20 @@
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoException;
-import fr.ifremer.wao.bean.*;
+import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.FacadeRow;
+import fr.ifremer.wao.bean.ImportResults;
+import fr.ifremer.wao.bean.SamplingFilter;
+import fr.ifremer.wao.bean.SamplingFilterImpl;
import fr.ifremer.wao.entity.FishingZone;
import fr.ifremer.wao.entity.SampleMonth;
import fr.ifremer.wao.entity.SampleRow;
-import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.service.ServiceReferential;
import fr.ifremer.wao.service.ServiceSampling;
import fr.ifremer.wao.ui.base.AbstractFilteredPage;
import fr.ifremer.wao.ui.components.Layout;
import fr.ifremer.wao.ui.data.ExportStreamResponse;
import fr.ifremer.wao.ui.data.RequiresAuthentication;
-import java.io.IOException;
-import java.io.InputStream;
-import java.text.DateFormat;
-import java.text.NumberFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.List;
import org.apache.tapestry5.StreamResponse;
import org.apache.tapestry5.annotations.IncludeStylesheet;
import org.apache.tapestry5.annotations.InjectComponent;
@@ -61,6 +57,14 @@
import org.nuiton.util.StringUtil.ToString;
import org.slf4j.Logger;
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.DateFormat;
+import java.text.NumberFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
/**
* SampingPlan
*
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -26,9 +26,15 @@
package fr.ifremer.wao.ui.pages;
import fr.ifremer.wao.WaoException;
-import fr.ifremer.wao.bean.*;
+import fr.ifremer.wao.bean.BoardingResult;
+import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.ContactAverageReactivity;
+import fr.ifremer.wao.bean.ContactState;
+import fr.ifremer.wao.bean.ContactStateStatistics;
+import fr.ifremer.wao.bean.SamplingFilter;
+import fr.ifremer.wao.bean.SamplingFilterImpl;
+import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.Company;
-import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.service.ServiceSynthesis;
import fr.ifremer.wao.ui.base.AbstractFilteredPage;
import fr.ifremer.wao.ui.data.BusinessUtils;
@@ -36,15 +42,6 @@
import fr.ifremer.wao.ui.data.ChartUtils.ChartType;
import fr.ifremer.wao.ui.data.RequiresAuthentication;
import fr.ifremer.wao.ui.data.SynthesisId;
-import java.text.DateFormat;
-import java.text.NumberFormat;
-import java.text.SimpleDateFormat;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.SortedMap;
import org.apache.commons.collections.CollectionUtils;
import org.apache.tapestry5.Block;
import org.apache.tapestry5.ComponentResources;
@@ -61,6 +58,16 @@
import org.nuiton.util.PeriodDates;
import org.slf4j.Logger;
+import java.text.DateFormat;
+import java.text.NumberFormat;
+import java.text.SimpleDateFormat;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.SortedMap;
+
/**
* Synthesis
*
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfile.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfile.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/UserProfile.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -28,6 +28,7 @@
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoBusinessException.Type;
import fr.ifremer.wao.WaoException;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.service.ServiceUser;
import fr.ifremer.wao.ui.components.Layout;
@@ -58,7 +59,7 @@
private Layout layout;
@SessionState
- private WaoUser user;
+ private ConnectedUser user;
private WaoUser userEditable;
@@ -73,7 +74,7 @@
public WaoUser getUserEditable() {
if (userEditable == null) {
- userEditable = user;
+ userEditable = user.getUser();
}
return userEditable;
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -232,7 +232,7 @@
// }
/**
- * Used to instanciate SessionState WaoUser when session expires.
+ * Used to instanciate SessionState ConnectedUser when session expires.
*
* @param configuration to add the ApplicationStateCreator.
* @param serviceAuthentication used to instantiate the new user
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthentication.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthentication.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthentication.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -2,7 +2,6 @@
package fr.ifremer.wao.ui.services;
import fr.ifremer.wao.bean.ConnectedUser;
-import fr.ifremer.wao.entity.WaoUser;
/**
* ServiceAuthentication
Modified: trunk/wao-ui/src/main/webapp/SampleRowHistoric.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/SampleRowHistoric.tml 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-ui/src/main/webapp/SampleRowHistoric.tml 2010-06-11 15:45:32 UTC (rev 508)
@@ -51,11 +51,11 @@
</t:if>
<div class="so-samplerow-log" t:type="loop" t:source="sampleRow.sampleRowLog" t:value="sampleRowLog">
<p class="${logStyle}">
- <t:if t:test="adminAuthor">
+ <t:if t:test="sampleRowLog.fromAdmin">
Modification du
<p:else>Commentaire ajouté le</p:else>
</t:if>
- <strong><t:output t:format="dateFormat" t:value="sampleRowLog.topiaCreateDate"/></strong>
+ <strong><t:output t:format="dateFormat" t:value="sampleRowLog.createDate"/></strong>
par <strong>${sampleRowLog.author.fullName}</strong>
</p>
<t:if t:test="sampleRowLog.logText">
Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java
===================================================================
--- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -29,7 +29,6 @@
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.Company;
-import fr.ifremer.wao.entity.WaoUser;
import test.fr.ifremer.wao.ui.demo.DemoModule;
import fr.ifremer.wao.ui.services.AppModule;
import org.apache.tapestry5.ioc.annotations.Inject;
Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/demo/pages/LayoutDemo.java
===================================================================
--- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/demo/pages/LayoutDemo.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/demo/pages/LayoutDemo.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -25,7 +25,7 @@
package test.fr.ifremer.wao.ui.demo.pages;
-import fr.ifremer.wao.entity.WaoUser;
+import fr.ifremer.wao.bean.ConnectedUser;
import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.slf4j.Logger;
@@ -43,7 +43,7 @@
private Logger logger;
@SessionState
- private WaoUser user;
+ private ConnectedUser user;
void setupRender() {
if (logger.isDebugEnabled()) {
Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java
===================================================================
--- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java 2010-06-11 14:51:13 UTC (rev 507)
+++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java 2010-06-11 15:45:32 UTC (rev 508)
@@ -31,7 +31,6 @@
import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.News;
-import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.service.ServiceNews;
import fr.ifremer.wao.service.ServiceUser;
import java.util.ArrayList;
1
0
11 Jun '10
Author: fdesbois
Date: 2010-06-11 14:51:13 +0000 (Fri, 11 Jun 2010)
New Revision: 507
Log:
Evo #2325 : Add ConnectedUser bean to separate connection context from WaoUser entity
Added:
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java
Modified:
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/ContactInput.java
trunk/wao-business/src/main/java/fr/ifremer/wao/io/SamplingExport.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/BoatActivityCalendar.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/RequiresAuthenticationFilter.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthentication.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java
trunk/wao-ui/src/main/webapp/SampleRowHistoric.tml
trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java
trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/AdministrationTest.java
trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java
trunk/wao-ui/src/test/resources/log4j.properties
Added: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java (rev 0)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/ConnectedUserImpl.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -0,0 +1,41 @@
+package fr.ifremer.wao.bean;
+
+import fr.ifremer.wao.entity.Company;
+
+/**
+ * Created: 11 juin 2010
+ *
+ * @author fdesbois <fdesbois at codelutin.com>
+ * @version $Id$
+ */
+public class ConnectedUserImpl extends ConnectedUser {
+
+ @Override
+ public boolean isAdmin() {
+ return role.equals(UserRole.ADMIN);
+ }
+
+ @Override
+ public boolean isGuest() {
+ return role.equals(UserRole.GUEST);
+ }
+
+ @Override
+ public boolean isReadOnly() {
+ return user.isReadOnly(role);
+ }
+ @Override
+ public String getFullName() {
+ return user.getFullName();
+ }
+
+ @Override
+ public String getLogin() {
+ return user.getLogin();
+ }
+
+ @Override
+ public Company getCompany() {
+ return user.getCompany();
+ }
+}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowImpl.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/SampleRowImpl.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -338,7 +338,7 @@
TopiaContext transaction = null;
try {
WaoUser author = rowLog.getAuthor();
- if (log.isInfoEnabled()) {
+ if (log.isInfoEnabled()) {
log.info("W:[ saveSampleRowLog ] : " +
"authorName = " + author.getFullName() +
" _ authorRole = " + author.getUserRoles());
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -50,8 +50,6 @@
protected boolean passwordChanged;
- protected UserRole currentRole;
-
/**
* Return the fullName of the user, i.e. fisrtName + lastName.
* @return a String for the user fullName
@@ -149,12 +147,8 @@
// Just apply a soustraction to remove the role
int newCode = getRole() - role.toInt();
setRole(newCode);
-
- // Apply same change on readOnly if defined
- if (isReadOnly(current)) {
- int newReadOnly = getRoleReadOnly() - role.toInt();
- setRoleReadOnly(newReadOnly);
- }
+ // Update the readOnly to false (will check if operation is needed)
+ updateReadOnly(role, false);
return true;
}
}
@@ -162,36 +156,6 @@
}
@Override
- public UserRole getCurrentRole() {
- return currentRole;
- }
-
- @Override
- public boolean setCurrentRole(UserRole role) {
- if (hasUserRole(role)) {
- this.currentRole = role;
- return true;
- }
- return false;
- }
-
- @Override
- public boolean isAdmin() {
- return currentRole.equals(UserRole.ADMIN);
- }
-
- @Override
- public boolean isGuest() {
- return currentRole.equals(UserRole.GUEST);
- }
-
- @Override
- public boolean isCurrentReadOnly() {
- boolean result = isReadOnly(currentRole);
- return result;
- }
-
- @Override
public boolean isReadOnly(UserRole role) {
boolean result = role.isSelected(getRoleReadOnly());
return result;
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/ContactInput.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/ContactInput.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/ContactInput.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -33,7 +33,7 @@
protected int rowNumber;
- protected WaoUser creator;
+ protected ConnectedUser creator;
protected Company company;
@@ -48,7 +48,7 @@
* @param creator of the contact
* @param rowNumber in the input file
*/
- public void initialize(TopiaContext transaction, WaoUser creator,
+ public void initialize(TopiaContext transaction, ConnectedUser creator,
int rowNumber) {
this.transaction = transaction;
this.rowNumber = rowNumber;
@@ -60,7 +60,7 @@
*
* @return the WaoUser creator of the contact.
*/
- public WaoUser getCreator() {
+ public ConnectedUser getCreator() {
return creator;
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/SamplingExport.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/io/SamplingExport.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/SamplingExport.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -26,6 +26,7 @@
package fr.ifremer.wao.io;
import com.csvreader.CsvWriter;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.entity.SampleMonth;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.WaoUser;
@@ -49,7 +50,7 @@
private static final Logger log = LoggerFactory.getLogger(SamplingExport.class);
- protected WaoUser user;
+ protected ConnectedUser user;
protected List<String> monthHeaders;
@@ -65,7 +66,7 @@
* @param monthHeaders String values of months to put in header row
* @throws IOException
*/
- public SamplingExport(CsvWriter writer, WaoUser user, List<String> monthHeaders) throws IOException {
+ public SamplingExport(CsvWriter writer, ConnectedUser user, List<String> monthHeaders) throws IOException {
super(writer, SAMPLING.getTotalHeaders() + monthHeaders.size());
this.monthHeaders = monthHeaders;
this.user = user;
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceBoatImpl.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -29,6 +29,7 @@
import com.csvreader.CsvWriter;
import fr.ifremer.wao.*;
import fr.ifremer.wao.WaoBusinessException.Type;
+import fr.ifremer.wao.bean.ConnectedUser;
import org.nuiton.topia.TopiaException;
import org.nuiton.topia.framework.TopiaQuery;
import org.nuiton.topia.framework.TopiaQuery.Op;
@@ -541,7 +542,7 @@
@Override
public ActivityCalendar executeGetLastActivityCalendar(
TopiaContext transaction, List<Object> errorArgs,
- WaoUser user, Boat boat) throws TopiaException, IOException {
+ ConnectedUser user, Boat boat) throws TopiaException, IOException {
errorArgs.add(boat.getName());
errorArgs.add(boat.getImmatriculation());
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceContactImpl.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -38,6 +38,7 @@
import java.util.Map;
import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;
+import fr.ifremer.wao.bean.ConnectedUser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.nuiton.topia.TopiaContext;
@@ -130,19 +131,6 @@
ContactDAO dao = WaoDAOHelper.getContactDAO(transaction);
-// TopiaQuery query = dao.createQuery("C").addDistinct();
-//
-// query = filter.prepareQueryForContact(query);
-//
-// query.addOrderDesc("C." + TopiaEntity.TOPIA_CREATE_DATE).
-// addLoad(Contact.OBSERVER + "." + WaoUser.COMPANY);
-//
-// if (log.isDebugEnabled()) {
-// log.debug("Query : " + query);
-// }
-//
-// query.addLoad(Contact.SAMPLE_ROW + "." + SampleRow.SAMPLE_MONTH);
-
// Use QueryBuilder to apply filter
TopiaQuery query = new WaoQueryBuilder(Contact.class).
applyContactFilter(filter).
@@ -166,10 +154,6 @@
ContactFilter filter) throws TopiaException {
ContactDAO dao = WaoDAOHelper.getContactDAO(transaction);
-// TopiaQuery query = dao.createQuery("C");
-// query = filter.prepareQueryForContact(query);
-//
-// return query.executeCount();
TopiaQuery query = new WaoQueryBuilder(Contact.class).
applyContactFilter(filter).
@@ -445,7 +429,7 @@
@Override
public ImportResults executeImportContactCsv(TopiaContext transaction,
- WaoUser user, InputStream input)
+ ConnectedUser user, InputStream input)
throws TopiaException, IOException,
WaoBusinessException, ParseException {
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceSamplingImpl.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -28,6 +28,7 @@
import com.csvreader.CsvReader;
import com.csvreader.CsvWriter;
import fr.ifremer.wao.*;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.io.ImportHelper;
import fr.ifremer.wao.WaoBusinessException.Type;
import fr.ifremer.wao.bean.FacadeRow;
@@ -450,7 +451,7 @@
@Override
public SampleRow executeGetSampleRowByCode(TopiaContext transaction,
- List<Object> errorArgs, WaoUser user, String sampleRowCode)
+ List<Object> errorArgs, ConnectedUser user, String sampleRowCode)
throws TopiaException, WaoBusinessException {
errorArgs.add(sampleRowCode);
@@ -460,7 +461,7 @@
TopiaQuery query = dao.createQuery().
addEquals(SampleRow.CODE, sampleRowCode);
- if (!user.isAdmin()) {
+ if (!user.isAdmin() && !user.isGuest()) {
query.addEquals(SampleRow.COMPANY, user.getCompany());
}
@@ -581,7 +582,7 @@
@Override
public InputStream executeExportSamplingPlanCsv(TopiaContext transaction,
- List<Object> errorArgs, WaoUser user, SamplingFilter filter)
+ List<Object> errorArgs, ConnectedUser user, SamplingFilter filter)
throws Exception {
CsvWriter writer = null;
try {
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -31,6 +31,8 @@
import fr.ifremer.wao.WaoDAOHelper;
import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.WaoProperty;
+import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.ConnectedUserImpl;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.CompanyDAO;
@@ -86,7 +88,7 @@
}
@Override
- public WaoUser executeConnect(TopiaContext transaction,
+ public ConnectedUser executeConnect(TopiaContext transaction,
String login, String password, UserRole role)
throws TopiaException, WaoBusinessException {
@@ -97,13 +99,17 @@
WaoUser.LOGIN, login,
WaoUser.PASSWORD, passwordEncoded);
+ ConnectedUser result = null;
+
if (user != null && user.getActive()) {
// load company entity
user.getCompany();
if (user.hasUserRole(role)) {
- // Associate the connection role to the user
- user.setCurrentRole(role);
+ // Instantiate the connected user
+ result = new ConnectedUserImpl();
+ result.setUser(user);
+ result.setRole(role);
} else {
throw new WaoBusinessException(Type.ILLEGAL_CONNECTION,
this.getClass(),
@@ -121,7 +127,7 @@
"Mot de passe incorrect, veuillez réessayer.");
}
- return user;
+ return result;
}
@Override
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -61,17 +61,17 @@
Assert.assertEquals(10, user.getRole());
}
- @Test
- public void testCurrentRole() {
-
- WaoUser user = new WaoUserImpl();
- user.addUserRole(UserRole.OBSERVER, true);
-
- boolean result = user.setCurrentRole(UserRole.OBSERVER);
- Assert.assertTrue(result);
- Assert.assertTrue(user.isCurrentReadOnly());
-
- result = user.setCurrentRole(UserRole.ADMIN);
- Assert.assertFalse(result);
- }
+// @Test
+// public void testCurrentRole() {
+//
+// WaoUser user = new WaoUserImpl();
+// user.addUserRole(UserRole.OBSERVER, true);
+//
+// boolean result = user.setCurrentRole(UserRole.OBSERVER);
+// Assert.assertTrue(result);
+// Assert.assertTrue(user.isCurrentReadOnly());
+//
+// result = user.setCurrentRole(UserRole.ADMIN);
+// Assert.assertFalse(result);
+// }
}
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceBoatImplTest.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -32,6 +32,8 @@
import fr.ifremer.wao.TestManager;
import fr.ifremer.wao.bean.BoatFilter;
import fr.ifremer.wao.bean.CompanyBoatInfos;
+import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.ConnectedUserImpl;
import fr.ifremer.wao.bean.ContactState;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.*;
@@ -375,12 +377,15 @@
// Evo #2063 : the defaut instanciation of WaoUser doesn't put the
// user automatically as an non admin
user.addUserRole(UserRole.OBSERVER, false);
- user.setCurrentRole(UserRole.OBSERVER);
Company company = new CompanyImpl();
company.setName("TARTANPION");
user.setCompany(company);
+
+ ConnectedUser connectedUser = new ConnectedUserImpl();
+ connectedUser.setUser(user);
+ connectedUser.setRole(UserRole.OBSERVER);
- ActivityCalendar result = service.getLastActivityCalendar(user, boat);
+ ActivityCalendar result = service.getLastActivityCalendar(connectedUser, boat);
Assert.assertNotNull(result);
Assert.assertEquals(2009, result.getYear());
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/service/ServiceContactInternalTest.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -5,6 +5,7 @@
import fr.ifremer.wao.TestManager;
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoDAOHelper;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.ContactState;
import fr.ifremer.wao.bean.ImportResults;
import fr.ifremer.wao.bean.UserRole;
@@ -101,7 +102,7 @@
@Mock
protected Contact contactReference;
@Mock
- protected WaoUser creator;
+ protected ConnectedUser creator;
@Mock
protected CsvReader reader;
@@ -398,7 +399,7 @@
SampleMonthDAO dao = WaoDAOHelper.getSampleMonthDAO(transaction);
TopiaQuery query = dao.createQuery();
- query.add(SampleMonth.PERIOD_DATE, DateUtils.createDate(1, 4, 2010));
+ query.addEquals(SampleMonth.PERIOD_DATE, DateUtils.createDate(1, 4, 2010));
SampleMonth month = dao.findByQuery(query);
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/base/AbstractFilteredPage.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -26,6 +26,7 @@
package fr.ifremer.wao.ui.base;
import fr.ifremer.wao.WaoException;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.SamplingFilter;
import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.SampleRow;
@@ -34,9 +35,6 @@
import fr.ifremer.wao.service.ServiceReferential;
import fr.ifremer.wao.service.ServiceSampling;
import fr.ifremer.wao.service.ServiceUser;
-import java.util.ArrayList;
-import java.util.List;
-
import fr.ifremer.wao.ui.data.GenericSelectModel;
import org.apache.tapestry5.OptionModel;
import org.apache.tapestry5.SelectModel;
@@ -49,6 +47,9 @@
import org.apache.tapestry5.ioc.services.PropertyAccess;
import org.slf4j.Logger;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* AbstractFilteredPage
*
@@ -60,7 +61,7 @@
* Known implementations are {@link fr.ifremer.wao.ui.pages.Synthesis }
* and {@link fr.ifremer.wao.ui.pages.Contacts }
*
- * You must override the three abstract methods and call {@link #initFilter() }
+ * You must override the three abstract methods and call {@link #initSelectFilters(boolean, boolean, boolean)} () }
* in the setupRender of the page.
* <pre>
* - BoatName uses an Autocomplete mixins :
@@ -88,7 +89,7 @@
private Logger log;
@SessionState
- private WaoUser user;
+ private ConnectedUser user;
@Inject
private PropertyAccess propertyAccess;
@@ -286,7 +287,7 @@
/**
* Get select model for companies. Depends on
- * {@link #getAvailableDataForFiltersOnly() } to return only activated
+ * {@link #isAvailableDataForFiltersOnly()} () } to return only activated
* companies. This select model is only used by admin users.
*
* @return the GenericSelectModel<Company> for companies
@@ -303,7 +304,7 @@
/**
* Get the select model for observers. Depends on
- * {@link #getAvailableDataForFiltersOnly() } to return only activated
+ * {@link #isAvailableDataForFiltersOnly() } to return only activated
* companies.
*
* @return the GenericSelectModel<WaoUser> for observers
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -26,21 +26,19 @@
package fr.ifremer.wao.ui.components;
import fr.ifremer.wao.WaoProperty;
-import fr.ifremer.wao.bean.UserRole;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.ui.pages.Index;
import fr.ifremer.wao.ui.services.ServiceAuthentication;
import fr.ifremer.wao.ui.services.WaoManager;
import org.apache.tapestry5.BindingConstants;
import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.InjectContainer;
import org.apache.tapestry5.annotations.Log;
import org.apache.tapestry5.annotations.Parameter;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.Request;
-import org.nuiton.util.StringUtil;
import org.slf4j.Logger;
/**
@@ -112,7 +110,7 @@
* contributeApplicationStateManager(MappedConfiguration)
*/
public boolean isCurrentUserExists() {
- return serviceAuthentication.isUserConnected();
+ return serviceAuthentication.existConnectedUser();
}
public String getContextPath() {
@@ -123,8 +121,8 @@
return WaoProperty.APP_VERSION.getValue();
}
- public WaoUser getCurrentUser() {
- return serviceAuthentication.getUserConnected();
+ public ConnectedUser getCurrentUser() {
+ return serviceAuthentication.getConnectedUser();
}
public FeedBack getFeedBack() {
@@ -156,8 +154,8 @@
}
public String getAccessText() {
- String text = getCurrentUser().getCurrentRole().getLabel();
- if (getCurrentUser().isCurrentReadOnly()) {
+ String text = getCurrentUser().getRole().getLabel();
+ if (getCurrentUser().isReadOnly()) {
text += " lecture seule";
}
return text;
@@ -198,7 +196,7 @@
@Log
Object onActionFromExit() {
- serviceAuthentication.setUserConnected(null);
+ serviceAuthentication.setConnectedUser(null);
request.getSession(false).invalidate();
return Index.class;
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/BoatActivityCalendar.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/BoatActivityCalendar.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/BoatActivityCalendar.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -27,6 +27,7 @@
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoException;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.ActivityCalendar;
import fr.ifremer.wao.entity.ActivityMonth;
@@ -70,7 +71,7 @@
private ServiceBoat serviceBoat;
@SessionState
- private WaoUser user;
+ private ConnectedUser user;
private ActivityCalendar activityCalendar;
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -98,7 +98,7 @@
@SessionState
@Property
- private WaoUser user;
+ private ConnectedUser user;
@Inject
private ServiceReferential serviceReferential;
@@ -197,7 +197,7 @@
protected static final String GZIP_MIMETYPE = "application/x-gzip";
public boolean canImportReferentials() {
- return user.isAdmin() && !user.isCurrentReadOnly();
+ return user.isAdmin() && !user.isReadOnly();
}
@Log
@@ -521,7 +521,7 @@
}
public boolean canCreateNewContactFromList() throws WaoException {
- if (!user.isAdmin() && !user.isCurrentReadOnly() && isSampleRowExists()) {
+ if (!user.isAdmin() && !user.isReadOnly() && isSampleRowExists()) {
return boat.canCreateContact(user.getCompany());
}
return false;
@@ -723,7 +723,7 @@
}
public boolean canCreateNewContactFromElligibleBoat() throws WaoException {
- if (!user.isAdmin() && !user.isCurrentReadOnly() &&
+ if (!user.isAdmin() && !user.isReadOnly() &&
!isElligibleBoatCompanyActiveFalse()) {
Boat currentBoat = getBoatInfos().getBoat();
return currentBoat.canCreateContact(user.getCompany());
@@ -744,7 +744,7 @@
* @return true if BoatInfos can be edited
*/
public boolean canEditBoatInfos() {
- return !user.isCurrentReadOnly();
+ return !user.isReadOnly();
}
void onSuccess() throws WaoException {
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -4,10 +4,12 @@
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoBusinessException.Type;
import fr.ifremer.wao.WaoException;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.service.ServiceUser;
import fr.ifremer.wao.ui.components.FeedBack;
+import fr.ifremer.wao.ui.services.ServiceAuthentication;
import org.apache.tapestry5.EventContext;
import org.apache.tapestry5.Link;
import org.apache.tapestry5.OptionModel;
@@ -52,14 +54,11 @@
private ServiceUser serviceUser;
@Inject
+ private ServiceAuthentication serviceAuthentication;
+
+ @Inject
private PageRenderLinkSource pageRender;
- /**
- * Objet de session représentant l'utilisateur identifié
- */
- @SessionState
- private WaoUser currentUser;
-
@InjectComponent
private FeedBack connexionFeedback;
@@ -157,10 +156,12 @@
logger.debug("Role : " + userRole);
}
if (login != null && password != null && userRole != null) {
- currentUser = serviceUser.connect(login, password, userRole);
+ ConnectedUser user = serviceUser.connect(login, password, userRole);
+ // Authenticate the user in appropriate service
+ serviceAuthentication.setConnectedUser(user);
if (logger.isDebugEnabled()) {
logger.debug("User connected : " +
- currentUser.getFullName());
+ user.getFullName());
}
}
} catch (WaoBusinessException eee) {
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -27,6 +27,7 @@
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoException;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.ContactFilter;
import fr.ifremer.wao.bean.ContactFilterImpl;
import fr.ifremer.wao.bean.ContactState;
@@ -93,7 +94,7 @@
@SessionState
@Property
- private WaoUser user;
+ private ConnectedUser user;
@Inject
private ServiceContact serviceContact;
@@ -205,8 +206,8 @@
*/
public boolean canImportExport() {
return (user.isAdmin() ||
- user.getCurrentRole().equals(UserRole.COORDINATOR)) &&
- !user.isCurrentReadOnly();
+ user.getRole().equals(UserRole.COORDINATOR)) &&
+ !user.isReadOnly();
}
@Log
@@ -400,7 +401,7 @@
public boolean hasActions() {
return !user.isAdmin() && contact.getValidationCompany() == null
- && !user.isCurrentReadOnly();
+ && !user.isReadOnly();
}
/**
@@ -411,8 +412,8 @@
*/
public boolean hasValidationActions() {
return (user.isAdmin() ||
- user.getCurrentRole().equals(UserRole.COORDINATOR)) &&
- !user.isCurrentReadOnly();
+ user.getRole().equals(UserRole.COORDINATOR)) &&
+ !user.isReadOnly();
}
public boolean canValidate() {
@@ -420,7 +421,7 @@
if (isEditionMode()) {
return false;
}
- switch (user.getCurrentRole()) {
+ switch (user.getRole()) {
case ADMIN:
return contact.getValidationProgram() == null &&
BooleanUtils.isTrue(contact.getValidationCompany());
@@ -439,7 +440,7 @@
}
public boolean canUnvalidate() {
- switch (user.getCurrentRole()) {
+ switch (user.getRole()) {
case ADMIN:
return contact.getValidationProgram() != null;
// Evo #2063 : only coordinator can unvalidate
@@ -696,7 +697,7 @@
}
public void createNewContact(Boat boat, SampleRow sampleRow) throws WaoException {
- contact = serviceContact.getNewContact(user, sampleRow, boat);
+ contact = serviceContact.getNewContact(user.getUser(), sampleRow, boat);
// Check boat not null and validation for create the new contact
if (boat != null && boat.canCreateContact(user.getCompany())) {
serviceContact.saveContact(contact, Boolean.FALSE);
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -26,15 +26,11 @@
package fr.ifremer.wao.ui.pages;
import fr.ifremer.wao.WaoException;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.entity.News;
import fr.ifremer.wao.entity.NewsImpl;
-import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.service.ServiceNews;
import fr.ifremer.wao.ui.data.RequiresAuthentication;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.List;
import org.apache.tapestry5.Asset2;
import org.apache.tapestry5.PersistenceConstants;
import org.apache.tapestry5.annotations.IncludeStylesheet;
@@ -46,6 +42,11 @@
import org.apache.tapestry5.ioc.annotations.Inject;
import org.slf4j.Logger;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Index
*
@@ -65,7 +66,7 @@
@SessionState
@Property
- private WaoUser user;
+ private ConnectedUser user;
@Persist
private List<News> newsList;
@@ -113,7 +114,7 @@
}
public boolean canEditNews() {
- return user.isAdmin() && !user.isCurrentReadOnly();
+ return user.isAdmin() && !user.isReadOnly();
}
public boolean isEditionMode() {
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -27,6 +27,7 @@
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoException;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.SampleRow;
import fr.ifremer.wao.entity.SampleRowLog;
@@ -62,7 +63,7 @@
private Logger log;
@SessionState
- private WaoUser user;
+ private ConnectedUser user;
@InjectComponent
private Layout layout;
@@ -143,16 +144,22 @@
return styleClass;
}
+ public boolean isAdminAuthor() {
+ // Note : maybe problematic way if admin role is removed from user
+ // Maybe need add admin field in sampleRowLog
+ return sampleRowLog.getAuthor().hasUserRole(UserRole.ADMIN);
+ }
+
public SampleRowLog getNewLog() throws WaoBusinessException {
if (newLog == null) {
- newLog = getSampleRow().getNewSampleRowLog(user);
+ newLog = getSampleRow().getNewSampleRowLog(user.getUser());
}
return newLog;
}
public boolean canAddComment() {
- return user.getCurrentRole().equals(UserRole.COORDINATOR) &&
- !user.isCurrentReadOnly();
+ return user.getRole().equals(UserRole.COORDINATOR) &&
+ !user.isReadOnly();
}
public void onSuccessFromAddComment() throws WaoException {
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -86,7 +86,7 @@
@SessionState
@Property
- private WaoUser user;
+ private ConnectedUser user;
private long nbTidesExpectedTime;
@@ -121,7 +121,7 @@
private UploadedFile samplingPlanCsvFile;
public boolean canImportSamplingPlan() {
- return user.isAdmin() && !user.isCurrentReadOnly();
+ return user.isAdmin() && !user.isReadOnly();
}
@Log
@@ -466,7 +466,7 @@
* @return true if the sampleRow can be edited.
*/
public boolean canEditSampleRow() {
- return user.isAdmin() && !user.isCurrentReadOnly();
+ return user.isAdmin() && !user.isReadOnly();
}
/**
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Synthesis.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -80,7 +80,7 @@
@SessionState
@Property
- private WaoUser user;
+ private ConnectedUser user;
@Persist
private SynthesisId activeSynthesis;
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -26,10 +26,21 @@
package fr.ifremer.wao.ui.services;
import fr.ifremer.wao.WaoContextImpl;
-import fr.ifremer.wao.entity.WaoUser;
-import fr.ifremer.wao.service.*;
-
-import java.io.IOException;
+import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.service.ServiceBoat;
+import fr.ifremer.wao.service.ServiceBoatImpl;
+import fr.ifremer.wao.service.ServiceContact;
+import fr.ifremer.wao.service.ServiceContactImpl;
+import fr.ifremer.wao.service.ServiceNews;
+import fr.ifremer.wao.service.ServiceNewsImpl;
+import fr.ifremer.wao.service.ServiceReferential;
+import fr.ifremer.wao.service.ServiceReferentialImpl;
+import fr.ifremer.wao.service.ServiceSampling;
+import fr.ifremer.wao.service.ServiceSamplingImpl;
+import fr.ifremer.wao.service.ServiceSynthesis;
+import fr.ifremer.wao.service.ServiceSynthesisImpl;
+import fr.ifremer.wao.service.ServiceUser;
+import fr.ifremer.wao.service.ServiceUserImpl;
import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.ioc.MappedConfiguration;
import org.apache.tapestry5.ioc.OrderedConfiguration;
@@ -47,6 +58,8 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.IOException;
+
/**
* This module is automatically included as part of the Tapestry IoC Registry,
* it's a good place to configure and extend Tapestry, or to place your own
@@ -227,15 +240,15 @@
public void contributeApplicationStateManager(MappedConfiguration<Class<?>,
ApplicationStateContribution> configuration,
final ServiceAuthentication serviceAuthentication) {
- ApplicationStateCreator<WaoUser> creator =
- new ApplicationStateCreator<WaoUser>() {
+ ApplicationStateCreator<ConnectedUser> creator =
+ new ApplicationStateCreator<ConnectedUser>() {
@Override
- public WaoUser create() {
+ public ConnectedUser create() {
return serviceAuthentication.getNewUserInstance();
}
};
- configuration.add(WaoUser.class,
+ configuration.add(ConnectedUser.class,
new ApplicationStateContribution("session", creator));
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/RequiresAuthenticationFilter.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/RequiresAuthenticationFilter.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/RequiresAuthenticationFilter.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -1,14 +1,9 @@
package fr.ifremer.wao.ui.services;
-import fr.ifremer.wao.entity.WaoUser;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.ui.data.RequiresAuthentication;
import fr.ifremer.wao.ui.pages.Connexion;
import fr.ifremer.wao.ui.pages.Unavailable;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
import org.apache.tapestry5.EventContext;
import org.apache.tapestry5.Link;
import org.apache.tapestry5.runtime.Component;
@@ -22,6 +17,11 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
/**
* RequiresLoginFilter
*
@@ -123,7 +123,7 @@
logger.trace("RequiresLogin annotation : " +
page.getClass().isAnnotationPresent(RequiresAuthentication.class));
logger.trace("User in session : " +
- serviceAuthentication.isUserConnected());
+ serviceAuthentication.existConnectedUser());
logger.trace("Activation context : " + Arrays.toString(context));
}
@@ -133,11 +133,11 @@
Class<?> redirectPage = Connexion.class;
- if (serviceAuthentication.isUserConnected()) {
- WaoUser user = serviceAuthentication.getUserConnected();
+ if (serviceAuthentication.existConnectedUser()) {
+ ConnectedUser user = serviceAuthentication.getConnectedUser();
if (logger.isTraceEnabled()) {
logger.trace("User connected : " + user);
- logger.trace("User role : " + user.getCurrentRole());
+ logger.trace("User role : " + user.getRole());
logger.trace("User allowed : " +
serviceAuthentication.isAllowed(page.getClass()));
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthentication.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthentication.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthentication.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -1,6 +1,7 @@
package fr.ifremer.wao.ui.services;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.entity.WaoUser;
/**
@@ -13,14 +14,14 @@
*/
public interface ServiceAuthentication {
- boolean isUserConnected();
+ boolean existConnectedUser();
- WaoUser getUserConnected();
+ ConnectedUser getConnectedUser();
- void setUserConnected(WaoUser user);
+ void setConnectedUser(ConnectedUser user);
boolean isAllowed(Class<?> page);
- WaoUser getNewUserInstance();
+ ConnectedUser getNewUserInstance();
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -1,9 +1,9 @@
package fr.ifremer.wao.ui.services;
+import fr.ifremer.wao.bean.ConnectedUser;
+import fr.ifremer.wao.bean.ConnectedUserImpl;
import fr.ifremer.wao.bean.UserRole;
-import fr.ifremer.wao.entity.WaoUser;
-import fr.ifremer.wao.entity.WaoUserImpl;
import fr.ifremer.wao.ui.data.RequiresAuthentication;
import org.apache.tapestry5.services.ApplicationStateManager;
@@ -24,38 +24,38 @@
}
@Override
- public boolean isUserConnected() {
- return stateManager.exists(WaoUser.class);
+ public boolean existConnectedUser() {
+ return stateManager.exists(ConnectedUser.class);
}
@Override
- public WaoUser getUserConnected() {
- return stateManager.getIfExists(WaoUser.class);
+ public ConnectedUser getConnectedUser() {
+ return stateManager.getIfExists(ConnectedUser.class);
}
@Override
- public void setUserConnected(WaoUser user) {
- stateManager.set(WaoUser.class, user);
+ public void setConnectedUser(ConnectedUser user) {
+ stateManager.set(ConnectedUser.class, user);
}
@Override
public boolean isAllowed(Class<?> page) {
if (page.isAnnotationPresent(RequiresAuthentication.class) &&
- isUserConnected()) {
+ existConnectedUser()) {
RequiresAuthentication check =
page.getAnnotation(RequiresAuthentication.class);
- WaoUser user = getUserConnected();
+ ConnectedUser user = getConnectedUser();
// Check if user readOnly is allowed
- if (user.isCurrentReadOnly() && !check.readOnlyAllowed()) {
+ if (user.isReadOnly() && !check.readOnlyAllowed()) {
return false;
}
// Check if user role is allowed
for (UserRole role : check.value()) {
- if (role.equals(user.getCurrentRole())) {
+ if (role.equals(user.getRole())) {
return true;
}
}
@@ -66,8 +66,8 @@
}
@Override
- public WaoUser getNewUserInstance() {
- return new WaoUserImpl();
+ public ConnectedUser getNewUserInstance() {
+ return new ConnectedUserImpl();
}
}
Modified: trunk/wao-ui/src/main/webapp/SampleRowHistoric.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/SampleRowHistoric.tml 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/main/webapp/SampleRowHistoric.tml 2010-06-11 14:51:13 UTC (rev 507)
@@ -51,7 +51,7 @@
</t:if>
<div class="so-samplerow-log" t:type="loop" t:source="sampleRow.sampleRowLog" t:value="sampleRowLog">
<p class="${logStyle}">
- <t:if t:test="sampleRowLog.author.admin">
+ <t:if t:test="adminAuthor">
Modification du
<p:else>Commentaire ajouté le</p:else>
</t:if>
Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java
===================================================================
--- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/AbstractApplicationTest.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -26,6 +26,7 @@
import com.formos.tapestry.testify.core.TapestryTester;
import com.formos.tapestry.testify.junit4.TapestryTest;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.WaoUser;
@@ -64,7 +65,7 @@
}
@Mock
- protected WaoUser user;
+ protected ConnectedUser user;
@Inject
private ApplicationStateManager stateManager;
@@ -75,10 +76,10 @@
when(user.getFullName()).thenReturn("Jean Michmuche");
when(user.isAdmin()).thenReturn(false);
- when(user.getCurrentRole()).thenReturn(UserRole.OBSERVER);
+ when(user.getRole()).thenReturn(UserRole.OBSERVER);
when(user.getCompany()).thenReturn(company);
if (contributeSession) {
- stateManager.set(WaoUser.class, user);
+ stateManager.set(ConnectedUser.class, user);
}
}
@@ -88,7 +89,7 @@
when(user.getFullName()).thenReturn("Super Admin");
when(user.isAdmin()).thenReturn(true);
- when(user.getCurrentRole()).thenReturn(UserRole.ADMIN);
+ when(user.getRole()).thenReturn(UserRole.ADMIN);
when(user.getCompany()).thenReturn(company);
}
}
Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/AdministrationTest.java
===================================================================
--- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/AdministrationTest.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/AdministrationTest.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -28,15 +28,13 @@
prepareObserverUser(true);
- // Administration page is broken
+ Document page = tester.renderPage("administration");
+ // User not allowed will be redirect on Unavailable page
+ Element main = page.getElementById("so-unavailable");
+ Assert.assertNotNull(main);
-// Document page = tester.renderPage("administration");
-// // User not allowed will be redirect on Unavailable page
-// Element main = page.getElementById("so-unavailable");
-// Assert.assertNotNull(main);
-//
-// if (logger.isDebugEnabled()) {
-// logger.debug("Page content : " + main);
-// }
+ if (logger.isDebugEnabled()) {
+ logger.debug("Page content : " + main);
+ }
}
}
Modified: trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java
===================================================================
--- trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/test/java/test/fr/ifremer/wao/ui/pages/ConnectionTest.java 2010-06-11 14:51:13 UTC (rev 507)
@@ -28,12 +28,15 @@
import com.formos.tapestry.testify.core.ForComponents;
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoException;
+import fr.ifremer.wao.bean.ConnectedUser;
import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.News;
import fr.ifremer.wao.entity.WaoUser;
import fr.ifremer.wao.service.ServiceNews;
import fr.ifremer.wao.service.ServiceUser;
import java.util.ArrayList;
+
+import fr.ifremer.wao.ui.services.ServiceAuthentication;
import test.fr.ifremer.wao.ui.AbstractApplicationTest;
import java.util.HashMap;
import java.util.Map;
@@ -67,16 +70,21 @@
@Inject
private ApplicationStateManager stateManager;
+ @Inject
+ private ServiceAuthentication serviceAuthentication;
+
@Test
public void testObserverSession()
throws WaoException, WaoBusinessException {
logger.info("## testObserverSession");
prepareObserverUser(true);
- WaoUser sso = stateManager.getIfExists(WaoUser.class);
+ ConnectedUser sso = stateManager.getIfExists(ConnectedUser.class);
Assert.assertNotNull(sso);
Assert.assertFalse(sso.isAdmin());
+ Assert.assertTrue(serviceAuthentication.existConnectedUser());
+
Document page = tester.renderPage("index");
Element main = page.getElementById("so-news");
if (logger.isInfoEnabled()) {
Modified: trunk/wao-ui/src/test/resources/log4j.properties
===================================================================
--- trunk/wao-ui/src/test/resources/log4j.properties 2010-06-11 12:38:37 UTC (rev 506)
+++ trunk/wao-ui/src/test/resources/log4j.properties 2010-06-11 14:51:13 UTC (rev 507)
@@ -8,4 +8,4 @@
log4j.appender.console.Threshold=DEBUG
log4j.logger.test.fr.ifremer.wao=DEBUG
-log4j.logger.fr.ifremer.wao=DEBUG
+log4j.logger.fr.ifremer.wao=TRACE
1
0
[Suiviobsmer-commits] r506 - in trunk/wao-ui/src/main: java/fr/ifremer/wao/ui/pages webapp
by fdesbois@users.labs.libre-entreprise.org 11 Jun '10
by fdesbois@users.labs.libre-entreprise.org 11 Jun '10
11 Jun '10
Author: fdesbois
Date: 2010-06-11 12:38:37 +0000 (Fri, 11 Jun 2010)
New Revision: 506
Log:
Use change event instead of blur (doesn't change behavior)
Modified:
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java
trunk/wao-ui/src/main/webapp/Connexion.tml
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-06-10 17:38:10 UTC (rev 505)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Connexion.java 2010-06-11 12:38:37 UTC (rev 506)
@@ -12,6 +12,7 @@
import org.apache.tapestry5.Link;
import org.apache.tapestry5.OptionModel;
import org.apache.tapestry5.PersistenceConstants;
+import org.apache.tapestry5.RenderSupport;
import org.apache.tapestry5.SelectModel;
import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
import org.apache.tapestry5.annotations.InjectComponent;
@@ -21,6 +22,7 @@
import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.internal.OptionModelImpl;
import org.apache.tapestry5.internal.SelectModelImpl;
+import org.apache.tapestry5.internal.services.PartialMarkupDocumentLinker;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.json.JSONArray;
import org.apache.tapestry5.json.JSONObject;
@@ -84,6 +86,9 @@
@Property
private SelectModel emptySelectModel = new SelectModelImpl(new OptionModelImpl(null));
+ @Inject
+ private RenderSupport renderSupport;
+
void onActivate(Object... activationContext) {
if (logger.isDebugEnabled()) {
logger.debug("Activiation context : " +
@@ -113,28 +118,16 @@
return null;
}
-// /**
-// * Empty selectModel to initialize userRole select. By default, Tapestry
-// * generate the selectModel with the enum values.
-// *
-// * @return an empty SelectModel
-// */
-// SelectModel getEmptySelectModel() {
-// if (emptySelectModel == null) {
-// emptySelectModel = new SelectModelImpl(new OptionModelImpl(null));
-// }
-// return emptySelectModel;
-// }
-
/**
- * ON_BLUR :: Callback method for blur event on Login textfield component.
+ * ON_CHANGE :: Callback method for blur event on Login textfield component.
* Login will be checked to refresh the userRole select using {@link
* JSONObject} that contains data for select options to display in javascript.
*
* @param login User login
* @return a JSONObject with userRole select data to refresh in Ajax
*/
- JSONObject onBlurFromLogin(String login) {
+ @Log
+ JSONObject onChangeFromLogin(String login) {
JSONObject json = new JSONObject();
if (serviceUser.existLogin(login)) {
Modified: trunk/wao-ui/src/main/webapp/Connexion.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Connexion.tml 2010-06-10 17:38:10 UTC (rev 505)
+++ trunk/wao-ui/src/main/webapp/Connexion.tml 2010-06-11 12:38:37 UTC (rev 506)
@@ -57,7 +57,7 @@
<p><t:label for="login" /> : </p>
<p>
<input t:type="textfield" t:id="login" t:value="login"
- t:mixins="ck/onEvent" t:event="blur" t:onCompleteCallback="refreshUserRoles"/>
+ t:mixins="ck/onEvent" t:event="change" t:onCompleteCallback="refreshUserRoles"/>
<img class="hidden" id="loginValid" src="${asset:context:img/valid-16px.png}" alt="Login valide" title="Login valide" />
<img class="hidden" id="loginInvalid" src="${asset:context:img/invalid-16px.png}" alt="Login invalide" title="Login invalide" />
</p>
1
0
10 Jun '10
Author: fdesbois
Date: 2010-06-10 17:38:10 +0000 (Thu, 10 Jun 2010)
New Revision: 505
Log:
Evo #2325 :
- Add roles managment in Administration form
- Use nuiton-web
- Add missing query for migration (Ok for production database)
Added:
trunk/wao-ui/src/main/resources/org/apache/tapestry5/corelib/
trunk/wao-ui/src/main/resources/org/apache/tapestry5/corelib/components/
trunk/wao-ui/src/main/resources/org/apache/tapestry5/corelib/components/Errors_fr.properties
trunk/wao-ui/src/main/webapp/img/add-16px.png
Modified:
trunk/pom.xml
trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
trunk/wao-business/src/main/java/fr/ifremer/wao/bean/UserRole.java
trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java
trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
trunk/wao-business/src/main/xmi/wao.zargo
trunk/wao-business/src/test/java/fr/ifremer/wao/bean/UserRoleTest.java
trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java
trunk/wao-ui/pom.xml
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java
trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml
trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties
trunk/wao-ui/src/main/webapp/Administration.tml
trunk/wao-ui/src/main/webapp/css/administration.css
trunk/wao-ui/src/main/webapp/css/main.css
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/pom.xml 2010-06-10 17:38:10 UTC (rev 505)
@@ -57,6 +57,11 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.nuiton.web</groupId>
+ <artifactId>nuiton-tapestry-extra</artifactId>
+ <version>${nuitonweb.version}</version>
+ </dependency>
<!-- ToPIA -->
<dependency>
<groupId>org.nuiton.topia</groupId>
@@ -235,6 +240,7 @@
<!-- libraries version -->
<i18n.version>1.2.2</i18n.version>
<nuitonutils.version>1.2.2</nuitonutils.version>
+ <nuitonweb.version>0.1-SNAPSHOT</nuitonweb.version>
<!--<topia.version>2.3.3</topia.version>-->
<!--<eugene.version>2.0.1</eugene.version>-->
<topia.version>2.4-SNAPSHOT</topia.version>
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/PostgresMigrationCallback.java 2010-06-10 17:38:10 UTC (rev 505)
@@ -117,6 +117,7 @@
// Update ReadOnly with role value if set to TRUE
queries.add("ALTER TABLE WaoUser ADD roleReadOnly INTEGER;");
queries.add("UPDATE WaoUser SET roleReadOnly = role WHERE readOnly = TRUE;");
+ queries.add("UPDATE WaoUser SET roleReadOnly = 0 WHERE readOnly = FALSE;");
// Clean readOnly old field
queries.add("ALTER TABLE WaoUser DROP COLUMN readOnly;");
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/bean/UserRole.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/bean/UserRole.java 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/bean/UserRole.java 2010-06-10 17:38:10 UTC (rev 505)
@@ -117,7 +117,7 @@
* @return an array of UserRole
* @see #isSelected(int)
*/
- public static UserRole[] toUrserRoles(int code) {
+ public static UserRole[] toUserRoles(int code) {
EnumSet<UserRole> result = EnumSet.noneOf(UserRole.class);
for (UserRole role : values()) {
if (role.isSelected(code)) {
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/entity/WaoUserImpl.java 2010-06-10 17:38:10 UTC (rev 505)
@@ -28,11 +28,10 @@
import fr.ifremer.wao.WaoUtils;
import fr.ifremer.wao.bean.UserRole;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Iterator;
import java.util.List;
-import org.nuiton.util.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -86,7 +85,12 @@
@Override
public List<UserRole> getUserRoles() {
- UserRole[] roles = UserRole.toUrserRoles(getRole());
+ UserRole[] roles = UserRole.toUserRoles(getRole());
+// List<UserRole> results = new ArrayList<UserRole>();
+// if (roles.length > 0) {
+// results = Arrays.asList(roles);
+// }
+// return results;
return Arrays.asList(roles);
}
@@ -114,21 +118,30 @@
}
setRole(newCode);
+ added = true;
+ }
- // Apply same change on readOnly if defined
- if (readOnly) {
- int newReadOnly = getRoleReadOnly() + role.toInt();
- if (logger.isDebugEnabled()) {
- logger.debug("New code for readOnly : " + newReadOnly);
- }
+ updateReadOnly(role, readOnly);
- setRoleReadOnly(newReadOnly);
- }
- added = true;
- }
return added;
}
+ protected void updateReadOnly(UserRole role, boolean readOnly) {
+
+ boolean previousReadOnly = isReadOnly(role);
+
+ // Update readOnly true from false : add value with code calcul
+ if (readOnly && !previousReadOnly) {
+ int newReadOnly = getRoleReadOnly() + role.toInt();
+ setRoleReadOnly(newReadOnly);
+
+ // Update readOnly false from true : remove value with code calcul
+ } else if (!readOnly && previousReadOnly) {
+ int newReadOnly = getRoleReadOnly() - role.toInt();
+ setRoleReadOnly(newReadOnly);
+ }
+ }
+
@Override
public boolean removeUserRole(UserRole role) {
for (UserRole current : getUserRoles()) {
@@ -173,12 +186,13 @@
}
@Override
- public boolean isReadOnly() {
+ public boolean isCurrentReadOnly() {
boolean result = isReadOnly(currentRole);
return result;
}
- protected boolean isReadOnly(UserRole role) {
+ @Override
+ public boolean isReadOnly(UserRole role) {
boolean result = role.isSelected(getRoleReadOnly());
return result;
}
Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java
===================================================================
--- trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-business/src/main/java/fr/ifremer/wao/service/ServiceUserImpl.java 2010-06-10 17:38:10 UTC (rev 505)
@@ -276,8 +276,9 @@
" ne puisse plus se connecter.";
boolean isCoordinator = user.hasUserRole(UserRole.COORDINATOR);
+ boolean isAdmin = user.hasUserRole(UserRole.ADMIN);
- if (user.isAdmin() || isCoordinator) {
+ if (isAdmin || isCoordinator) {
SampleRowLogDAO logDAO =
WaoDAOHelper.getSampleRowLogDAO(transaction);
List<SampleRowLog> results = logDAO.findAllByAuthor(user);
Modified: trunk/wao-business/src/main/xmi/wao.zargo
===================================================================
(Binary files differ)
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/bean/UserRoleTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/bean/UserRoleTest.java 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/bean/UserRoleTest.java 2010-06-10 17:38:10 UTC (rev 505)
@@ -4,7 +4,6 @@
import org.junit.Test;
import java.util.Arrays;
-import java.util.Collections;
/**
* Created: 8 juin 2010
@@ -49,31 +48,31 @@
Assert.assertTrue(UserRole.COORDINATOR.isSelected(5));
Assert.assertTrue(UserRole.COORDINATOR.isSelected(6));
Assert.assertTrue(UserRole.COORDINATOR.isSelected(7));
- UserRole[] roles = UserRole.toUrserRoles(1);
+ UserRole[] roles = UserRole.toUserRoles(1);
assertEquals(roles, UserRole.ADMIN);
- roles = UserRole.toUrserRoles(2);
+ roles = UserRole.toUserRoles(2);
assertEquals(roles, UserRole.OBSERVER);
- roles = UserRole.toUrserRoles(3);
+ roles = UserRole.toUserRoles(3);
assertEquals(roles, UserRole.ADMIN, UserRole.OBSERVER);
- roles = UserRole.toUrserRoles(4);
+ roles = UserRole.toUserRoles(4);
assertEquals(roles, UserRole.COORDINATOR);
- roles = UserRole.toUrserRoles(5);
+ roles = UserRole.toUserRoles(5);
assertEquals(roles, UserRole.ADMIN, UserRole.COORDINATOR);
- roles = UserRole.toUrserRoles(6);
+ roles = UserRole.toUserRoles(6);
assertEquals(roles, UserRole.OBSERVER, UserRole.COORDINATOR);
- roles = UserRole.toUrserRoles(7);
+ roles = UserRole.toUserRoles(7);
assertEquals(roles, UserRole.ADMIN, UserRole.OBSERVER, UserRole.COORDINATOR);
- roles = UserRole.toUrserRoles(10);
+ roles = UserRole.toUserRoles(10);
assertEquals(roles, UserRole.OBSERVER, UserRole.GUEST);
- roles = UserRole.toUrserRoles(14);
+ roles = UserRole.toUserRoles(14);
assertEquals(roles, UserRole.OBSERVER, UserRole.COORDINATOR, UserRole.GUEST);
}
Modified: trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java
===================================================================
--- trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-business/src/test/java/fr/ifremer/wao/entity/WaoUserImplTest.java 2010-06-10 17:38:10 UTC (rev 505)
@@ -38,7 +38,8 @@
// Do nothing, role already set
user.addUserRole(UserRole.OBSERVER, true);
Assert.assertEquals(15, user.getRole());
- Assert.assertEquals(9, user.getRoleReadOnly());
+ // readOnly is updated
+ Assert.assertEquals(11, user.getRoleReadOnly());
}
@Test
@@ -68,7 +69,7 @@
boolean result = user.setCurrentRole(UserRole.OBSERVER);
Assert.assertTrue(result);
- Assert.assertTrue(user.isReadOnly());
+ Assert.assertTrue(user.isCurrentReadOnly());
result = user.setCurrentRole(UserRole.ADMIN);
Assert.assertFalse(result);
Modified: trunk/wao-ui/pom.xml
===================================================================
--- trunk/wao-ui/pom.xml 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-ui/pom.xml 2010-06-10 17:38:10 UTC (rev 505)
@@ -33,6 +33,10 @@
<groupId>org.nuiton</groupId>
<artifactId>nuiton-utils</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.nuiton.web</groupId>
+ <artifactId>nuiton-tapestry-extra</artifactId>
+ </dependency>
<!-- Tapestry framework + components -->
<dependency>
<groupId>org.apache.tapestry</groupId>
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/Layout.java 2010-06-10 17:38:10 UTC (rev 505)
@@ -157,7 +157,7 @@
public String getAccessText() {
String text = getCurrentUser().getCurrentRole().getLabel();
- if (getCurrentUser().isReadOnly()) {
+ if (getCurrentUser().isCurrentReadOnly()) {
text += " lecture seule";
}
return text;
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-06-10 17:38:10 UTC (rev 505)
@@ -40,17 +40,24 @@
import fr.ifremer.wao.ui.services.WaoManager;
import java.util.List;
import org.apache.commons.lang.StringUtils;
+import org.apache.tapestry5.ComponentResources;
import org.apache.tapestry5.EventContext;
+import org.apache.tapestry5.PersistenceConstants;
import org.apache.tapestry5.annotations.IncludeStylesheet;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.Log;
import org.apache.tapestry5.annotations.Persist;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;
+import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.corelib.components.BeanEditForm;
+import org.apache.tapestry5.corelib.components.Form;
+import org.apache.tapestry5.corelib.components.Zone;
import org.apache.tapestry5.ioc.Messages;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.ioc.services.PropertyAccess;
import org.apache.tapestry5.ioc.services.TypeCoercer;
+import org.apache.tapestry5.services.BeanModelSource;
import org.apache.tapestry5.upload.services.UploadedFile;
import org.slf4j.Logger;
@@ -66,7 +73,7 @@
public class Administration {
@Inject
- private Logger log;
+ private Logger logger;
@InjectComponent
private Layout layout;
@@ -101,18 +108,9 @@
private GenericSelectModel<WaoUser> usersSelectModel;
- /**
- * User is persistant cause of autobuild problem ?!?
- */
- @Persist
- private WaoUser user;
+ @InjectComponent
+ private BeanEditForm userForm;
- @Property
- private boolean generatePassword;
-
- @Property
- private String password;
-
private boolean addNewCompanySelected;
private boolean addNewUserSelected;
private boolean deleteUserSelected;
@@ -121,6 +119,7 @@
companies = null;
getCompanies();
user = null;
+ userModel = null;
}
void onActivate(EventContext ec) {
@@ -158,7 +157,7 @@
layout.addInfo(result + " zones de pêche importées");
} catch (WaoException eee) {
String[] errors =
- manager.getErrorMessages(eee, messages, log);
+ manager.getErrorMessages(eee, messages, logger);
layout.addError(errors);
}
}
@@ -174,7 +173,8 @@
public GenericSelectModel<Company> getCompaniesSelectModel() throws WaoException {
if (companiesSelectModel == null) {
- companiesSelectModel = new GenericSelectModel<Company>(getCompanies(), Company.class, Company.NAME, "id", propertyAccess);
+ companiesSelectModel = new GenericSelectModel<Company>(getCompanies(),
+ Company.class, Company.NAME, "id", propertyAccess);
}
return companiesSelectModel;
}
@@ -215,45 +215,52 @@
public GenericSelectModel<WaoUser> getUsersSelectModel() throws WaoException {
if (usersSelectModel == null) {
List<WaoUser> users = serviceUser.getUsersByCompany(getCompany());
- if (log.isDebugEnabled()) {
- log.debug("Nb users : " + users.size());
+ if (logger.isDebugEnabled()) {
+ logger.debug("Nb users : " + users.size());
}
- usersSelectModel = new GenericSelectModel<WaoUser>(users, WaoUser.class, "fullName", "id", propertyAccess);
+ usersSelectModel = new GenericSelectModel<WaoUser>(users, WaoUser.class,
+ "fullName", "id", propertyAccess);
}
return usersSelectModel;
}
- @Log
+ /******************** USER ACTIONS FORM ***********************************/
+
+ @Inject
+ private BeanModelSource beanModelSource;
+
+ /**
+ * User is persistant cause of autobuild problem ?!?
+ */
+ @Persist
+ private WaoUser user;
+
public WaoUser getUser() throws WaoException {
if (user == null) {
if (userId != null) {
- if (log.isDebugEnabled()) {
- log.debug("User exist in selectModel : " + userId);
+ if (logger.isDebugEnabled()) {
+ logger.debug("User exist in selectModel : " + userId);
}
user = getUsersSelectModel().findObject(userId);
} else {
user = serviceUser.getNewUser(getCompany());
-// user = new WaoUserImpl();
-// if (log.isDebugEnabled()) {
-// log.debug("Set company for new user : " + getCompany().getName());
-// }
-// user.setCompany(getCompany());
-// Default role set to OBSERVER
-// user.setUserRole(UserRole.OBSERVER);
generatePassword = true;
}
}
return user;
}
+ @Log
void onSelectedFromAddNewUser() {
addNewUserSelected = true;
}
+ @Log
void onSelectedFromDeleteUser() {
deleteUserSelected = true;
}
+ @Log
void onSuccessFromUserActionsForm() throws WaoException {
if (addNewUserSelected) {
userId = null;
@@ -268,14 +275,84 @@
layout.addError(eee.getMessage());
}
}
+ if (logger.isDebugEnabled()) {
+ logger.debug("'User id : " + userId);
+ }
}
+// @Log
+// void onChangeFromUsers(String userId) {
+// this.userId = userId;
+// }
+//
+// @Log
+// void onActionFromDeleteUser() {
+// user = getUsersSelectModel().findObject(userId);
+// try {
+// serviceUser.deleteUser(user);
+// user = null;
+// userId = null;
+// layout.addInfo("Utilisateur supprimé avec succès !");
+// } catch (WaoBusinessException eee) {
+// layout.addError(eee.getMessage());
+// }
+// }
+//
+// @Log
+// void onActionFromAddNewUser() {
+// userId = null;
+// }
+
+ /******************** USER FORM ******************************************/
+
+ @InjectComponent
+ private Zone userFormZone;
+
+ @Persist
+ private BeanModel<WaoUser> userModel;
+
+ @Property
+ private boolean generatePassword;
+
+ @Property
+ private String password;
+
+ public BeanModel<WaoUser> getUserModel() {
+ if (userModel == null) {
+ userModel = beanModelSource.createEditModel(WaoUser.class, messages);
+ userModel.add("userRole", null);
+ userModel.include(
+ WaoUser.FIRST_NAME,
+ WaoUser.LAST_NAME,
+ WaoUser.LOGIN,
+ WaoUser.PASSWORD,
+ WaoUser.PHONE_NUMBER,
+ "userRole",
+ WaoUser.ACTIVE
+ );
+ }
+ return userModel;
+ }
+
@Log
- void onSuccessFromUser() throws WaoException {
- if (log.isDebugEnabled()) {
- log.debug("User : " + user);
+ void onSelectedFromUserForm() {
+ refreshUserRoleZone = false;
+ }
+
+ @Log
+ void onValidateFormFromUserForm() {
+ userForm.clearErrors();
+ if (user.getUserRoles().isEmpty()) {
+ userForm.recordError("L'utilisateur doit au minimum avoir un rôle.");
}
+ }
+ @Log
+ Object onSuccessFromUserForm() throws WaoException {
+ if (logger.isDebugEnabled()) {
+ logger.debug("User : " + user);
+ }
+
if (!StringUtils.isEmpty(password)) {
user.setPassword(password);
user.setPasswordChanged(true);
@@ -291,6 +368,86 @@
layout.addError(eee.getMessage());
}
}
+ return this;
}
+
+ @Log
+ Object onFailureFromUserForm() {
+ return userForm;
+ }
+
+ /****************************** UserRole **********************************/
+
+ @InjectComponent
+ private Zone userRoleZone;
+
+ @Persist
+ @Property
+ private UserRole userRole;
+
+ @Persist
+ @Property
+ private boolean readOnly;
+
+ @Property
+ private UserRole role;
+
+ @Property
+ private int roleIndex;
+
+ @Property
+ private boolean refreshUserRoleZone;
+
+ public String getRoleReadOnly() {
+ String text = "";
+ if (user.isReadOnly(role)) {
+ text = "lecture seule";
+ }
+ return text;
+ }
+
+// void onSelectedFromUser() {
+// refreshUserRoleZone = false;
+// }
+
+ @Log
+ void onChangeFromUserRole(String value) {
+ if (StringUtils.isNotEmpty(value)) {
+ userRole = UserRole.valueOf(value);
+ } else {
+ userRole = null;
+ }
+ }
+
+ @Log
+ void onChangeFromReadOnly(boolean value) {
+ readOnly = value;
+ }
+
+ @Log
+ Object onActionFromAddRole() {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Add userRole : " + userRole +
+ " (readOnly=" + readOnly + ")");
+ }
+ if (userRole != null) {
+ user.addUserRole(userRole, readOnly);
+ }
+ // Reset fields
+ userRole = null;
+ readOnly = false;
+ // Refresh the zone
+ refreshUserRoleZone = true;
+ return userRoleZone;
+ }
+
+ @Log
+ Object onActionFromRemoveRole(int roleIndex) {
+ UserRole roleToRemove = user.getUserRoles().get(roleIndex);
+ user.removeUserRole(roleToRemove);
+ // Refresh the zone
+ refreshUserRoleZone = true;
+ return userRoleZone;
+ }
}
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Boats.java 2010-06-10 17:38:10 UTC (rev 505)
@@ -197,7 +197,7 @@
protected static final String GZIP_MIMETYPE = "application/x-gzip";
public boolean canImportReferentials() {
- return user.isAdmin() && !user.isReadOnly();
+ return user.isAdmin() && !user.isCurrentReadOnly();
}
@Log
@@ -521,7 +521,7 @@
}
public boolean canCreateNewContactFromList() throws WaoException {
- if (!user.isAdmin() && !user.isReadOnly() && isSampleRowExists()) {
+ if (!user.isAdmin() && !user.isCurrentReadOnly() && isSampleRowExists()) {
return boat.canCreateContact(user.getCompany());
}
return false;
@@ -723,7 +723,7 @@
}
public boolean canCreateNewContactFromElligibleBoat() throws WaoException {
- if (!user.isAdmin() && !user.isReadOnly() &&
+ if (!user.isAdmin() && !user.isCurrentReadOnly() &&
!isElligibleBoatCompanyActiveFalse()) {
Boat currentBoat = getBoatInfos().getBoat();
return currentBoat.canCreateContact(user.getCompany());
@@ -744,7 +744,7 @@
* @return true if BoatInfos can be edited
*/
public boolean canEditBoatInfos() {
- return !user.isReadOnly();
+ return !user.isCurrentReadOnly();
}
void onSuccess() throws WaoException {
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Contacts.java 2010-06-10 17:38:10 UTC (rev 505)
@@ -206,7 +206,7 @@
public boolean canImportExport() {
return (user.isAdmin() ||
user.getCurrentRole().equals(UserRole.COORDINATOR)) &&
- !user.isReadOnly();
+ !user.isCurrentReadOnly();
}
@Log
@@ -400,7 +400,7 @@
public boolean hasActions() {
return !user.isAdmin() && contact.getValidationCompany() == null
- && !user.isReadOnly();
+ && !user.isCurrentReadOnly();
}
/**
@@ -412,7 +412,7 @@
public boolean hasValidationActions() {
return (user.isAdmin() ||
user.getCurrentRole().equals(UserRole.COORDINATOR)) &&
- !user.isReadOnly();
+ !user.isCurrentReadOnly();
}
public boolean canValidate() {
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Index.java 2010-06-10 17:38:10 UTC (rev 505)
@@ -26,7 +26,6 @@
package fr.ifremer.wao.ui.pages;
import fr.ifremer.wao.WaoException;
-import fr.ifremer.wao.bean.UserRole;
import fr.ifremer.wao.entity.News;
import fr.ifremer.wao.entity.NewsImpl;
import fr.ifremer.wao.entity.WaoUser;
@@ -114,7 +113,7 @@
}
public boolean canEditNews() {
- return user.isAdmin() && !user.isReadOnly();
+ return user.isAdmin() && !user.isCurrentReadOnly();
}
public boolean isEditionMode() {
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SampleRowHistoric.java 2010-06-10 17:38:10 UTC (rev 505)
@@ -152,7 +152,7 @@
public boolean canAddComment() {
return user.getCurrentRole().equals(UserRole.COORDINATOR) &&
- !user.isReadOnly();
+ !user.isCurrentReadOnly();
}
public void onSuccessFromAddComment() throws WaoException {
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/SamplingPlan.java 2010-06-10 17:38:10 UTC (rev 505)
@@ -28,7 +28,6 @@
import fr.ifremer.wao.WaoBusinessException;
import fr.ifremer.wao.WaoException;
import fr.ifremer.wao.bean.*;
-import fr.ifremer.wao.entity.Company;
import fr.ifremer.wao.entity.FishingZone;
import fr.ifremer.wao.entity.SampleMonth;
import fr.ifremer.wao.entity.SampleRow;
@@ -122,7 +121,7 @@
private UploadedFile samplingPlanCsvFile;
public boolean canImportSamplingPlan() {
- return user.isAdmin() && !user.isReadOnly();
+ return user.isAdmin() && !user.isCurrentReadOnly();
}
@Log
@@ -467,7 +466,7 @@
* @return true if the sampleRow can be edited.
*/
public boolean canEditSampleRow() {
- return user.isAdmin() && !user.isReadOnly();
+ return user.isAdmin() && !user.isCurrentReadOnly();
}
/**
Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java
===================================================================
--- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/ServiceAuthenticationImpl.java 2010-06-10 17:38:10 UTC (rev 505)
@@ -49,7 +49,7 @@
WaoUser user = getUserConnected();
// Check if user readOnly is allowed
- if (user.isReadOnly() && !check.readOnlyAllowed()) {
+ if (user.isCurrentReadOnly() && !check.readOnlyAllowed()) {
return false;
}
Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/Layout.tml 2010-06-10 17:38:10 UTC (rev 505)
@@ -110,7 +110,7 @@
<li class="sep"> </li>
<li class="disabled" title="Synthèses et indicateurs">
Synthèse
- </li>
+ </li>
</p:else>
</t:unless>
<t:if t:test="currentUser.admin">
Modified: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties
===================================================================
--- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/pages/Administration.properties 2010-06-10 17:38:10 UTC (rev 505)
@@ -39,8 +39,10 @@
active-label: Actif
generatePassword-label: G\u00e9n\u00e9rer le password
password-label: ou d\u00e9finir manuellement
-userRole-label: R\u00f4le
+userRole-label: R\u00f4les
readOnly-label: Lecture seule
+# follow statement doesn't work with BeanEditForm
+userForm-errors-banner: L'utilisateur n'a pas \u00e9t\u00e9 sauvegard\u00e9 \u00e0 cause des erreurs suivantes :
# UserRole
UserRole.ADMIN: Administrateur
Added: trunk/wao-ui/src/main/resources/org/apache/tapestry5/corelib/components/Errors_fr.properties
===================================================================
--- trunk/wao-ui/src/main/resources/org/apache/tapestry5/corelib/components/Errors_fr.properties (rev 0)
+++ trunk/wao-ui/src/main/resources/org/apache/tapestry5/corelib/components/Errors_fr.properties 2010-06-10 17:38:10 UTC (rev 505)
@@ -0,0 +1 @@
+default-banner: Vous devez corriger les erreurs suivantes pour pouvoir continuer :
\ No newline at end of file
Modified: trunk/wao-ui/src/main/webapp/Administration.tml
===================================================================
--- trunk/wao-ui/src/main/webapp/Administration.tml 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-ui/src/main/webapp/Administration.tml 2010-06-10 17:38:10 UTC (rev 505)
@@ -71,6 +71,14 @@
<input t:type="select" t:id="users" t:model="usersSelectModel" t:value="userId" />
</div>
<div class="icons fleft">
+ <!--<input t:type="submit" class="ico search" value="Show Details" t:title="Afficher détails" />-->
+ <!--<a t:type="actionlink" t:id="deleteUser" t:title="Supprimer cet utilisateur"-->
+ <!--t:mixins="Confirm" t:message="Etes-vous sûr de vouloir supprimer définitivement cet utilisateur ?">-->
+ <!--<img src="${asset:context:img/delete2.png}" alt="Supprimer cet utilisateur" />-->
+ <!--</a>-->
+ <!--<a t:type="actionlink" t:id="addNewUser" t:title="Ajouter un nouvel utilisateur">-->
+ <!--<img src="${asset:context:img/add.png}" alt="Ajouter un nouvel utilisateur" />-->
+ <!--</a>-->
<input t:type="submit" t:id="showUser" class="ico search" value="Show Details" t:title="Afficher détails" />
<input t:type="submit" t:id="deleteUser" class="ico22px delete" value="Delete user" t:title="Supprimer cet utilisateur"
t:mixins="Confirm" t:message="Etes-vous sûr de vouloir supprimer définitivement cet utilisateur ?" />
@@ -79,33 +87,54 @@
</form>
<fieldset class="user-form clearfix">
- <form t:type="beaneditform" class="clearfix" t:id="user"
- t:include="firstName, lastName, login, password, phoneNumber, userRole, readOnly, active">
- <p:firstName>
- <label t:type="label" for="firstName" />
- <input t:type="textfield" t:id="firstName" value="user.firstName" t:validate="required" />
- </p:firstName>
- <p:lastName>
- <label t:type="label" for="lastName" />
- <input t:type="textfield" t:id="lastName" value="user.lastName" t:validate="required" />
- </p:lastName>
- <p:login>
- <label t:type="label" for="login" />
- <input t:type="textfield" t:id="login" value="user.login" t:validate="required" />
- </p:login>
- <p:password>
- <label t:type="label" for="generatePassword" />
- <input t:type="checkbox" t:id="generatePassword" value="generatePassword" />
- <span> ou définir manuellement : </span>
- <input t:type="passwordfield" t:id="password2" value="password" />
- </p:password>
- <p:userRole>
- <label t:type="label" for="userRole" />
- <select t:type="select" t:id="userRole" t:value="user.userRole" t:validate="required">
- <option></option>
- </select>
- </p:userRole>
- </form>
+ <t:zone t:id="userFormZone" t:update="show">
+ <form t:type="beaneditform" class="clearfix" t:id="userForm" t:object="user" t:model="userModel" t:zone="userFormZone">
+ <t:errors />
+ <p:firstName>
+ <label t:type="label" for="firstName" />
+ <input t:type="textfield" t:id="firstName" value="user.firstName" t:validate="required" />
+ </p:firstName>
+ <p:lastName>
+ <label t:type="label" for="lastName" />
+ <input t:type="textfield" t:id="lastName" value="user.lastName" t:validate="required" />
+ </p:lastName>
+ <p:login>
+ <label t:type="label" for="login" />
+ <input t:type="textfield" t:id="login" value="user.login" t:validate="required" />
+ </p:login>
+ <p:password>
+ <label t:type="label" for="generatePassword" />
+ <input t:type="checkbox" t:id="generatePassword" value="generatePassword" />
+ <span> ou définir manuellement : </span>
+ <input t:type="passwordfield" t:id="password2" value="password" />
+ </p:password>
+ <p:userRole>
+ <t:zone id="so-admin-userRoleZone" t:id="userRoleZone" t:update="show">
+ <t:nuiton.subForm t:visible="refreshUserRoleZone">
+ <label t:type="label" for="userRole" />
+ <select t:type="select" t:id="userRole" t:value="userRole"
+ t:mixins="ck/onEvent" t:event="change"/>
+
+ <span>Lecture seule : </span>
+ <input t:type="checkbox" t:id="readOnly" t:value="readOnly"
+ t:mixins="ck/onEvent" t:event="change"/>
+
+ <a t:type="actionlink" t:id="addRole" title="Ajouter un rôle" t:zone="so-admin-userRoleZone">
+ <img src="${asset:context:img/add-16px.png}" />
+ </a>
+ <ul>
+ <li t:type="loop" t:source="user.userRoles" t:value="role" t:index="roleIndex">
+ ${role.label} ${roleReadOnly}
+ <a t:type="actionlink" t:id="removeRole" t:context="roleIndex" title="Supprimer ce rôle" t:zone="so-admin-userRoleZone">
+ <img src="${asset:context:img/remove-22px.png}" />
+ </a>
+ </li>
+ </ul>
+ </t:nuiton.subForm>
+ </t:zone>
+ </p:userRole>
+ </form>
+ </t:zone>
</fieldset>
</t:if>
Modified: trunk/wao-ui/src/main/webapp/css/administration.css
===================================================================
--- trunk/wao-ui/src/main/webapp/css/administration.css 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-ui/src/main/webapp/css/administration.css 2010-06-10 17:38:10 UTC (rev 505)
@@ -56,3 +56,11 @@
width: 40px;
}
+div#so-admin-userRoleZone ul {
+ margin-left: 250px;
+}
+
+div#so-admin div.t-error li {
+ margin-left: 20px;
+}
+
Modified: trunk/wao-ui/src/main/webapp/css/main.css
===================================================================
--- trunk/wao-ui/src/main/webapp/css/main.css 2010-06-10 13:33:13 UTC (rev 504)
+++ trunk/wao-ui/src/main/webapp/css/main.css 2010-06-10 17:38:10 UTC (rev 505)
@@ -89,7 +89,7 @@
}
div#so-connexion-form {
- width: 180px;
+ width: 200px;
}
div#so-connexion-form-buttons {
Added: trunk/wao-ui/src/main/webapp/img/add-16px.png
===================================================================
(Binary files differ)
Property changes on: trunk/wao-ui/src/main/webapp/img/add-16px.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
1
0