Skip to content
Snippets Groups Projects
Commit a3129c01 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

sbml function mathML is parsed properly

parent b7b14d24
No related branches found
No related tags found
1 merge request!186Resolve "upload of sbml"
......@@ -22,7 +22,9 @@ public class FunctionXmlParser extends XmlParser {
if (mathDefinition == null) {
throw new InvalidXmlSchemaException("Function " + functionId + " doesn't contain MathML definition (math node)");
}
result.setDefinition(nodeToString(mathDefinition).replace(" xmlns=\"http://www.w3.org/1998/Math/MathML\"", ""));
String definition = "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
+ nodeToString(mathDefinition).replace(" xmlns=\"http://www.w3.org/1998/Math/MathML\"", "") + "</math>";
result.setDefinition(definition);
result.setArguments(parseArgumentsFromMath(mathDefinition, functionId));
return result;
......@@ -47,9 +49,7 @@ public class FunctionXmlParser extends XmlParser {
result.append("id=\"" + fun.getElementId() + "\" ");
result.append("name=\"" + fun.getName() + "\" ");
result.append(">\n");
result.append("<math xmlns=\"http://www.w3.org/1998/Math/MathML\">");
result.append(fun.getDefinition());
result.append("</math>\n");
result.append("</functionDefinition>\n");
return result.toString();
}
......
......@@ -26,6 +26,7 @@ public class FunctionXmlParserTest extends CellDesignerTestFunctions {
assertNotNull(fun);
assertEquals(fun.getFunctionId(), "function_id");
assertEquals(fun.getName(), "Function name");
assertTrue("math node is not present", fun.getDefinition().indexOf("math") >= 0);
assertTrue(fun.getDefinition().indexOf("lambda") >= 0);
assertTrue(fun.getDefinition().indexOf("apply") >= 0);
}
......
......@@ -25,8 +25,7 @@ public class SbmlFunctionExporter {
FunctionDefinition result = new FunctionDefinition();
result.setName(unit.getName());
String definition = unit.getDefinition();
definition = definition.replace(" xmlns=\"http://www.sbml.org/sbml/level2/version4\"", "");
definition = "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">" + definition + "</math>";
definition = definition.replace("lambda xmlns=\"http://www.sbml.org/sbml/level2/version4\"", "lambda");
result.setMath(ASTNode.parseMathML(definition));
result.setId(unit.getFunctionId());
return result;
......
......@@ -26,7 +26,9 @@ public class SbmlFunctionParser extends SbmlBioEntityParser {
result.setName(unitDefinition.getName());
Node node = super.getXmlDocumentFromString(unitDefinition.getMath().toMathML());
Node mathDefinition = getNode("math", node);
result.setDefinition(super.nodeToString(mathDefinition));
String definition = "<math xmlns=\"http://www.w3.org/1998/Math/MathML\">"
+ nodeToString(mathDefinition).replace(" xmlns=\"http://www.w3.org/1998/Math/MathML\"", "") + "</math>";
result.setDefinition(definition);
result.setArguments(parseArgumentsFromMath(mathDefinition, result.getFunctionId()));
return result;
} catch (InvalidXmlSchemaException e) {
......
......@@ -26,7 +26,7 @@ public class SbmlFunctionComparator extends Comparator<SbmlFunction> {
return stringComparator.compare(arg0.getName(), arg1.getName());
}
if (stringComparator.compare(arg0.getDefinition(), arg1.getDefinition()) != 0) {
if (stringComparator.compare(arg0.getDefinition(), arg1.getDefinition(), true) != 0) {
logger.debug("definition different");
logger.debug(arg0.getDefinition());
logger.debug(arg1.getDefinition());
......
package lcsb.mapviewer.api.projects.models.functions;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.transform.TransformerException;
import org.apache.log4j.Logger;
import org.springframework.transaction.annotation.Transactional;
import lcsb.mapviewer.api.BaseRestImpl;
import lcsb.mapviewer.api.ObjectNotFoundException;
import lcsb.mapviewer.api.QueryException;
import lcsb.mapviewer.common.exception.InvalidXmlSchemaException;
import lcsb.mapviewer.model.map.kinetics.SbmlFunction;
import lcsb.mapviewer.model.map.model.Model;
import lcsb.mapviewer.services.SecurityException;
......@@ -44,6 +48,11 @@ public class FunctionsRestImpl extends BaseRestImpl {
result.put("functionId", function.getFunctionId());
result.put("name", function.getName());
result.put("definition", function.getDefinition());
try {
result.put("mathMlPresentation", super.mathMLToPresentationML(function.getDefinition()));
} catch (IOException | InvalidXmlSchemaException | TransformerException e) {
logger.error("Problems with transforming kinetics", e);
}
result.put("arguments", function.getArguments());
return result;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment