Author: glandais Date: 2007-11-04 17:19:39 +0000 (Sun, 04 Nov 2007) New Revision: 25 Added: trunk/simexplorer-si-template/simexplorer-si-template-web/src/python/ trunk/simexplorer-si-template/simexplorer-si-template-web/src/python/client.py Modified: trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/META-INF/orm.xml trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/dao/DaoProject.java trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/entities/Task.java trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/service/IServiceProject.java trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/service/ServiceProject.java trunk/simexplorer-si-template/simexplorer-si-template-web/src/java/org/codelutin/test/tools/ContextListener.java trunk/simexplorer-si-template/simexplorer-si-template-web/src/java/org/codelutin/test/web/pages/projectManagement/ProjectList.java trunk/simexplorer-si-template/simexplorer-si-template-web/src/java/org/codelutin/test/web/pages/projectManagement/ProjectView.java trunk/simexplorer-si-template/simexplorer-si-template-web/src/webcontent/projectManagement/ProjectView.tml Log: Mise en disponiblit?\195?\169 du webservice Modified: trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/META-INF/orm.xml =================================================================== --- trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/META-INF/orm.xml 2007-10-31 19:29:01 UTC (rev 24) +++ trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/META-INF/orm.xml 2007-11-04 17:19:39 UTC (rev 25) @@ -10,28 +10,24 @@ <package>org.codelutin.test.entities</package> - <mapped-superclass class="BaseEntity"> + <entity class="BaseEntity"> <attributes> <id name="id"> <generated-value strategy="IDENTITY" /> </id> <transient name="new" /> </attributes> - </mapped-superclass> + </entity> <entity class="Task"> - <table name="TASKS" /> <attributes> - <id name="id"> - <generated-value strategy="IDENTITY" /> - </id> <basic name="time"> <temporal>TIME</temporal> </basic> <basic name="name"></basic> - <many-to-one name="parent" target-entity="Task" + <many-to-one name="parent" target-entity="BaseEntity" fetch="LAZY" /> - <one-to-many name="enfants" target-entity="Task"> + <one-to-many name="enfants" target-entity="BaseEntity"> <cascade> <cascade-all/> </cascade> @@ -40,7 +36,6 @@ </entity> <entity class="Project"> - <table name="PROJECTS"/> <attributes> <basic name="cost"></basic> </attributes> Modified: trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/dao/DaoProject.java =================================================================== --- trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/dao/DaoProject.java 2007-10-31 19:29:01 UTC (rev 24) +++ trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/dao/DaoProject.java 2007-11-04 17:19:39 UTC (rev 25) @@ -14,28 +14,40 @@ @Stateless public class DaoProject implements IDaoProject { - @PersistenceContext(unitName="persistence-unit") + @PersistenceContext(unitName = "persistence-unit") private EntityManager em; + /* + private void initializeTask(Task task) { + Set<Task> children = task.getEnfants(); + for (Iterator iterator = children.iterator(); iterator.hasNext();) { + Task child = (Task) iterator.next(); + child.getName().toString(); + } + } + */ + public void deleteOne(Integer id) { Task task = em.find(Task.class, id); if (task == null) { - throw new DaoException(String.format("Task n?[%d] inconnue", id), 2); + throw new DaoException(String.format("Task [%d] inconnue", id), 2); } em.remove(task); } public List<Task> getAll() { - return em.createQuery("select t from Task t").getResultList(); + List<Task> tasks = em.createQuery("select t from Task t") + .getResultList(); + for (Iterator iterator = tasks.iterator(); iterator.hasNext();) { + Task task = (Task) iterator.next(); + //initializeTask(task); + } + return tasks; } public Task getTask(Integer id) { Task task = em.find(Task.class, id); - Set<Task> children = task.getEnfants(); - for (Iterator iterator = children.iterator(); iterator.hasNext();) { - Task child = (Task) iterator.next(); - child.getName().toString(); - } + //initializeTask(task); return task; } @@ -47,13 +59,20 @@ public Task updateOne(Task task) { Task p = em.find(Task.class, task.getId()); if (p == null) { - throw new DaoException(String.format("task n?[%d] inconnue", task.getId()), 2); + throw new DaoException(String.format("task [%d] inconnue", task + .getId()), 2); } return em.merge(task); } public List<Project> getAllProjects() { - return em.createQuery("select p from Project p").getResultList(); + List<Project> projects = em.createQuery("select p from Project p") + .getResultList(); + for (Iterator iterator = projects.iterator(); iterator.hasNext();) { + Project project = (Project) iterator.next(); + //initializeTask(project); + } + return projects; } } Modified: trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/entities/Task.java =================================================================== --- trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/entities/Task.java 2007-10-31 19:29:01 UTC (rev 24) +++ trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/entities/Task.java 2007-11-04 17:19:39 UTC (rev 25) @@ -9,13 +9,13 @@ private Date time; private String name; - private Task parent; - private Set<Task> enfants; + private BaseEntity parent; + private Set<BaseEntity> enfants; - public Task getParent() { + public BaseEntity getParent() { return parent; } - public void setParent(Task parent) { + public void setParent(BaseEntity parent) { this.parent = parent; } public Date getTime() { @@ -35,10 +35,10 @@ return res; } - public Set<Task> getEnfants() { + public Set<BaseEntity> getEnfants() { return enfants; } - public void setEnfants(Set<Task> enfants) { + public void setEnfants(Set<BaseEntity> enfants) { this.enfants = enfants; } public String getName() { Modified: trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/service/IServiceProject.java =================================================================== --- trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/service/IServiceProject.java 2007-10-31 19:29:01 UTC (rev 24) +++ trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/service/IServiceProject.java 2007-11-04 17:19:39 UTC (rev 25) @@ -9,7 +9,7 @@ public interface IServiceProject { - public List<Task> getAll(); + public Task[] getAll(); public Task saveOne(Task task); @@ -19,7 +19,7 @@ public Date getTotalTime(Integer id); - public List<Project> getAllProjects(); + public Project[] getAllProjects(); public Project getProject(Integer projectId); Modified: trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/service/ServiceProject.java =================================================================== --- trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/service/ServiceProject.java 2007-10-31 19:29:01 UTC (rev 24) +++ trunk/simexplorer-si-template/simexplorer-si-template-ejb/src/java/org/codelutin/test/service/ServiceProject.java 2007-11-04 17:19:39 UTC (rev 25) @@ -9,47 +9,61 @@ import javax.ejb.Stateless; import javax.ejb.TransactionAttribute; import javax.ejb.TransactionAttributeType; +import javax.jws.WebMethod; +import javax.jws.WebService; +import javax.jws.soap.SOAPBinding; +import javax.jws.soap.SOAPBinding.Style; import org.codelutin.test.dao.IDaoProject; +import org.codelutin.test.entities.BaseEntity; import org.codelutin.test.entities.Project; import org.codelutin.test.entities.Task; @Stateless @TransactionAttribute(TransactionAttributeType.REQUIRED) + at WebService(name="CodeLutinTest", serviceName="ServiceProject") + at SOAPBinding(style=Style.RPC) public class ServiceProject implements IServiceProject { @EJB private IDaoProject dao; + @WebMethod public void deleteOne(Integer id) { dao.deleteOne(id); } - public List<Task> getAll() { - return dao.getAll(); + @WebMethod + public Task[] getAll() { + List<Task> tasks = dao.getAll(); + return tasks.toArray(new Task[0]); } + @WebMethod public Task saveOne(Task task) { return dao.saveOne(task); } + @WebMethod public Task updateOne(Task task) { return dao.updateOne(task); } - public List<Project> getAllProjects() { - return dao.getAllProjects(); + @WebMethod + public Project[] getAllProjects() { + return dao.getAllProjects().toArray(new Project[0]); } + @WebMethod public Date getTotalTime(Integer id) { Date total = new Date(0); Task t = dao.getTask(id); total.setTime(total.getTime() + t.getTime().getTime()); - Set<Task> enfants = t.getEnfants(); + Set<BaseEntity> enfants = t.getEnfants(); if (enfants != null && enfants.size() > 0) { - for (Iterator<Task> iterator = enfants.iterator(); iterator.hasNext();) { - Task enfant = iterator.next(); + for (Iterator<BaseEntity> iterator = enfants.iterator(); iterator.hasNext();) { + BaseEntity enfant = iterator.next(); total.setTime(total.getTime() + getTotalTime(enfant.getId()).getTime()); } } @@ -57,6 +71,7 @@ return total; } + @WebMethod public Project getProject(Integer projectId) { return (Project) dao.getTask(projectId); } Modified: trunk/simexplorer-si-template/simexplorer-si-template-web/src/java/org/codelutin/test/tools/ContextListener.java =================================================================== --- trunk/simexplorer-si-template/simexplorer-si-template-web/src/java/org/codelutin/test/tools/ContextListener.java 2007-10-31 19:29:01 UTC (rev 24) +++ trunk/simexplorer-si-template/simexplorer-si-template-web/src/java/org/codelutin/test/tools/ContextListener.java 2007-11-04 17:19:39 UTC (rev 25) @@ -14,6 +14,7 @@ import javax.naming.InitialContext; import javax.naming.NamingException; +import org.codelutin.test.entities.BaseEntity; import org.codelutin.test.entities.Project; import org.codelutin.test.entities.Task; import org.codelutin.test.service.IServiceProject; @@ -32,10 +33,10 @@ IServiceProject serviceProjets = (IServiceProject) context .lookup("ServiceProject/local"); - List<Task> tasks = serviceProjets.getAll(); - for (Iterator iterator = tasks.iterator(); iterator.hasNext();) { - Task name = (Task) iterator.next(); - serviceProjets.deleteOne(name.getId()); + Task[] tasks = serviceProjets.getAll(); + for (int i = 0; i < tasks.length; i++) { + Task task = tasks[i]; + serviceProjets.deleteOne(task.getId()); } generateTasks(serviceProjets, null, 0, ""); @@ -55,8 +56,8 @@ } - private Set<Task> generateTasks(IServiceProject serviceProjets, Task parent, int level, String arbo) { - HashSet<Task> tasks = new HashSet<Task>(); + private Set<BaseEntity> generateTasks(IServiceProject serviceProjets, Task parent, int level, String arbo) { + HashSet<BaseEntity> tasks = new HashSet<BaseEntity>(); Random r = new Random(); int nTasks = 2 + r.nextInt(2); @@ -77,7 +78,7 @@ serviceProjets.saveOne(task); if ((level < 3)) {// || (r.nextInt(100)<50)) { - Set<Task> enfants = generateTasks(serviceProjets, task, level + 1, arbo + i + "."); + Set<BaseEntity> enfants = generateTasks(serviceProjets, task, level + 1, arbo + i + "."); task.setEnfants(enfants); } serviceProjets.updateOne(task); Modified: trunk/simexplorer-si-template/simexplorer-si-template-web/src/java/org/codelutin/test/web/pages/projectManagement/ProjectList.java =================================================================== --- trunk/simexplorer-si-template/simexplorer-si-template-web/src/java/org/codelutin/test/web/pages/projectManagement/ProjectList.java 2007-10-31 19:29:01 UTC (rev 24) +++ trunk/simexplorer-si-template/simexplorer-si-template-web/src/java/org/codelutin/test/web/pages/projectManagement/ProjectList.java 2007-11-04 17:19:39 UTC (rev 25) @@ -22,7 +22,7 @@ return new Date(); } - public List<Project> getProjects() { + public Project[] getProjects() { return getServiceProjets().getAllProjects(); } Modified: trunk/simexplorer-si-template/simexplorer-si-template-web/src/java/org/codelutin/test/web/pages/projectManagement/ProjectView.java =================================================================== --- trunk/simexplorer-si-template/simexplorer-si-template-web/src/java/org/codelutin/test/web/pages/projectManagement/ProjectView.java 2007-10-31 19:29:01 UTC (rev 24) +++ trunk/simexplorer-si-template/simexplorer-si-template-web/src/java/org/codelutin/test/web/pages/projectManagement/ProjectView.java 2007-11-04 17:19:39 UTC (rev 25) @@ -1,5 +1,7 @@ package org.codelutin.test.web.pages.projectManagement; +import java.util.Date; + import org.apache.tapestry.annotations.Persist; import org.codelutin.test.entities.Project; import org.codelutin.test.entities.Task; @@ -28,4 +30,8 @@ this.project = project; } + public Date getTotalTime() { + return getServiceProjets().getTotalTime(project.getId()); + } + } Added: trunk/simexplorer-si-template/simexplorer-si-template-web/src/python/client.py =================================================================== --- trunk/simexplorer-si-template/simexplorer-si-template-web/src/python/client.py (rev 0) +++ trunk/simexplorer-si-template/simexplorer-si-template-web/src/python/client.py 2007-11-04 17:19:39 UTC (rev 25) @@ -0,0 +1,7 @@ +from SOAPpy import WSDL +wsdlFile = 'http://localhost:8080/simexplorer-si-template-ejb/ServiceProject?wsdl' +server = WSDL.Proxy(wsdlFile) +print 'Liste des méthodes du service' +server.methods.keys() +exit() + Modified: trunk/simexplorer-si-template/simexplorer-si-template-web/src/webcontent/projectManagement/ProjectView.tml =================================================================== --- trunk/simexplorer-si-template/simexplorer-si-template-web/src/webcontent/projectManagement/ProjectView.tml 2007-10-31 19:29:01 UTC (rev 24) +++ trunk/simexplorer-si-template/simexplorer-si-template-web/src/webcontent/projectManagement/ProjectView.tml 2007-11-04 17:19:39 UTC (rev 25) @@ -4,6 +4,14 @@ <h1 class="Title">${message:pagetitle}</h1> <hr class="Ligne"/> + + <h1 class="Title">Projet ${project.id} : ${project.name}</h1> + <h1 class="Title">Temps propre : ${project.time}</h1> + <h1 class="Title">Temps total : ${totalTime}</h1> + + <hr class="Ligne"/> + + <h1 class="Title">Tâches :</h1> <table class="Large"> <tr class="First"> @@ -11,11 +19,6 @@ <td>${message:name}</td> <td>${message:time}</td> </tr> - <tr class="First"> - <td>${project.id}</td> - <td>${project.name}</td> - <td>${project.time}</td> - </tr> <t:loop source="project.enfants" value="task"> <tr> <td>${task.id}</td>