From: <lor...@us...> - 2011-11-28 14:44:58
|
Revision: 3446 http://dl-learner.svn.sourceforge.net/dl-learner/?rev=3446&view=rev Author: lorenz_b Date: 2011-11-28 14:44:48 +0000 (Mon, 28 Nov 2011) Log Message: ----------- Added preliminary support to use conf files via REST interface. Modified Paths: -------------- trunk/interfaces/src/main/java/org/dllearner/confparser3/ConfParserConfiguration.java trunk/interfaces/src/main/java/org/dllearner/server/Rest.java Modified: trunk/interfaces/src/main/java/org/dllearner/confparser3/ConfParserConfiguration.java =================================================================== --- trunk/interfaces/src/main/java/org/dllearner/confparser3/ConfParserConfiguration.java 2011-11-28 14:43:45 UTC (rev 3445) +++ trunk/interfaces/src/main/java/org/dllearner/confparser3/ConfParserConfiguration.java 2011-11-28 14:44:48 UTC (rev 3446) @@ -6,6 +6,7 @@ import org.dllearner.configuration.IConfigurationProperty; import org.dllearner.core.AnnComponentManager; import org.dllearner.core.Component; +import org.springframework.core.io.InputStreamResource; import org.springframework.core.io.Resource; import java.io.IOException; @@ -30,7 +31,11 @@ public ConfParserConfiguration(Resource source) { try { // baseDir = source.getFile().getAbsoluteFile().getParent(); - baseDir = source.getFile().getParentFile().toURI().toString(); + if(!(source instanceof InputStreamResource)){ + baseDir = source.getFile().getParentFile().toURI().toString(); + } else { + baseDir = null; + } parser = new ConfParser(source.getInputStream()); parser.Start(); } catch (ParseException e) { Modified: trunk/interfaces/src/main/java/org/dllearner/server/Rest.java =================================================================== --- trunk/interfaces/src/main/java/org/dllearner/server/Rest.java 2011-11-28 14:43:45 UTC (rev 3445) +++ trunk/interfaces/src/main/java/org/dllearner/server/Rest.java 2011-11-28 14:44:48 UTC (rev 3446) @@ -1,23 +1,39 @@ package org.dllearner.server; -import org.apache.commons.httpclient.util.ExceptionUtil; +import java.io.BufferedInputStream; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + import org.apache.commons.lang.exception.ExceptionUtils; +import org.dllearner.configuration.IConfiguration; +import org.dllearner.configuration.spring.ApplicationContextBuilder; +import org.dllearner.configuration.spring.DefaultApplicationContextBuilder; +import org.dllearner.confparser3.ConfParserConfiguration; +import org.dllearner.core.ClassExpressionLearningAlgorithm; +import org.dllearner.core.EvaluatedDescription; +import org.dllearner.core.LearningAlgorithm; import org.dllearner.kb.sparql.SparqlQueryDescriptionConvertVisitor; import org.dllearner.learningproblems.EvaluatedDescriptionPosNeg; import org.json.simple.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.core.io.InputStreamResource; +import org.springframework.core.io.Resource; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.HashMap; -import java.util.Map; - public class Rest extends HttpServlet { private static Logger log = LoggerFactory.getLogger(Rest.class); @@ -51,7 +67,6 @@ conf = httpServletRequest.getParameter("conf"); } - /*todo learn*/ if (isSet("debug", httpServletRequest) && httpServletRequest.getParameter("debug").equalsIgnoreCase("true")) { @@ -118,7 +133,24 @@ * @return */ public EvaluatedDescriptionPosNeg learn(String conf) { + try { + Resource confFile = new InputStreamResource(new ByteArrayInputStream(conf.getBytes())); + + IConfiguration configuration = new ConfParserConfiguration(confFile); + ApplicationContextBuilder builder = new DefaultApplicationContextBuilder(); + ApplicationContext context = builder.buildApplicationContext(configuration, new ArrayList<Resource>()); + + LearningAlgorithm algorithm = context.getBean(LearningAlgorithm.class); + algorithm.start(); + if(algorithm instanceof ClassExpressionLearningAlgorithm){ + return (EvaluatedDescriptionPosNeg)((ClassExpressionLearningAlgorithm) algorithm).getCurrentlyBestEvaluatedDescriptions(1).iterator().next(); + } + } catch (BeansException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } return null; } @@ -138,6 +170,28 @@ } return ret; } + + public static void main(String[] args) throws Exception{ + String filePath = "../examples/father.conf"; + byte[] buffer = new byte[(int) new File(filePath).length()]; + BufferedInputStream f = null; + try { + f = new BufferedInputStream(new FileInputStream(filePath)); + f.read(buffer); + } finally { + if (f != null) try { f.close(); } catch (IOException ignored) { } + } + String confString = new String(buffer); + + Resource confFile = new InputStreamResource(new ByteArrayInputStream(confString.getBytes())); + + IConfiguration configuration = new ConfParserConfiguration(confFile); + ApplicationContextBuilder builder = new DefaultApplicationContextBuilder(); + ApplicationContext context = builder.buildApplicationContext(configuration, new ArrayList<Resource>()); + + LearningAlgorithm algorithm = context.getBean(LearningAlgorithm.class); + algorithm.start(); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |