defined init and retrain
authorIRI
Sat, 20 Mar 2010 03:54:43 +0100
changeset 1 25dda14508ec
parent 0 586a7e03cbb4
child 2 4a089c49eb44
defined init and retrain
.classpath
WebContent/WEB-INF/web.xml
src/fr/iri/thd/sonyengine/MovieFragmentResource.java
src/fr/iri/thd/sonyengine/ServletContainer.java
--- 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();
+		}
+	}
+	
 }