r2958 - in branches/ng-jtimer: . src/main/java/org/chorem/jtimer/storage src/main/java/org/chorem/jtimer/web
Author: obruce Date: 2014-04-23 16:37:57 +0200 (Wed, 23 Apr 2014) New Revision: 2958 Url: http://forge.chorem.org/projects/jtimer/repository/revisions/2958 Log: Storage: added function getTask() Web implementation of TaskResource and TimeResource Modified: branches/ng-jtimer/ 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/RestApplication.java branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TaskResource.java branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimeResource.java Property changes on: branches/ng-jtimer ___________________________________________________________________ Modified: svn:ignore - .settings target .project .classpath + .settings target .project .classpath .idea *.iml Modified: branches/ng-jtimer/pom.xml =================================================================== --- branches/ng-jtimer/pom.xml 2014-04-14 19:36:46 UTC (rev 2957) +++ branches/ng-jtimer/pom.xml 2014-04-23 14:37:57 UTC (rev 2958) @@ -179,11 +179,8 @@ </dependencies> <repositories> + <repository> - <id>sonatype</id> - <url>https://oss.sonatype.org/content/groups/public/</url> - </repository> - <repository> <id>maven-restlet</id> <name>Public online Restlet repository</name> <url>http://maven.restlet.org</url> 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-04-14 19:36:46 UTC (rev 2957) +++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/storage/Storage.java 2014-04-23 14:37:57 UTC (rev 2958) @@ -56,6 +56,8 @@ } } + /** Connection Part **/ + @Override protected void finalize() throws Throwable { connection.close(); @@ -130,6 +132,10 @@ return found; } + /** + * Create tables + * @param conn + */ protected void createSchema(Connection conn) { Statement statement = null; try { @@ -156,6 +162,8 @@ } + /** Query **/ + /** * Find all project. (task with no parent, parent = 0). * @@ -177,7 +185,11 @@ } return result; } - + + /** + * Query that returns every tasks + * @return tasks arraylist of tasks + */ public List<TimerTask> getTasks() { List<TimerTask> tasks = new ArrayList<>(); PreparedStatement statement = null; @@ -192,6 +204,7 @@ TimerTask task = new TimerTask(); task.setNumber(rs.getInt("id")); task.setName(rs.getString("name")); + task.setParent(rs.getLong("parent")); task.setTodayTime(0); task.setTotalTime(rs.getLong("totalduration")); tasks.add(task); @@ -205,6 +218,7 @@ TimerTask task = new TimerTask(); task.setNumber(rs.getInt("id")); task.setName(rs.getString("name")); + task.setParent(rs.getLong("parent")); task.setTodayTime(0); task.setTotalTime(0); tasks.add(task); @@ -218,6 +232,96 @@ return tasks; } + /** + * Gets a task by its ID + * @param taskId the task id + * @return a task + */ + public TimerTask getTask(long taskId) { + + TimerTask task = new TimerTask(); + PreparedStatement statement = null; + PreparedStatement statement2 = null; + try { + statement = connection.prepareStatement("SELECT TA.*, TI.duration AS totalduration FROM " + + TABLE_TASK + " TA, " + TABLE_TIME + " TI" + + " WHERE TA.id = TI.taskid " + + "AND TA.id = " + taskId +" " + ); + ResultSet rs = statement.executeQuery(); + while (rs.next()) { + + task.setNumber(rs.getInt("id")); + task.setName(rs.getString("name")); + task.setParent(rs.getLong("parent")); + task.setTodayTime(0); + task.setTotalTime(rs.getLong("totalduration")); + } + + } catch (SQLException ex) { + throw new StorageException("Can't get task", ex); + } finally { + closeStatement(statement); + } + return task; + } + + /** + * Gets a task by its ID + * + * @return a task + */ + public List<TimerTask> getRecentTasks() { + + List<TimerTask> tasks = new ArrayList<>(); + PreparedStatement statement = null; + PreparedStatement statement2 = null; + try { + statement = connection.prepareStatement("SELECT TA.*, sum(TI.duration) AS totalduration, Max(TI.date) AS lastDate FROM " + + TABLE_TASK + " TA, " + TABLE_TIME + " TI" + + " WHERE TA.id = TI.taskid and TI.date < DATE '1995-12-31'" + + " GROUP BY TA.id"); + + ResultSet rs = statement.executeQuery(); + while (rs.next()) { + TimerTask task = new TimerTask(); + task.setNumber(rs.getInt("id")); + task.setName(rs.getString("name")); + task.setParent(rs.getLong("parent")); + + task.setTodayTime(0); + task.setTotalTime(rs.getLong("totalduration")); + tasks.add(task); + } + + // not timed tasks + statement2 = connection.prepareStatement("SELECT * FROM " + TABLE_TASK + + " WHERE id not in (SELECT taskid FROM " + TABLE_TIME + ")"); + rs = statement2.executeQuery(); + while (rs.next()) { + TimerTask task = new TimerTask(); + task.setNumber(rs.getInt("id")); + task.setName(rs.getString("name")); + task.setParent(rs.getLong("parent")); + 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) { PreparedStatement statement = null; try { 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-04-14 19:36:46 UTC (rev 2957) +++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/RestApplication.java 2014-04-23 14:37:57 UTC (rev 2958) @@ -37,14 +37,12 @@ if (storage.getTasksCount() == 0) { TimerTask jTimerProject = new TimerTask(1, "jTimer"); - jTimerProject.setNumber(1); TimerTask jTimerTask1 = new TimerTask(2, "WebService"); jTimerTask1.setParent(jTimerProject.getNumber()); storage.addTask(jTimerProject); storage.addTask(jTimerTask1); storage.addTaskTime(jTimerTask1, new Date(), UUID.randomUUID().toString(), 4567); storage.addTaskTime(jTimerTask1, new Date(), UUID.randomUUID().toString(), 20); - storage.addTask(new TimerTask(3, "Chorem")); storage.addTask(new TimerTask(4, "Wikitty")); storage.addTask(new TimerTask(5, "Nuiton-js")); 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-04-14 19:36:46 UTC (rev 2957) +++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TaskResource.java 2014-04-23 14:37:57 UTC (rev 2958) @@ -1,5 +1,6 @@ package org.chorem.jtimer.web; +import com.google.gson.Gson; import org.chorem.jtimer.storage.Storage; import org.restlet.data.MediaType; import org.restlet.representation.Representation; @@ -20,6 +21,8 @@ @Get("json") public Representation getTask() { String taskId = (String)getRequest().getAttributes().get("taskId"); - return new StringRepresentation("{\"args\":" + taskId + "}", MediaType.APPLICATION_JSON); + Gson gson = new Gson(); + String json = gson.toJson(storage.getTask(Long.valueOf(taskId).longValue())); + return new StringRepresentation( json , MediaType.APPLICATION_JSON); } } 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-04-14 19:36:46 UTC (rev 2957) +++ branches/ng-jtimer/src/main/java/org/chorem/jtimer/web/TimeResource.java 2014-04-23 14:37:57 UTC (rev 2958) @@ -1,7 +1,27 @@ package org.chorem.jtimer.web; +import com.google.gson.Gson; +import org.chorem.jtimer.storage.Storage; +import org.restlet.data.MediaType; +import org.restlet.representation.Representation; +import org.restlet.representation.StringRepresentation; +import org.restlet.resource.Get; +import org.restlet.resource.ResourceException; import org.restlet.resource.ServerResource; public class TimeResource extends ServerResource { + protected Storage storage; + @Override + protected void doInit() throws ResourceException { + storage = (Storage)getContext().getAttributes().get(Storage.class.getName()); + } + + @Get("json") + public Representation getTask() { + String taskId = (String)getRequest().getAttributes().get("taskId"); + Gson gson = new Gson(); + String jsonTime = gson.toJson(storage.getTask(Long.valueOf(taskId).longValue()).getTodayTime()); + return new StringRepresentation("Today time : " + jsonTime , MediaType.APPLICATION_JSON); + } }
participants (1)
-
obruceļ¼ users.chorem.org