# HG changeset patch # User IRI # Date 1269053683 -3600 # Node ID 25dda14508ec3b9b90b4254a0183781db81621ce # Parent 586a7e03cbb43ad46aa0b9411d0f73503da541fe defined init and retrain diff -r 586a7e03cbb4 -r 25dda14508ec .classpath --- a/.classpath Fri Mar 19 18:35:15 2010 +0100 +++ b/.classpath Sat Mar 20 03:54:43 2010 +0100 @@ -1,17 +1,17 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + diff -r 586a7e03cbb4 -r 25dda14508ec WebContent/WEB-INF/web.xml --- 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 @@ initDatabasePath - /tmp/db + c:/tmp/db 1 diff -r 586a7e03cbb4 -r 25dda14508ec src/fr/iri/thd/sonyengine/MovieFragmentResource.java --- 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) { diff -r 586a7e03cbb4 -r 25dda14508ec src/fr/iri/thd/sonyengine/ServletContainer.java --- 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 movieFragmentItems = da.movieFragmentById.entities(); + + try { + for(MovieFragment item : movieFragmentItems) { + ThdEngine.getEngine().createMovieFragment(item.getId()); + } + } + finally { + movieFragmentItems.close(); + } + + EntityCursor 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(); + } + } + }