# HG changeset patch # User ymh # Date 1271254699 -7200 # Node ID e2fef6e10cac777009cfc580c6281489c817ea06 # Parent a5cc9d88b2e4e57c77df681cab0be948a16c3a23 Corrections for call from php diff -r a5cc9d88b2e4 -r e2fef6e10cac WebContent/WEB-INF/templates/info.ftl --- a/WebContent/WEB-INF/templates/info.ftl Fri Apr 09 18:22:40 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ - - - Info on - - -

Informations

- - - - - - - - - - - - - - - - - - - - - - - -
TextValue
DATABASE PATH${dbpath}
Segments${segments_nb}
Segments in db${segments_db_nb}
Tags${tags_nb}
- - \ No newline at end of file diff -r a5cc9d88b2e4 -r e2fef6e10cac WebContent/WEB-INF/templates/status.ftl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WebContent/WEB-INF/templates/status.ftl Wed Apr 14 16:18:19 2010 +0200 @@ -0,0 +1,32 @@ + + + Info on + + +

Informations

+ + + + + + + + + + + + + + + + + + + + + + + +
TextValue
DATABASE PATH${dbpath}
Segments${segments_nb}
Segments in db${segments_db_nb}
Tags${tags_nb}
+ + \ No newline at end of file diff -r a5cc9d88b2e4 -r e2fef6e10cac src/fr/iri/thd/sonyengine/core/SonyengineException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/fr/iri/thd/sonyengine/core/SonyengineException.java Wed Apr 14 16:18:19 2010 +0200 @@ -0,0 +1,25 @@ +package fr.iri.thd.sonyengine.core; + +public class SonyengineException extends Exception { + + /** + * + */ + private static final long serialVersionUID = -8891243561994161034L; + + public SonyengineException() { + } + + public SonyengineException(String message) { + super(message); + } + + public SonyengineException(Throwable cause) { + super(cause); + } + + public SonyengineException(String message, Throwable cause) { + super(message, cause); + } + +} diff -r a5cc9d88b2e4 -r e2fef6e10cac src/fr/iri/thd/sonyengine/test/TestEngineResource.java --- a/src/fr/iri/thd/sonyengine/test/TestEngineResource.java Fri Apr 09 18:22:40 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,390 +0,0 @@ -package fr.iri.thd.sonyengine.test.old; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -import javax.ws.rs.core.MediaType; - -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.WebResource; -import com.sun.jersey.api.representation.Form; - -import fr.iri.thd.sonyengine.core.DataAccessor; -import fr.iri.thd.sonyengine.core.DbEnv; - -/* - * - * import java.io.File; - -import core.Tag; - -/** - * A class to test ThdEngine - * - * @author pachet - * -public class ThdEngineTest { - - public static void main(String[] args) { - testSimpleExampleManual(); -// testSimpleExampleFile(); - // testUniversCineFile(); - } - - /** - * Tests the engine with a small set of movies and tags, entered -"manually", one by one - private static void testSimpleExampleManual() { - ThdEngine engine = ThdEngine.getEngine(); - engine.createMovieFragment("ref1"); - engine.createMovieFragment("ref2"); - engine.createMovieFragment("ref3"); - engine.createMovieFragment("ref4"); - engine.createMovieFragment("ref5"); - engine.createMovieFragment("ref6"); - engine.createMovieFragment("ref7"); - - engine.addTag("crayon", "ref1"); - engine.addTag("carte", "ref1"); - engine.addTag("bateau", "ref1"); - engine.addTag("voiture", "ref1"); - engine.addTag("car", "ref1"); - - engine.addTag("enfant", "ref2"); - engine.addTag("famille", "ref2"); - engine.addTag("violon", "ref2"); - engine.addTag("maison", "ref2"); - engine.addTag("hopital", "ref2"); - - engine.addTag("enfant", "ref3"); - engine.addTag("famille", "ref3"); - engine.addTag("violon", "ref3"); - engine.addTag("maison", "ref3"); - engine.addTag("ordinateur", "ref3"); - engine.addTag("fenetre", "ref3"); - engine.addTag("voiture", "ref3"); - engine.addTag("guitare", "ref3"); - engine.addTag("carte", "ref3"); - - engine.addTag("enfant", "ref4"); - engine.addTag("famille", "ref4"); - engine.addTag("violon", "ref4"); - engine.addTag("bateau", "ref4"); - engine.addTag("ordinateur", "ref4"); - engine.addTag("fenetre", "ref4"); - engine.addTag("stylo", "ref4"); - engine.addTag("perroquet", "ref4"); - engine.addTag("crayon", "ref4"); - engine.addTag("tele", "ref4"); - engine.addTag("bateau", "ref4"); - - engine.addTag("ordinateur", "ref5"); - engine.addTag("crayon", "ref5"); - engine.addTag("fenetre", "ref5"); - engine.addTag("hopital", "ref5"); - engine.addTag("carte", "ref5"); - engine.addTag("tele", "ref5"); - engine.addTag("stylo", "ref5"); - engine.addTag("perroquet", "ref5"); - engine.addTag("bateau", "ref5"); - engine.addTag("guitare", "ref5"); - - engine.addTag("maison", "ref6"); - engine.addTag("perroquet", "ref6"); - engine.addTag("stylo", "ref6"); - engine.addTag("guitare", "ref6"); - engine.addTag("hopital", "ref6"); - engine.addTag("tele", "ref6"); - engine.addTag("car", "ref6"); - engine.addTag("voiture", "ref6"); - engine.addTag("fenetre", "ref6"); - - engine.addTag("car", "ref7"); - engine.addTag("voiture", "ref7"); - - engine.reTrain(); - engine.showAllTagValues(); - - //Neighbor neighbor = engine.findMore("ref1", "enfant", .05f, true); - - while (neighbor != null) { - System.out.println(neighbor.getMovieRef() + " distance: " - + neighbor.getDistance()); - neighbor = engine.findMore(neighbor.getMovieRef(), "enfant", .05f, - true); - } - System.out.println("cannot find any better"); - } - - /** - * Tests the engine with a xcl file containing references of movies and - * their tags. esult should be the same than testSimpleExampleManual() - public static void testSimpleExampleFile() { - ThdEngine engine = ThdEngine.getEngine(); - engine.loadFromTextFile(new File("./Sessions/Essai.csv")); - System.out.println("number of movies read: " - + engine.getAllMovieFragments().size()); - - engine.reTrain(); - engine.showAllTagValues(); - - Neighbor neighbor = engine.findMore("ref1", "enfant", .05f, true); - - while (neighbor != null) { - System.out.println(neighbor.getMovieRef() + " distance: " - + neighbor.getDistance()); - neighbor = engine.findMore(neighbor.getMovieRef(), "enfant", .05f, - true); - } - System.out.println("cannot find any better"); - } - - /** - * Tests the engine with a xcl file containing references of movies and - * their tags - public static void testUniversCineFile() { - ThdEngine engine = ThdEngine.getEngine(); - engine.loadFromTextFile(new File("./Sessions/MovieFrame2.csv")); - System.out.println("number of movies read: " - + engine.getAllMovieFragments().size()); - ThdMovieFragment sobibor = engine - .movieFragmentNamed("Sobibor, 14 octobre 1943, 16 heures"); - engine.reTrain(); - - Tag T_enfant = engine.tagNamed("Enfant"); - System.out.println(sobibor); - System.out.println(T_enfant); - - engine.tagNamed("Enfant").valueFor(sobibor); - - Neighbor neighbor = engine.findMore(sobibor.getName(), "Enfant", .05f, - true); - - while (neighbor != null) { - System.out.println(neighbor.getMovieRef() + " distance: " - + neighbor.getDistance()); - neighbor = engine.findMore(neighbor.getMovieRef(), "Enfant", .05f, - true); - } - System.out.println("cannot find any better"); - } - -} - - * - * - * - * - * - */ - - - -public class TestEngineResource { - - public static final String BASE_URL = "http://localhost:9080/sonyengine/"; - public static final String DATABASE_PATH = "/Users/ymh/dev/tmp/db"; - - private DbEnv dbenv = null; - private File databasePathFile = null; - private String baseurl = null; - - @Before - public void setup() - { - String databasepath = System.getProperty("database_path"); - if(databasepath == null) - databasepath = DATABASE_PATH; - databasePathFile = new File(databasepath); - - this.baseurl = System.getProperty("baseurl"); - if(this.baseurl == null) - this.baseurl = BASE_URL; - } - - @After - public void teardown() { - - if(dbenv != null) - dbenv.close(); - } - - - - - - @Test - public void testCreateSequenceList() { - - List movieIds = new ArrayList(); - - for(int i=0; i< 10; i++) { - try { - Thread.sleep(1); - } catch (InterruptedException e) { - e.printStackTrace(); - } - movieIds.add("movie" + System.currentTimeMillis()); - } - - String xml = ""; - for(String sequenceId: movieIds) { - xml += String.format("", sequenceId); - } - xml += ""; - - Client c = Client.create(); - WebResource res = c.resource(this.baseurl).path("segment").path("createall"); - Form form = new Form(); - form.add("xml", xml); - String response = res.type(MediaType.APPLICATION_FORM_URLENCODED).accept(MediaType.APPLICATION_XML_TYPE).post(String.class, form); - - Assert.assertNotNull(response); - - dbenv = new DbEnv(); - dbenv.setup(databasePathFile, true, true); - - DataAccessor da = new DataAccessor(this.dbenv.getEntityStore()); - - for(String sequenceId: movieIds) { - Assert.assertTrue(da.movieFragmentById.contains(sequenceId)); - } - - } - - - @Test - public void testReset() { - Client c = Client.create(); - WebResource res = c.resource(this.baseurl); - String response = res.path("engine").path("reset").accept(MediaType.TEXT_PLAIN).post(String.class); - - Assert.assertEquals(response, "ok"); - - dbenv = new DbEnv(); - dbenv.setup(databasePathFile, true, true); - - DataAccessor da = new DataAccessor(this.dbenv.getEntityStore()); - - Assert.assertEquals(0, da.movieFragmentById.count()); - Assert.assertEquals(0, da.tagById.count()); - Assert.assertEquals(0, da.tagByName.count()); - Assert.assertEquals(0, da.tagBySegment.count()); - - } - - - @Test - public void testClearTagsForm() { - - String movieName = "movie" + System.currentTimeMillis(); - - List tagNames = new ArrayList(); - - for(int i=0; i< 10; i++) { - try { - Thread.sleep(1); - } catch (InterruptedException e) { - e.printStackTrace(); - } - tagNames.add("tag" + System.currentTimeMillis()); - } - - Client c = Client.create(); - WebResource res = c.resource(this.baseurl + "segment/create/" + movieName); - String response = res.accept(MediaType.APPLICATION_XML_TYPE).post(String.class); - - Assert.assertNotNull(response); - - String xml = ""; - for(String tagName: tagNames) { - xml += String.format("", tagName, movieName); - } - xml += ""; - - res = c.resource(this.baseurl).path("tag").path("add"); - Form form = new Form(); - form.add("xml", xml); - response = res.type(MediaType.APPLICATION_FORM_URLENCODED).accept(MediaType.APPLICATION_XML_TYPE).post(String.class, form); - - Assert.assertNotNull(response); - - form = new Form(); - form.add("id", movieName); - - res = c.resource(this.baseurl).path("segment").path("cleartags"); - response = res.type(MediaType.APPLICATION_FORM_URLENCODED).accept(MediaType.TEXT_PLAIN).post(String.class,form); - - Assert.assertEquals("ok", response); - - - dbenv = new DbEnv(); - dbenv.setup(databasePathFile, true, true); - - DataAccessor da = new DataAccessor(this.dbenv.getEntityStore()); - - - da = new DataAccessor(this.dbenv.getEntityStore()); - - Assert.assertFalse(da.tagBySegment.contains(movieName)); - - - } - - @Test - public void testClearTagsPath() { - - String movieName = "movie" + System.currentTimeMillis(); - - List tagNames = new ArrayList(); - - for(int i=0; i< 10; i++) { - try { - Thread.sleep(1); - } catch (InterruptedException e) { - e.printStackTrace(); - } - tagNames.add("tag" + System.currentTimeMillis()); - } - - Client c = Client.create(); - WebResource res = c.resource(this.baseurl + "segment/create/" + movieName); - String response = res.accept(MediaType.APPLICATION_XML_TYPE).post(String.class); - - Assert.assertNotNull(response); - - String xml = ""; - for(String tagName: tagNames) { - xml += String.format("", tagName, movieName); - } - xml += ""; - - res = c.resource(this.baseurl).path("tag").path("add"); - Form form = new Form(); - form.add("xml", xml); - response = res.type(MediaType.APPLICATION_FORM_URLENCODED).accept(MediaType.APPLICATION_XML_TYPE).post(String.class, form); - - Assert.assertNotNull(response); - - res = c.resource(this.baseurl).path("segment").path("cleartags").path(movieName); - response = res.type(MediaType.APPLICATION_FORM_URLENCODED).accept(MediaType.TEXT_PLAIN).post(String.class); - - Assert.assertEquals("ok", response); - - dbenv = new DbEnv(); - dbenv.setup(databasePathFile, true, true); - - DataAccessor da = new DataAccessor(this.dbenv.getEntityStore()); - - Assert.assertFalse(da.tagBySegment.contains(movieName)); - - } - - -} diff -r a5cc9d88b2e4 -r e2fef6e10cac src/fr/iri/thd/sonyengine/test/TestMovieFragmentResource.java --- a/src/fr/iri/thd/sonyengine/test/TestMovieFragmentResource.java Fri Apr 09 18:22:40 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,323 +0,0 @@ -package fr.iri.thd.sonyengine.test.old; - -import java.io.File; -import java.io.IOException; -import java.io.StringReader; -import java.util.ArrayList; -import java.util.List; - -import javax.ws.rs.core.MediaType; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.w3c.dom.Document; -import org.w3c.dom.NodeList; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -import com.sleepycat.persist.EntityCursor; -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.WebResource; -import com.sun.jersey.api.representation.Form; - -import fr.iri.thd.sonyengine.core.DataAccessor; -import fr.iri.thd.sonyengine.core.DbEnv; - - -public class TestMovieFragmentResource { - - public static final String BASE_URL = "http://localhost:9080/sonyengine/"; - public static final String DATABASE_PATH = "/Users/ymh/dev/tmp/db"; - - private DbEnv dbenv = null; - private File databasePathFile = null; - private String baseurl = null; - - @Before - public void setup() - { - String databasepath = System.getProperty("database_path"); - if(databasepath == null) - databasepath = DATABASE_PATH; - this.databasePathFile = new File(databasepath); - - this.baseurl = System.getProperty("baseurl"); - if(this.baseurl == null) - this.baseurl = BASE_URL; - } - - @After - public void teardown() { - - if(dbenv != null) - dbenv.close(); - } - - @Test - public void testCreateMovieFragment() { - - String movieName = "movie" + System.currentTimeMillis(); - - Client c = Client.create(); - WebResource res = c.resource(this.baseurl + "segment/create/" + movieName); - - String response = res.accept(MediaType.APPLICATION_XML_TYPE).post(String.class); - - Assert.assertNotNull(response); - - - dbenv = new DbEnv(); - dbenv.setup(databasePathFile, true, true); - - DataAccessor da = new DataAccessor(this.dbenv.getEntityStore()); - - - EntityCursor cursor = da.movieFragmentById.keys(); - - for (String key : cursor) { - Assert.assertNotNull(key); - } - - cursor.close(); - - Assert.assertTrue(da.movieFragmentById.contains(movieName)); - - } - - @Test - public void testCreateMovieFragmentForm() { - - String movieName = "movie" + System.currentTimeMillis(); - - Client c = Client.create(); - - Form form = new Form(); - form.add("id", movieName); - - WebResource res = c.resource(this.baseurl + "segment/create"); - - String response = res.type(MediaType.APPLICATION_FORM_URLENCODED).post(String.class, form); - - Assert.assertNotNull(response); - - dbenv = new DbEnv(); - dbenv.setup(databasePathFile, true, true); - - DataAccessor da = new DataAccessor(this.dbenv.getEntityStore()); - - - EntityCursor cursor = da.movieFragmentById.keys(); - - for (String key : cursor) { - Assert.assertNotNull(key); - } - - cursor.close(); - - Assert.assertTrue(da.movieFragmentById.contains(movieName)); - - } - - @Test - public void testCreateMovieFragmentFormRetrain() throws InterruptedException { - - Client c = Client.create(); - WebResource.Builder res = c.resource(this.baseurl + "segment/create").type(MediaType.APPLICATION_FORM_URLENCODED); - List movieNames = new ArrayList(); - - String movieName = "movie" + System.currentTimeMillis(); - movieNames.add(movieName); - - Form form = new Form(); - form.add("id", movieName); - form.add("retrain", "true"); - - String response = res.post(String.class, form); - - Assert.assertEquals(""+movieName+"",response); - - Thread.sleep(1); - movieName = "movie" + System.currentTimeMillis(); - movieNames.add(movieName); - - form = new Form(); - form.add("id", movieName); - form.add("retrain", "false"); - - response = res.post(String.class, form); - - Assert.assertEquals(""+movieName+"",response); - - Thread.sleep(1); - movieName = "movie" + System.currentTimeMillis(); - movieNames.add(movieName); - - form = new Form(); - form.add("id", movieName); - form.add("retrain", "foo"); - - response = res.post(String.class, form); - - Assert.assertEquals(""+movieName+"",response); - - Thread.sleep(1); - movieName = "movie" + System.currentTimeMillis(); - movieNames.add(movieName); - - form = new Form(); - form.add("id", movieName); - form.add("retrain", "1"); - - response = res.post(String.class, form); - - Assert.assertEquals(""+movieName+"",response); - - - dbenv = new DbEnv(); - dbenv.setup(databasePathFile, true, true); - - DataAccessor da = new DataAccessor(this.dbenv.getEntityStore()); - - - EntityCursor cursor = da.movieFragmentById.keys(); - - for (String key : cursor) { - Assert.assertNotNull(key); - } - - cursor.close(); - - for (String name : movieNames) { - Assert.assertTrue(da.movieFragmentById.contains(name)); - } - - - } - - @Test - public void testTrain() { - - Client c = Client.create(); - WebResource res = c.resource(this.baseurl); - String response = res.path("engine").path("reset").accept(MediaType.TEXT_PLAIN).post(String.class); - - String[] ids = new String[]{"ref1","ref2","ref3","ref4","ref5","ref6", "ref7"}; - - String xmlSegment = ""; - for(String sequenceId: ids) { - xmlSegment += String.format("", sequenceId); - } - xmlSegment += ""; - - c = Client.create(); - res = c.resource(this.baseurl).path("segment").path("createall"); - Form form = new Form(); - form.add("xml", xmlSegment); - response = res.type(MediaType.APPLICATION_FORM_URLENCODED).accept(MediaType.APPLICATION_XML_TYPE).post(String.class, form); - - Assert.assertNotNull(response); - - - ArrayList tags = new ArrayList(); - tags.add(new String[]{"crayon", "ref1"}); - tags.add(new String[]{"carte", "ref1"}); - tags.add(new String[]{"bateau", "ref1"}); - tags.add(new String[]{"voiture", "ref1"}); - tags.add(new String[]{"car", "ref1"}); - - tags.add(new String[]{"enfant", "ref2"}); - tags.add(new String[]{"famille", "ref2"}); - tags.add(new String[]{"violon", "ref2"}); - tags.add(new String[]{"maison", "ref2"}); - tags.add(new String[]{"hopital", "ref2"}); - - tags.add(new String[]{"enfant", "ref3"}); - tags.add(new String[]{"famille", "ref3"}); - tags.add(new String[]{"violon", "ref3"}); - tags.add(new String[]{"maison", "ref3"}); - tags.add(new String[]{"ordinateur", "ref3"}); - tags.add(new String[]{"fenetre", "ref3"}); - tags.add(new String[]{"voiture", "ref3"}); - tags.add(new String[]{"guitare", "ref3"}); - tags.add(new String[]{"carte", "ref3"}); - - tags.add(new String[]{"enfant", "ref4"}); - tags.add(new String[]{"famille", "ref4"}); - tags.add(new String[]{"violon", "ref4"}); - tags.add(new String[]{"bateau", "ref4"}); - tags.add(new String[]{"ordinateur", "ref4"}); - tags.add(new String[]{"fenetre", "ref4"}); - tags.add(new String[]{"stylo", "ref4"}); - tags.add(new String[]{"perroquet", "ref4"}); - tags.add(new String[]{"crayon", "ref4"}); - tags.add(new String[]{"tele", "ref4"}); - tags.add(new String[]{"bateau", "ref4"}); - - tags.add(new String[]{"ordinateur", "ref5"}); - tags.add(new String[]{"crayon", "ref5"}); - tags.add(new String[]{"fenetre", "ref5"}); - tags.add(new String[]{"hopital", "ref5"}); - tags.add(new String[]{"carte", "ref5"}); - tags.add(new String[]{"tele", "ref5"}); - tags.add(new String[]{"stylo", "ref5"}); - tags.add(new String[]{"perroquet", "ref5"}); - tags.add(new String[]{"bateau", "ref5"}); - tags.add(new String[]{"guitare", "ref5"}); - - tags.add(new String[]{"maison", "ref6"}); - tags.add(new String[]{"perroquet", "ref6"}); - tags.add(new String[]{"stylo", "ref6"}); - tags.add(new String[]{"guitare", "ref6"}); - tags.add(new String[]{"hopital", "ref6"}); - tags.add(new String[]{"tele", "ref6"}); - tags.add(new String[]{"car", "ref6"}); - tags.add(new String[]{"voiture", "ref6"}); - tags.add(new String[]{"fenetre", "ref6"}); - - tags.add(new String[]{"car", "ref7"}); - tags.add(new String[]{"voiture", "ref7"}); - - String xmlTags = ""; - for(String[] tagdef: tags) { - xmlTags += String.format("", (Object[])tagdef); - } - xmlTags += ""; - - res = c.resource(this.baseurl).path("tag").path("add"); - form = new Form(); - form.add("xml", xmlTags); - response = res.type(MediaType.APPLICATION_FORM_URLENCODED).accept(MediaType.APPLICATION_XML_TYPE).post(String.class, form); - - Assert.assertNotNull(response); - - //"engine/find/{segment}/{tag}/{percent}/{more}" - //Neighbor neighbor = engine.findMore("ref1", "enfant", .05f, true); - res = c.resource(this.baseurl).path("engine").path("find").path("ref1").path("enfant").path("0.05").path("true"); - response = res.accept(MediaType.APPLICATION_XML_TYPE).get(String.class); - Assert.assertNotNull(response); - - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - InputSource source = new InputSource(new StringReader(response)); - Document doc = null; - try { - doc = factory.newDocumentBuilder().parse(source); - } catch (SAXException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } catch (ParserConfigurationException e) { - e.printStackTrace(); - } - - NodeList nodes = doc.getElementsByTagName("neighbor"); - - Assert.assertEquals(1, nodes.getLength()); - - } - - -} diff -r a5cc9d88b2e4 -r e2fef6e10cac src/fr/iri/thd/sonyengine/test/TestTagResource.java --- a/src/fr/iri/thd/sonyengine/test/TestTagResource.java Fri Apr 09 18:22:40 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,224 +0,0 @@ -package fr.iri.thd.sonyengine.test.old; - - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import javax.ws.rs.core.MediaType; - -import org.codehaus.jackson.JsonFactory; -import org.codehaus.jackson.JsonLocation; -import org.codehaus.jackson.JsonParseException; -import org.codehaus.jackson.JsonParser; -import org.codehaus.jackson.map.JsonMappingException; -import org.codehaus.jackson.map.ObjectMapper; -import org.codehaus.jackson.type.TypeReference; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.WebResource; -import com.sun.jersey.api.representation.Form; - -import fr.iri.thd.sonyengine.core.DataAccessor; -import fr.iri.thd.sonyengine.core.DbEnv; - -public class TestTagResource { - - public static final String BASE_URL = "http://localhost:9080/sonyengine/"; - public static final String DATABASE_PATH = "/Users/ymh/dev/tmp/db"; - - private DbEnv dbenv = null; - private File databasePathFile = null; - private String baseurl = null; - - @Before - public void setup() - { - String databasepath = System.getProperty("database_path"); - if(databasepath == null) - databasepath = DATABASE_PATH; - databasePathFile = new File(databasepath); - - this.baseurl = System.getProperty("baseurl"); - if(this.baseurl == null) - this.baseurl = BASE_URL; - } - - @After - public void teardown() { - - if(dbenv != null) - dbenv.close(); - } - - @Test - public void testCreateTag() { - - String movieName = "movie" + System.currentTimeMillis(); - String tagName = "tag" + System.currentTimeMillis();; - - Client c = Client.create(); - WebResource res = c.resource(this.baseurl + "segment/create/" + movieName); - String response = res.accept(MediaType.APPLICATION_JSON_TYPE).post(String.class); - - Assert.assertNotNull(response); - - res = c.resource(this.baseurl).path("tag").path("add").path(tagName).path(movieName); - response = res.accept(MediaType.APPLICATION_JSON_TYPE).post(String.class); - - Assert.assertNotNull(response); - - dbenv = new DbEnv(); - dbenv.setup(databasePathFile, true, true); - - DataAccessor da = new DataAccessor(this.dbenv.getEntityStore()); - - Assert.assertTrue(da.tagByName.contains(tagName)); - - } - - @Test - public void testCreateTagRetrain() throws InterruptedException, JsonParseException, JsonMappingException, IOException { - - List tagNames = new ArrayList(); - - Client c = Client.create(); - ObjectMapper mapper = new ObjectMapper(); - - WebResource res = null; - String response = null; - String tagName = null; - Map resMap = null; - - String movieName = "movie" + System.currentTimeMillis(); - tagName = "tag" + System.currentTimeMillis(); - tagNames.add(tagName); - - res = c.resource(this.baseurl + "segment/create/" + movieName); - response = res.accept(MediaType.APPLICATION_JSON_TYPE).post(String.class); - - Assert.assertNotNull(response); - resMap = mapper.readValue(response, new TypeReference>(){} ); - Assert.assertEquals(movieName, resMap.get("id")); - - res = c.resource(this.baseurl).path("tag").path("add").path(tagName).path(movieName).path("true"); - response = res.accept(MediaType.APPLICATION_JSON_TYPE).post(String.class); - - Assert.assertNotNull(response); - resMap = mapper.readValue(response, new TypeReference>(){} ); - Assert.assertEquals(tagName,resMap.get("name")); - Assert.assertEquals(movieName, resMap.get("segment")); - - Thread.sleep(1); - tagName = "tag" + System.currentTimeMillis(); - tagNames.add(tagName); - - res = c.resource(this.baseurl).path("tag").path("add").path(tagName).path(movieName).path("false"); - response = res.accept(MediaType.APPLICATION_JSON_TYPE).post(String.class); - - Assert.assertNotNull(response); - resMap = mapper.readValue(response, new TypeReference>(){} ); - Assert.assertEquals(tagName,resMap.get("name")); - Assert.assertEquals(movieName, resMap.get("segment")); - - Thread.sleep(1); - tagName = "tag" + System.currentTimeMillis(); - tagNames.add(tagName); - - res = c.resource(this.baseurl).path("tag").path("add").path(tagName).path(movieName).path("foo"); - response = res.accept(MediaType.APPLICATION_JSON_TYPE).post(String.class); - - Assert.assertNotNull(response); - resMap = mapper.readValue(response, new TypeReference>(){} ); - Assert.assertEquals(tagName,resMap.get("name")); - Assert.assertEquals(movieName, resMap.get("segment")); - - Thread.sleep(1); - tagName = "tag" + System.currentTimeMillis(); - tagNames.add(tagName); - - res = c.resource(this.baseurl).path("tag").path("add").path(tagName).path(movieName).path("1"); - response = res.accept(MediaType.APPLICATION_JSON_TYPE).post(String.class); - - Assert.assertNotNull(response); - resMap = mapper.readValue(response, new TypeReference>(){} ); - Assert.assertEquals(tagName,resMap.get("name")); - Assert.assertEquals(movieName, resMap.get("segment")); - - - dbenv = new DbEnv(); - dbenv.setup(databasePathFile, true, true); - - DataAccessor da = new DataAccessor(this.dbenv.getEntityStore()); - - for (String tag : tagNames) { - Assert.assertTrue(da.tagByName.contains(tag)); - } - - } - - - @Test - public void testCreateTagList() throws JsonParseException, JsonMappingException, IOException { - - String movieName = "movie" + System.currentTimeMillis(); - - List tagNames = new ArrayList(); - - for(int i=0; i< 10; i++) { - try { - Thread.sleep(1); - } catch (InterruptedException e) { - e.printStackTrace(); - } - tagNames.add("tag" + System.currentTimeMillis()); - } - - Client c = Client.create(); - WebResource res = c.resource(this.baseurl + "segment/create/" + movieName); - String response = res.accept(MediaType.APPLICATION_XML_TYPE).post(String.class); - - Assert.assertNotNull(response); - - String xml = ""; - for(String tagName: tagNames) { - xml += String.format("", tagName, movieName); - } - xml += ""; - - res = c.resource(this.baseurl).path("tag").path("add"); - Form form = new Form(); - form.add("xml", xml); - response = res.type(MediaType.APPLICATION_FORM_URLENCODED).accept(MediaType.APPLICATION_JSON_TYPE).post(String.class, form); - - Assert.assertNotNull(response); - - ObjectMapper mapper = new ObjectMapper(); - List> resList = mapper.readValue(response, new TypeReference>>(){}); - - Assert.assertEquals(tagNames, resList.size()); - for (Map map : resList) { - Assert.assertEquals(movieName,map.get("segment")); - Assert.assertTrue(tagNames.contains(map.get("name"))); - } - - dbenv = new DbEnv(); - dbenv.setup(databasePathFile, true, true); - - DataAccessor da = new DataAccessor(this.dbenv.getEntityStore()); - - Assert.assertTrue(da.tagBySegment.contains(movieName)); - - for(String tagName: tagNames) { - Assert.assertTrue(da.tagByName.contains(tagName)); - } - - } - -} diff -r a5cc9d88b2e4 -r e2fef6e10cac src/fr/iri/thd/sonyengine/web/InfoResource.java --- a/src/fr/iri/thd/sonyengine/web/InfoResource.java Fri Apr 09 18:22:40 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -package fr.iri.thd.sonyengine.web; - -import java.util.HashMap; -import java.util.Map; - -import javax.servlet.ServletContext; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; - -import thd.ThdEngine; - -import com.sun.jersey.api.view.Viewable; - -import fr.iri.thd.sonyengine.core.DataAccessor; -import fr.iri.thd.sonyengine.core.DbEnv; - -@Path("info") -public class InfoResource { - - @GET - @Produces(MediaType.TEXT_HTML) - public Viewable info(@Context ServletContext context) { - String dbpath = (String)context.getAttribute(ServletContainer.DB_PATH_ATTRIBUTE); - - final int segments_nb = ThdEngine.getEngine().getAllMovieFragments().size(); - - final DbEnv dbenv = (DbEnv)context.getAttribute(ServletContainer.DB_ENV_ATTRIBUTE); - final DataAccessor da = new DataAccessor(dbenv.getEntityStore()); - final long segments_db_nb = da.movieFragmentById.count(); - final long tags_nb = da.tagById.count(); - - - final Map vars = new HashMap(); - - vars.put("dbpath", dbpath); - vars.put("segments_nb", segments_nb); - vars.put("segments_db_nb", segments_db_nb); - vars.put("tags_nb", tags_nb); - - - Viewable view = new Viewable("/info", vars); - - return view; - } - -} diff -r a5cc9d88b2e4 -r e2fef6e10cac src/fr/iri/thd/sonyengine/web/MovieFragmentResource.java --- a/src/fr/iri/thd/sonyengine/web/MovieFragmentResource.java Fri Apr 09 18:22:40 2010 +0200 +++ b/src/fr/iri/thd/sonyengine/web/MovieFragmentResource.java Wed Apr 14 16:18:19 2010 +0200 @@ -27,11 +27,11 @@ import fr.iri.thd.sonyengine.core.DataAccessor; import fr.iri.thd.sonyengine.core.DbEnv; import fr.iri.thd.sonyengine.core.MovieFragment; +import fr.iri.thd.sonyengine.core.SonyengineException; @Path ("segment") public class MovieFragmentResource { - private MovieFragment create(String id, boolean retrain, ServletContext context) { ThdEngine.getEngine().createMovieFragment(id); @@ -80,7 +80,7 @@ @Path("createall") @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) @Consumes(MediaType.APPLICATION_FORM_URLENCODED) - public List createAll(@FormParam("xml") String xmldocstr, @FormParam("retrain") Boolean retrain ,@Context ServletContext context) { + public List createAll(@FormParam("xml") String xmldocstr, @FormParam("retrain") Boolean retrain ,@Context ServletContext context) throws SonyengineException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); InputSource source = new InputSource(new StringReader(xmldocstr)); @@ -89,10 +89,13 @@ doc = factory.newDocumentBuilder().parse(source); } catch (SAXException e) { e.printStackTrace(); + throw new SonyengineException("Exception when parsing " + xmldocstr, e); } catch (IOException e) { e.printStackTrace(); + throw new SonyengineException("Exception when parsing " + xmldocstr, e); } catch (ParserConfigurationException e) { e.printStackTrace(); + throw new SonyengineException("Exception when parsing " + xmldocstr, e); } DbEnv dbenv = (DbEnv)context.getAttribute(ServletContainer.DB_ENV_ATTRIBUTE); DataAccessor da = new DataAccessor(dbenv.getEntityStore()); diff -r a5cc9d88b2e4 -r e2fef6e10cac src/fr/iri/thd/sonyengine/web/StatusResource.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/fr/iri/thd/sonyengine/web/StatusResource.java Wed Apr 14 16:18:19 2010 +0200 @@ -0,0 +1,49 @@ +package fr.iri.thd.sonyengine.web; + +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.ServletContext; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; + +import thd.ThdEngine; + +import com.sun.jersey.api.view.Viewable; + +import fr.iri.thd.sonyengine.core.DataAccessor; +import fr.iri.thd.sonyengine.core.DbEnv; + +@Path("status") +public class StatusResource { + + @GET + @Produces(MediaType.TEXT_HTML) + public Viewable info(@Context ServletContext context) { + String dbpath = (String)context.getAttribute(ServletContainer.DB_PATH_ATTRIBUTE); + + final int segments_nb = ThdEngine.getEngine().getAllMovieFragments().size(); + + final DbEnv dbenv = (DbEnv)context.getAttribute(ServletContainer.DB_ENV_ATTRIBUTE); + final DataAccessor da = new DataAccessor(dbenv.getEntityStore()); + final long segments_db_nb = da.movieFragmentById.count(); + final long tags_nb = da.tagById.count(); + + + final Map vars = new HashMap(); + + vars.put("dbpath", dbpath); + vars.put("segments_nb", segments_nb); + vars.put("segments_db_nb", segments_db_nb); + vars.put("tags_nb", tags_nb); + + + Viewable view = new Viewable("/status", vars); + + return view; + } + +} diff -r a5cc9d88b2e4 -r e2fef6e10cac src/fr/iri/thd/sonyengine/web/TagResource.java --- a/src/fr/iri/thd/sonyengine/web/TagResource.java Fri Apr 09 18:22:40 2010 +0200 +++ b/src/fr/iri/thd/sonyengine/web/TagResource.java Wed Apr 14 16:18:19 2010 +0200 @@ -25,6 +25,7 @@ import fr.iri.thd.sonyengine.core.DataAccessor; import fr.iri.thd.sonyengine.core.DbEnv; +import fr.iri.thd.sonyengine.core.SonyengineException; import fr.iri.thd.sonyengine.core.Tag; import thd.ThdEngine; @@ -67,7 +68,7 @@ @POST @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) - public List add(@FormParam("xml") String xmldocstr, @FormParam("retrain") Boolean retrain, @Context ServletContext context) { + public List add(@FormParam("xml") String xmldocstr, @FormParam("retrain") Boolean retrain, @Context ServletContext context) throws SonyengineException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); InputSource source = new InputSource(new StringReader(xmldocstr)); @@ -76,10 +77,13 @@ doc = factory.newDocumentBuilder().parse(source); } catch (SAXException e) { e.printStackTrace(); + throw new SonyengineException("Error when parsing xml with string " + xmldocstr, e); } catch (IOException e) { e.printStackTrace(); + throw new SonyengineException("Error when parsing xml with string " + xmldocstr, e); } catch (ParserConfigurationException e) { e.printStackTrace(); + throw new SonyengineException("Error when parsing xml with string " + xmldocstr, e); } DbEnv dbenv = (DbEnv)context.getAttribute(ServletContainer.DB_ENV_ATTRIBUTE); DataAccessor da = new DataAccessor(dbenv.getEntityStore());