r73 - in trunk/chorem-web/src/main: java/org/chorem/gepeto/action resources resources/i18n resources/org/chorem/gepeto/action webapp/WEB-INF/jsp/gepeto
Author: vbriand Date: 2011-04-08 16:51:52 +0200 (Fri, 08 Apr 2011) New Revision: 73 Url: http://chorem.org/repositories/revision/chorem/73 Log: A task can now be linked with a project order Added: trunk/chorem-web/src/main/resources/org/chorem/gepeto/action/TaskAction-addTask-validation.xml Removed: trunk/chorem-web/src/main/resources/org/chorem/gepeto/action/TaskAction-validation.xml Modified: trunk/chorem-web/src/main/java/org/chorem/gepeto/action/ProjectOrderAction.java trunk/chorem-web/src/main/java/org/chorem/gepeto/action/TaskAction.java trunk/chorem-web/src/main/resources/i18n/chorem-web_en_GB.properties trunk/chorem-web/src/main/resources/i18n/chorem-web_fr_FR.properties trunk/chorem-web/src/main/resources/struts.xml trunk/chorem-web/src/main/webapp/WEB-INF/jsp/gepeto/addTask.jsp trunk/chorem-web/src/main/webapp/WEB-INF/jsp/gepeto/projectOrderDetails.jsp Modified: trunk/chorem-web/src/main/java/org/chorem/gepeto/action/ProjectOrderAction.java =================================================================== --- trunk/chorem-web/src/main/java/org/chorem/gepeto/action/ProjectOrderAction.java 2011-04-08 14:06:50 UTC (rev 72) +++ trunk/chorem-web/src/main/java/org/chorem/gepeto/action/ProjectOrderAction.java 2011-04-08 14:51:52 UTC (rev 73) @@ -3,6 +3,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.List; import java.util.UUID; import org.apache.commons.logging.Log; @@ -14,7 +15,9 @@ import org.chorem.entities.ProjectOrder; import org.chorem.entities.ProjectOrderImpl; import org.chorem.entities.Quotation; +import org.chorem.entities.Task; import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.search.Search; import com.opensymphony.xwork2.ActionContext; @@ -73,6 +76,7 @@ } } } catch (IllegalArgumentException e) { + //quotationId is invalid result = ERROR; } return result; @@ -143,6 +147,22 @@ protected String projectOrderId; /** + * Gets the project order's tasks + * + * @return the project order's tasks + */ + public List<Task> getTasks() { + ChoremProxy proxy = getChoremProxy(); + Search search = Search.query(); + Criteria criteria = search.eq(Task.FQ_FIELD_TASK_PROJECTORDER, + projectOrderId).criteria(); + PagedResult<Task> result = proxy.findAllByCriteria(Task.class, criteria); + List<Task> tasks = result.getAll(); + + return tasks; + } + + /** * Stores the new project order through the proxy * * @return true if the project order has been stored properly Modified: trunk/chorem-web/src/main/java/org/chorem/gepeto/action/TaskAction.java =================================================================== --- trunk/chorem-web/src/main/java/org/chorem/gepeto/action/TaskAction.java 2011-04-08 14:06:50 UTC (rev 72) +++ trunk/chorem-web/src/main/java/org/chorem/gepeto/action/TaskAction.java 2011-04-08 14:51:52 UTC (rev 73) @@ -3,13 +3,17 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.UUID; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.chorem.ChoremProxy; import org.chorem.action.BaseAction; +import org.chorem.entities.ProjectOrder; import org.chorem.entities.TaskImpl; +import com.opensymphony.xwork2.ActionContext; + import static org.nuiton.i18n.I18n.n_; /** @@ -22,7 +26,11 @@ private static final long serialVersionUID = -3938480897148282089L; private static final Log log = LogFactory.getLog(TaskAction.class); - + + static public TaskAction getAction() { + return (TaskAction)ActionContext.getContext().get(CONTEXT_ACTION_KEY); + } + /** * Adds a new task * @@ -32,19 +40,36 @@ */ public String add() { String result = INPUT; + ChoremProxy proxy = getChoremProxy(); - if (name != null && description != null && price != null && - estimatedDays != null && beginDate != null && - estimatedEndDate != null) { - if (!name.isEmpty() && !description.isEmpty() && - !price.isEmpty() && !estimatedDays.isEmpty()) { - //If the task has been added successfully - if (addTask()) { - result = SUCCESS; + try { + if (projectOrderId == null) { + result = ERROR; + } else { + //If projectOrderId isn't a valid UUID, an exception is thrown + UUID.fromString(projectOrderId); + + ProjectOrder projectOrder = proxy.restore(ProjectOrder.class, projectOrderId); + + //If the projectOrderId doesn't exist + if (projectOrder == null) { + result = ERROR; } else { - result = ERROR; + if (name != null && description != null && price != null && + estimatedDays != null && beginDate != null && + estimatedEndDate != null) { + //If the task has been added successfully + if (addTask()) { + result = SUCCESS; + } else { + result = ERROR; + } + } } } + } catch (IllegalArgumentException e) { + //projectOrderId is invalid + result = ERROR; } return result; } @@ -55,6 +80,7 @@ protected String estimatedDays; protected String beginDate; protected String estimatedEndDate; + protected String projectOrderId; /** * Stores the new task through the proxy @@ -78,6 +104,7 @@ try { Calendar cal = Calendar.getInstance(); + newTask.setProjectOrder(projectOrderId); newTask.setBeginDate(formatter.parse(beginDate)); newTask.setEndDate(formatter.parse(estimatedEndDate)); @@ -203,4 +230,18 @@ public void setEstimatedEndDate(String estimatedEndDate) { this.estimatedEndDate = estimatedEndDate; } + + /** + * @return the projectOrderId + */ + public String getProjectOrderId() { + return projectOrderId; + } + + /** + * @param projectOrderId the projectOrderId to set + */ + public void setProjectOrderId(String projectOrderId) { + this.projectOrderId = projectOrderId; + } } Modified: trunk/chorem-web/src/main/resources/i18n/chorem-web_en_GB.properties =================================================================== --- trunk/chorem-web/src/main/resources/i18n/chorem-web_en_GB.properties 2011-04-08 14:06:50 UTC (rev 72) +++ trunk/chorem-web/src/main/resources/i18n/chorem-web_en_GB.properties 2011-04-08 14:51:52 UTC (rev 73) @@ -135,6 +135,7 @@ chorem.gepeto.results.title=Results by year chorem.gepeto.task=Task {0} chorem.gepeto.task.add=Add a new task +chorem.gepeto.task.backToProjectDetails= chorem.gepeto.task.beginDate=Begin date (dd/mm/yyyy) chorem.gepeto.task.beginDate.required=You must enter the begin date for this task chorem.gepeto.task.create.error=An error occurred while creating your new task, please try again. If the problem persists, please contact an administrator Modified: trunk/chorem-web/src/main/resources/i18n/chorem-web_fr_FR.properties =================================================================== --- trunk/chorem-web/src/main/resources/i18n/chorem-web_fr_FR.properties 2011-04-08 14:06:50 UTC (rev 72) +++ trunk/chorem-web/src/main/resources/i18n/chorem-web_fr_FR.properties 2011-04-08 14:51:52 UTC (rev 73) @@ -130,6 +130,7 @@ chorem.gepeto.results.title=R\u00E9sultats par ann\u00E0e chorem.gepeto.task=T\u00E2che {0} chorem.gepeto.task.add=Ajouter une nouvelle t\u00E2che +chorem.gepeto.task.backToProjectDetails= chorem.gepeto.task.beginDate=Date de d\u00E9but chorem.gepeto.task.beginDate.required=Vous devez renseigner la date de d\u00E9but de la t\u00E2che chorem.gepeto.task.create.error=Une erreur s''est produite lors de la cr\u00E9ation de votre nouvelle t\u00E2che, merci d''essayer \u00E0 nouveau. Si le probl\u00E8me se reproduit, merci de contacter un administrateur Copied: trunk/chorem-web/src/main/resources/org/chorem/gepeto/action/TaskAction-addTask-validation.xml (from rev 72, trunk/chorem-web/src/main/resources/org/chorem/gepeto/action/TaskAction-validation.xml) =================================================================== --- trunk/chorem-web/src/main/resources/org/chorem/gepeto/action/TaskAction-addTask-validation.xml (rev 0) +++ trunk/chorem-web/src/main/resources/org/chorem/gepeto/action/TaskAction-addTask-validation.xml 2011-04-08 14:51:52 UTC (rev 73) @@ -0,0 +1,52 @@ +<!DOCTYPE validators PUBLIC + "-//OpenSymphony Group//XWork Validator 1.0.2//EN" + "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> + +<validators> + <field name="name"> + <field-validator type="requiredstring"> + <message key="chorem.gepeto.task.name.required" /> + </field-validator> + </field> + <field name="description"> + <field-validator type="requiredstring"> + <message key="chorem.gepeto.task.description.required" /> + </field-validator> + </field> + <field name="price"> + <field-validator type="requiredstring"> + <message key="chorem.gepeto.task.price.required" /> + </field-validator> + <field-validator type="regex"> + <param name="expression"><![CDATA[([0-9]+)([\.,][0-9]+)?]]></param> + <message key="chorem.gepeto.task.price.wrongFormat" /> + </field-validator> + </field> + <field name="estimatedDays"> + <field-validator type="requiredstring"> + <message key="chorem.gepeto.task.estimatedDays.required" /> + </field-validator> + <field-validator type="regex"> + <param name="expression"><![CDATA[([0-9]+)]]></param> + <message key="chorem.gepeto.task.estimatedDays.wrongFormat" /> + </field-validator> + </field> + <field name="beginDate"> + <field-validator type="requiredstring"> + <message key="chorem.gepeto.task.beginDate.required" /> + </field-validator> + <field-validator type="regex"> + <param name="expression"><![CDATA[([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})]]></param> + <message key="chorem.date.wrongFormat" /> + </field-validator> + </field> + <field name="estimatedEndDate"> + <field-validator type="requiredstring"> + <message key="chorem.gepeto.task.estimatedEndDate.required" /> + </field-validator> + <field-validator type="regex"> + <param name="expression"><![CDATA[([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})]]></param> + <message key="chorem.date.wrongFormat" /> + </field-validator> + </field> +</validators> Property changes on: trunk/chorem-web/src/main/resources/org/chorem/gepeto/action/TaskAction-addTask-validation.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Deleted: trunk/chorem-web/src/main/resources/org/chorem/gepeto/action/TaskAction-validation.xml =================================================================== --- trunk/chorem-web/src/main/resources/org/chorem/gepeto/action/TaskAction-validation.xml 2011-04-08 14:06:50 UTC (rev 72) +++ trunk/chorem-web/src/main/resources/org/chorem/gepeto/action/TaskAction-validation.xml 2011-04-08 14:51:52 UTC (rev 73) @@ -1,52 +0,0 @@ -<!DOCTYPE validators PUBLIC - "-//OpenSymphony Group//XWork Validator 1.0.2//EN" - "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> - -<validators> - <field name="name"> - <field-validator type="requiredstring"> - <message key="chorem.gepeto.task.name.required" /> - </field-validator> - </field> - <field name="description"> - <field-validator type="requiredstring"> - <message key="chorem.gepeto.task.description.required" /> - </field-validator> - </field> - <field name="price"> - <field-validator type="requiredstring"> - <message key="chorem.gepeto.task.price.required" /> - </field-validator> - <field-validator type="regex"> - <param name="expression"><![CDATA[([0-9]+)([\.,][0-9]+)?]]></param> - <message key="chorem.gepeto.task.price.wrongFormat" /> - </field-validator> - </field> - <field name="estimatedDays"> - <field-validator type="requiredstring"> - <message key="chorem.gepeto.task.estimatedDays.required" /> - </field-validator> - <field-validator type="regex"> - <param name="expression"><![CDATA[([0-9]+)]]></param> - <message key="chorem.gepeto.task.estimatedDays.wrongFormat" /> - </field-validator> - </field> - <field name="beginDate"> - <field-validator type="requiredstring"> - <message key="chorem.gepeto.task.beginDate.required" /> - </field-validator> - <field-validator type="regex"> - <param name="expression"><![CDATA[([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})]]></param> - <message key="chorem.date.wrongFormat" /> - </field-validator> - </field> - <field name="estimatedEndDate"> - <field-validator type="requiredstring"> - <message key="chorem.gepeto.task.estimatedEndDate.required" /> - </field-validator> - <field-validator type="regex"> - <param name="expression"><![CDATA[([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})]]></param> - <message key="chorem.date.wrongFormat" /> - </field-validator> - </field> -</validators> Modified: trunk/chorem-web/src/main/resources/struts.xml =================================================================== --- trunk/chorem-web/src/main/resources/struts.xml 2011-04-08 14:06:50 UTC (rev 72) +++ trunk/chorem-web/src/main/resources/struts.xml 2011-04-08 14:51:52 UTC (rev 73) @@ -72,13 +72,18 @@ <action name="removeProject" class="org.chorem.gepeto.action.ProjectAction" method="delete"> <result type="redirectAction">home</result> </action> - <action name="addTaskInput"> - <result>/WEB-INF/jsp/gepeto/addTask.jsp</result> + <action name="addTaskInput" class="org.chorem.gepeto.action.TaskAction" method="add"> + <result name="input">/WEB-INF/jsp/gepeto/addTask.jsp</result> + <result name="error" type="redirectAction">home</result> </action> <action name="addTask" class="org.chorem.gepeto.action.TaskAction" method="add"> <result name="input">/WEB-INF/jsp/gepeto/addTask.jsp</result> <result name="error">/WEB-INF/jsp/gepeto/addTask.jsp</result> - <result type="redirectAction">home</result> + <result type="redirectAction"> + <param name="actionName">projectOrderDetails</param> + <param name="namespace">/gepeto</param> + <param name="projectOrderId">${projectOrderId}</param> + </result> </action> <action name="addProjectOrderInput" class="org.chorem.gepeto.action.ProjectOrderAction" method="add"> <result name="input">/WEB-INF/jsp/gepeto/addProjectOrder.jsp</result> Modified: trunk/chorem-web/src/main/webapp/WEB-INF/jsp/gepeto/addTask.jsp =================================================================== --- trunk/chorem-web/src/main/webapp/WEB-INF/jsp/gepeto/addTask.jsp 2011-04-08 14:06:50 UTC (rev 72) +++ trunk/chorem-web/src/main/webapp/WEB-INF/jsp/gepeto/addTask.jsp 2011-04-08 14:51:52 UTC (rev 73) @@ -1,4 +1,5 @@ <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> +<%@page import="org.chorem.gepeto.action.TaskAction" %> <%@taglib prefix="s" uri="/struts-tags" %> <html xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" @@ -10,30 +11,41 @@ <body> <h2><s:text name="chorem.gepeto.task.add" /></h2> <s:actionerror /> - <s:form action="addTask" method="post"> + <s:url namespace="/gepeto" action="addTask" var="addTask"> + <s:param name="projectOrderId"><%= TaskAction.getAction().getProjectOrderId() %></s:param> + </s:url> + <form action="${addTask}" method="post"> <fieldset> <legend> <s:text name="chorem.gepeto.task"> <s:param></s:param> </s:text> </legend> - <s:textfield key="chorem.gepeto.task.name" name="name" labelSeparator=": " /> - <br /> - <br /> - <s:textarea key="chorem.gepeto.task.description" name="description" cols="50" rows="10" labelposition="top" /> - <br /> - <br /> - <s:textfield key="chorem.gepeto.task.price" name="price" labelSeparator=": " /> - <br /> - <s:textfield key="chorem.gepeto.task.estimatedDays" name="estimatedDays" labelSeparator=": " /> - <br /> - <s:textfield key="chorem.gepeto.task.beginDate" name="beginDate" labelSeparator=": " /> - <br /> - <s:textfield key="chorem.gepeto.task.estimatedEndDate" name="estimatedEndDate" labelSeparator=": " /> - <br /> - <br /> - <s:submit key="chorem.gepeto.task.add" name="submit" /> + <p> + <s:textfield key="chorem.gepeto.task.name" name="name" labelSeparator=": " /> + <br /> + <br /> + <s:textarea key="chorem.gepeto.task.description" name="description" cols="50" rows="10" labelposition="top" /> + <br /> + <br /> + <s:textfield key="chorem.gepeto.task.price" name="price" labelSeparator=": " /> + <br /> + <s:textfield key="chorem.gepeto.task.estimatedDays" name="estimatedDays" labelSeparator=": " /> + <br /> + <s:textfield key="chorem.gepeto.task.beginDate" name="beginDate" labelSeparator=": " /> + <br /> + <s:textfield key="chorem.gepeto.task.estimatedEndDate" name="estimatedEndDate" labelSeparator=": " /> + <br /> + <br /> + <s:submit key="chorem.gepeto.task.add" name="submit" /> + </p> </fieldset> - </s:form> + </form> + <p> + <s:url namespace="/gepeto" action="projectOrderDetails" var="projectOrderDetails"> + <s:param name="projectOrderId"><%= TaskAction.getAction().getProjectOrderId() %></s:param> + </s:url> + <a href="${projectOrderDetails}"><s:text name="chorem.gepeto.task.backToProjectDetails" /></a> + </p> </body> </html> Modified: trunk/chorem-web/src/main/webapp/WEB-INF/jsp/gepeto/projectOrderDetails.jsp =================================================================== --- trunk/chorem-web/src/main/webapp/WEB-INF/jsp/gepeto/projectOrderDetails.jsp 2011-04-08 14:06:50 UTC (rev 72) +++ trunk/chorem-web/src/main/webapp/WEB-INF/jsp/gepeto/projectOrderDetails.jsp 2011-04-08 14:51:52 UTC (rev 73) @@ -1,4 +1,6 @@ <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> +<%@page import="java.util.List" %> +<%@page import="org.chorem.entities.Task" %> <%@page import="org.chorem.gepeto.action.ProjectOrderAction" %> <%@taglib prefix="s" uri="/struts-tags" %>
participants (1)
-
vbriand@users.chorem.org