Jtimer-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
- November
- October
- September
- August
June 2014
- 1 participants
- 16 discussions
r3008 - in branches/ng-jtimer/src/main: java/org/chorem/jtimer/storage java/org/chorem/jtimer/utils java/org/chorem/jtimer/web webapp/js webapp/partials
by obruce@users.chorem.org 27 Jun '14
by obruce@users.chorem.org 27 Jun '14
27 Jun '14
Author: obruce
Date: 2014-06-27 11:46:09 +0200 (Fri, 27 Jun 2014)
New Revision: 3008
Url: http://forge.chorem.org/projects/jtimer/repository/revisions/3008
Log:
controller et serveur : module de rapport
Modified:
branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java
branches/ng-jtimer/src/main/webapp/js/controllers.js
branches/ng-jtimer/src/main/webapp/partials/reportModal.html
branches/ng-jtimer/src/main/webapp/partials/reportNestedTask.html
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-25 16:08:07 UTC (rev 3007)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-27 09:46:09 UTC (rev 3008)
@@ -434,7 +434,7 @@
return times;
}
- public HashMap getReportByProject(Long startDate, Long endDate){
+ public HashMap<String, ArrayList<ReportTask>> getReportByProject(Long startDate, Long endDate){
HashMap map = new HashMap();
PreparedStatement statement = null;
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java 2014-06-25 16:08:07 UTC (rev 3007)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java 2014-06-27 09:46:09 UTC (rev 3008)
@@ -39,17 +39,17 @@
}
//un enfant
- if(!t.getParent().equals("")){
+ if(!t.getParentId().equals("")){
log.info("enfant");
//On ajoute l'enfant à la map
ArrayList tmp = new ArrayList();
- if(childMap.get(t.parent) != null){
- tmp=childMap.get(t.parent);
+ if(childMap.get(t.parentId) != null){
+ tmp=childMap.get(t.parentId);
}
tmp.add(t);
- childMap.put(t.parent, tmp);
+ childMap.put(t.parentId, tmp);
iter.remove();
}
}
@@ -58,7 +58,7 @@
while(iter.hasNext()) {
ReportTask t = (ReportTask)iter.next();
- if(t.getTime().isNotTimed()){
+ if(t.getSelftime() == 0){
iter.remove();
}
}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java 2014-06-25 16:08:07 UTC (rev 3007)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java 2014-06-27 09:46:09 UTC (rev 3008)
@@ -1,5 +1,9 @@
package org.chorem.jtimer.utils;
+import com.google.gson.annotations.Expose;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import java.util.ArrayList;
/**
@@ -11,28 +15,34 @@
*/
public class ReportTask {
+ protected static final Log log = LogFactory.getLog(ReportTask.class);
+
/** Le nom de la tache*/
- protected String name;
- protected String taskId;
- protected String parent;
- protected long time;
- protected boolean isReported;
+ @Expose protected String name;
+ @Expose protected String taskId;
+ @Expose protected String parentId;
- protected ArrayList subtasks;
+ protected ReportTask rtParent; //to be omitted in serialization
+ @Expose protected long selftime;
+ @Expose protected long childtime;
+
+ @Expose protected ArrayList<ReportTask> subtasks;
+
/**
* Constructeur
* @param name le nom
* @param taskId l'identifiant
* @param parent l'identifiant du parent
- * @param time le temps
+ * @param selftime le temps
*/
- public ReportTask(String name, String taskId, String parent, long time){
+ public ReportTask(String name, String taskId, String parent, long selftime){
this.taskId = taskId;
this.name = name;
- this.parent = parent;
- this.time = time;
- this.isReported = false;
+ this.parentId = parent;
+ this.selftime = selftime;
+ this.childtime = 0;
+ this.rtParent = null;
this.subtasks = new ArrayList();
}
@@ -40,9 +50,34 @@
/** Ajout */
public void addChild(ReportTask t){
this.subtasks.add(t);
- this.time+= t.getTime();
}
+
+ /**
+ * Ajout de temps d'un enfant
+ */
+ public void addChildTime(long t){
+
+ if(hasParent()) {
+
+ rtParent.addChildTime(t);
+ }
+ this.childtime +=t;
+ }
+
+
+ /**
+ * Ajout de temps d'un enfant
+ */
+ public void removeChildTime(long t){
+
+ if(hasParent()) {
+
+ rtParent.removeChildTime(t);
+ }
+ this.childtime -=t;
+ }
+
/**Getter */
public String getTaskId() {
@@ -53,30 +88,43 @@
return name;
}
- public String getParent() {
- return parent;
+ public String getParentId() {
+ return parentId;
}
- public long getTime() {
- return time;
+
+ public ReportTask getRtParent() {
+ return rtParent;
}
- public boolean isReported() {
- return isReported;
+ public void setRtParent(ReportTask reportTask) {
+ this.rtParent = reportTask;
}
- public void setReported(boolean isReported) {
- this.isReported = isReported;
+ public boolean hasParent(){ return this.rtParent != null;}
+
+ public long getSelftime() {
+ return selftime;
}
+ public long getChildtime() {
+ return childtime;
+ }
+
+ public ArrayList<ReportTask> getSubtasks() {
+ return subtasks;
+ }
+
+
@Override
public String toString() {
return "ReportTask{" +
"name='" + name + '\'' +
", taskId='" + taskId + '\'' +
- ", parent='" + parent + '\'' +
- ", time=" + time +
- ", subtasks=" + subtasks.toString() +
+ ", parent='" + parentId + '\'' +
+ ", selftime=" + selftime +
+ ", childtime=" + childtime +
+ ", subtasks=" + subtasks +
'}';
}
}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-06-25 16:08:07 UTC (rev 3007)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-06-27 09:46:09 UTC (rev 3008)
@@ -1,6 +1,7 @@
package org.chorem.jtimer.web;
import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.jtimer.storage.Storage;
@@ -14,6 +15,7 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Iterator;
/**
* Created by olivia on 11/06/14.
@@ -30,6 +32,7 @@
@Override
protected void doInit() throws ResourceException {
+
storage = (Storage) getContext().getAttributes().get(Storage.class.getName());
}
/**
@@ -44,7 +47,7 @@
if(representation.isAvailable()) {
String repr1 = representation.getText();
- Gson gson =new Gson();
+ Gson gson = new Gson();
toReport = gson.fromJson(repr1, ArrayList.class);
}
@@ -72,19 +75,20 @@
//MustacheReport report = new MustacheReport(getContext());
//res = report.createByProjectMustache(type, startDate, endDate,reprArray);
- Gson gson = new Gson();
- HashMap storedTask = storage.getReportByProject(startDate, endDate);
- ArrayList res = new ArrayList();
+ //On ne recupere que les elements interessants
+ Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
+ HashMap<String, ArrayList<ReportTask>> storedTask = storage.getReportByProject(startDate, endDate);
+ ArrayList<ReportTask> res = new ArrayList<>(); //l'arraylist de resultat
+
//On recree l'arbre
- for(ReportTask rt: (ArrayList<ReportTask>)storedTask.get("")){
- reccursivSortTask(storedTask, rt, res );
+ for(ReportTask rt: storedTask.get("")){
+ recursivSortTask(storedTask, rt, res );
}
//On enleve les éléments non voulus
+ recursiveRemoveUnreportedTask(res,toReport);
-
-
String json = gson.toJson(res, ArrayList.class);
return new StringRepresentation(json, MediaType.TEXT_HTML);
@@ -96,22 +100,69 @@
* @param rt the current task
* @param res the tree array
*/
- private void reccursivSortTask(HashMap map, ReportTask rt, ArrayList res ){
+ private void recursivSortTask(HashMap<String,ArrayList<ReportTask>> map, ReportTask rt, ArrayList<ReportTask> res ){
if(map.containsKey(rt.getTaskId())) {
- for (ReportTask child : (ArrayList<ReportTask>) map.get(rt.getTaskId())) {
- reccursivSortTask(map, child, res);
+ for (ReportTask child : map.get(rt.getTaskId())) {
+ child.setRtParent(rt);
+ log.info(child.getName() + " setparent " +rt.getName());
- if(child.getTime() != (long) 0){
+ recursivSortTask(map, child, res);
+
+ if(child.getSelftime()!= (long) 0 || child.getChildtime()!= (long) 0){
+ log.info(rt.getName() + " enfante car != 0 : " +child.getName());
rt.addChild(child);
+ rt.addChildTime(child.getSelftime());
}
-
}
}
- if(rt.getParent() == "" && rt.getTime() != 0){
+ if(rt.getParentId().equals("") && rt.getChildtime() != 0){
res.add(rt);
}
}
+
+ /**
+ * Methode reccursive qui enleve les elements indesirables
+ * @param toCheck la liste a verifiee
+ * @param wanted la liste d'identifiant voulu
+ */
+ private void recursiveRemoveUnreportedTask(ArrayList<ReportTask> toCheck, ArrayList<String> wanted){
+ Iterator<ReportTask> iter = toCheck.iterator();
+
+ while(iter.hasNext()) {
+ ReportTask repT= iter.next();
+
+ if(!repT.getSubtasks().isEmpty()) {
+ recursiveRemoveUnreportedTask(repT.getSubtasks(), wanted);
+ }
+ if(!idIsInArray(repT.getTaskId(),wanted)){
+ repT.getRtParent().removeChildTime(repT.getSelftime());
+ iter.remove();
+ }
+ }
+
+ }
+
+ /**
+ * Methode qui détermine si l'id est dans la collection
+ * @param id l'identifiant a trouver
+ * @param list la list a parcourir
+ * @return un booleen de presence
+ */
+ private boolean idIsInArray(String id,ArrayList<String> list){
+ boolean res = false;
+
+ Iterator iter = list.iterator();
+ while(iter.hasNext()) {
+ if (id.equals(iter.next())) {
+ res =true;
+ iter.remove();
+ break;
+ }
+ }
+
+ return res;
+ }
}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java 2014-06-25 16:08:07 UTC (rev 3007)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java 2014-06-27 09:46:09 UTC (rev 3008)
@@ -94,7 +94,6 @@
protected class TodoTask extends java.util.TimerTask{
@Override
public void run() {
- log.info("Passage dans le run");
if(connected){
Modified: branches/ng-jtimer/src/main/webapp/js/controllers.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-25 16:08:07 UTC (rev 3007)
+++ branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-27 09:46:09 UTC (rev 3008)
@@ -1003,9 +1003,12 @@
$scope.htmlReport = data;
angular.forEach(data, function(d){
- console.log(d);
- $scope.reportedTask.push({name : d.name, time : d.time})
- })
+ $scope.reportedTask.push({
+ name : d.name,
+ selftime : d.selftime,
+ childtime : d.childtime,
+ subtasks : d.subtasks})
+ });
}
);
}
@@ -1031,24 +1034,22 @@
/**Check all checkbox*/
$scope.checkAll= function(){
- angular.forEach(tree.children, function(child){
- recurseChildEncapsulated(child,encapFonc(child, true))
- });
+ recurseChildEncapsulated(tree, true);
+
};
/**Uncheck all checkbox*/
$scope.uncheckAll= function(){
- angular.forEach(tree.children, function(child){
- recurseChildEncapsulated(child,encapFonc(child, false))
- });
+ recurseChildEncapsulated(tree,false);
};
/**
* Reccursion sur l'arbre
*/
- var recurseChildEncapsulated = function(child, encapsulated){
+ var recurseChildEncapsulated = function(child, bool){
angular.forEach(child.children, function(childnode){
- recurseChildEncapsulated(childnode, encapFonc(child, true))
+ recurseChildEncapsulated(childnode, bool)
+ encapFonc(childnode, bool)
});
}
Modified: branches/ng-jtimer/src/main/webapp/partials/reportModal.html
===================================================================
--- branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-06-25 16:08:07 UTC (rev 3007)
+++ branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-06-27 09:46:09 UTC (rev 3008)
@@ -7,7 +7,7 @@
<div >
<!-- Datepicker div -->
- <div style="border:1px solid black; display : inline-block;vertical-align: top;margin-left:2px;">
+ <div style="border:1px solid black; display : inline-block;vertical-align: top;margin-left:1px;margin-right:1px;">
<h4><u>Option :</u></h4>
De :
<div style="margin-left:2px;" ng-controller="ReportDatePickerCtrl" class="row">
@@ -22,7 +22,7 @@
</div>
A :
- <div style="margin-left:2px;" class="row" ng-controller="ReportDatePickerCtrl">
+ <div style="margin-left:1px;margin-right:1px;" class="row" ng-controller="ReportDatePickerCtrl">
<div class="col-md-6">
<p class="input-group medium_input">
<input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="obj.endDate" is-open="opened" min-date="obj.startDate" max-date="maxDate" ng-required="true" close-text="Close" />
@@ -77,15 +77,22 @@
<div style="display : inline-block; vertical-align: top; width : 350px">
<alert type="info" >
- <span>
- <h4>Projet :</h4>
- <div ng-repeat="task in reportedTask">
- {{task.name}} : {{task.time|time}}
- <div ng-repeat="subtask in task.subtasks" ng-include="reportNestedTask.html">
- {{subtask.name}} : {{subtask.time|time}}
+ <span ng-show="!reportTask.length" >
+ <h4><b>Génération du rapport :</b></h4>
+ <div ng-repeat="task in reportedTask" >
+ <b>Projet : {{task.name}} </b>
+
+ <div style="margin-left : 10px" ng-repeat="subtask in task.subtasks" ng-include="'./partials/reportNestedTask.html'">
+
</div>
+ Temps total : {{task.childtime|time}}
+ <hr/>
</div>
+ </span >
+
+ <span ng-show="reportedTask.length == 0" >
+ Pas de tâches sur cette période.
</span>
</alert>
Modified: branches/ng-jtimer/src/main/webapp/partials/reportNestedTask.html
===================================================================
--- branches/ng-jtimer/src/main/webapp/partials/reportNestedTask.html 2014-06-25 16:08:07 UTC (rev 3007)
+++ branches/ng-jtimer/src/main/webapp/partials/reportNestedTask.html 2014-06-27 09:46:09 UTC (rev 3008)
@@ -1,5 +1,8 @@
-<div ng-repeat="task in subtasks">
- {{task.name}} : {{task.time|time}}
- <div ng-repeat="subtask in subtasks" ng-include="reportNestedTask.html"></div>
-</div>
\ No newline at end of file
+<div style="display : block" >
+ <div style="min-width : 100px; max-width : 110px; display : inline-block;">-{{subtask.name}}</div>
+ <div style="min-width : 100px; max-width : 150px; display : inline-block;" ng-show="subtask.selftime != 0">{{subtask.selftime|time}} </div>
+</div>
+<div style="margin-left : 10px"
+ ng-repeat="subtask in subtask.subtasks" ng-include="'./partials/reportNestedTask.html'">
+</div>
1
0
r3007 - in branches/ng-jtimer/src/main: java/org/chorem/jtimer/storage java/org/chorem/jtimer/utils java/org/chorem/jtimer/web resources webapp/js webapp/partials
by obruce@users.chorem.org 25 Jun '14
by obruce@users.chorem.org 25 Jun '14
25 Jun '14
Author: obruce
Date: 2014-06-25 18:08:07 +0200 (Wed, 25 Jun 2014)
New Revision: 3007
Url: http://forge.chorem.org/projects/jtimer/repository/revisions/3007
Log:
construction arbre serveur +json du rapport + d?\195?\169but pr?\195?\169sentation rapport dans l'interface
Added:
branches/ng-jtimer/src/main/webapp/partials/reportNestedTask.html
Modified:
branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
branches/ng-jtimer/src/main/resources/jtimer-default.properties
branches/ng-jtimer/src/main/webapp/js/controllers.js
branches/ng-jtimer/src/main/webapp/js/service.js
branches/ng-jtimer/src/main/webapp/partials/reportModal.html
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-24 13:20:34 UTC (rev 3006)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-25 16:08:07 UTC (rev 3007)
@@ -15,6 +15,7 @@
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
/**
@@ -433,9 +434,9 @@
return times;
}
- public List getReportByProject(Long startDate, Long endDate){
+ public HashMap getReportByProject(Long startDate, Long endDate){
- List list = new ArrayList<ReportTask>();
+ HashMap map = new HashMap();
PreparedStatement statement = null;
PreparedStatement statement2 = null;
try{
@@ -446,8 +447,17 @@
ResultSet rs = statement.executeQuery();
while(rs.next()){
- list.add(new ReportTask(rs.getString("task"),rs.getString("taskid"),
- rs.getString("parent") , rs.getLong("totalduration"), rs.getLong("creationDate")));
+ ReportTask task = new ReportTask(rs.getString("name"),
+ rs.getString("taskId"),
+ rs.getString("parent"),
+ rs.getLong("totalduration"));
+
+ ArrayList tmp = new ArrayList();
+ if(map.containsKey(rs.getString("parent"))){
+ tmp = (ArrayList) map.get(rs.getString("parent"));
+ }
+ tmp.add(task);
+ map.put(rs.getString("parent"), tmp);
}
// not timed tasks
@@ -455,8 +465,17 @@
rs = statement2.executeQuery();
while(rs.next()){
- list.add(new ReportTask(rs.getString("name"), rs.getString("taskId"),
- rs.getString("parent"), (long) 0, rs.getLong("creationDate")));
+ ReportTask task = new ReportTask(rs.getString("name"),
+ rs.getString("taskId"),
+ rs.getString("parent"),
+ (long) 0);
+
+ ArrayList tmp = new ArrayList();
+ if(map.containsKey(rs.getString("parent"))){
+ tmp = (ArrayList) map.get(rs.getString("parent"));
+ }
+ tmp.add(task);
+ map.put(rs.getString("parent"), tmp);
}
}catch(SQLException ex) {
@@ -466,7 +485,7 @@
closeStatement(statement2);
}
- return list;
+ return map;
}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java 2014-06-24 13:20:34 UTC (rev 3006)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java 2014-06-25 16:08:07 UTC (rev 3007)
@@ -19,6 +19,8 @@
protected static final Log log = LogFactory.getLog(MustacheReport.class);
+ protected ArrayList reprArray;
+
List<ReportTask> tasks;
List tasks() {
@@ -68,9 +70,11 @@
/**
* Constructeur
* @param mustacheList la liste des taches
+ * @param reprArray
*/
- public MustacheHandler(List<ReportTask> mustacheList){
+ public MustacheHandler(List mustacheList, ArrayList reprArray){
this.tasks = mustacheList;
+ this.reprArray = reprArray;
log.debug(mustacheList);
}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java 2014-06-24 13:20:34 UTC (rev 3006)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java 2014-06-25 16:08:07 UTC (rev 3007)
@@ -10,6 +10,7 @@
import java.io.IOException;
import java.io.StringWriter;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -41,7 +42,7 @@
* Methode qui cree une moustache
* @throws IOException
*/
- public String createByProjectMustache(String type, long start, long end) throws IOException {
+ public String createByProjectMustache(String type, long start, long end, ArrayList reprArray) throws IOException {
log.info("create a Mustache by project");
MustacheFactory mf = new DefaultMustacheFactory();
@@ -49,10 +50,10 @@
//On recupere les taches
- mustacheList = storage.getReportByProject(start, end);
+ //mustacheList = storage.getReportByProject(start, end);
StringWriter sw = new StringWriter();
- mustache.execute(sw, new MustacheHandler(mustacheList)).flush();
+ mustache.execute(sw, new MustacheHandler(mustacheList,reprArray)).flush();
return sw.toString();
}
@@ -63,9 +64,6 @@
MustacheFactory mf = new DefaultMustacheFactory();
Mustache mustache = mf.compile("ByWeek_template.mustache");
-
- storage.getReportByWeek(start, end);
-
StringWriter sw = new StringWriter();
//mustache.execute(sw, MustacheHandler.getByWeekReport());
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java 2014-06-24 13:20:34 UTC (rev 3006)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java 2014-06-25 16:08:07 UTC (rev 3007)
@@ -1,10 +1,6 @@
package org.chorem.jtimer.utils;
-import org.chorem.jtimer.utils.Resource.ReportTime;
-
import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
/**
* Created by olivia on 16/06/14.
@@ -19,10 +15,10 @@
protected String name;
protected String taskId;
protected String parent;
- protected ReportTime time;
- protected List subtasks;
+ protected long time;
+ protected boolean isReported;
- protected Date creationDate;
+ protected ArrayList subtasks;
/**
* Constructeur
@@ -31,12 +27,12 @@
* @param parent l'identifiant du parent
* @param time le temps
*/
- public ReportTask(String name, String taskId, String parent, long time,long date){
- this.creationDate = new Date(date);
+ public ReportTask(String name, String taskId, String parent, long time){
this.taskId = taskId;
this.name = name;
this.parent = parent;
- this.time = new ReportTime(time);
+ this.time = time;
+ this.isReported = false;
this.subtasks = new ArrayList();
}
@@ -44,7 +40,7 @@
/** Ajout */
public void addChild(ReportTask t){
this.subtasks.add(t);
- this.time.addTime(t.getTime());
+ this.time+= t.getTime();
}
/**Getter */
@@ -61,10 +57,18 @@
return parent;
}
- public ReportTime getTime() {
+ public long getTime() {
return time;
}
+ public boolean isReported() {
+ return isReported;
+ }
+
+ public void setReported(boolean isReported) {
+ this.isReported = isReported;
+ }
+
@Override
public String toString() {
return "ReportTask{" +
@@ -72,7 +76,7 @@
", taskId='" + taskId + '\'' +
", parent='" + parent + '\'' +
", time=" + time +
- ", subtasks=" + subtasks +
+ ", subtasks=" + subtasks.toString() +
'}';
}
}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-06-24 13:20:34 UTC (rev 3006)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-06-25 16:08:07 UTC (rev 3007)
@@ -1,14 +1,19 @@
package org.chorem.jtimer.web;
+import com.google.gson.Gson;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.chorem.jtimer.utils.MustacheReport;
+import org.chorem.jtimer.storage.Storage;
+import org.chorem.jtimer.utils.ReportTask;
import org.restlet.data.MediaType;
import org.restlet.representation.Representation;
import org.restlet.representation.StringRepresentation;
-import org.restlet.resource.Get;
+import org.restlet.resource.Post;
+import org.restlet.resource.ResourceException;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
/**
* Created by olivia on 11/06/14.
@@ -21,17 +26,29 @@
protected static final Log log = LogFactory.getLog(ReportResource.class);
+ protected Storage storage;
+
+ @Override
+ protected void doInit() throws ResourceException {
+ storage = (Storage) getContext().getAttributes().get(Storage.class.getName());
+ }
/**
* Methode qui retourne la representation du rapport
* Suite a une requete de type GET
*
* @return representation du rapport
*/
- @Get
- public Representation getReport() throws IOException {
+ @Post("json")
+ public Representation getReport(Representation representation) throws IOException {
+ ArrayList toReport = new ArrayList();
+ if(representation.isAvailable()) {
+ String repr1 = representation.getText();
+ Gson gson =new Gson();
+ toReport = gson.fromJson(repr1, ArrayList.class);
+ }
+
String type ="BY_PROJECT";
- String res="";
long startDate = (long) 0;
long endDate = Long.MAX_VALUE;
@@ -52,13 +69,49 @@
}
- MustacheReport report = new MustacheReport(getContext());
+ //MustacheReport report = new MustacheReport(getContext());
+ //res = report.createByProjectMustache(type, startDate, endDate,reprArray);
+ Gson gson = new Gson();
+ HashMap storedTask = storage.getReportByProject(startDate, endDate);
+ ArrayList res = new ArrayList();
- res = report.createByProjectMustache(type, startDate, endDate);
- log.info("Ce qui est produit " + res);
+ //On recree l'arbre
+ for(ReportTask rt: (ArrayList<ReportTask>)storedTask.get("")){
+ reccursivSortTask(storedTask, rt, res );
+ }
+ //On enleve les éléments non voulus
- return new StringRepresentation(res, MediaType.TEXT_HTML);
+
+
+ String json = gson.toJson(res, ArrayList.class);
+
+ return new StringRepresentation(json, MediaType.TEXT_HTML);
}
-}
\ No newline at end of file
+
+ /**
+ * Method that sorts in a array a mapped tree
+ * @param map the map to sort
+ * @param rt the current task
+ * @param res the tree array
+ */
+ private void reccursivSortTask(HashMap map, ReportTask rt, ArrayList res ){
+
+ if(map.containsKey(rt.getTaskId())) {
+ for (ReportTask child : (ArrayList<ReportTask>) map.get(rt.getTaskId())) {
+ reccursivSortTask(map, child, res);
+
+ if(child.getTime() != (long) 0){
+ rt.addChild(child);
+ }
+
+ }
+ }
+
+ if(rt.getParent() == "" && rt.getTime() != 0){
+ res.add(rt);
+ }
+ }
+}
+
Modified: branches/ng-jtimer/src/main/resources/jtimer-default.properties
===================================================================
--- branches/ng-jtimer/src/main/resources/jtimer-default.properties 2014-06-24 13:20:34 UTC (rev 3006)
+++ branches/ng-jtimer/src/main/resources/jtimer-default.properties 2014-06-25 16:08:07 UTC (rev 3007)
@@ -65,17 +65,17 @@
WHERE TA.taskId = TI.taskid \
AND TA.removed > 0 \
GROUP BY TA.taskId
-jtimer.storage.select.report.timedtasks=SELECT TA.taskId AS taskid, TA.name AS task, TA.parent AS parent, \
- TA.creationDate AS creationDate, sum(TI.duration) AS totalduration \
+jtimer.storage.select.report.timedtasks=SELECT TA.* , sum(TI.duration) AS totalduration \
FROM task TA, tasktime TI \
WHERE TA.taskId = TI.taskid \
AND TA.creationDate > ? \
AND TA.creationDate < ? \
+ AND TA.removed = 0 \
GROUP BY TA.taskId \
ORDER BY TA.creationDate DESC
jtimer.storage.select.report.roottasks=SELECT * \
FROM task \
- WHERE (taskId not in (SELECT taskid FROM tasktime) AND parent = '' )
+ WHERE (taskId not in (SELECT taskid FROM tasktime) AND removed = 0 )
###
#DELETE
jtimer.storage.delete.time.withid=DELETE FROM tasktime WHERE uuid = ?
Modified: branches/ng-jtimer/src/main/webapp/js/controllers.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-24 13:20:34 UTC (rev 3006)
+++ branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-25 16:08:07 UTC (rev 3007)
@@ -1,4 +1,4 @@
-function TasksCtrl($scope, $interval, $timeout, $q, serverTaskAccess, serverTimeAccess, $localStorage, $window, $document, $modal, wtWebsocket, jTimerWebsocket) {
+function TasksCtrl($scope, $interval, $timeout, $q, serverTaskAccess, serverTimeAccess, serverReportAccess, $localStorage, $window, $document, $modal, wtWebsocket, jTimerWebsocket) {
// {Boolean} vrai si on est online
$scope.online = $window.navigator.onLine;
@@ -764,8 +764,6 @@
return moment().format("HH:mm DD/MM/YYYY");
};
- console.log(jTimerWebsocket);
-
jTimerWebsocket.subscribe({
message: function(data) {
//var jsData = JSON.parse(data);
@@ -960,7 +958,7 @@
};
}
-function ReportModalInstanceCtrl($scope, $modalInstance,$http, $sce, tree){
+function ReportModalInstanceCtrl($scope, $modalInstance,$http, $sce, serverReportAccess, tree){
$scope.tree = tree;
@@ -986,24 +984,79 @@
var deb =($scope.obj.startDate).getTime();
var end =($scope.obj.endDate).getTime();
- //TODO obruce envoyer les taches à reporter
- $http({method: "GET", url: "/rest/report",
- params:{start_Date : deb, end_Date : end}})
+ toReportTask = [];
+ $scope.reportedTask = [];
+
+ var recurseGenerateChildReport = function(child){
+
+ angular.forEach(child.children, function(childnode){recurseGenerateChildReport(childnode)});
+ if(child.task.isReported){
+ toReportTask.push(child.task.taskId);
+ }
+ }
+
+ angular.forEach(tree.children, function(child){recurseGenerateChildReport(child)});
+
+ $http({method: "POST", url: "/rest/report",
+ params:{start_Date : deb, end_Date : end}, data : angular.toJson(toReportTask)})
.success(function(data){
- $scope.htmlReport = data;// data should be text string here (only if the server response is text/plain)
+
+ $scope.htmlReport = data;
+ angular.forEach(data, function(d){
+ console.log(d);
+ $scope.reportedTask.push({name : d.name, time : d.time})
+ })
}
);
}
-
+ /**
+ * Methode qui check les box du parent jusqu'aux enfants
+ * @param node le noeud concerné
+ */
$scope.setChildrenCheckbox = function(node){
- angular.forEach(node.children, function(child) {
+ var recurseReportChild = function(child){
+
+ angular.forEach(child.children, function(childnode){
+ recurseReportChild(childnode)
+ });
child.task.isReported = node.task.isReported;
+ }
+
+ angular.forEach(node.children, function(child){
+ recurseReportChild(child)
});
}
- //TODO obruce faire un check et uncheck all
+ /**Check all checkbox*/
+ $scope.checkAll= function(){
+ angular.forEach(tree.children, function(child){
+ recurseChildEncapsulated(child,encapFonc(child, true))
+ });
+ };
+
+ /**Uncheck all checkbox*/
+ $scope.uncheckAll= function(){
+ angular.forEach(tree.children, function(child){
+ recurseChildEncapsulated(child,encapFonc(child, false))
+ });
+ };
+
+ /**
+ * Reccursion sur l'arbre
+ */
+ var recurseChildEncapsulated = function(child, encapsulated){
+ angular.forEach(child.children, function(childnode){
+ recurseChildEncapsulated(childnode, encapFonc(child, true))
+ });
+ }
+
+ /**Fonction encapsule*/
+ var encapFonc = function(child, bool){
+ child.task.isReported= bool;
+ }
+
$scope.close = function() {
$modalInstance.close();
};
Modified: branches/ng-jtimer/src/main/webapp/js/service.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/service.js 2014-06-24 13:20:34 UTC (rev 3006)
+++ branches/ng-jtimer/src/main/webapp/js/service.js 2014-06-25 16:08:07 UTC (rev 3007)
@@ -37,7 +37,7 @@
// Encapsule l'acces au server
return $resource("/rest/report",{},
{
- get : {method: 'GET', isArray: false},
+ getReport : {method: 'POST'},
}
);
}
Modified: branches/ng-jtimer/src/main/webapp/partials/reportModal.html
===================================================================
--- branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-06-24 13:20:34 UTC (rev 3006)
+++ branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-06-25 16:08:07 UTC (rev 3007)
@@ -67,6 +67,9 @@
</div>
</div>
+
+ <button class="btn btn-primary" ng-click="checkAll()">Check All</button>
+ <button class="btn btn-primary" ng-click="uncheckAll()">Unckeck All</button>
</div>
</div>
@@ -75,7 +78,14 @@
<alert type="info" >
<span>
- <div ng-bind-html="toHTML(htmlReport)"></div>
+ <h4>Projet :</h4>
+ <div ng-repeat="task in reportedTask">
+ {{task.name}} : {{task.time|time}}
+ <div ng-repeat="subtask in task.subtasks" ng-include="reportNestedTask.html">
+ {{subtask.name}} : {{subtask.time|time}}
+ </div>
+
+ </div>
</span>
</alert>
@@ -86,7 +96,6 @@
-
<div class="modal-footer">
<button class="btn btn-primary" ng-click="generateReport()">Générer</button>
<button class="btn btn-primary" ng-click="close()">Fermer</button>
Added: branches/ng-jtimer/src/main/webapp/partials/reportNestedTask.html
===================================================================
--- branches/ng-jtimer/src/main/webapp/partials/reportNestedTask.html (rev 0)
+++ branches/ng-jtimer/src/main/webapp/partials/reportNestedTask.html 2014-06-25 16:08:07 UTC (rev 3007)
@@ -0,0 +1,5 @@
+<div ng-repeat="task in subtasks">
+ {{task.name}} : {{task.time|time}}
+ <div ng-repeat="subtask in subtasks" ng-include="reportNestedTask.html"></div>
+
+</div>
\ No newline at end of file
1
0
r3006 - in branches/ng-jtimer/src/main: java/org/chorem/jtimer/storage java/org/chorem/jtimer/web resources webapp/js webapp/partials
by obruce@users.chorem.org 24 Jun '14
by obruce@users.chorem.org 24 Jun '14
24 Jun '14
Author: obruce
Date: 2014-06-24 15:20:34 +0200 (Tue, 24 Jun 2014)
New Revision: 3006
Url: http://forge.chorem.org/projects/jtimer/repository/revisions/3006
Log:
correction config + checkbox rapport
Modified:
branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TasksResource.java
branches/ng-jtimer/src/main/resources/jtimer-default.properties
branches/ng-jtimer/src/main/webapp/js/controllers.js
branches/ng-jtimer/src/main/webapp/js/entities.js
branches/ng-jtimer/src/main/webapp/partials/reportModal.html
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-23 15:38:30 UTC (rev 3005)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-24 13:20:34 UTC (rev 3006)
@@ -152,7 +152,7 @@
statement.executeUpdate(config.getStorageQueryCreateTableVersion());
statement.executeUpdate(config.getStorageQueryCreateTableTask());
- statement.executeUpdate(config.getStorageQueryDeleteTime());
+ statement.executeUpdate(config.getStorageQueryCreateTableTime());
} catch (SQLException ex) {
throw new StorageException("Can't create schema", ex);
@@ -199,6 +199,8 @@
statement = connection.prepareStatement(config.getStorageQuerySelectTimedTask());
statement.setLong(1, date);
+ log.debug(statement.toString());
+
ResultSet rs = statement.executeQuery();
while (rs.next()) {
TimerTask task = new TimerTask();
@@ -260,6 +262,7 @@
} finally {
closeStatement(statement);
}
+ log.info("insert done");
}
public void modifyTask(TimerTask task) {
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TasksResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TasksResource.java 2014-06-23 15:38:30 UTC (rev 3005)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TasksResource.java 2014-06-24 13:20:34 UTC (rev 3006)
@@ -84,7 +84,7 @@
date = Long.valueOf(getQuery().getValues("date"));
} catch (Exception e) {
if(log.isErrorEnabled()){
- log.error("enttities.getTasks date revenu null");
+ log.warn("entities.getTasks REST date null");
}
}
ArrayList<TimerTask> timerTasks;
Modified: branches/ng-jtimer/src/main/resources/jtimer-default.properties
===================================================================
--- branches/ng-jtimer/src/main/resources/jtimer-default.properties 2014-06-23 15:38:30 UTC (rev 3005)
+++ branches/ng-jtimer/src/main/resources/jtimer-default.properties 2014-06-24 13:20:34 UTC (rev 3006)
@@ -2,7 +2,7 @@
# jTimer default properties
###
# jTimer storage path
-jtimer.storage.path=/home/olivia/Bureau/jtimer/jtimer8081
+jtimer.storage.path=/home/olivia/Bureau/jtimer/jtimerNew
###
# SQL properties
###
@@ -38,19 +38,19 @@
#INSERT
jtimer.storage.insert.version.number=INSERT INTO VERSION VALUES('2.0')
jtimer.storage.insert.task=INSERT INTO task (name, parent, taskId, hidden, note,creationDate, modificationDate, removed) VALUES (?, ?, ?, ?, ?,?, ?, ?)
-jtimer.storage.insert.time=INSERT INTO tasktime (taskid, date, uuid, duration, modificationDate, removed) VALUES(?, ?, ?, ?, ?, ?)
+jtimer.storage.insert.time=INSERT INTO tasktime (taskid, date, uuid, duration, modificationDate, removed) VALUES (?, ?, ?, ?, ?, ?)
###
#SELECT
jtimer.storage.select.table.name=SELECT table_name FROM information_schema.tables;
jtimer.storage.select.count.task=SELECT count(*) FROM task WHERE removed = 0
jtimer.storage.select.timed.task=SELECT TA.*, sum(TI.duration) AS totalduration \
FROM task TA, tasktime TI \
- WHERE TA.taskId = TI.taskid \
- AND TA.modificationDate > ? \
- GROUP BY TA.taskId
+ WHERE TA.taskId = TI.taskid \
+ AND TA.modificationDate > ? \
+ GROUP BY TA.taskId
jtimer.storage.select.nottimed.task=SELECT * \
FROM task \
- WHERE (taskId not in (SELECT taskid FROM task)) \
+ WHERE (taskId not in (SELECT taskid FROM tasktime)) \
AND task.modificationDate > ?
jtimer.storage.select.time.withdate=SELECT TA.taskId AS mytask, TI.* \
FROM task TA, tasktime TI \
@@ -66,16 +66,16 @@
AND TA.removed > 0 \
GROUP BY TA.taskId
jtimer.storage.select.report.timedtasks=SELECT TA.taskId AS taskid, TA.name AS task, TA.parent AS parent, \
- TA.creationDate AS creationDate, sum(TI.duration) AS totalduration \
+ TA.creationDate AS creationDate, sum(TI.duration) AS totalduration \
FROM task TA, tasktime TI \
- WHERE TA.taskId = TI.taskid\
+ WHERE TA.taskId = TI.taskid \
AND TA.creationDate > ? \
AND TA.creationDate < ? \
GROUP BY TA.taskId \
ORDER BY TA.creationDate DESC
jtimer.storage.select.report.roottasks=SELECT * \
FROM task \
- WHERE (taskId not in (SELECT taskid FROM task) AND parent = '' )
+ WHERE (taskId not in (SELECT taskid FROM tasktime) AND parent = '' )
###
#DELETE
jtimer.storage.delete.time.withid=DELETE FROM tasktime WHERE uuid = ?
Modified: branches/ng-jtimer/src/main/webapp/js/controllers.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-23 15:38:30 UTC (rev 3005)
+++ branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-24 13:20:34 UTC (rev 3006)
@@ -909,8 +909,11 @@
var modalInstance = $modal.open({
templateUrl: 'partials/reportModal.html',
controller: ReportModalInstanceCtrl,
-
-
+ resolve: {
+ tree : function(){
+ return $scope.tree;
+ }
+ }
});
modalInstance.result.then(function (item) {
@@ -957,8 +960,10 @@
};
}
-function ReportModalInstanceCtrl($scope, $modalInstance,$http, $sce){
+function ReportModalInstanceCtrl($scope, $modalInstance,$http, $sce, tree){
+ $scope.tree = tree;
+
$scope.obj={
startDate : new Date(),
endDate : new Date()
@@ -967,7 +972,7 @@
$scope.obj.endDate.setHours(23,59,59,999);
$scope.radioModel = '5';
- $scope.htmlReport="";
+ $scope.htmlReport="Générer un rapport";
$scope.toHTML = function (data) {
return $sce.trustAsHtml(data);
@@ -980,6 +985,8 @@
var deb =($scope.obj.startDate).getTime();
var end =($scope.obj.endDate).getTime();
+
+ //TODO obruce envoyer les taches à reporter
$http({method: "GET", url: "/rest/report",
params:{start_Date : deb, end_Date : end}})
.success(function(data){
@@ -989,8 +996,13 @@
}
- $scope.changeFonc= function(){
+ $scope.setChildrenCheckbox = function(node){
+
+ angular.forEach(node.children, function(child) {
+ child.task.isReported = node.task.isReported;
+ });
}
+ //TODO obruce faire un check et uncheck all
$scope.close = function() {
$modalInstance.close();
Modified: branches/ng-jtimer/src/main/webapp/js/entities.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/entities.js 2014-06-23 15:38:30 UTC (rev 3005)
+++ branches/ng-jtimer/src/main/webapp/js/entities.js 2014-06-24 13:20:34 UTC (rev 3006)
@@ -402,6 +402,7 @@
this.name = name;
this.description = "";
+ this.isReported = true;
this.tags = [];
this.syncOptions = {};
};
Modified: branches/ng-jtimer/src/main/webapp/partials/reportModal.html
===================================================================
--- branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-06-23 15:38:30 UTC (rev 3005)
+++ branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-06-24 13:20:34 UTC (rev 3006)
@@ -1,14 +1,16 @@
<div>
- <h2>Option du rapport :</h2>
+ <h2>Rapport :</h2>
</div>
<hr/>
<div >
+
<!-- Datepicker div -->
- <div style="display : inline-block;vertical-align: top;">
+ <div style="border:1px solid black; display : inline-block;vertical-align: top;margin-left:2px;">
+ <h4><u>Option :</u></h4>
De :
- <div ng-controller="ReportDatePickerCtrl" class="row">
+ <div style="margin-left:2px;" ng-controller="ReportDatePickerCtrl" class="row">
<div class="col-md-6">
<p class="input-group medium_input">
<input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="obj.startDate" is-open="opened" min-date="minDate" max-date="obj.endDate" ng-required="true" close-text="Close" />
@@ -20,7 +22,7 @@
</div>
A :
- <div class="row" ng-controller="ReportDatePickerCtrl">
+ <div style="margin-left:2px;" class="row" ng-controller="ReportDatePickerCtrl">
<div class="col-md-6">
<p class="input-group medium_input">
<input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="obj.endDate" is-open="opened" min-date="obj.startDate" max-date="maxDate" ng-required="true" close-text="Close" />
@@ -30,13 +32,43 @@
</p>
</div>
</div>
-
+ <hr/>
<div>
+ <h4><u>Projet :</u></h4>
- </div>
+ <!--la div de l'arbre-->
+ <div>
+ <div class='table'>
+ <!-- Div du body wt-tree-repeat Angular js directive in app.js-->
+ <div class="tbody"
+ wt-tree-repeat="tree | orderBy:'task.name'"
+ wt-force-open="query || forceExpanded">
+ <div class="tr" ng-class="{'current-row' : ($node.task === currentTask), 'selected-row' : ($node.task === selectedTask)}">
+ <!--ng-click="setSelectedTask($node.task)"
+ ng-keydown="keyPressed($event)">ng-dblclick="timeTask($node.task)"-->
+ <div class="td">
+ <span class="spacer level{{$level}}"></span>
+
+ <!--Task state icon-->
+ <i class="glyphicon glyphicon-ban-circle" ng-show="$state=='empty'"></i>
+ <i class="glyphicon glyphicon-plus-sign" ng-click="$toggleState()" ng-show="$state=='close'"></i>
+ <i class="glyphicon glyphicon-minus-sign" ng-click="$toggleState()" ng-show="$state=='open'"></i>
+
+ <!--Project name visible and editable -->
+ <input type="checkbox" ng-model="$node.task.isReported" ng-change="setChildrenCheckbox($node)">
+ <span>{{$node.task.name}} </span>
+
+ </div>
+ </div>
+ </div>
+ </div>
+
+ </div>
+ </div>
+
</div>
<div style="display : inline-block; vertical-align: top; width : 350px">
@@ -53,7 +85,9 @@
</div>
+
+
<div class="modal-footer">
- <button class="btn btn-primary" ng-click="generateReport()">Generer</button>
+ <button class="btn btn-primary" ng-click="generateReport()">Générer</button>
<button class="btn btn-primary" ng-click="close()">Fermer</button>
</div>
\ No newline at end of file
1
0
r3005 - in branches/ng-jtimer/src/main: java/org/chorem/jtimer/config java/org/chorem/jtimer/storage java/org/chorem/jtimer/web resources webapp/js
by obruce@users.chorem.org 23 Jun '14
by obruce@users.chorem.org 23 Jun '14
23 Jun '14
Author: obruce
Date: 2014-06-23 17:38:30 +0200 (Mon, 23 Jun 2014)
New Revision: 3005
Url: http://forge.chorem.org/projects/jtimer/repository/revisions/3005
Log:
requ?\195?\170te sql mise dans les propri?\195?\169t?\195?\169s avec nuiton config
Removed:
branches/ng-jtimer/src/main/resources/jtimer-query.properties
Modified:
branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfig.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfigOption.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimesResource.java
branches/ng-jtimer/src/main/resources/jtimer-default.properties
branches/ng-jtimer/src/main/webapp/js/controllers.js
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfig.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfig.java 2014-06-20 16:07:12 UTC (rev 3004)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfig.java 2014-06-23 15:38:30 UTC (rev 3005)
@@ -42,7 +42,6 @@
}
-
public JtimerConfig(String configFileName) throws Exception {
try {
@@ -61,6 +60,7 @@
}
appConfig = defaultConfig;
}
+
} catch (Exception e) {
throw new Exception("Can't read property file");
}
@@ -74,4 +74,80 @@
public String getStoragePath(){
return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_PATH.getKey());
}
+
+ public String getStorageTableTask(){return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_TABLE_TASK.getKey());}
+ public String getStorageTableTime(){return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_TABLE_TIME.getKey());}
+ public String getStorageTableVersion(){return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_TABLE_VERSION.getKey());}
+
+ public String getStorageQueryCreateTableVersion(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_CREATE_TABLE_VERSION.getKey());
+ }
+
+ public String getStorageQueryCreateTableTask(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_CREATE_TABLE_TASK.getKey());
+ }
+
+ public String getStorageQueryCreateTableTime(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_CREATE_TABLE_TIME.getKey());
+ }
+
+ public String getStorageQueryInsertVersionNumber(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_INSERT_VERSION_NUMBER.getKey());
+ }
+
+ public String getStorageQueryInsertTask(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_INSERT_TASK.getKey());
+ }
+
+ public String getStorageQueryInsertTime(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_INSERT_TIME.getKey());
+ }
+
+ public String getStorageQuerySelectTableName(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_SELECT_TABLE_NAME.getKey());
+ }
+
+ public String getStorageQuerySelectCountTask(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_SELECT_COUNT_TASK.getKey());
+ }
+
+ public String getStorageQuerySelectTimedTask(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_SELECT_TIMED_TASK.getKey());
+ }
+ public String getStorageQuerySelectNotTimedTask(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_SELECT_NOTTIMED_TASK.getKey());
+ }
+ public String getStorageQuerySelectTaskTimeWithDate(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_SELECT_TIME_WITHDATE.getKey());
+ }
+ public String getStorageQuerySelectNotRemovedTaskTime(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_SELECT_NOTREMOVED_TASKTIME.getKey());
+ }
+ public String getStorageQuerySelectRemovedTaskTime(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_SELECT_REMOVED_TASKTIME.getKey());
+ }
+ public String getStorageQuerySelectReportTasks(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_SELECT_REPORT_TIMEDTASKS.getKey());
+ }
+ public String getStorageQuerySelectReportRootTask(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_SELECT_REPORT_ROOTTASK.getKey());
+ }
+ public String getStorageQueryDeleteTime(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_DELETE_TIME_WITHID.getKey());
+ }
+ public String getStorageQueryDeleteTask(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_DELETE_TASK_WITHID.getKey());
+ }
+ public String getStorageQueryUpdateTask(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_UPDATE_TASK_WITHID.getKey());
+ }
+ public String getStorageQueryUpdateTime(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_UPDATE_TIME_WITHID.getKey());
+ }
+ public String getStorageQueryUpdateTaskToRemove(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_UPDATE_TASK_FORREMOVE.getKey());
+ }
+ public String getStorageQueryUpdateTimeToRemove(){
+ return appConfig.getOption(JtimerConfigOption.JTIMER_STORAGE_UPDATE_TIME_FORREMOVE.getKey());
+ }
}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfigOption.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfigOption.java 2014-06-20 16:07:12 UTC (rev 3004)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/config/JtimerConfigOption.java 2014-06-23 15:38:30 UTC (rev 3005)
@@ -10,6 +10,7 @@
* Package name : org.chorem.jtimer.config
*/
public enum JtimerConfigOption implements ConfigOptionDef {
+ /**Storage**/
JTIMER_STORAGE_PATH(
"jtimer.storage.path",
"chemin qui indique où se trouve le stockage",
@@ -19,8 +20,155 @@
"jtimer.storage.credentials",
"indique les éléments dont on a besoin pour s'authentifier à la base",
"",
- String.class);
+ String.class
+ ),
+ JTIMER_STORAGE_TABLE_TASK(
+ "jtimer.storage.table.task",
+ "le nom de la table des tâches",
+ "task",
+ String.class
+ ),
+ JTIMER_STORAGE_TABLE_TIME(
+ "jtimer.storage.table.time",
+ "le nom de la table des temps",
+ "tasktime",
+ String.class
+ ),
+ JTIMER_STORAGE_TABLE_VERSION(
+ "jtimer.storage.table.version",
+ "le nom de la table des version",
+ "tasktime",
+ String.class
+ ),
+ JTIMER_STORAGE_CREATE_TABLE_VERSION(
+ "jtimer.storage.create.table.version",
+ "requête de création la table des version",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_CREATE_TABLE_TASK(
+ "jtimer.storage.create.table.task",
+ "requête de création la table des tâches",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_CREATE_TABLE_TIME(
+ "jtimer.storage.create.table.time",
+ "requête de création la table des temps",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_INSERT_VERSION_NUMBER(
+ "jtimer.storage.insert.version.number",
+ "requête d'insertion dans la table des versions",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_INSERT_TASK(
+ "jtimer.storage.insert.task",
+ "requête d'insertion dans la table des tâches",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_INSERT_TIME(
+ "jtimer.storage.insert.time",
+ "requête d'insertion dans la table des temps",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_SELECT_TABLE_NAME(
+ "jtimer.storage.select.table.name",
+ "requête de selection des noms dans le table name",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_SELECT_COUNT_TASK(
+ "jtimer.storage.select.count.task",
+ "requête comptant le nombre de tâches dans le stockaqe",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_SELECT_TIMED_TASK(
+ "jtimer.storage.select.timed.task",
+ "requête de selection des tâches minutées",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_SELECT_NOTTIMED_TASK(
+ "jtimer.storage.select.nottimed.task",
+ "requête de selection des tâches non minutées",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_SELECT_TIME_WITHDATE(
+ "jtimer.storage.select.time.withdate",
+ "requête de récupération de tous les temps",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_SELECT_NOTREMOVED_TASKTIME(
+ "jtimer.storage.select.notremoved.tasktime",
+ "requête de selection des temps de tâches non supprimés",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_SELECT_REMOVED_TASKTIME(
+ "jtimer.storage.select.removed.tasktime",
+ "requête de selection des temps de tâches non supprimés",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_SELECT_REPORT_TIMEDTASKS(
+ "jtimer.storage.select.report.timedtasks",
+ "requête de selection des taches minutées entre deux bornes",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_SELECT_REPORT_ROOTTASK(
+ "jtimer.storage.select.report.roottasks",
+ "requête de selection des taches root",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_DELETE_TIME_WITHID(
+ "jtimer.storage.delete.time.withid",
+ "requête de suppression d'un temps avec un identifiant",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_DELETE_TASK_WITHID(
+ "jtimer.storage.delete.task.withid",
+ "requête de suppression d'une tâches avec un identifiant",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_UPDATE_TASK_WITHID(
+ "jtimer.storage.update.task.withid",
+ "requête de mise à jour d'une taches avec un identifiant",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_UPDATE_TIME_WITHID(
+ "jtimer.storage.update.time.withid",
+ "requête de mise à jour d'un temps avec un identifiant",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_UPDATE_TASK_FORREMOVE(
+ "jtimer.storage.update.task.forremove",
+ "requête de de changement de statut (remove) d'une tâches avec un identifiant",
+ "",
+ String.class
+ ),
+ JTIMER_STORAGE_UPDATE_TIME_FORREMOVE(
+ "jtimer.storage.update.time.forremove",
+ "requête de de changement de statut (remove) d'un temps avec un identifiant",
+ "",
+ String.class
+ );
+
+
public final String key;
public final String description;
public String defaultValue;
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-20 16:07:12 UTC (rev 3004)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-23 15:38:30 UTC (rev 3005)
@@ -2,6 +2,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.chorem.jtimer.config.JtimerConfig;
import org.chorem.jtimer.entities.TimerTask;
import org.chorem.jtimer.entities.TimerTime;
import org.chorem.jtimer.utils.ReportTask;
@@ -14,9 +15,7 @@
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
/**
* Implementation du stockage des taches en base de données basée sur h2.
@@ -39,12 +38,14 @@
protected static final String TABLE_VERSION = "version";
protected String STORAGE_PATH;
+ protected JtimerConfig config;
protected Connection connection;
- public Storage(String path) {
+ public Storage(JtimerConfig conf) {
- this.STORAGE_PATH = path;
+ this.config = conf;
+ this.STORAGE_PATH = config.getStoragePath();
try {
if (log.isDebugEnabled()) {
@@ -91,7 +92,7 @@
// set new version in schema
Statement statement = conn.createStatement();
- statement.executeUpdate("INSERT INTO VERSION VALUES('2.0')");
+ statement.executeUpdate(config.getStorageQueryInsertVersionNumber());
}
return conn;
@@ -124,7 +125,7 @@
Statement statement = null;
try {
statement = conn.createStatement();
- ResultSet rs = statement.executeQuery("SELECT table_name FROM information_schema.tables;");
+ ResultSet rs = statement.executeQuery(config.getStorageQuerySelectTableName());
while (rs.next()) {
String name = rs.getString(1);
if (TABLE_VERSION.equalsIgnoreCase(name)) {
@@ -148,30 +149,11 @@
Statement statement = null;
try {
statement = conn.createStatement();
- statement.executeUpdate("CREATE TABLE " + TABLE_VERSION +
- "(version VARCHAR(10))");
- statement.executeUpdate("CREATE TABLE " + TABLE_TASK +
- "(taskId VARCHAR(255) NOT NULL," +
- " name VARCHAR(255) NOT NULL," +
- " parent VARCHAR(255)," +
- " creationDate LONG, " +
- " modificationDate LONG, " +
- " hidden BOOLEAN," +
- " note TEXT," +
- " removed LONG," +
- " PRIMARY KEY (taskId))");
- statement.executeUpdate("CREATE TABLE " + TABLE_TIME +
- "(taskid VARCHAR(255) NOT NULL," +
- " date LONG," +
- " uuid varchar(255) unique," +
- " duration LONG," +
- " modificationDate LONG," +
- " removed LONG," +
- " PRIMARY KEY (taskid, date, uuid)," +
- " FOREIGN KEY (taskid)" +
- " REFERENCES " + TABLE_TASK +"(taskId)" +
- " ON DELETE CASCADE" +
- ")");
+
+ statement.executeUpdate(config.getStorageQueryCreateTableVersion());
+ statement.executeUpdate(config.getStorageQueryCreateTableTask());
+ statement.executeUpdate(config.getStorageQueryDeleteTime());
+
} catch (SQLException ex) {
throw new StorageException("Can't create schema", ex);
} finally {
@@ -191,8 +173,8 @@
int result = 0;
PreparedStatement statement = null;
try {
- statement = connection.prepareStatement("SELECT count(*) FROM " + TABLE_TASK
- + " WHERE removed = 0");
+ statement = connection.prepareStatement(config.getStorageQuerySelectCountTask());
+
ResultSet rs = statement.executeQuery();
if (rs.next()) {
result = rs.getInt(1);
@@ -214,65 +196,9 @@
PreparedStatement statement = null;
PreparedStatement statement2 = null;
try {
- statement = connection.prepareStatement("SELECT TA.*, sum(TI.duration) AS totalduration FROM " +
- TABLE_TASK + " TA, " + TABLE_TIME + " TI" +
- " WHERE TA.taskId = TI.taskid" +
- " AND TA.modificationDate >" +date +
- " GROUP BY TA.taskId");
- ResultSet rs = statement.executeQuery();
- while (rs.next()) {
- TimerTask task = new TimerTask();
- task.setTaskId(rs.getString("taskId"));
- task.setName(rs.getString("name"));
- task.setParent(rs.getString("parent"));
- task.setRemoved(rs.getLong("removed"));
- task.setTodayTime(0);
- task.setCreationDate(new java.util.Date(rs.getLong("creationDate")));
- task.setModificationDate(new java.util.Date(rs.getLong("modificationDate")));
- task.setTotalTime(rs.getLong("totalduration"));
- tasks.add(task);
- }
+ statement = connection.prepareStatement(config.getStorageQuerySelectTimedTask());
+ statement.setLong(1, date);
- // not timed tasks
- statement2 = connection.prepareStatement("SELECT * FROM " + TABLE_TASK +
- " WHERE (taskId not in (SELECT taskid FROM " + TABLE_TIME + "))" +
- " AND "+ TABLE_TASK +".modificationDate >" +date);
- rs = statement2.executeQuery();
- while (rs.next()) {
- TimerTask task = new TimerTask();
- task.setName(rs.getString("name"));
- task.setTaskId(rs.getString("taskId"));
- task.setParent(rs.getString("parent"));
- task.setCreationDate(new java.util.Date(rs.getLong("creationDate")));
- task.setModificationDate(new java.util.Date(rs.getLong("modificationDate")));
- task.setRemoved(rs.getLong("removed"));
- task.setTodayTime(0);
- task.setTotalTime(0);
- tasks.add(task);
- }
- } catch (SQLException ex) {
- throw new StorageException("Can't get task", ex);
- } finally {
- closeStatement(statement);
- closeStatement(statement2);
- }
- return tasks;
- }
-
- /**
- * Query that returns not removed tasks
- * @return tasks arraylist of tasks
- */
- public ArrayList<TimerTask> getRemovedTasks(Long date) {
- ArrayList<TimerTask> tasks = new ArrayList<>();
- PreparedStatement statement = null;
- PreparedStatement statement2 = null;
- try {
- statement = connection.prepareStatement("SELECT TA.*, sum(TI.duration) AS totalduration FROM " +
- TABLE_TASK + " TA, " + TABLE_TIME + " TI" +
- " WHERE TA.taskId = TI.taskid" +
- " AND TA.removed > 0"+
- " GROUP BY TA.taskId");
ResultSet rs = statement.executeQuery();
while (rs.next()) {
TimerTask task = new TimerTask();
@@ -288,9 +214,9 @@
}
// not timed tasks
- statement2 = connection.prepareStatement("SELECT * FROM " + TABLE_TASK +
- " WHERE (taskId not in (SELECT taskid FROM " + TABLE_TIME + "))" +
- " AND "+ TABLE_TASK +".modificationDate >" +date);
+ statement2 = connection.prepareStatement(config.getStorageQuerySelectNotTimedTask());
+ statement2.setLong(1, date);
+
rs = statement2.executeQuery();
while (rs.next()) {
TimerTask task = new TimerTask();
@@ -313,15 +239,12 @@
return tasks;
}
-
/* Insert, Update, Delete */
public void addTask(TimerTask task) {
PreparedStatement statement = null;
try {
- statement = connection.prepareStatement("INSERT INTO " +
- TABLE_TASK + "(name, parent, taskId, hidden, note,creationDate, modificationDate, removed)" +
- " VALUES (?, ?, ?, ?, ?,?, ?, ?)");
+ statement = connection.prepareStatement(config.getStorageQueryInsertTask());
statement.setString(1, task.getName());
statement.setString(2, task.getParent());
statement.setString(3, task.getTaskId());
@@ -342,9 +265,8 @@
public void modifyTask(TimerTask task) {
PreparedStatement statement = null;
try {
- statement = connection.prepareStatement("UPDATE " +
- TABLE_TASK + " SET name=?, parent=?, hidden=?, note=?, modificationDate=?, removed=?" +
- " WHERE taskId = ?");
+ statement = connection.prepareStatement(config.getStorageQueryUpdateTask());
+
statement.setString(1, task.getName()); //name
statement.setString(2, task.getParent()); //parent
statement.setBoolean(3, task.isClosed()); //hidden
@@ -365,9 +287,8 @@
public void modifyTime(TimerTime t) {
PreparedStatement statement = null;
try {
- statement = connection.prepareStatement("UPDATE " +
- TABLE_TIME + " SET date=?, duration=?, modificationDate=?, removed = ?" +
- " WHERE uuid = ?");
+ statement = connection.prepareStatement(config.getStorageQueryUpdateTime());
+
statement.setLong(1, t.getCreationDate().getTime());
statement.setLong(2, t.getTime());
statement.setLong(3, t.getModificationDate().getTime()); //modificationDate
@@ -391,9 +312,7 @@
public void addTaskTime(TimerTask task, Date date, String uuid, long duration) {
PreparedStatement statement = null;
try {
- statement = connection.prepareStatement("INSERT INTO " + TABLE_TIME +
- "(taskid, date, uuid, duration, modificationDate, removed)" +
- " VALUES(?, ?, ?, ?, ?, ?)");
+ statement = connection.prepareStatement(config.getStorageQueryInsertTime());
statement.setString(1, task.getTaskId());
statement.setLong(2, date.getTime());
@@ -416,9 +335,7 @@
public void addTaskTime(TimerTime time) {
PreparedStatement statement = null;
try {
- statement = connection.prepareStatement("INSERT INTO " + TABLE_TIME +
- "(taskid, date, uuid, duration, modificationDate, removed)" +
- " VALUES(?, ?, ?, ?, ?, ?)");
+ statement = connection.prepareStatement(config.getStorageQueryInsertTime());
statement.setString(1, time.getTaskId());
statement.setLong(2, time.getCreationDate().getTime());
@@ -452,13 +369,11 @@
PreparedStatement statement = null;
try {
- statement = connection.prepareStatement("SELECT TA.taskId AS mytask, TI.* FROM " +
- TABLE_TASK + " TA, "+ TABLE_TIME + " TI" +
- " WHERE TA.taskId = TI.taskid" +
- " AND TI.modificationDate >" +date);
+ statement = connection.prepareStatement(config.getStorageQuerySelectTaskTimeWithDate());
- ResultSet rs = statement.executeQuery();
+ statement.setLong(1, date);
+ ResultSet rs = statement.executeQuery();
while (rs.next()) {
TimerTime time = new TimerTime();
@@ -491,11 +406,10 @@
List<TimerTime> times = new ArrayList<>();
PreparedStatement statement = null;
try {
- statement = connection.prepareStatement("SELECT TI.*" +
- " FROM " + TABLE_TASK + " TA, "+ TABLE_TIME + " TI" +
- " WHERE TA.taskId = TI.taskid AND TA.taskId = '" +taskid +"' " +
- " AND TA.removed = 0" +
- " AND TI.modificationDate >" +date);
+ statement = connection.prepareStatement(config.getStorageQuerySelectNotRemovedTaskTime());
+ statement.setString(1, taskid);
+ statement.setLong(2, date);
+
ResultSet rs = statement.executeQuery();
while (rs.next()) {
TimerTime time = new TimerTime();
@@ -522,16 +436,11 @@
PreparedStatement statement = null;
PreparedStatement statement2 = null;
try{
- statement = connection.prepareStatement(
- "SELECT TA.taskId AS taskid, TA.name AS task, TA.parent AS parent," +
- " TA.creationDate AS creationDate, sum(TI.duration) AS totalduration" +
- " FROM " + TABLE_TASK+" TA," + TABLE_TIME +" TI" +
- " WHERE TA.taskId = TI.taskid" +
- " AND TA.creationDate >" + startDate +
- " AND TA.creationDate <" + endDate +
- " GROUP BY TA.taskId" +
- " ORDER BY TA.creationDate DESC");
+ statement = connection.prepareStatement(config.getStorageQuerySelectReportTasks());
+ statement.setLong(1, startDate);
+ statement.setLong(2, endDate);
+
ResultSet rs = statement.executeQuery();
while(rs.next()){
list.add(new ReportTask(rs.getString("task"),rs.getString("taskid"),
@@ -539,10 +448,7 @@
}
// not timed tasks
- statement2 = connection.prepareStatement("SELECT * FROM " + TABLE_TASK +
- " WHERE (taskId not in (SELECT taskid FROM " + TABLE_TIME + ")" +
- " AND parent = '' )"
- );
+ statement2 = connection.prepareStatement(config.getStorageQuerySelectReportRootTask());
rs = statement2.executeQuery();
while(rs.next()){
@@ -560,75 +466,7 @@
return list;
}
- public Map getReportByWeek(Long startDate, Long endDate){
- //treemap car date implemente comparable
- HashMap<Integer, ArrayList> byWeekTasks = new HashMap<Integer, ArrayList>();
- PreparedStatement statement = null;
- PreparedStatement statement2 = null;
-
- try{
- statement = connection.prepareStatement(
- "SELECT WEEK(FROM_UNIXTIME(creationDate)) AS numWeek, TA.taskId AS taskid, TA.name AS task, TA.parent AS parent," +
- " TA.creationDate AS creationDate, sum(TI.duration) AS totalduration" +
- " FROM " + TABLE_TASK+" TA," + TABLE_TIME +" TI" +
- " WHERE TA.taskId = TI.taskid" +
- " AND TA.creationDate >" + startDate +
- " AND TA.creationDate <" + endDate +
- " GROUP BY TA.taskId, numWeek " +
- " ORDER BY creationDate DESC");
-
-
- ResultSet rs = statement.executeQuery();
- while(rs.next()){
- Integer numWeek = rs.getInt("numWeek");
- ArrayList tasks;
- if(byWeekTasks.containsKey(numWeek)){
- tasks = byWeekTasks.get(numWeek);
- }else{
- tasks = new ArrayList();
- }
- tasks.add(new ReportTask(rs.getString("task"),rs.getString("taskid"),
- rs.getString("parent") , rs.getLong("totalduration"), rs.getLong("creationDate")));
-
- byWeekTasks.put(numWeek, tasks);
- }
-
- // not timed tasks
- statement2 = connection.prepareStatement("SELECT * FROM " + TABLE_TASK +
- " WHERE (taskId not in (SELECT taskid FROM " + TABLE_TIME + ")" +
- " AND parent = '' )"
- );
-
- rs = statement2.executeQuery();
- while(rs.next()){
- ArrayList tasks;
-
- if(byWeekTasks.containsKey(0)){
- tasks = byWeekTasks.get(0);
- }else{
- tasks = new ArrayList();
- }
- tasks.add(new ReportTask(rs.getString("name"), rs.getString("taskId"),
- rs.getString("parent"), (long) 0, rs.getLong("creationDate")));
-
- byWeekTasks.put(0, tasks);
- }
-
-
- }catch(SQLException ex) {
- throw new StorageException("Can't get report", ex);
- } finally {
- closeStatement(statement);
- closeStatement(statement2);
- }
-
- log.info("le map " + byWeekTasks.toString());
-
- return byWeekTasks;
- }
-
-
/** Suppression de tuple **/
/**
@@ -639,8 +477,7 @@
PreparedStatement statement = null;
try {
- statement = connection.prepareStatement("DELETE FROM " +
- TABLE_TIME + " WHERE uuid = ?");
+ statement = connection.prepareStatement(config.getStorageQueryDeleteTime());
statement.setString(1, timeId);
statement.executeUpdate();
} catch (SQLException ex) {
@@ -658,8 +495,7 @@
public void deleteTaskWithId(String taskId) {
PreparedStatement statement = null;
try {
- statement = connection.prepareStatement("DELETE FROM " +
- TABLE_TASK + " WHERE taskId = ?");
+ statement = connection.prepareStatement(config.getStorageQueryDeleteTask());
statement.setString(1, taskId);
statement.executeUpdate();
} catch (SQLException ex) {
@@ -680,11 +516,11 @@
PreparedStatement statement = null;
try {
- statement = connection.prepareStatement("UPDATE " +
- TABLE_TIME + " SET removed = "+time+", modificationDate =" +time +
- " WHERE uuid = ?");
+ statement = connection.prepareStatement(config.getStorageQueryUpdateTimeToRemove());
- statement.setString(1, timeId);
+ statement.setLong(1, time);
+ statement.setLong(2, time);
+ statement.setString(3, timeId);
statement.executeUpdate();
} catch (SQLException ex) {
throw new StorageException("Can't delete time", ex);
@@ -702,10 +538,11 @@
public void removeTaskWithId(String taskId, long time) {
PreparedStatement statement = null;
try {
- statement = connection.prepareStatement("UPDATE " +
- TABLE_TASK + " SET removed = "+time+", modificationDate =" +time +
- " WHERE taskId = '"+taskId +"'");
+ statement = connection.prepareStatement(config.getStorageQueryUpdateTaskToRemove());
+ statement.setLong(1, time);
+ statement.setLong(2, time);
+ statement.setString(3, taskId);
statement.executeUpdate();
} catch (SQLException ex) {
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java 2014-06-20 16:07:12 UTC (rev 3004)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java 2014-06-23 15:38:30 UTC (rev 3005)
@@ -74,7 +74,7 @@
jtimerConf = new JtimerConfig();
//Initialisation du storage
- Storage storage = new Storage(jtimerConf.getStoragePath());
+ Storage storage = new Storage(jtimerConf);
context.getAttributes().put(Storage.class.getName(), storage);
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimesResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimesResource.java 2014-06-20 16:07:12 UTC (rev 3004)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimesResource.java 2014-06-23 15:38:30 UTC (rev 3005)
@@ -65,7 +65,7 @@
}
/**
- * Methode qui retourne la representation de la liste de toutes les temps
+ * Methode qui retourne la representation de la liste de tous les temps
* Suite a une requete de type GET
*
* @return
Modified: branches/ng-jtimer/src/main/resources/jtimer-default.properties
===================================================================
--- branches/ng-jtimer/src/main/resources/jtimer-default.properties 2014-06-20 16:07:12 UTC (rev 3004)
+++ branches/ng-jtimer/src/main/resources/jtimer-default.properties 2014-06-23 15:38:30 UTC (rev 3005)
@@ -3,4 +3,90 @@
###
# jTimer storage path
jtimer.storage.path=/home/olivia/Bureau/jtimer/jtimer8081
-
+###
+# SQL properties
+###
+#TABLE
+jtimer.storage.table.task=task
+jtimer.storage.table.time=tasktime
+jtimer.storage.table.version=version
+###
+#CREATE SCHEMA
+jtimer.storage.create.table.version=CREATE TABLE version (version VARCHAR(10))
+jtimer.storage.create.table.task=CREATE TABLE task \
+ (taskId VARCHAR(255) NOT NULL, \
+ name VARCHAR(255) NOT NULL, \
+ parent VARCHAR(255), \
+ creationDate LONG, \
+ modificationDate LONG, \
+ hidden BOOLEAN, \
+ note TEXT, \
+ removed LONG, \
+ PRIMARY KEY (taskId))
+jtimer.storage.create.table.time=CREATE TABLE tasktime \
+ (taskid VARCHAR(255) NOT NULL, \
+ date LONG, \
+ uuid varchar(255) unique, \
+ duration LONG, \
+ modificationDate LONG, \
+ removed LONG, \
+ PRIMARY KEY (taskid, date, uuid), \
+ FOREIGN KEY (taskid) \
+ REFERENCES task (taskId) \
+ ON DELETE CASCADE)
+####
+#INSERT
+jtimer.storage.insert.version.number=INSERT INTO VERSION VALUES('2.0')
+jtimer.storage.insert.task=INSERT INTO task (name, parent, taskId, hidden, note,creationDate, modificationDate, removed) VALUES (?, ?, ?, ?, ?,?, ?, ?)
+jtimer.storage.insert.time=INSERT INTO tasktime (taskid, date, uuid, duration, modificationDate, removed) VALUES(?, ?, ?, ?, ?, ?)
+###
+#SELECT
+jtimer.storage.select.table.name=SELECT table_name FROM information_schema.tables;
+jtimer.storage.select.count.task=SELECT count(*) FROM task WHERE removed = 0
+jtimer.storage.select.timed.task=SELECT TA.*, sum(TI.duration) AS totalduration \
+ FROM task TA, tasktime TI \
+ WHERE TA.taskId = TI.taskid \
+ AND TA.modificationDate > ? \
+ GROUP BY TA.taskId
+jtimer.storage.select.nottimed.task=SELECT * \
+ FROM task \
+ WHERE (taskId not in (SELECT taskid FROM task)) \
+ AND task.modificationDate > ?
+jtimer.storage.select.time.withdate=SELECT TA.taskId AS mytask, TI.* \
+ FROM task TA, tasktime TI \
+ WHERE TA.taskId = TI.taskid AND TI.modificationDate > ?
+jtimer.storage.select.notremoved.tasktime=SELECT TI.* \
+ FROM task TA, tasktime TI \
+ WHERE TA.taskId = TI.taskid AND TA.taskId = '?' \
+ AND TA.removed = 0 \
+ AND TI.modificationDate > ?
+jtimer.storage.select.removed.tasktime=SELECT TA.*, sum(TI.duration) AS totalduration \
+ FROM task TA, tasktime TI \
+ WHERE TA.taskId = TI.taskid \
+ AND TA.removed > 0 \
+ GROUP BY TA.taskId
+jtimer.storage.select.report.timedtasks=SELECT TA.taskId AS taskid, TA.name AS task, TA.parent AS parent, \
+ TA.creationDate AS creationDate, sum(TI.duration) AS totalduration \
+ FROM task TA, tasktime TI \
+ WHERE TA.taskId = TI.taskid\
+ AND TA.creationDate > ? \
+ AND TA.creationDate < ? \
+ GROUP BY TA.taskId \
+ ORDER BY TA.creationDate DESC
+jtimer.storage.select.report.roottasks=SELECT * \
+ FROM task \
+ WHERE (taskId not in (SELECT taskid FROM task) AND parent = '' )
+###
+#DELETE
+jtimer.storage.delete.time.withid=DELETE FROM tasktime WHERE uuid = ?
+jtimer.storage.delete.task.withid=DELETE FROM task WHERE taskId = ?
+###
+#UPDATE
+jtimer.storage.update.task.withid=UPDATE task SET name=?, parent=?, hidden=?, note=?, modificationDate=?, removed=? \
+ WHERE taskId = ?
+jtimer.storage.update.time.withid=UPDATE tasktime SET date=?, duration=?, modificationDate=?, removed = ? \
+ WHERE uuid = ?
+jtimer.storage.update.task.forremove=UPDATE task SET removed = ?, modificationDate = ? \
+ WHERE taskId = ?
+jtimer.storage.update.time.forremove=UPDATE tasktime SET removed = ?, modificationDate = ? \
+ WHERE uuid = ?
Deleted: branches/ng-jtimer/src/main/resources/jtimer-query.properties
===================================================================
--- branches/ng-jtimer/src/main/resources/jtimer-query.properties 2014-06-20 16:07:12 UTC (rev 3004)
+++ branches/ng-jtimer/src/main/resources/jtimer-query.properties 2014-06-23 15:38:30 UTC (rev 3005)
@@ -1,49 +0,0 @@
-###
-# This file contains all sql queries
-###
-#TABLE
-TABLE_TASK=task
-TABLE_TIME=tasktime
-TABLE_VERSION=version
-###
-#CREATE SCHEMA
-CREATE_TABLE_VERSION=CREATE TABLE version (version VARCHAR(10))
-CREATE_TABLE_TASK=CREATE TABLE task \
- (taskId VARCHAR(255) NOT NULL, \
- name VARCHAR(255) NOT NULL, \
- parent VARCHAR(255), \
- creationDate LONG, \
- modificationDate LONG, \
- hidden BOOLEAN, \
- note TEXT, \
- removed LONG, \
- PRIMARY KEY (taskId))
-CREATE_TABLE_TIME=CREATE TABLE time \
- (taskid VARCHAR(255) NOT NULL, \
- date LONG, \
- uuid varchar(255) unique, \
- duration LONG, \
- modificationDate LONG, \
- removed LONG, \
- PRIMARY KEY (taskid, date, uuid), \
- FOREIGN KEY (taskid) \
- REFERENCES task (taskId) \
- ON DELETE CASCADE)
-####
-#INSERT
-INSERT_VERSION_NUMBER=INSERT INTO VERSION VALUES('2.0')
-INSERT_TASK=INSERT INTO ? (name, parent, taskId, hidden, note,creationDate, modificationDate, removed)" VALUES (?, ?, ?, ?, ?,?, ?, ?)
-INSERT_TIME=INSERT INTO ? (taskid, date, uuid, duration, modificationDate, removed) VALUES(?, ?, ?, ?, ?, ?)
-###
-#SELECT
-SELECT_TIMED_TASK="SELECT TA.*, sum(TI.duration) AS totalduration \
- FROM ? TA, ? TI \
- WHERE TA.taskId = TI.taskid \
- AND TA.modificationDate > ? \
- GROUP BY TA.taskId
-SELECT_NOTTIMED_TASK=SELECT * \
- FROM ? \
- WHERE (taskId not in (SELECT taskid FROM ?)) \
- AND ?.modificationDate > ?
-###
-#DELETE
\ No newline at end of file
Modified: branches/ng-jtimer/src/main/webapp/js/controllers.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-20 16:07:12 UTC (rev 3004)
+++ branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-23 15:38:30 UTC (rev 3005)
@@ -909,15 +909,8 @@
var modalInstance = $modal.open({
templateUrl: 'partials/reportModal.html',
controller: ReportModalInstanceCtrl,
- resolve: {
- times : function () {
- return angular.copy($scope.data.times);
- },
- tasks : function () {
- return angular.copy($scope.data.tasks);
- }
- }
+
});
modalInstance.result.then(function (item) {
1
0
r3004 - in branches/ng-jtimer/src/main: java/org/chorem/jtimer/storage java/org/chorem/jtimer/utils java/org/chorem/jtimer/utils/Resource java/org/chorem/jtimer/web resources webapp/js webapp/partials
by obruce@users.chorem.org 20 Jun '14
by obruce@users.chorem.org 20 Jun '14
20 Jun '14
Author: obruce
Date: 2014-06-20 18:07:12 +0200 (Fri, 20 Jun 2014)
New Revision: 3004
Url: http://forge.chorem.org/projects/jtimer/repository/revisions/3004
Log:
changement pour le mustache
debut properties pour requete du storage
Added:
branches/ng-jtimer/src/main/resources/jtimer-query.properties
Modified:
branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/Resource/ReportTime.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
branches/ng-jtimer/src/main/resources/jtimer-default.properties
branches/ng-jtimer/src/main/resources/subtasks.mustache
branches/ng-jtimer/src/main/webapp/js/app.js
branches/ng-jtimer/src/main/webapp/partials/reportModal.html
branches/ng-jtimer/src/main/webapp/partials/tasks.html
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-19 07:51:49 UTC (rev 3003)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-20 16:07:12 UTC (rev 3004)
@@ -14,7 +14,9 @@
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Date;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
* Implementation du stockage des taches en base de données basée sur h2.
@@ -521,7 +523,8 @@
PreparedStatement statement2 = null;
try{
statement = connection.prepareStatement(
- "SELECT TA.taskId AS taskid, TA.name AS task, TA.parent AS parent, sum(TI.duration) AS totalduration" +
+ "SELECT TA.taskId AS taskid, TA.name AS task, TA.parent AS parent," +
+ " TA.creationDate AS creationDate, sum(TI.duration) AS totalduration" +
" FROM " + TABLE_TASK+" TA," + TABLE_TIME +" TI" +
" WHERE TA.taskId = TI.taskid" +
" AND TA.creationDate >" + startDate +
@@ -531,7 +534,8 @@
ResultSet rs = statement.executeQuery();
while(rs.next()){
- list.add(new ReportTask(rs.getString("task"),rs.getString("taskid"), rs.getString("parent") , rs.getLong("totalduration")));
+ list.add(new ReportTask(rs.getString("task"),rs.getString("taskid"),
+ rs.getString("parent") , rs.getLong("totalduration"), rs.getLong("creationDate")));
}
// not timed tasks
@@ -542,7 +546,8 @@
rs = statement2.executeQuery();
while(rs.next()){
- list.add(new ReportTask(rs.getString("name"), rs.getString("taskId"),rs.getString("parent"), (long) 0));
+ list.add(new ReportTask(rs.getString("name"), rs.getString("taskId"),
+ rs.getString("parent"), (long) 0, rs.getLong("creationDate")));
}
}catch(SQLException ex) {
@@ -555,7 +560,75 @@
return list;
}
+ public Map getReportByWeek(Long startDate, Long endDate){
+ //treemap car date implemente comparable
+ HashMap<Integer, ArrayList> byWeekTasks = new HashMap<Integer, ArrayList>();
+ PreparedStatement statement = null;
+ PreparedStatement statement2 = null;
+
+ try{
+ statement = connection.prepareStatement(
+ "SELECT WEEK(FROM_UNIXTIME(creationDate)) AS numWeek, TA.taskId AS taskid, TA.name AS task, TA.parent AS parent," +
+ " TA.creationDate AS creationDate, sum(TI.duration) AS totalduration" +
+ " FROM " + TABLE_TASK+" TA," + TABLE_TIME +" TI" +
+ " WHERE TA.taskId = TI.taskid" +
+ " AND TA.creationDate >" + startDate +
+ " AND TA.creationDate <" + endDate +
+ " GROUP BY TA.taskId, numWeek " +
+ " ORDER BY creationDate DESC");
+
+
+ ResultSet rs = statement.executeQuery();
+ while(rs.next()){
+ Integer numWeek = rs.getInt("numWeek");
+ ArrayList tasks;
+ if(byWeekTasks.containsKey(numWeek)){
+ tasks = byWeekTasks.get(numWeek);
+ }else{
+ tasks = new ArrayList();
+ }
+ tasks.add(new ReportTask(rs.getString("task"),rs.getString("taskid"),
+ rs.getString("parent") , rs.getLong("totalduration"), rs.getLong("creationDate")));
+
+ byWeekTasks.put(numWeek, tasks);
+ }
+
+ // not timed tasks
+ statement2 = connection.prepareStatement("SELECT * FROM " + TABLE_TASK +
+ " WHERE (taskId not in (SELECT taskid FROM " + TABLE_TIME + ")" +
+ " AND parent = '' )"
+ );
+
+ rs = statement2.executeQuery();
+ while(rs.next()){
+ ArrayList tasks;
+
+ if(byWeekTasks.containsKey(0)){
+ tasks = byWeekTasks.get(0);
+ }else{
+ tasks = new ArrayList();
+ }
+ tasks.add(new ReportTask(rs.getString("name"), rs.getString("taskId"),
+ rs.getString("parent"), (long) 0, rs.getLong("creationDate")));
+
+ byWeekTasks.put(0, tasks);
+ }
+
+
+ }catch(SQLException ex) {
+ throw new StorageException("Can't get report", ex);
+ } finally {
+ closeStatement(statement);
+ closeStatement(statement2);
+ }
+
+ log.info("le map " + byWeekTasks.toString());
+
+ return byWeekTasks;
+ }
+
+
/** Suppression de tuple **/
/**
@@ -624,7 +697,7 @@
/**
* Methode qui va va modifier l'attribut removed d'un timertask a l'aide de son identifiant
* @param taskId l'identifiant de la tache
- * @param time
+ * @param time le temps ou a lieu la modif
*/
public void removeTaskWithId(String taskId, long time) {
PreparedStatement statement = null;
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java 2014-06-19 07:51:49 UTC (rev 3003)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java 2014-06-20 16:07:12 UTC (rev 3004)
@@ -24,6 +24,7 @@
protected static final Log log = LogFactory.getLog(MustacheReport.class);
protected Context context;
+ protected Storage storage;
protected List mustacheList;
@@ -33,6 +34,7 @@
*/
public MustacheReport(Context context){
this.context = context;
+ storage = (Storage) context.getAttributes().get(Storage.class.getName());
}
/**
@@ -41,12 +43,12 @@
*/
public String createByProjectMustache(String type, long start, long end) throws IOException {
- log.info("create a Mustache "+start + " " +end);
+ log.info("create a Mustache by project");
MustacheFactory mf = new DefaultMustacheFactory();
Mustache mustache = mf.compile("ByProject.mustache");
//On recupere les taches
- Storage storage = (Storage) context.getAttributes().get(Storage.class.getName());
+
mustacheList = storage.getReportByProject(start, end);
StringWriter sw = new StringWriter();
@@ -56,7 +58,17 @@
}
- public String createByDayMustache(String type, long startDate, long endDate) {
- return null;
+ public String createByWeekMustache(String type, long start, long end) {
+ log.info("create a Mustache by week");
+ MustacheFactory mf = new DefaultMustacheFactory();
+ Mustache mustache = mf.compile("ByWeek_template.mustache");
+
+
+ storage.getReportByWeek(start, end);
+
+ StringWriter sw = new StringWriter();
+ //mustache.execute(sw, MustacheHandler.getByWeekReport());
+
+ return sw.toString();
}
}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java 2014-06-19 07:51:49 UTC (rev 3003)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java 2014-06-20 16:07:12 UTC (rev 3004)
@@ -3,6 +3,7 @@
import org.chorem.jtimer.utils.Resource.ReportTime;
import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
/**
@@ -21,6 +22,8 @@
protected ReportTime time;
protected List subtasks;
+ protected Date creationDate;
+
/**
* Constructeur
* @param name le nom
@@ -28,7 +31,8 @@
* @param parent l'identifiant du parent
* @param time le temps
*/
- public ReportTask(String name, String taskId, String parent, long time){
+ public ReportTask(String name, String taskId, String parent, long time,long date){
+ this.creationDate = new Date(date);
this.taskId = taskId;
this.name = name;
this.parent = parent;
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/Resource/ReportTime.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/Resource/ReportTime.java 2014-06-19 07:51:49 UTC (rev 3003)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/Resource/ReportTime.java 2014-06-20 16:07:12 UTC (rev 3004)
@@ -1,5 +1,6 @@
package org.chorem.jtimer.utils.Resource;
+
/**
* Created by olivia on 18/06/14.
* <p/>
@@ -24,6 +25,7 @@
* @param milliseconds time in ms
*/
public ReportTime(long milliseconds){
+
this.ms =milliseconds;
changeSecMinHours();
changeSecMinHoursString();
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-06-19 07:51:49 UTC (rev 3003)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-06-20 16:07:12 UTC (rev 3004)
@@ -54,6 +54,7 @@
MustacheReport report = new MustacheReport(getContext());
+
res = report.createByProjectMustache(type, startDate, endDate);
log.info("Ce qui est produit " + res);
Modified: branches/ng-jtimer/src/main/resources/jtimer-default.properties
===================================================================
--- branches/ng-jtimer/src/main/resources/jtimer-default.properties 2014-06-19 07:51:49 UTC (rev 3003)
+++ branches/ng-jtimer/src/main/resources/jtimer-default.properties 2014-06-20 16:07:12 UTC (rev 3004)
@@ -2,5 +2,5 @@
# jTimer default properties
###
# jTimer storage path
-jtimer.storage.path=/tmp/jtimer/jtimer8081
+jtimer.storage.path=/home/olivia/Bureau/jtimer/jtimer8081
Added: branches/ng-jtimer/src/main/resources/jtimer-query.properties
===================================================================
--- branches/ng-jtimer/src/main/resources/jtimer-query.properties (rev 0)
+++ branches/ng-jtimer/src/main/resources/jtimer-query.properties 2014-06-20 16:07:12 UTC (rev 3004)
@@ -0,0 +1,49 @@
+###
+# This file contains all sql queries
+###
+#TABLE
+TABLE_TASK=task
+TABLE_TIME=tasktime
+TABLE_VERSION=version
+###
+#CREATE SCHEMA
+CREATE_TABLE_VERSION=CREATE TABLE version (version VARCHAR(10))
+CREATE_TABLE_TASK=CREATE TABLE task \
+ (taskId VARCHAR(255) NOT NULL, \
+ name VARCHAR(255) NOT NULL, \
+ parent VARCHAR(255), \
+ creationDate LONG, \
+ modificationDate LONG, \
+ hidden BOOLEAN, \
+ note TEXT, \
+ removed LONG, \
+ PRIMARY KEY (taskId))
+CREATE_TABLE_TIME=CREATE TABLE time \
+ (taskid VARCHAR(255) NOT NULL, \
+ date LONG, \
+ uuid varchar(255) unique, \
+ duration LONG, \
+ modificationDate LONG, \
+ removed LONG, \
+ PRIMARY KEY (taskid, date, uuid), \
+ FOREIGN KEY (taskid) \
+ REFERENCES task (taskId) \
+ ON DELETE CASCADE)
+####
+#INSERT
+INSERT_VERSION_NUMBER=INSERT INTO VERSION VALUES('2.0')
+INSERT_TASK=INSERT INTO ? (name, parent, taskId, hidden, note,creationDate, modificationDate, removed)" VALUES (?, ?, ?, ?, ?,?, ?, ?)
+INSERT_TIME=INSERT INTO ? (taskid, date, uuid, duration, modificationDate, removed) VALUES(?, ?, ?, ?, ?, ?)
+###
+#SELECT
+SELECT_TIMED_TASK="SELECT TA.*, sum(TI.duration) AS totalduration \
+ FROM ? TA, ? TI \
+ WHERE TA.taskId = TI.taskid \
+ AND TA.modificationDate > ? \
+ GROUP BY TA.taskId
+SELECT_NOTTIMED_TASK=SELECT * \
+ FROM ? \
+ WHERE (taskId not in (SELECT taskid FROM ?)) \
+ AND ?.modificationDate > ?
+###
+#DELETE
\ No newline at end of file
Modified: branches/ng-jtimer/src/main/resources/subtasks.mustache
===================================================================
--- branches/ng-jtimer/src/main/resources/subtasks.mustache 2014-06-19 07:51:49 UTC (rev 3003)
+++ branches/ng-jtimer/src/main/resources/subtasks.mustache 2014-06-20 16:07:12 UTC (rev 3004)
@@ -1,6 +1,9 @@
<div style="margin-left:2em;">
{{#subtasks}}
- -{{name}} temps : {{time.hh}}:{{time.mm}}:{{time.ss}}
+ <div style="display : block" >
+ <div style="min-width : 100px; max-width : 110px; display : inline-block;">-{{name}} :</div>
+ <div style="min-width : 100px; max-width : 150px; display : inline-block;">{{time.hh}}:{{time.mm}}:{{time.ss}} </div>
+ </div>
{{> subtasks}}
{{/subtasks}}
</div>
\ No newline at end of file
Modified: branches/ng-jtimer/src/main/webapp/js/app.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/app.js 2014-06-19 07:51:49 UTC (rev 3003)
+++ branches/ng-jtimer/src/main/webapp/js/app.js 2014-06-20 16:07:12 UTC (rev 3004)
@@ -373,4 +373,19 @@
});
}
}
-}]);
\ No newline at end of file
+}]);
+
+/*angular.module('webtimer').directive('focusMe', function($timeout) {
+ return {
+ link: function($scope, element, attrs) {
+ $scope.$watch(attrs.focusMe, function(value) {
+ if(value === true) {
+ $timeout(function() {
+ element[0].focus();
+ $scope[attrs.focusMe] = true;
+ });
+ }
+ });
+ }
+ };
+});*/
Modified: branches/ng-jtimer/src/main/webapp/partials/reportModal.html
===================================================================
--- branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-06-19 07:51:49 UTC (rev 3003)
+++ branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-06-20 16:07:12 UTC (rev 3004)
@@ -1,11 +1,12 @@
<div>
- <h2>Option du rapport:</h2>
+ <h2>Option du rapport :</h2>
</div>
<hr/>
-<div>
- <div>
+<div >
+ <!-- Datepicker div -->
+ <div style="display : inline-block;vertical-align: top;">
De :
<div ng-controller="ReportDatePickerCtrl" class="row">
<div class="col-md-6">
@@ -30,27 +31,21 @@
</div>
</div>
- <p>
-
- </p>
+ <div>
- <div class="btn-group" ng-show="false">
- <label class="btn btn-primary" ng-change="changeFonc()" ng-model="radioModel" btn-radio="'1'">Jour</label>
- <label class="btn btn-primary" ng-change="changeFonc()" ng-model="radioModel" btn-radio="'2'">Semaine</label>
- <label class="btn btn-primary" ng-change="changeFonc()" ng-model="radioModel" btn-radio="'3'">Mois</label>
- <label class="btn btn-primary" ng-change="changeFonc()" ng-model="radioModel" btn-radio="'4'">Année</label>
- <label class="btn btn-primary" ng-change="changeFonc()" ng-model="radioModel" btn-radio="'5'">Projet</label>
</div>
- <p>
-
- </p>
+
+
</div>
- <div>
+ <div style="display : inline-block; vertical-align: top; width : 350px">
<alert type="info" >
- <div ng-bind-html="toHTML(htmlReport)"></div>
+ <span>
+ <div ng-bind-html="toHTML(htmlReport)"></div>
+ </span>
+
</alert>
</div>
Modified: branches/ng-jtimer/src/main/webapp/partials/tasks.html
===================================================================
--- branches/ng-jtimer/src/main/webapp/partials/tasks.html 2014-06-19 07:51:49 UTC (rev 3003)
+++ branches/ng-jtimer/src/main/webapp/partials/tasks.html 2014-06-20 16:07:12 UTC (rev 3004)
@@ -1,8 +1,8 @@
<div id="header">
<!--Header partie gauche -->
<span class='left form-inline'>
- <input class='search-query form-group form-control input-sm small_input' ng-model="query" placeholder="Search">
- <form ng-submit="addTask()">
+ <input class='search-query form-group form-control input-sm small_input' style="display : inline-block;" ng-model="query" placeholder="Search">
+ <form style="display : inline-block;" ng-submit="addTask()">
<input class='search-query form-group form-control input-sm small_input' ng-model="name" placeholder="New Task">
</form>
@@ -70,7 +70,7 @@
<!--Project name visible and editable -->
<form ng-submit="saveTask($node)" ng-show="$node.edit == 'name'">
- <input ng-model="$node.task.name" ng-blur="$node.edit == ''">
+ <input ng-model="$node.task.name" ng-blur="$node.edit == ''" >
</form>
<span ng-click="editTask($node, 'name')" ng-show="$node.edit != 'name'">{{$node.task.name}} </span>
1
0
r3003 - in branches/ng-jtimer/src/main: java/org/chorem/jtimer/entities java/org/chorem/jtimer/storage java/org/chorem/jtimer/utils java/org/chorem/jtimer/utils/Resource java/org/chorem/jtimer/web resources webapp/js webapp/partials
by obruce@users.chorem.org 19 Jun '14
by obruce@users.chorem.org 19 Jun '14
19 Jun '14
Author: obruce
Date: 2014-06-19 09:51:49 +0200 (Thu, 19 Jun 2014)
New Revision: 3003
Url: http://forge.chorem.org/projects/jtimer/repository/revisions/3003
Log:
changement du modal, et des entit?\195?\169s avec le rapport
Added:
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/Resource/
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/Resource/ReportTime.java
branches/ng-jtimer/src/main/resources/ByWeek_template.mustache
Modified:
branches/ng-jtimer/src/main/java/org/chorem/jtimer/entities/TimerTask.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
branches/ng-jtimer/src/main/resources/ByProject.mustache
branches/ng-jtimer/src/main/resources/subtasks.mustache
branches/ng-jtimer/src/main/webapp/js/controllers.js
branches/ng-jtimer/src/main/webapp/js/entities.js
branches/ng-jtimer/src/main/webapp/partials/reportModal.html
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/entities/TimerTask.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/entities/TimerTask.java 2014-06-17 16:02:11 UTC (rev 3002)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/entities/TimerTask.java 2014-06-19 07:51:49 UTC (rev 3003)
@@ -53,6 +53,9 @@
protected String name;
/** Creation date. */
+ protected Date creationDate;
+
+ /**ModificationDate*/
protected Date modificationDate;
/** Closed task. */
@@ -85,24 +88,18 @@
this.name = name;
this.taskId = UUID.randomUUID().toString();
this.parent = "";
+ this.creationDate = new Date();
this.modificationDate = new Date();
this.removed = 0;
}
- /**
- * Constructor with name.
- *
- * @param name task name
- */
- public TimerTask( String name, long datetime) {
- this();
- this.name = name;
- this.taskId = UUID.randomUUID().toString();
- this.parent = "";
- this.modificationDate = new Date(datetime);
- this.removed = 0;
+ public Date getCreationDate() {
+ return creationDate;
}
+ public void setCreationDate(Date creationDate) {
+ this.creationDate = creationDate;
+ }
/**
* Set task uuid
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-17 16:02:11 UTC (rev 3002)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-19 07:51:49 UTC (rev 3003)
@@ -152,6 +152,7 @@
"(taskId VARCHAR(255) NOT NULL," +
" name VARCHAR(255) NOT NULL," +
" parent VARCHAR(255)," +
+ " creationDate LONG, " +
" modificationDate LONG, " +
" hidden BOOLEAN," +
" note TEXT," +
@@ -224,6 +225,7 @@
task.setParent(rs.getString("parent"));
task.setRemoved(rs.getLong("removed"));
task.setTodayTime(0);
+ task.setCreationDate(new java.util.Date(rs.getLong("creationDate")));
task.setModificationDate(new java.util.Date(rs.getLong("modificationDate")));
task.setTotalTime(rs.getLong("totalduration"));
tasks.add(task);
@@ -239,6 +241,7 @@
task.setName(rs.getString("name"));
task.setTaskId(rs.getString("taskId"));
task.setParent(rs.getString("parent"));
+ task.setCreationDate(new java.util.Date(rs.getLong("creationDate")));
task.setModificationDate(new java.util.Date(rs.getLong("modificationDate")));
task.setRemoved(rs.getLong("removed"));
task.setTodayTime(0);
@@ -276,6 +279,7 @@
task.setParent(rs.getString("parent"));
task.setRemoved(rs.getLong("removed"));
task.setTodayTime(0);
+ task.setCreationDate(new java.util.Date(rs.getLong("creationDate")));
task.setModificationDate(new java.util.Date(rs.getLong("modificationDate")));
task.setTotalTime(rs.getLong("totalduration"));
tasks.add(task);
@@ -291,6 +295,7 @@
task.setName(rs.getString("name"));
task.setTaskId(rs.getString("taskId"));
task.setParent(rs.getString("parent"));
+ task.setCreationDate(new java.util.Date(rs.getLong("creationDate")));
task.setModificationDate(new java.util.Date(rs.getLong("modificationDate")));
task.setRemoved(rs.getLong("removed"));
task.setTodayTime(0);
@@ -313,15 +318,16 @@
PreparedStatement statement = null;
try {
statement = connection.prepareStatement("INSERT INTO " +
- TABLE_TASK + "(name, parent, taskId, hidden, note, modificationDate, removed)" +
- " VALUES (?, ?, ?, ?, ?, ?, ?)");
+ TABLE_TASK + "(name, parent, taskId, hidden, note,creationDate, modificationDate, removed)" +
+ " VALUES (?, ?, ?, ?, ?,?, ?, ?)");
statement.setString(1, task.getName());
statement.setString(2, task.getParent());
statement.setString(3, task.getTaskId());
statement.setBoolean(4, task.isClosed());
statement.setString(5, null /*project.getNote()*/);
- statement.setLong(6, task.getModificationDate().getTime());
- statement.setLong(7,task.getRemoved());
+ statement.setLong(6, task.getCreationDate().getTime());
+ statement.setLong(7, task.getModificationDate().getTime());
+ statement.setLong(8,task.getRemoved());
statement.executeUpdate();
} catch (SQLException ex) {
@@ -518,9 +524,10 @@
"SELECT TA.taskId AS taskid, TA.name AS task, TA.parent AS parent, sum(TI.duration) AS totalduration" +
" FROM " + TABLE_TASK+" TA," + TABLE_TIME +" TI" +
" WHERE TA.taskId = TI.taskid" +
- " AND TA.modificationDate >" + startDate +
- " AND TA.modificationDate <" + endDate +
- " GROUP BY TA.taskId");
+ " AND TA.creationDate >" + startDate +
+ " AND TA.creationDate <" + endDate +
+ " GROUP BY TA.taskId" +
+ " ORDER BY TA.creationDate DESC");
ResultSet rs = statement.executeQuery();
while(rs.next()){
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java 2014-06-17 16:02:11 UTC (rev 3002)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java 2014-06-19 07:51:49 UTC (rev 3003)
@@ -23,7 +23,7 @@
List tasks() {
//On tri les taches avant de les envoyer au template
- HashMap<String, ArrayList<ReportTask>> map = new HashMap<String,ArrayList<ReportTask>>();
+ HashMap<String, ArrayList<ReportTask>> childMap = new HashMap<String,ArrayList<ReportTask>>();
Iterator iter = tasks.iterator();
while(iter.hasNext()) {
@@ -31,8 +31,8 @@
ReportTask t = (ReportTask)iter.next();
//un enfant dans map
- if(map.containsKey(t.getTaskId())){
- for(ReportTask task :map.get(t.getTaskId()))
+ if(childMap.containsKey(t.getTaskId())){
+ for(ReportTask task :childMap.get(t.getTaskId()))
t.addChild(task);
}
@@ -42,16 +42,25 @@
//On ajoute l'enfant à la map
ArrayList tmp = new ArrayList();
- if(map.get(t.parent) != null){
- tmp=map.get(t.parent);
+ if(childMap.get(t.parent) != null){
+ tmp=childMap.get(t.parent);
}
tmp.add(t);
- map.put(t.parent, tmp);
+ childMap.put(t.parent, tmp);
iter.remove();
}
}
+ iter = tasks.iterator();
+ while(iter.hasNext()) {
+ ReportTask t = (ReportTask)iter.next();
+
+ if(t.getTime().isNotTimed()){
+ iter.remove();
+ }
+ }
+
return tasks;
}
@@ -62,6 +71,7 @@
*/
public MustacheHandler(List<ReportTask> mustacheList){
this.tasks = mustacheList;
+ log.debug(mustacheList);
}
}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java 2014-06-17 16:02:11 UTC (rev 3002)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java 2014-06-19 07:51:49 UTC (rev 3003)
@@ -1,5 +1,7 @@
package org.chorem.jtimer.utils;
+import org.chorem.jtimer.utils.Resource.ReportTime;
+
import java.util.ArrayList;
import java.util.List;
@@ -16,7 +18,7 @@
protected String name;
protected String taskId;
protected String parent;
- protected long time;
+ protected ReportTime time;
protected List subtasks;
/**
@@ -30,7 +32,7 @@
this.taskId = taskId;
this.name = name;
this.parent = parent;
- this.time = time;
+ this.time = new ReportTime(time);
this.subtasks = new ArrayList();
}
@@ -38,7 +40,7 @@
/** Ajout */
public void addChild(ReportTask t){
this.subtasks.add(t);
- this.time += t.getTime();
+ this.time.addTime(t.getTime());
}
/**Getter */
@@ -55,7 +57,7 @@
return parent;
}
- public long getTime() {
+ public ReportTime getTime() {
return time;
}
Added: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/Resource/ReportTime.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/Resource/ReportTime.java (rev 0)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/Resource/ReportTime.java 2014-06-19 07:51:49 UTC (rev 3003)
@@ -0,0 +1,84 @@
+package org.chorem.jtimer.utils.Resource;
+
+/**
+ * Created by olivia on 18/06/14.
+ * <p/>
+ * Project name : jtimer
+ * <p/>
+ * Package name : org.chorem.jtimer.utils.Resource
+ */
+public class ReportTime {
+
+ protected String ss;
+ protected String mm;
+ protected String hh;
+
+ protected int seconds;
+ protected int minutes;
+ protected int hours;
+
+ protected long ms;
+
+ /**
+ * Constructor
+ * @param milliseconds time in ms
+ */
+ public ReportTime(long milliseconds){
+ this.ms =milliseconds;
+ changeSecMinHours();
+ changeSecMinHoursString();
+ }
+
+ /**
+ * Method that adds a reporttime to an other
+ * @param other a reportTime
+ */
+ public void addTime(ReportTime other){
+ ms += other.ms;
+ changeSecMinHours();
+ changeSecMinHoursString();
+ }
+
+ /**
+ * Changes the HH/MM/SS string
+ */
+ private void changeSecMinHoursString() {
+ //temps
+ if(seconds<10){
+ ss = "0"+seconds;
+ }else{
+ ss = String.valueOf(seconds) ;
+ }
+
+ //minutes
+ if(minutes<10){
+ mm = "0"+minutes;
+ }else{
+ mm = String.valueOf(minutes);
+ }
+
+ //hours
+ if(hours<10){
+ hh = "0"+hours;
+ }else{
+ hh = String.valueOf(hours);
+ }
+ }
+
+ /**
+ * Changes the hour/min/sec with de current ms
+ */
+ private void changeSecMinHours() {
+ this.seconds = (int) (this.ms / 1000) % 60 ;
+ this.minutes = (int) ((this.ms / (1000*60)) % 60);
+ this.hours = (int) ((this.ms / (1000*60*60)) % 24);
+ }
+
+ /**
+ * Return true if the task has no time
+ * @return booleen
+ */
+ public boolean isNotTimed() {
+ return this.ms==(long) 0;
+ }
+}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-06-17 16:02:11 UTC (rev 3002)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-06-19 07:51:49 UTC (rev 3003)
@@ -41,12 +41,12 @@
log.info("type non present dans l'url" + e);
}
try {
- startDate = Long.valueOf(getQuery().getValues("startDate"));
+ startDate = Long.valueOf(getQuery().getValues("start_Date"));
} catch (Exception e) {
log.info("type non present dans l'url" + e);
}
try {
- endDate = Long.valueOf(getQuery().getValues("endDate"));
+ endDate = Long.valueOf(getQuery().getValues("end_Date"));
} catch (Exception e) {
log.info("type non present dans l'url" + e);
}
@@ -57,11 +57,7 @@
res = report.createByProjectMustache(type, startDate, endDate);
log.info("Ce qui est produit " + res);
- res = report.createByDayMustache(type, startDate, endDate);
- log.info("Ce qui est produit " + res);
-
-
- return new StringRepresentation(res, MediaType.TEXT_JAVASCRIPT);
+ return new StringRepresentation(res, MediaType.TEXT_HTML);
}
}
\ No newline at end of file
Modified: branches/ng-jtimer/src/main/resources/ByProject.mustache
===================================================================
--- branches/ng-jtimer/src/main/resources/ByProject.mustache 2014-06-17 16:02:11 UTC (rev 3002)
+++ branches/ng-jtimer/src/main/resources/ByProject.mustache 2014-06-19 07:51:49 UTC (rev 3003)
@@ -1,13 +1,21 @@
-Rapport:
-========
+<div>
+ <h3>
+ Rapport:
+ </h3>
+</div>
<hr/>
+<div>
+ {{#tasks}}
+ <b>Projet : {{name}}</b>
-{{#tasks}}
-<b>Projet : {{name}}</b>
+ {{>subtasks}}
-{{>subtasks}}
+ Temps total : {{time.hh}}:{{time.mm}}:{{time.ss}}
-Temps total : {{time}}|time
+ <hr/>
+ {{/tasks}}
-<hr/>
-{{/tasks}}
+ {{^tasks}}
+ Pas de tâches sur cette période.
+ {{/tasks}}
+</div>
\ No newline at end of file
Added: branches/ng-jtimer/src/main/resources/ByWeek_template.mustache
===================================================================
--- branches/ng-jtimer/src/main/resources/ByWeek_template.mustache (rev 0)
+++ branches/ng-jtimer/src/main/resources/ByWeek_template.mustache 2014-06-19 07:51:49 UTC (rev 3003)
@@ -0,0 +1,7 @@
+Rapport
+=======
+
+{{#weeks}}
+ Semaine : {{day}}
+ {{>ByProject}}
+{{/weeks}}
\ No newline at end of file
Modified: branches/ng-jtimer/src/main/resources/subtasks.mustache
===================================================================
--- branches/ng-jtimer/src/main/resources/subtasks.mustache 2014-06-17 16:02:11 UTC (rev 3002)
+++ branches/ng-jtimer/src/main/resources/subtasks.mustache 2014-06-19 07:51:49 UTC (rev 3003)
@@ -1,4 +1,6 @@
-{{#subtasks}}
- -{{name}} temps : {{time}}|time
- {{> subtasks}}
-{{/subtasks}}
\ No newline at end of file
+<div style="margin-left:2em;">
+ {{#subtasks}}
+ -{{name}} temps : {{time.hh}}:{{time.mm}}:{{time.ss}}
+ {{> subtasks}}
+ {{/subtasks}}
+</div>
\ No newline at end of file
Modified: branches/ng-jtimer/src/main/webapp/js/controllers.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-17 16:02:11 UTC (rev 3002)
+++ branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-19 07:51:49 UTC (rev 3003)
@@ -964,44 +964,34 @@
};
}
-function ReportModalInstanceCtrl($scope, $modalInstance, times, tasks, serverReportAccess){
+function ReportModalInstanceCtrl($scope, $modalInstance,$http, $sce){
$scope.obj={
startDate : new Date(),
- endDate : new Date(),
- report:[]
+ endDate : new Date()
};
+ $scope.obj.endDate.setHours(23,59,59,999);
+
$scope.radioModel = '5';
$scope.htmlReport="";
- /*$scope.generateReport= function(){
- report = [];
+ $scope.toHTML = function (data) {
+ return $sce.trustAsHtml(data);
+ }
- angular.forEach(times, function(timeArray,task){
+ $scope.generateReport= function(){
- var res={};
- res.time = -1;
- angular.forEach(timeArray, function(time){
+ $scope.obj.startDate.setHours(0,0,0,0);
+ $scope.obj.endDate.setHours(23,59,59,999);
- if(time.creationDate >= $scope.obj.startDate.getTime() && time.creationDate <= $scope.obj.endDate.getTime()){
- res.time = res.time + time.time;
- res.task = tasks[task].name;
- }
- });
- if(res.time != -1 ){
- $scope.obj.report.push(res);
- }
- });
-
-
- }*/
-
- $scope.generateReport= function(){
- serverReportAccess.get({}, function(response){
- console.log(response);
- $scope.htmlReport = response;
- }
+ var deb =($scope.obj.startDate).getTime();
+ var end =($scope.obj.endDate).getTime();
+ $http({method: "GET", url: "/rest/report",
+ params:{start_Date : deb, end_Date : end}})
+ .success(function(data){
+ $scope.htmlReport = data;// data should be text string here (only if the server response is text/plain)
+ }
);
}
Modified: branches/ng-jtimer/src/main/webapp/js/entities.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/entities.js 2014-06-17 16:02:11 UTC (rev 3002)
+++ branches/ng-jtimer/src/main/webapp/js/entities.js 2014-06-19 07:51:49 UTC (rev 3003)
@@ -390,7 +390,7 @@
}else{
this.taskId = taskId;
}
-
+ this.creationDate = Date.now();
this.modificationDate = Date.now();
this.removed = 0;
Modified: branches/ng-jtimer/src/main/webapp/partials/reportModal.html
===================================================================
--- branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-06-17 16:02:11 UTC (rev 3002)
+++ branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-06-19 07:51:49 UTC (rev 3003)
@@ -50,13 +50,7 @@
<div>
<alert type="info" >
- <!--Rapport :<br/>
- =========
- <div ng-repeat="elem in obj.report">
- {{elem.task}} : {{elem.time | time}}
- </div>-->
- {{htmlReport}}
-
+ <div ng-bind-html="toHTML(htmlReport)"></div>
</alert>
</div>
1
0
r3002 - in branches/ng-jtimer/src/main: java/org/chorem/jtimer/storage java/org/chorem/jtimer/utils java/org/chorem/jtimer/web resources webapp/js webapp/partials
by obruce@users.chorem.org 17 Jun '14
by obruce@users.chorem.org 17 Jun '14
17 Jun '14
Author: obruce
Date: 2014-06-17 18:02:11 +0200 (Tue, 17 Jun 2014)
New Revision: 3002
Url: http://forge.chorem.org/projects/jtimer/repository/revisions/3002
Log:
Ajout mustache par projet avec sous tache
Added:
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java
Modified:
branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
branches/ng-jtimer/src/main/resources/ByDay_template.mustache
branches/ng-jtimer/src/main/resources/ByProject.mustache
branches/ng-jtimer/src/main/resources/subtasks.mustache
branches/ng-jtimer/src/main/webapp/js/app.js
branches/ng-jtimer/src/main/webapp/js/controllers.js
branches/ng-jtimer/src/main/webapp/js/service.js
branches/ng-jtimer/src/main/webapp/partials/reportModal.html
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-16 15:37:22 UTC (rev 3001)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-17 16:02:11 UTC (rev 3002)
@@ -1,6 +1,5 @@
package org.chorem.jtimer.storage;
-import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.jtimer.entities.TimerTask;
@@ -510,31 +509,40 @@
}
public List getReportByProject(Long startDate, Long endDate){
- List list = new ArrayList<ReportTask>();
+
+ List list = new ArrayList<ReportTask>();
PreparedStatement statement = null;
+ PreparedStatement statement2 = null;
try{
- statement = connection.prepareStatement("SELECT TA.name AS task, TA.parent AS parent, sum(TI.duration) AS totalduration" +
- " FROM " + TABLE_TASK+" TA," + TABLE_TIME +" TI" +
- " WHERE TA.taskId = TI.taskid" +
- " AND TA.modificationDate >" + startDate +
- " AND TA.modificationDate <" + endDate +
- " GROUP BY TA.taskId");
+ statement = connection.prepareStatement(
+ "SELECT TA.taskId AS taskid, TA.name AS task, TA.parent AS parent, sum(TI.duration) AS totalduration" +
+ " FROM " + TABLE_TASK+" TA," + TABLE_TIME +" TI" +
+ " WHERE TA.taskId = TI.taskid" +
+ " AND TA.modificationDate >" + startDate +
+ " AND TA.modificationDate <" + endDate +
+ " GROUP BY TA.taskId");
ResultSet rs = statement.executeQuery();
while(rs.next()){
- log.info("getReport");
- if(StringUtils.isNotBlank(rs.getString("parent"))){
+ list.add(new ReportTask(rs.getString("task"),rs.getString("taskid"), rs.getString("parent") , rs.getLong("totalduration")));
+ }
- }else{
- list.add(new ReportTask(rs.getString("task"), rs.getLong("totalduration")));
- }
+ // not timed tasks
+ statement2 = connection.prepareStatement("SELECT * FROM " + TABLE_TASK +
+ " WHERE (taskId not in (SELECT taskid FROM " + TABLE_TIME + ")" +
+ " AND parent = '' )"
+ );
+ rs = statement2.executeQuery();
+ while(rs.next()){
+ list.add(new ReportTask(rs.getString("name"), rs.getString("taskId"),rs.getString("parent"), (long) 0));
}
}catch(SQLException ex) {
throw new StorageException("Can't get report", ex);
} finally {
closeStatement(statement);
+ closeStatement(statement2);
}
return list;
Added: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java (rev 0)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheHandler.java 2014-06-17 16:02:11 UTC (rev 3002)
@@ -0,0 +1,67 @@
+package org.chorem.jtimer.utils;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * Created by olivia on 17/06/14.
+ * <p/>
+ * Project name : jtimer
+ * <p/>
+ * Package name : org.chorem.jtimer.utils
+ */
+public class MustacheHandler {
+
+ protected static final Log log = LogFactory.getLog(MustacheReport.class);
+
+ List<ReportTask> tasks;
+
+ List tasks() {
+ //On tri les taches avant de les envoyer au template
+ HashMap<String, ArrayList<ReportTask>> map = new HashMap<String,ArrayList<ReportTask>>();
+
+ Iterator iter = tasks.iterator();
+ while(iter.hasNext()) {
+
+ ReportTask t = (ReportTask)iter.next();
+
+ //un enfant dans map
+ if(map.containsKey(t.getTaskId())){
+ for(ReportTask task :map.get(t.getTaskId()))
+ t.addChild(task);
+ }
+
+ //un enfant
+ if(!t.getParent().equals("")){
+ log.info("enfant");
+ //On ajoute l'enfant à la map
+ ArrayList tmp = new ArrayList();
+
+ if(map.get(t.parent) != null){
+ tmp=map.get(t.parent);
+ }
+ tmp.add(t);
+
+ map.put(t.parent, tmp);
+ iter.remove();
+ }
+ }
+
+ return tasks;
+ }
+
+
+ /**
+ * Constructeur
+ * @param mustacheList la liste des taches
+ */
+ public MustacheHandler(List<ReportTask> mustacheList){
+ this.tasks = mustacheList;
+ }
+
+}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java 2014-06-16 15:37:22 UTC (rev 3001)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java 2014-06-17 16:02:11 UTC (rev 3002)
@@ -22,42 +22,41 @@
public class MustacheReport {
protected static final Log log = LogFactory.getLog(MustacheReport.class);
- //Storage
- protected Storage storage;
+
protected Context context;
- //Borne
- protected long start;
- protected long end;
+ protected List mustacheList;
- List tasks() {
- return storage.getReportByProject(start, end);
- }
/**
* Default Constructor
* @param context
*/
- public MustacheReport(Context context, long start, long end){
+ public MustacheReport(Context context){
this.context = context;
- storage = (Storage)context.getAttributes().get(Storage.class.getName());
- this.start = start;
- this.end = end;
}
/**
* Methode qui cree une moustache
* @throws IOException
*/
- public String createMustache() throws IOException {
+ public String createByProjectMustache(String type, long start, long end) throws IOException {
- log.info("create a Mustache"+start + " " +end);
+ log.info("create a Mustache "+start + " " +end);
MustacheFactory mf = new DefaultMustacheFactory();
Mustache mustache = mf.compile("ByProject.mustache");
+ //On recupere les taches
+ Storage storage = (Storage) context.getAttributes().get(Storage.class.getName());
+ mustacheList = storage.getReportByProject(start, end);
+
StringWriter sw = new StringWriter();
- mustache.execute(sw,new MustacheReport(context,start,end)).flush();
+ mustache.execute(sw, new MustacheHandler(mustacheList)).flush();
return sw.toString();
}
+
+ public String createByDayMustache(String type, long startDate, long endDate) {
+ return null;
+ }
}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java 2014-06-16 15:37:22 UTC (rev 3001)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java 2014-06-17 16:02:11 UTC (rev 3002)
@@ -13,15 +13,60 @@
public class ReportTask {
/** Le nom de la tache*/
- String name;
+ protected String name;
+ protected String taskId;
+ protected String parent;
+ protected long time;
+ protected List subtasks;
- long time;
- List children;
-
- public ReportTask(String name, long time){
+ /**
+ * Constructeur
+ * @param name le nom
+ * @param taskId l'identifiant
+ * @param parent l'identifiant du parent
+ * @param time le temps
+ */
+ public ReportTask(String name, String taskId, String parent, long time){
+ this.taskId = taskId;
this.name = name;
+ this.parent = parent;
this.time = time;
- children = new ArrayList();
+
+ this.subtasks = new ArrayList();
}
+ /** Ajout */
+ public void addChild(ReportTask t){
+ this.subtasks.add(t);
+ this.time += t.getTime();
+ }
+
+ /**Getter */
+
+ public String getTaskId() {
+ return taskId;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getParent() {
+ return parent;
+ }
+
+ public long getTime() {
+ return time;
+ }
+
+ @Override
+ public String toString() {
+ return "ReportTask{" +
+ "name='" + name + '\'' +
+ ", taskId='" + taskId + '\'' +
+ ", parent='" + parent + '\'' +
+ ", time=" + time +
+ ", subtasks=" + subtasks +
+ '}';
+ }
}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-06-16 15:37:22 UTC (rev 3001)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-06-17 16:02:11 UTC (rev 3002)
@@ -30,8 +30,6 @@
@Get
public Representation getReport() throws IOException {
- log.info("Passage dans get report");
-
String type ="BY_PROJECT";
String res="";
long startDate = (long) 0;
@@ -39,20 +37,31 @@
try {
type = String.valueOf(getQuery().getValues("type"));
+ } catch (Exception e) {
+ log.info("type non present dans l'url" + e);
+ }
+ try {
startDate = Long.valueOf(getQuery().getValues("startDate"));
+ } catch (Exception e) {
+ log.info("type non present dans l'url" + e);
+ }
+ try {
endDate = Long.valueOf(getQuery().getValues("endDate"));
} catch (Exception e) {
- log.error("Parametre non present dans l'url" + e);
+ log.info("type non present dans l'url" + e);
}
- MustacheReport report = new MustacheReport(getContext(), startDate, endDate);
+ MustacheReport report = new MustacheReport(getContext());
- if(type.equals("BY_PROJECT")){
- res = report.createMustache();
- log.info("Ce qui est produit " + res);
- }
+ res = report.createByProjectMustache(type, startDate, endDate);
+ log.info("Ce qui est produit " + res);
- return new StringRepresentation(res, MediaType.APPLICATION_JSON);
+ res = report.createByDayMustache(type, startDate, endDate);
+ log.info("Ce qui est produit " + res);
+
+
+
+ return new StringRepresentation(res, MediaType.TEXT_JAVASCRIPT);
}
}
\ No newline at end of file
Modified: branches/ng-jtimer/src/main/resources/ByDay_template.mustache
===================================================================
--- branches/ng-jtimer/src/main/resources/ByDay_template.mustache 2014-06-16 15:37:22 UTC (rev 3001)
+++ branches/ng-jtimer/src/main/resources/ByDay_template.mustache 2014-06-17 16:02:11 UTC (rev 3002)
@@ -1,8 +1,8 @@
+Rapport
+=======
+
{{#days}}
- Day : {{day}}
- {{#tasks}}
- Name : {{name}} | Time : {{time}}
- {{> subtasks}}
- {{/tasks}}
+ Jour : {{day}}
+ {{>ByProject}}
{{/days}}
Modified: branches/ng-jtimer/src/main/resources/ByProject.mustache
===================================================================
--- branches/ng-jtimer/src/main/resources/ByProject.mustache 2014-06-16 15:37:22 UTC (rev 3001)
+++ branches/ng-jtimer/src/main/resources/ByProject.mustache 2014-06-17 16:02:11 UTC (rev 3002)
@@ -1,7 +1,13 @@
-Report by project :
-===================
+Rapport:
+========
+<hr/>
{{#tasks}}
- -{{name}} temps : {{time}}
- {{>subtasks}}
-{{/tasks}}
\ No newline at end of file
+<b>Projet : {{name}}</b>
+
+{{>subtasks}}
+
+Temps total : {{time}}|time
+
+<hr/>
+{{/tasks}}
Modified: branches/ng-jtimer/src/main/resources/subtasks.mustache
===================================================================
--- branches/ng-jtimer/src/main/resources/subtasks.mustache 2014-06-16 15:37:22 UTC (rev 3001)
+++ branches/ng-jtimer/src/main/resources/subtasks.mustache 2014-06-17 16:02:11 UTC (rev 3002)
@@ -1,4 +1,4 @@
{{#subtasks}}
- -{{name}} temps : {{time}}
- {{> subtasks}}
+ -{{name}} temps : {{time}}|time
+ {{> subtasks}}
{{/subtasks}}
\ No newline at end of file
Modified: branches/ng-jtimer/src/main/webapp/js/app.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/app.js 2014-06-16 15:37:22 UTC (rev 3001)
+++ branches/ng-jtimer/src/main/webapp/js/app.js 2014-06-17 16:02:11 UTC (rev 3002)
@@ -306,7 +306,7 @@
/**
* Module de webtimer
**/
-angular.module('webtimer', ['webtimerFilters', 'ngRoute', 'ngAnimate', 'ui.bootstrap','serverAccessService', 'serverTimeService' ])
+angular.module('webtimer', ['webtimerFilters', 'ngRoute', 'ngAnimate', 'ui.bootstrap','serverAccessService', 'serverTimeService','serverReportService' ])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/tasks', {templateUrl: 'partials/tasks.html', controller: TasksCtrl}).
Modified: branches/ng-jtimer/src/main/webapp/js/controllers.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-16 15:37:22 UTC (rev 3001)
+++ branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-17 16:02:11 UTC (rev 3002)
@@ -964,7 +964,7 @@
};
}
-function ReportModalInstanceCtrl($scope, $modalInstance, times, tasks){
+function ReportModalInstanceCtrl($scope, $modalInstance, times, tasks, serverReportAccess){
$scope.obj={
startDate : new Date(),
@@ -973,8 +973,9 @@
};
$scope.radioModel = '5';
+ $scope.htmlReport="";
- $scope.generateReport= function(){
+ /*$scope.generateReport= function(){
report = [];
angular.forEach(times, function(timeArray,task){
@@ -994,6 +995,14 @@
});
+ }*/
+
+ $scope.generateReport= function(){
+ serverReportAccess.get({}, function(response){
+ console.log(response);
+ $scope.htmlReport = response;
+ }
+ );
}
Modified: branches/ng-jtimer/src/main/webapp/js/service.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/service.js 2014-06-16 15:37:22 UTC (rev 3001)
+++ branches/ng-jtimer/src/main/webapp/js/service.js 2014-06-17 16:02:11 UTC (rev 3002)
@@ -31,3 +31,14 @@
);
}
);
+
+angular.module("serverReportService", ["ngResource"])
+.factory("serverReportAccess", function ( $resource) {
+ // Encapsule l'acces au server
+ return $resource("/rest/report",{},
+ {
+ get : {method: 'GET', isArray: false},
+ }
+ );
+ }
+);
\ No newline at end of file
Modified: branches/ng-jtimer/src/main/webapp/partials/reportModal.html
===================================================================
--- branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-06-16 15:37:22 UTC (rev 3001)
+++ branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-06-17 16:02:11 UTC (rev 3002)
@@ -50,11 +50,12 @@
<div>
<alert type="info" >
- Rapport :<br/>
+ <!--Rapport :<br/>
=========
<div ng-repeat="elem in obj.report">
{{elem.task}} : {{elem.time | time}}
- </div>
+ </div>-->
+ {{htmlReport}}
</alert>
</div>
1
0
r3001 - in branches/ng-jtimer: . src/main/java/org/chorem/jtimer src/main/java/org/chorem/jtimer/storage src/main/java/org/chorem/jtimer/utils src/main/java/org/chorem/jtimer/web src/main/resources src/main/webapp/js src/main/webapp/partials
by obruce@users.chorem.org 16 Jun '14
by obruce@users.chorem.org 16 Jun '14
16 Jun '14
Author: obruce
Date: 2014-06-16 17:37:22 +0200 (Mon, 16 Jun 2014)
New Revision: 3001
Url: http://forge.chorem.org/projects/jtimer/repository/revisions/3001
Log:
Ajout d'un petit peu de moustache (en cours) pour le rapport
Added:
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java
branches/ng-jtimer/src/main/resources/ByDay_template.mustache
branches/ng-jtimer/src/main/resources/ByProject.mustache
branches/ng-jtimer/src/main/resources/subtasks.mustache
Modified:
branches/ng-jtimer/pom.xml
branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java
branches/ng-jtimer/src/main/resources/jtimer-default.properties
branches/ng-jtimer/src/main/webapp/js/app.js
branches/ng-jtimer/src/main/webapp/js/controllers.js
branches/ng-jtimer/src/main/webapp/partials/tasks.html
Modified: branches/ng-jtimer/pom.xml
===================================================================
--- branches/ng-jtimer/pom.xml 2014-06-13 15:23:28 UTC (rev 3000)
+++ branches/ng-jtimer/pom.xml 2014-06-16 15:37:22 UTC (rev 3001)
@@ -161,7 +161,12 @@
</build>
<dependencies>
- <dependency>
+ <dependency>
+ <groupId>com.github.spullara.mustache.java</groupId>
+ <artifactId>compiler</artifactId>
+ <version>0.8.15</version>
+ </dependency>
+ <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-13 15:23:28 UTC (rev 3000)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-16 15:37:22 UTC (rev 3001)
@@ -1,9 +1,11 @@
package org.chorem.jtimer.storage;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.jtimer.entities.TimerTask;
import org.chorem.jtimer.entities.TimerTime;
+import org.chorem.jtimer.utils.ReportTask;
import java.sql.Connection;
import java.sql.DriverManager;
@@ -507,12 +509,11 @@
return times;
}
- public String getRepportByProject(Long startDate, Long endDate){
- String res = "Rapport\n ========== \n";
- long tot = (long) 0;
+ public List getReportByProject(Long startDate, Long endDate){
+ List list = new ArrayList<ReportTask>();
PreparedStatement statement = null;
try{
- statement = connection.prepareStatement("SELECT TA.name AS task, sum(TI.duration) AS totalduration" +
+ statement = connection.prepareStatement("SELECT TA.name AS task, TA.parent AS parent, sum(TI.duration) AS totalduration" +
" FROM " + TABLE_TASK+" TA," + TABLE_TIME +" TI" +
" WHERE TA.taskId = TI.taskid" +
" AND TA.modificationDate >" + startDate +
@@ -521,18 +522,22 @@
ResultSet rs = statement.executeQuery();
while(rs.next()){
- res += rs.getString("task") + " : " +rs.getLong("totalduration") + ", \n";
- tot += rs.getLong("totalduration");
+ log.info("getReport");
+ if(StringUtils.isNotBlank(rs.getString("parent"))){
+
+ }else{
+ list.add(new ReportTask(rs.getString("task"), rs.getLong("totalduration")));
+ }
+
}
- res +="Totale : " + tot;
}catch(SQLException ex) {
throw new StorageException("Can't get report", ex);
} finally {
closeStatement(statement);
}
- return res;
+ return list;
}
Added: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java (rev 0)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/MustacheReport.java 2014-06-16 15:37:22 UTC (rev 3001)
@@ -0,0 +1,63 @@
+package org.chorem.jtimer.utils;
+
+import com.github.mustachejava.DefaultMustacheFactory;
+import com.github.mustachejava.Mustache;
+import com.github.mustachejava.MustacheFactory;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.jtimer.storage.Storage;
+import org.restlet.Context;
+
+import java.io.IOException;
+import java.io.StringWriter;
+import java.util.List;
+
+/**
+ * Created by olivia on 16/06/14.
+ * <p/>
+ * Project name : jtimer
+ * <p/>
+ * Package name : org.chorem.jtimer.utils
+ */
+public class MustacheReport {
+
+ protected static final Log log = LogFactory.getLog(MustacheReport.class);
+ //Storage
+ protected Storage storage;
+ protected Context context;
+ //Borne
+ protected long start;
+ protected long end;
+
+ List tasks() {
+ return storage.getReportByProject(start, end);
+ }
+
+ /**
+ * Default Constructor
+ * @param context
+ */
+ public MustacheReport(Context context, long start, long end){
+ this.context = context;
+ storage = (Storage)context.getAttributes().get(Storage.class.getName());
+ this.start = start;
+ this.end = end;
+ }
+
+ /**
+ * Methode qui cree une moustache
+ * @throws IOException
+ */
+ public String createMustache() throws IOException {
+
+ log.info("create a Mustache"+start + " " +end);
+ MustacheFactory mf = new DefaultMustacheFactory();
+ Mustache mustache = mf.compile("ByProject.mustache");
+
+ StringWriter sw = new StringWriter();
+ mustache.execute(sw,new MustacheReport(context,start,end)).flush();
+
+ return sw.toString();
+ }
+
+}
Added: branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java (rev 0)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/utils/ReportTask.java 2014-06-16 15:37:22 UTC (rev 3001)
@@ -0,0 +1,27 @@
+package org.chorem.jtimer.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by olivia on 16/06/14.
+ * <p/>
+ * Project name : jtimer
+ * <p/>
+ * Package name : org.chorem.jtimer.utils
+ */
+public class ReportTask {
+
+ /** Le nom de la tache*/
+ String name;
+
+ long time;
+ List children;
+
+ public ReportTask(String name, long time){
+ this.name = name;
+ this.time = time;
+ children = new ArrayList();
+ }
+
+}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-06-13 15:23:28 UTC (rev 3000)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-06-16 15:37:22 UTC (rev 3001)
@@ -1,8 +1,15 @@
package org.chorem.jtimer.web;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.jtimer.utils.MustacheReport;
+import org.restlet.data.MediaType;
import org.restlet.representation.Representation;
+import org.restlet.representation.StringRepresentation;
import org.restlet.resource.Get;
+import java.io.IOException;
+
/**
* Created by olivia on 11/06/14.
* <p/>
@@ -12,44 +19,40 @@
*/
public class ReportResource extends AbstractResource {
+ protected static final Log log = LogFactory.getLog(ReportResource.class);
+
/**
* Methode qui retourne la representation du rapport
* Suite a une requete de type GET
*
* @return representation du rapport
*/
- @Get("json")
- public Representation getReport() {
+ @Get
+ public Representation getReport() throws IOException {
- String type ="";
+ log.info("Passage dans get report");
+ String type ="BY_PROJECT";
+ String res="";
+ long startDate = (long) 0;
+ long endDate = Long.MAX_VALUE;
+
try {
type = String.valueOf(getQuery().getValues("type"));
+ startDate = Long.valueOf(getQuery().getValues("startDate"));
+ endDate = Long.valueOf(getQuery().getValues("endDate"));
} catch (Exception e) {
- e.printStackTrace();
+ log.error("Parametre non present dans l'url" + e);
}
- switch (type){
- case "BY_DAY":
- break;
+ MustacheReport report = new MustacheReport(getContext(), startDate, endDate);
- case "BY_WEEK":
- break;
- case "BY_MONTH":
- break;
-
- case "BY_YEAR":
- break;
-
- case "BY_PROJECT":
- break;
-
- default:
- //By project
- break;
+ if(type.equals("BY_PROJECT")){
+ res = report.createMustache();
+ log.info("Ce qui est produit " + res);
}
- return null;
+ return new StringRepresentation(res, MediaType.APPLICATION_JSON);
}
}
\ No newline at end of file
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java 2014-06-13 15:23:28 UTC (rev 3000)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java 2014-06-16 15:37:22 UTC (rev 3001)
@@ -23,10 +23,11 @@
/** Resource qui va pousser les elements vers d'autres serveurs */
protected TiersServerResource tiers = new TiersServerResource();
+
protected static final Log log = LogFactory.getLog(RestApplication.class);
/** Determine si la connexion est établie */ //TODO obruce 05/06/2014 to change when configuration available
- protected boolean connected = true;
+ protected boolean connected = false;
/**Application configuration */
JtimerConfig jtimerConf;
@@ -55,7 +56,7 @@
router.attach("/tasks/task/{taskId}", TaskResource.class);
router.attach("/tasks/time/{taskId}", TimeResource.class);
router.attach("/tasks/time", TimesResource.class);
- router.attach("/tasks/report", ReportResource.class);
+ router.attach("/report", ReportResource.class);
//router.attach("/tiers", TiersServerResource.class);
Added: branches/ng-jtimer/src/main/resources/ByDay_template.mustache
===================================================================
--- branches/ng-jtimer/src/main/resources/ByDay_template.mustache (rev 0)
+++ branches/ng-jtimer/src/main/resources/ByDay_template.mustache 2014-06-16 15:37:22 UTC (rev 3001)
@@ -0,0 +1,8 @@
+{{#days}}
+ Day : {{day}}
+ {{#tasks}}
+ Name : {{name}} | Time : {{time}}
+ {{> subtasks}}
+ {{/tasks}}
+{{/days}}
+
Added: branches/ng-jtimer/src/main/resources/ByProject.mustache
===================================================================
--- branches/ng-jtimer/src/main/resources/ByProject.mustache (rev 0)
+++ branches/ng-jtimer/src/main/resources/ByProject.mustache 2014-06-16 15:37:22 UTC (rev 3001)
@@ -0,0 +1,7 @@
+Report by project :
+===================
+
+{{#tasks}}
+ -{{name}} temps : {{time}}
+ {{>subtasks}}
+{{/tasks}}
\ No newline at end of file
Modified: branches/ng-jtimer/src/main/resources/jtimer-default.properties
===================================================================
--- branches/ng-jtimer/src/main/resources/jtimer-default.properties 2014-06-13 15:23:28 UTC (rev 3000)
+++ branches/ng-jtimer/src/main/resources/jtimer-default.properties 2014-06-16 15:37:22 UTC (rev 3001)
@@ -2,5 +2,5 @@
# jTimer default properties
###
# jTimer storage path
-jtimer.storage.path=/home/olivia/Bureau/jtimer/jtimer/jtimer8081
+jtimer.storage.path=/tmp/jtimer/jtimer8081
Added: branches/ng-jtimer/src/main/resources/subtasks.mustache
===================================================================
--- branches/ng-jtimer/src/main/resources/subtasks.mustache (rev 0)
+++ branches/ng-jtimer/src/main/resources/subtasks.mustache 2014-06-16 15:37:22 UTC (rev 3001)
@@ -0,0 +1,4 @@
+{{#subtasks}}
+ -{{name}} temps : {{time}}
+ {{> subtasks}}
+{{/subtasks}}
\ No newline at end of file
Modified: branches/ng-jtimer/src/main/webapp/js/app.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/app.js 2014-06-13 15:23:28 UTC (rev 3000)
+++ branches/ng-jtimer/src/main/webapp/js/app.js 2014-06-16 15:37:22 UTC (rev 3001)
@@ -258,8 +258,8 @@
service.callback.status(true);
};
- ws.onerror = function() {
- console.log('Websocket error');
+ ws.onerror = function(evt) {
+ console.log('Websocket error' + evt);
};
ws.onclose = function() {
Modified: branches/ng-jtimer/src/main/webapp/js/controllers.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-13 15:23:28 UTC (rev 3000)
+++ branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-16 15:37:22 UTC (rev 3001)
@@ -713,6 +713,11 @@
save();
};
+ /** Methode qui va tenter d'envoyer la tâche vers le serveur */
+ $scope.persistToServ = function(task){
+
+ };
+
/**
* Active/desactive le comptage de temps pour une tache
* @param {type} task
@@ -771,12 +776,6 @@
}
});
-
- var testWebsocket = function(){
- jTimerWebsocket.send(JSON.stringify($scope.data.tasks));
- console.log("un message est envoyé websocket")
- };
-
/** Idleness*/
/**
@@ -945,11 +944,7 @@
// connect to webscocket server (go client)
wtWebsocket.connect();
- jTimerWebsocket.connect();
- testWebsocket();
-
-
}
Modified: branches/ng-jtimer/src/main/webapp/partials/tasks.html
===================================================================
--- branches/ng-jtimer/src/main/webapp/partials/tasks.html 2014-06-13 15:23:28 UTC (rev 3000)
+++ branches/ng-jtimer/src/main/webapp/partials/tasks.html 2014-06-16 15:37:22 UTC (rev 3001)
@@ -90,7 +90,9 @@
ng-show="!$node.task.isRoot() ">
<i class="glyphicon glyphicon-pencil" ></i>
</a>
-
+ <a class="btn btn-default btn-xs" ng-click="persistToServ($node.task)">
+ <i class="glyphicon glyphicon-floppy-disk" ></i>
+ </a>
</span>
</div>
1
0
r3000 - in branches/ng-jtimer: . src/main/java/org/chorem/jtimer/storage src/main/java/org/chorem/jtimer/web src/main/java/org/chorem/jtimer/web/websocket src/main/resources src/main/webapp src/main/webapp/css src/main/webapp/js src/main/webapp/partials
by obruce@users.chorem.org 13 Jun '14
by obruce@users.chorem.org 13 Jun '14
13 Jun '14
Author: obruce
Date: 2014-06-13 17:23:28 +0200 (Fri, 13 Jun 2014)
New Revision: 3000
Url: http://forge.chorem.org/projects/jtimer/repository/revisions/3000
Log:
Ajout jettywebsocket avec un simple echo
Added:
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/websocket/
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/websocket/WebsocketHandler.java
Modified:
branches/ng-jtimer/pom.xml
branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TasksResource.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimeResource.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimesResource.java
branches/ng-jtimer/src/main/resources/jtimer-default.properties
branches/ng-jtimer/src/main/webapp/css/app.css
branches/ng-jtimer/src/main/webapp/js/app.js
branches/ng-jtimer/src/main/webapp/js/controllers.js
branches/ng-jtimer/src/main/webapp/partials/reportModal.html
branches/ng-jtimer/src/main/webapp/partials/tasks.html
branches/ng-jtimer/src/main/webapp/webtimer.appcache
Modified: branches/ng-jtimer/pom.xml
===================================================================
--- branches/ng-jtimer/pom.xml 2014-06-11 15:48:49 UTC (rev 2999)
+++ branches/ng-jtimer/pom.xml 2014-06-13 15:23:28 UTC (rev 3000)
@@ -34,7 +34,7 @@
<restletVersion>2.2.1</restletVersion>
<gsonVersion>2.2.4</gsonVersion>
<h2Version>1.4.178</h2Version>
- <jettyVersion>9.1.5.v20140505</jettyVersion>
+ <jettyVersion>9.2.1.v20140609</jettyVersion>
</properties>
<build>
@@ -116,7 +116,7 @@
<version>${jettyVersion}</version>
<configuration>
<httpConnector>
- <port>8080</port>
+ <port>8081</port>
</httpConnector>
</configuration>
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-11 15:48:49 UTC (rev 2999)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-13 15:23:28 UTC (rev 3000)
@@ -253,7 +253,59 @@
return tasks;
}
+ /**
+ * Query that returns not removed tasks
+ * @return tasks arraylist of tasks
+ */
+ public ArrayList<TimerTask> getRemovedTasks(Long date) {
+ ArrayList<TimerTask> tasks = new ArrayList<>();
+ PreparedStatement statement = null;
+ PreparedStatement statement2 = null;
+ try {
+ statement = connection.prepareStatement("SELECT TA.*, sum(TI.duration) AS totalduration FROM " +
+ TABLE_TASK + " TA, " + TABLE_TIME + " TI" +
+ " WHERE TA.taskId = TI.taskid" +
+ " AND TA.removed > 0"+
+ " GROUP BY TA.taskId");
+ ResultSet rs = statement.executeQuery();
+ while (rs.next()) {
+ TimerTask task = new TimerTask();
+ task.setTaskId(rs.getString("taskId"));
+ task.setName(rs.getString("name"));
+ task.setParent(rs.getString("parent"));
+ task.setRemoved(rs.getLong("removed"));
+ task.setTodayTime(0);
+ task.setModificationDate(new java.util.Date(rs.getLong("modificationDate")));
+ task.setTotalTime(rs.getLong("totalduration"));
+ tasks.add(task);
+ }
+ // not timed tasks
+ statement2 = connection.prepareStatement("SELECT * FROM " + TABLE_TASK +
+ " WHERE (taskId not in (SELECT taskid FROM " + TABLE_TIME + "))" +
+ " AND "+ TABLE_TASK +".modificationDate >" +date);
+ rs = statement2.executeQuery();
+ while (rs.next()) {
+ TimerTask task = new TimerTask();
+ task.setName(rs.getString("name"));
+ task.setTaskId(rs.getString("taskId"));
+ task.setParent(rs.getString("parent"));
+ task.setModificationDate(new java.util.Date(rs.getLong("modificationDate")));
+ task.setRemoved(rs.getLong("removed"));
+ task.setTodayTime(0);
+ task.setTotalTime(0);
+ tasks.add(task);
+ }
+ } catch (SQLException ex) {
+ throw new StorageException("Can't get task", ex);
+ } finally {
+ closeStatement(statement);
+ closeStatement(statement2);
+ }
+ return tasks;
+ }
+
+
/* Insert, Update, Delete */
public void addTask(TimerTask task) {
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-06-11 15:48:49 UTC (rev 2999)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-06-13 15:23:28 UTC (rev 3000)
@@ -1,5 +1,8 @@
package org.chorem.jtimer.web;
+import org.restlet.representation.Representation;
+import org.restlet.resource.Get;
+
/**
* Created by olivia on 11/06/14.
* <p/>
@@ -7,5 +10,46 @@
* <p/>
* Package name : org.chorem.jtimer.web
*/
-public class ReportResource extends AbstractResource{
-}
+public class ReportResource extends AbstractResource {
+
+ /**
+ * Methode qui retourne la representation du rapport
+ * Suite a une requete de type GET
+ *
+ * @return representation du rapport
+ */
+ @Get("json")
+ public Representation getReport() {
+
+ String type ="";
+
+ try {
+ type = String.valueOf(getQuery().getValues("type"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ switch (type){
+ case "BY_DAY":
+ break;
+
+ case "BY_WEEK":
+ break;
+
+ case "BY_MONTH":
+ break;
+
+ case "BY_YEAR":
+ break;
+
+ case "BY_PROJECT":
+ break;
+
+ default:
+ //By project
+ break;
+ }
+
+ return null;
+ }
+}
\ No newline at end of file
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java 2014-06-11 15:48:49 UTC (rev 2999)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java 2014-06-13 15:23:28 UTC (rev 3000)
@@ -26,7 +26,7 @@
protected static final Log log = LogFactory.getLog(RestApplication.class);
/** Determine si la connexion est établie */ //TODO obruce 05/06/2014 to change when configuration available
- protected boolean connected = false;
+ protected boolean connected = true;
/**Application configuration */
JtimerConfig jtimerConf;
@@ -58,12 +58,14 @@
router.attach("/tasks/report", ReportResource.class);
//router.attach("/tiers", TiersServerResource.class);
+
+
return router;
}
/**
* Initialise le context de l'application REST
- * @param context
+ * @param context le contexte de l'application
*/
protected void initContext(Context context) throws Exception {
@@ -168,7 +170,5 @@
}
}
- };
-
-
+ }
}
\ No newline at end of file
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TasksResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TasksResource.java 2014-06-11 15:48:49 UTC (rev 2999)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TasksResource.java 2014-06-13 15:23:28 UTC (rev 3000)
@@ -73,7 +73,7 @@
* Methode qui retourne la representation de la liste de toutes les taches
* Suite a une requete de type GET
*
- * @return
+ * @return reprentation des taches
*/
@Get("json")
public Representation getTasks() {
@@ -83,7 +83,9 @@
try {
date = Long.valueOf(getQuery().getValues("date"));
} catch (Exception e) {
- date = (long) 0;
+ if(log.isErrorEnabled()){
+ log.error("enttities.getTasks date revenu null");
+ }
}
ArrayList<TimerTask> timerTasks;
Gson gson = builder.create();
@@ -116,7 +118,7 @@
public void createTask(Representation representation) throws IOException {
Gson gson = builder.create();
- String repr1 = "";
+ String repr1;
dispatch = getDispatch();
@@ -139,7 +141,7 @@
/**
* Recupere la valeur de dispatch dans l'url
* TODO 04/06/14 obruce : remove this method when config will be available
- * @return
+ * @return la valeur du dispatch
*/
private boolean getDispatch() {
boolean res;
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimeResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimeResource.java 2014-06-11 15:48:49 UTC (rev 2999)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimeResource.java 2014-06-13 15:23:28 UTC (rev 3000)
@@ -143,7 +143,9 @@
if (dispatch) {
String taskId = (String) getRequest().getAttributes().get("taskId");
Pair p = Pair.of(taskId, jsonRepr);
- log.info(" la pair cree" + p.toString()+ p.getKey().toString()+p.getValue().toString());
+
+ //log.info(" la pair cree" + p.toString()+ p.getKey().toString()+p.getValue().toString());
+
todoList.pushCreatedTime(p);
}
}
@@ -164,6 +166,10 @@
String jsonRepr = representation.getText();
TimerTime t = gson.fromJson(jsonRepr, TimerTime.class);
+ if (log.isInfoEnabled()) {
+ log.info("La periode suivante est en maj : " + t.toString());
+ }
+
storage.modifyTime(t);
if (dispatch) {
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimesResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimesResource.java 2014-06-11 15:48:49 UTC (rev 2999)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimesResource.java 2014-06-13 15:23:28 UTC (rev 3000)
@@ -86,10 +86,6 @@
String json = gson.toJson(timerTasks);
- if (log.isInfoEnabled()) {
- log.info(json);
- }
-
return new StringRepresentation(json, MediaType.APPLICATION_JSON);
}
Added: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/websocket/WebsocketHandler.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/websocket/WebsocketHandler.java (rev 0)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/websocket/WebsocketHandler.java 2014-06-13 15:23:28 UTC (rev 3000)
@@ -0,0 +1,62 @@
+package org.chorem.jtimer.web.websocket;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.eclipse.jetty.websocket.api.Session;
+import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose;
+import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect;
+import org.eclipse.jetty.websocket.api.annotations.OnWebSocketError;
+import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage;
+import org.eclipse.jetty.websocket.api.annotations.WebSocket;
+import org.eclipse.jetty.websocket.servlet.WebSocketServlet;
+import org.eclipse.jetty.websocket.servlet.WebSocketServletFactory;
+
+import javax.servlet.annotation.WebServlet;
+import java.io.IOException;
+
+/**
+ * Created by olivia on 12/06/14.
+ * <p/>
+ * Project name : jtimer
+ * <p/>
+ * Package name : org.chorem.jtimer.web.websocket
+ */
+
+@WebSocket
+@WebServlet(name = "MyEcho WebSocket Servlet", urlPatterns = { "/echo" })
+public class WebsocketHandler extends WebSocketServlet {
+
+
+ private static final Log log = LogFactory.getLog(WebsocketHandler.class);
+
+ @OnWebSocketClose
+ public void onClose(int statusCode, String reason) {
+ log.info("Close: statusCode=" + statusCode + ", reason=" + reason);
+ }
+
+ @OnWebSocketError
+ public void onError(Throwable t) throws Throwable {
+ throw t;
+ }
+
+ @OnWebSocketConnect
+ public void onConnect(Session session) {
+ log.info("Connect: " + session.getRemoteAddress().getAddress());
+ try {
+ session.getRemote().sendString("Hello World!");
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @OnWebSocketMessage
+ public void onMessage(String message) {
+ log.info("Message de l'interface : " + message);
+ }
+
+ @Override
+ public void configure(WebSocketServletFactory factory) {
+ factory.getPolicy().setIdleTimeout(10000);
+ factory.register(WebsocketHandler.class);
+ }
+}
Modified: branches/ng-jtimer/src/main/resources/jtimer-default.properties
===================================================================
--- branches/ng-jtimer/src/main/resources/jtimer-default.properties 2014-06-11 15:48:49 UTC (rev 2999)
+++ branches/ng-jtimer/src/main/resources/jtimer-default.properties 2014-06-13 15:23:28 UTC (rev 3000)
@@ -2,5 +2,5 @@
# jTimer default properties
###
# jTimer storage path
-jtimer.storage.path=/home/olivia/Bureau/jtimer/jtimer/jtimer
+jtimer.storage.path=/home/olivia/Bureau/jtimer/jtimer/jtimer8081
Modified: branches/ng-jtimer/src/main/webapp/css/app.css
===================================================================
--- branches/ng-jtimer/src/main/webapp/css/app.css 2014-06-11 15:48:49 UTC (rev 2999)
+++ branches/ng-jtimer/src/main/webapp/css/app.css 2014-06-13 15:23:28 UTC (rev 3000)
@@ -261,3 +261,11 @@
width : 50%;
margin : auto;
}
+
+.small_input{
+ width : 100px;
+}
+
+.medium_input{
+ width : 200px;
+}
\ No newline at end of file
Modified: branches/ng-jtimer/src/main/webapp/js/app.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/app.js 2014-06-11 15:48:49 UTC (rev 2999)
+++ branches/ng-jtimer/src/main/webapp/js/app.js 2014-06-13 15:23:28 UTC (rev 3000)
@@ -242,8 +242,67 @@
return service;
}];
+/**
+ * Pour le websocket
+ */
+var wtJTIMERWebSocketService = [function() {
+ var service = {};
+ service.connect = function() {
+ if(service.ws) { return; }
+ var ws = new WebSocket("ws://localhost:8081/echo");
+
+ ws.onopen = function() {
+ console.log('Websocket open');
+ service.callback.status(true);
+ };
+
+ ws.onerror = function() {
+ console.log('Websocket error');
+ };
+
+ ws.onclose = function() {
+ service.callback.status(false);
+ console.log('Websocket closing');
+ };
+
+ ws.onmessage = function(message) {
+ console.log("Un message reçu venant du websocket :" + message.data)
+ };
+
+ service.ws = ws;
+ };
+
+ service.send = function(message) {
+ waitForConnection(function () {
+ service.ws.send(message);
+ if (typeof callback !== 'undefined') {
+ callback();
+ }
+ }, 1000);
+ };
+
+ service.subscribe = function(callback) {
+ service.callback = callback;
+ };
+
+ waitForConnection = function (callback, interval) {
+ if (service.ws.readyState === 1) {
+ callback();
+ } else {
+ var that = this;
+ setTimeout(function () {
+ that.waitForConnection(callback);
+ }, interval);
+ }
+ };
+
+ return service;
+}];
+
+
+
/**
* Module de webtimer
**/
@@ -295,7 +354,9 @@
.directive('wtTreeRepeat', wtTreeRepeatDirective)
.service('wtWebsocket', wtWebSocketService);
+angular.module('webtimer').factory('jTimerWebsocket', wtJTIMERWebSocketService);
+
/**
* Cette directive permet de confirmer/ infirmer une action.
* Usage: Ajouter attributs: ng-really-message="Êtes vous d'accord?" ng-really-click="takeAction()"
Modified: branches/ng-jtimer/src/main/webapp/js/controllers.js
===================================================================
--- branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-11 15:48:49 UTC (rev 2999)
+++ branches/ng-jtimer/src/main/webapp/js/controllers.js 2014-06-13 15:23:28 UTC (rev 3000)
@@ -1,4 +1,4 @@
-function TasksCtrl($scope, $interval, $timeout, $q, serverTaskAccess, serverTimeAccess, $localStorage, $window, $document, $modal, wtWebsocket) {
+function TasksCtrl($scope, $interval, $timeout, $q, serverTaskAccess, serverTimeAccess, $localStorage, $window, $document, $modal, wtWebsocket, jTimerWebsocket) {
// {Boolean} vrai si on est online
$scope.online = $window.navigator.onLine;
@@ -15,7 +15,7 @@
//interval de conec
var interval = 30000; //TODO: obruce 05-05-14 decider d'un intervalle interessant
// periode de delais = 3 periode +1msec
- var delayAccess = 2 * interval +1;
+ var delayAccess = interval + 1;
// {TreeNode} l'arbre regenere automatiquement lorsque les donnees changent
$scope.tree;
@@ -160,7 +160,7 @@
*/
var initTasksFromServ = function(){
- serverTaskAccess.query({}, function (response) {
+ serverTaskAccess.query({date : 0}, function (response) {
angular.forEach(response, function (item) {
@@ -182,10 +182,6 @@
//Un noeud avec un parent est ajoute à l'arbre de son parent
$scope.data.tasks[newTask.taskId] = newTask;
save();
- //Les temps sont recuperes du serveur
- getTimesFromServerWithTask(newTask);
-
- save();
}
save();
}
@@ -197,11 +193,11 @@
$scope.taskAccess = Date.now();
$scope.todo.lastTaskAccess= $scope.taskAccess;
- $scope.timeAccess = Date.now();
- $scope.todo.lastTimeAccess= $scope.timeAccess;
save();
});
+
+ updateTimesFromServer();
};
@@ -211,7 +207,6 @@
*
*/
var updateTasksFromServ = function(){
- console.log("updateTasksFromServ debut");
serverTaskAccess.query({date : ($scope.taskAccess-delayAccess)}, function (response) {
@@ -228,7 +223,9 @@
if(item.removed != 0){
$scope.removeTask(tmp);
}else{
- tmp.task.name = item.name;
+ if(item.name != "New task"){
+ tmp.task.name = item.name;
+ }
}
save();
@@ -267,7 +264,6 @@
save();
}
}
-
});
});
@@ -275,8 +271,6 @@
$scope.taskAccess = Date.now();
$scope.todo.lastTaskAccess= $scope.taskAccess;
save();
-
- console.log("updateTasksFromServ fin");
}
/**
@@ -409,7 +403,7 @@
angular.forEach($scope.todo.stockedNewTasks, function(task){
//On change la date au dernier acces
- task['modificationDate']=$scope.taskAccess;
+ task['modificationDate']= Date.now();
serverTaskAccess.create({dispatch:true}, angular.toJson(task), //TODO obruce 04/06/14 dispatch a enlever
function(){
@@ -423,7 +417,7 @@
//On ajoute au serveur les taches stockees pour l'ajout
angular.forEach($scope.todo.stockedEditedTasks, function(task){
//On change la date au dernier acces
- task["modificationDate"]=$scope.taskAccess;
+ task["modificationDate"]=Date.now();
serverTaskAccess.update({dispatch:true},angular.toJson(task), //TODO
function(){
@@ -439,7 +433,7 @@
angular.forEach($scope.todo.stockedNewTimes, function(times,task){
angular.forEach(times, function(time){
//On change la date au dernier acces
- time["modificationDate"]=$scope.timeAccess;
+ time["modificationDate"]=Date.now();
serverTimeAccess.create({taskId: task,dispatch:true} , angular.toJson(time),
function(){
@@ -456,7 +450,7 @@
angular.forEach($scope.todo.stockedEditedTimes, function(times,task){
angular.forEach(times, function(time){
- time["modificationDate"]=$scope.timeAccess;
+ time["modificationDate"]=Date.now();
serverTimeAccess.update({taskId: task,dispatch:true}, angular.toJson(time),
function(){
@@ -765,6 +759,26 @@
return moment().format("HH:mm DD/MM/YYYY");
};
+ console.log(jTimerWebsocket);
+
+ jTimerWebsocket.subscribe({
+ message: function(data) {
+ //var jsData = JSON.parse(data);
+ console.log("data " +data);
+ },
+ status: function(status) {
+ $scope.webSocketClientOnline = status;
+ }
+ });
+
+
+ var testWebsocket = function(){
+ jTimerWebsocket.send(JSON.stringify($scope.data.tasks));
+ console.log("un message est envoyé websocket")
+ };
+
+ /** Idleness*/
+
/**
* Subscribe to websocket messages queue.
*/
@@ -801,6 +815,7 @@
modalInstance.result.then($scope.restartFromIdleness);
};
+
/**
* Called by modal dialog to resume from idle.
*
@@ -930,7 +945,11 @@
// connect to webscocket server (go client)
wtWebsocket.connect();
+ jTimerWebsocket.connect();
+ testWebsocket();
+
+
}
Modified: branches/ng-jtimer/src/main/webapp/partials/reportModal.html
===================================================================
--- branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-06-11 15:48:49 UTC (rev 2999)
+++ branches/ng-jtimer/src/main/webapp/partials/reportModal.html 2014-06-13 15:23:28 UTC (rev 3000)
@@ -1,55 +1,63 @@
-Option du rapport:
+<div>
+ <h2>Option du rapport:</h2>
+</div>
+<hr/>
+
<div>
+ <div>
+ De :
+ <div ng-controller="ReportDatePickerCtrl" class="row">
+ <div class="col-md-6">
+ <p class="input-group medium_input">
+ <input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="obj.startDate" is-open="opened" min-date="minDate" max-date="obj.endDate" ng-required="true" close-text="Close" />
+ <span class="input-group-btn">
+ <button type="button" class="btn btn-default" ng-click="open($event)"><i class="glyphicon glyphicon-calendar"></i></button>
+ </span>
+ </p>
+ </div>
+ </div>
- <br/>
- De :
- <div ng-controller="ReportDatePickerCtrl" class="row">
- <div class="col-md-6">
- <p class="input-group">
- <input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="obj.startDate" is-open="opened" min-date="minDate" max-date="obj.endDate" ng-required="true" close-text="Close" />
+ A :
+ <div class="row" ng-controller="ReportDatePickerCtrl">
+ <div class="col-md-6">
+ <p class="input-group medium_input">
+ <input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="obj.endDate" is-open="opened" min-date="obj.startDate" max-date="maxDate" ng-required="true" close-text="Close" />
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="open($event)"><i class="glyphicon glyphicon-calendar"></i></button>
</span>
- </p>
+ </p>
+ </div>
</div>
- </div>
- A :
- <div class="row" ng-controller="ReportDatePickerCtrl">
- <div class="col-md-6">
- <p class="input-group">
- <input type="text" class="form-control" datepicker-popup="{{format}}" ng-model="obj.endDate" is-open="opened" min-date="obj.startDate" max-date="maxDate" ng-required="true" close-text="Close" />
- <span class="input-group-btn">
- <button type="button" class="btn btn-default" ng-click="open($event)"><i class="glyphicon glyphicon-calendar"></i></button>
- </span>
- </p>
+
+ <p>
+
+ </p>
+
+ <div class="btn-group" ng-show="false">
+ <label class="btn btn-primary" ng-change="changeFonc()" ng-model="radioModel" btn-radio="'1'">Jour</label>
+ <label class="btn btn-primary" ng-change="changeFonc()" ng-model="radioModel" btn-radio="'2'">Semaine</label>
+ <label class="btn btn-primary" ng-change="changeFonc()" ng-model="radioModel" btn-radio="'3'">Mois</label>
+ <label class="btn btn-primary" ng-change="changeFonc()" ng-model="radioModel" btn-radio="'4'">Année</label>
+ <label class="btn btn-primary" ng-change="changeFonc()" ng-model="radioModel" btn-radio="'5'">Projet</label>
</div>
- </div>
- <p>
-
- </p>
-
- <div class="btn-group" ng-show="false">
- <label class="btn btn-primary" ng-change="changeFonc()" ng-model="radioModel" btn-radio="'1'">Jour</label>
- <label class="btn btn-primary" ng-change="changeFonc()" ng-model="radioModel" btn-radio="'2'">Semaine</label>
- <label class="btn btn-primary" ng-change="changeFonc()" ng-model="radioModel" btn-radio="'3'">Mois</label>
- <label class="btn btn-primary" ng-change="changeFonc()" ng-model="radioModel" btn-radio="'4'">Année</label>
- <label class="btn btn-primary" ng-change="changeFonc()" ng-model="radioModel" btn-radio="'5'">Projet</label>
+ <p>
+
+ </p>
</div>
- <p>
-
- </p>
+ <div>
- <alert type="info" >
- Rapport :<br/>
- =========
- <div ng-repeat="elem in obj.report">
- {{elem.task}} : {{elem.time | time}}
- </div>
+ <alert type="info" >
+ Rapport :<br/>
+ =========
+ <div ng-repeat="elem in obj.report">
+ {{elem.task}} : {{elem.time | time}}
+ </div>
- </alert>
+ </alert>
+ </div>
</div>
Modified: branches/ng-jtimer/src/main/webapp/partials/tasks.html
===================================================================
--- branches/ng-jtimer/src/main/webapp/partials/tasks.html 2014-06-11 15:48:49 UTC (rev 2999)
+++ branches/ng-jtimer/src/main/webapp/partials/tasks.html 2014-06-13 15:23:28 UTC (rev 3000)
@@ -1,9 +1,9 @@
<div id="header">
<!--Header partie gauche -->
<span class='left form-inline'>
- <input class='search-query form-group form-control input-sm' ng-model="query" placeholder="Search">
+ <input class='search-query form-group form-control input-sm small_input' ng-model="query" placeholder="Search">
<form ng-submit="addTask()">
- <input class='search-query form-group form-group form-control input-sm' ng-model="name" placeholder="New Task">
+ <input class='search-query form-group form-control input-sm small_input' ng-model="name" placeholder="New Task">
</form>
</span>
Modified: branches/ng-jtimer/src/main/webapp/webtimer.appcache
===================================================================
--- branches/ng-jtimer/src/main/webapp/webtimer.appcache 2014-06-11 15:48:49 UTC (rev 2999)
+++ branches/ng-jtimer/src/main/webapp/webtimer.appcache 2014-06-13 15:23:28 UTC (rev 3000)
@@ -7,6 +7,7 @@
partials/contact.html
partials/tasks.html
partials/timeModal.html
+partials/reportModal.html
css/app.css
css/jtimer.css
js/app.js
1
0
r2999 - in branches/ng-jtimer/src/main/java/org/chorem/jtimer: storage web
by obruce@users.chorem.org 11 Jun '14
by obruce@users.chorem.org 11 Jun '14
11 Jun '14
Author: obruce
Date: 2014-06-11 17:48:49 +0200 (Wed, 11 Jun 2014)
New Revision: 2999
Url: http://forge.chorem.org/projects/jtimer/repository/revisions/2999
Log:
Abstract resource pour requete option
Added:
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/AbstractResource.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
Modified:
branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TaskResource.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TasksResource.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimeResource.java
branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimesResource.java
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-11 14:23:29 UTC (rev 2998)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-06-11 15:48:49 UTC (rev 2999)
@@ -35,7 +35,7 @@
protected static final String TABLE_TIME = "tasktime";
protected static final String TABLE_VERSION = "version";
- protected static String STORAGE_PATH;
+ protected String STORAGE_PATH;
protected Connection connection;
@@ -66,6 +66,7 @@
@Override
protected void finalize() throws Throwable {
connection.close();
+ super.finalize();
}
protected Connection getConnection() throws SQLException {
@@ -320,30 +321,6 @@
}
/**
- * Returns task number with ID
- * @param id identifiant de la tache
- * @return le long representant la tache dans la base
- */
- public long getTaskNumber(String id) {
- PreparedStatement statement = null;
- long result= 0;
- try {
- statement = connection.prepareStatement("SELECT id FROM " +TABLE_TASK +
- " WHERE taskId = '" + id+"'");
-
- ResultSet rs = statement.executeQuery();
- while (rs.next()) {
- result = rs.getLong(1);
- }
- } catch (SQLException ex) {
- throw new StorageException("Read error", ex);
- } finally {
- closeStatement(statement);
- }
- return result;
- }
-
- /**
* Ajoute une periode pour une tache
* @param task la tache qui va recevoir un temps
* @param date la date de creation
@@ -478,7 +455,35 @@
return times;
}
+ public String getRepportByProject(Long startDate, Long endDate){
+ String res = "Rapport\n ========== \n";
+ long tot = (long) 0;
+ PreparedStatement statement = null;
+ try{
+ statement = connection.prepareStatement("SELECT TA.name AS task, sum(TI.duration) AS totalduration" +
+ " FROM " + TABLE_TASK+" TA," + TABLE_TIME +" TI" +
+ " WHERE TA.taskId = TI.taskid" +
+ " AND TA.modificationDate >" + startDate +
+ " AND TA.modificationDate <" + endDate +
+ " GROUP BY TA.taskId");
+ ResultSet rs = statement.executeQuery();
+ while(rs.next()){
+ res += rs.getString("task") + " : " +rs.getLong("totalduration") + ", \n";
+ tot += rs.getLong("totalduration");
+ }
+
+ res +="Totale : " + tot;
+ }catch(SQLException ex) {
+ throw new StorageException("Can't get report", ex);
+ } finally {
+ closeStatement(statement);
+ }
+
+ return res;
+ }
+
+
/** Suppression de tuple **/
/**
Added: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/AbstractResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/AbstractResource.java (rev 0)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/AbstractResource.java 2014-06-11 15:48:49 UTC (rev 2999)
@@ -0,0 +1,30 @@
+package org.chorem.jtimer.web;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.restlet.resource.Options;
+import org.restlet.resource.ServerResource;
+
+/**
+ * Created by olivia on 11/06/14.
+ * <p/>
+ * Project name : jtimer
+ * <p/>
+ * Package name : org.chorem.jtimer.web
+ */
+public class AbstractResource extends ServerResource {
+
+ private static final Log log = LogFactory.getLog(AbstractResource.class);
+
+ /**
+ * Called when option requests are catched
+ * Needed to avoid cross origin
+ */
+ @Options
+ public void Options() {
+ if (log.isInfoEnabled()) {
+ log.info("org.chorem.jtimer.web.AbstractResource.Options");
+ }
+ }
+
+}
Added: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java (rev 0)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/ReportResource.java 2014-06-11 15:48:49 UTC (rev 2999)
@@ -0,0 +1,11 @@
+package org.chorem.jtimer.web;
+
+/**
+ * Created by olivia on 11/06/14.
+ * <p/>
+ * Project name : jtimer
+ * <p/>
+ * Package name : org.chorem.jtimer.web
+ */
+public class ReportResource extends AbstractResource{
+}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java 2014-06-11 14:23:29 UTC (rev 2998)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java 2014-06-11 15:48:49 UTC (rev 2999)
@@ -55,6 +55,7 @@
router.attach("/tasks/task/{taskId}", TaskResource.class);
router.attach("/tasks/time/{taskId}", TimeResource.class);
router.attach("/tasks/time", TimesResource.class);
+ router.attach("/tasks/report", ReportResource.class);
//router.attach("/tiers", TiersServerResource.class);
return router;
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TaskResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TaskResource.java 2014-06-11 14:23:29 UTC (rev 2998)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TaskResource.java 2014-06-11 15:48:49 UTC (rev 2999)
@@ -1,7 +1,6 @@
package org.chorem.jtimer.web;
import com.google.gson.Gson;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.jtimer.entities.TodoList;
@@ -9,12 +8,14 @@
import org.restlet.data.MediaType;
import org.restlet.representation.Representation;
import org.restlet.representation.StringRepresentation;
-import org.restlet.resource.*;
+import org.restlet.resource.Delete;
+import org.restlet.resource.Get;
+import org.restlet.resource.ResourceException;
import java.util.Date;
-public class TaskResource extends ServerResource {
+public class TaskResource extends AbstractResource {
private static final Log log = LogFactory.getLog(TaskResource.class);
@@ -84,15 +85,4 @@
}
return res;
}
-
-
-
- @Options
- public void taskOptions() {
- if (log.isInfoEnabled()) {
- log.info("org.chorem.jtimer.web.TaskResource.taskOptions");
- }
- }
-
-
}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TasksResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TasksResource.java 2014-06-11 14:23:29 UTC (rev 2998)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TasksResource.java 2014-06-11 15:48:49 UTC (rev 2999)
@@ -1,11 +1,14 @@
package org.chorem.jtimer.web;
-import java.io.IOException;
-import java.lang.reflect.Type;
-import java.util.ArrayList;
-import java.util.Date;
-
-
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParseException;
+import com.google.gson.JsonPrimitive;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -16,23 +19,16 @@
import org.restlet.representation.Representation;
import org.restlet.representation.StringRepresentation;
import org.restlet.resource.Get;
-import org.restlet.resource.Options;
import org.restlet.resource.Post;
import org.restlet.resource.Put;
import org.restlet.resource.ResourceException;
-import org.restlet.resource.ServerResource;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.JsonDeserializationContext;
-import com.google.gson.JsonDeserializer;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonParseException;
-import com.google.gson.JsonPrimitive;
-import com.google.gson.JsonSerializationContext;
-import com.google.gson.JsonSerializer;
+import java.io.IOException;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Date;
-public class TasksResource extends ServerResource {
+public class TasksResource extends AbstractResource {
private static final Log log = LogFactory.getLog(TasksResource.class);
@@ -189,11 +185,5 @@
}
- @Options
- public void tasksOptions() {
- if (log.isInfoEnabled()) {
- log.info("org.chorem.jtimer.web.TasksResource.tasksOptions");
- }
- }
}
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimeResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimeResource.java 2014-06-11 14:23:29 UTC (rev 2998)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimeResource.java 2014-06-11 15:48:49 UTC (rev 2999)
@@ -20,18 +20,16 @@
import org.restlet.representation.StringRepresentation;
import org.restlet.resource.Delete;
import org.restlet.resource.Get;
-import org.restlet.resource.Options;
import org.restlet.resource.Post;
import org.restlet.resource.Put;
import org.restlet.resource.ResourceException;
-import org.restlet.resource.ServerResource;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.Date;
import java.util.List;
-public class TimeResource extends ServerResource {
+public class TimeResource extends AbstractResource {
private static final Log log = LogFactory.getLog(TimeResource.class);
@@ -176,15 +174,8 @@
}
- /**
- * Called when option requests are catched
- * Needed to avoid cross origin
- */
- @Options
- public void timeOptions() {
- //do nothing
- }
+
/**
* Recupere la valeur de dispatch dans l'url
* TODO 04/06/14 obruce : remove this method when config will be available
Modified: branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimesResource.java
===================================================================
--- branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimesResource.java 2014-06-11 14:23:29 UTC (rev 2998)
+++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimesResource.java 2014-06-11 15:48:49 UTC (rev 2999)
@@ -1,9 +1,16 @@
package org.chorem.jtimer.web;
-import com.google.gson.*;
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParseException;
+import com.google.gson.JsonPrimitive;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.chorem.jtimer.entities.TimerTask;
import org.chorem.jtimer.entities.TimerTime;
import org.chorem.jtimer.storage.Storage;
import org.restlet.data.MediaType;
@@ -11,17 +18,15 @@
import org.restlet.representation.StringRepresentation;
import org.restlet.resource.Get;
import org.restlet.resource.ResourceException;
-import org.restlet.resource.ServerResource;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Date;
-import java.util.HashMap;
/**
* Created by olivia on 21/05/14.
*/
-public class TimesResource extends ServerResource {
+public class TimesResource extends AbstractResource {
private static final Log log = LogFactory.getLog(TaskResource.class);
protected Storage storage;
1
0