--- a/.classpath Fri Mar 19 18:35:15 2010 +0100
+++ b/.classpath Sat Mar 20 03:54:43 2010 +0100
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/JVM 1.6.0">
- <attributes>
- <attribute name="owner.project.facets" value="jst.java"/>
- </attributes>
- </classpathentry>
- <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0">
- <attributes>
- <attribute name="owner.project.facets" value="jst.web"/>
- </attributes>
- </classpathentry>
- <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
- <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
- <classpathentry kind="output" path="build/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
+ <attributes>
+ <attribute name="owner.project.facets" value="jst.java"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0">
+ <attributes>
+ <attribute name="owner.project.facets" value="jst.web"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
+ <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
+ <classpathentry kind="output" path="build/classes"/>
+</classpath>
--- a/WebContent/WEB-INF/web.xml Fri Mar 19 18:35:15 2010 +0100
+++ b/WebContent/WEB-INF/web.xml Sat Mar 20 03:54:43 2010 +0100
@@ -16,7 +16,7 @@
</servlet-class>
<init-param>
<param-name>initDatabasePath</param-name>
- <param-value>/tmp/db</param-value>
+ <param-value>c:/tmp/db</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
--- a/src/fr/iri/thd/sonyengine/MovieFragmentResource.java Fri Mar 19 18:35:15 2010 +0100
+++ b/src/fr/iri/thd/sonyengine/MovieFragmentResource.java Sat Mar 20 03:54:43 2010 +0100
@@ -1,11 +1,31 @@
package fr.iri.thd.sonyengine;
+import javax.servlet.ServletContext;
+import javax.ws.rs.POST;
import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.core.Context;
+
+import thd.ThdEngine;
@Path ("segment")
public class MovieFragmentResource {
- public void create(String id) {
+ @POST
+ @Path("create/{id}")
+ public void create(@PathParam("id") String id, @Context ServletContext context) {
+
+ ThdEngine.getEngine().createMovieFragment(id);
+
+ DbEnv dbenv = (DbEnv)context.getAttribute(ServletContainer.DB_ENV_ATTRIBUTE);
+
+ DataAccessor da = new DataAccessor(dbenv.getEntityStore());
+
+ MovieFragment fragment = new MovieFragment(id);
+ da.movieFragmentById.put(fragment);
+
+ ThdEngine.getEngine().reTrain();
+
}
public void find(String id, String tag, Float separation, Boolean b) {
--- a/src/fr/iri/thd/sonyengine/ServletContainer.java Fri Mar 19 18:35:15 2010 +0100
+++ b/src/fr/iri/thd/sonyengine/ServletContainer.java Sat Mar 20 03:54:43 2010 +0100
@@ -5,6 +5,10 @@
import javax.servlet.ServletException;
import javax.ws.rs.core.Application;
+import thd.ThdEngine;
+
+import com.sleepycat.persist.EntityCursor;
+
public class ServletContainer extends
com.sun.jersey.spi.container.servlet.ServletContainer {
@@ -13,6 +17,8 @@
*/
private static final long serialVersionUID = -447765110849619632L;
+ public static final String DB_ENV_ATTRIBUTE = "DB_ENV";
+
public ServletContainer() {
}
@@ -30,7 +36,55 @@
String databasePath = this.getInitParameter("initDatabasePath");
+ if(databasePath == null)
+ return;
+
+ File databasePathFile = new File(databasePath);
+
+ if(!databasePathFile.exists())
+ {
+ databasePathFile.mkdirs();
+ }
DbEnv env = new DbEnv();
- env.setup(new File(databasePath), true);
+ env.setup(databasePathFile, false);
+
+ // set DbEnv in servlet context
+ this.getServletContext().setAttribute(ServletContainer.DB_ENV_ATTRIBUTE, env);
+
+ //load all entities
+ DataAccessor da = new DataAccessor(env.getEntityStore());
+
+ EntityCursor<MovieFragment> movieFragmentItems = da.movieFragmentById.entities();
+
+ try {
+ for(MovieFragment item : movieFragmentItems) {
+ ThdEngine.getEngine().createMovieFragment(item.getId());
+ }
+ }
+ finally {
+ movieFragmentItems.close();
+ }
+
+ EntityCursor<Tag> tagItems = da.tagById.entities();
+
+ try {
+ for(Tag item : tagItems) {
+ ThdEngine.getEngine().addTag(item.getName(), item.getSegment());
+ }
+ }
+ finally {
+ tagItems.close();
+ }
+
+ ThdEngine.getEngine().reTrain();
}
+
+ public void destroy() {
+ DbEnv env = (DbEnv)this.getServletContext().getAttribute(DB_ENV_ATTRIBUTE);
+
+ if(env != null) {
+ env.close();
+ }
+ }
+
}