Skip to content
Snippets Groups Projects

Resolve "export form GPML to CellDesigner"

Merged Piotr Gawron requested to merge 1146-export-form-gpml-to-celldesigner into master
4 files
+ 71
7
Compare changes
  • Side-by-side
  • Inline
Files
4
@@ -14,6 +14,8 @@ import lcsb.mapviewer.common.exception.NotImplementedException;
import lcsb.mapviewer.converter.model.celldesigner.CellDesignerElementCollection;
import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerCompartment;
import lcsb.mapviewer.converter.model.celldesigner.structure.CellDesignerElement;
import lcsb.mapviewer.model.LogMarker;
import lcsb.mapviewer.model.ProjectLogEntryType;
import lcsb.mapviewer.model.map.compartment.*;
import lcsb.mapviewer.model.map.model.Model;
@@ -25,11 +27,13 @@ import lcsb.mapviewer.model.map.model.Model;
*/
public class CompartmentAliasXmlParser extends AbstractAliasXmlParser<Compartment> {
private final static double MIN_INNER_WIDTH = 1.0;
/**
* Default class logger.
*/
@SuppressWarnings("unused")
private Logger logger = LogManager.getLogger(CompartmentAliasXmlParser.class.getName());
private Logger logger = LogManager.getLogger();
/**
* Model for which we are parsing aliases.
@@ -210,10 +214,7 @@ public class CompartmentAliasXmlParser extends AbstractAliasXmlParser<Compartmen
sb.append("x=\"" + compartment.getNamePoint().getX() + "\" ");
sb.append("y=\"" + compartment.getNamePoint().getY() + "\"/>\n");
sb.append("<celldesigner:doubleLine ");
sb.append("thickness=\"" + compartment.getThickness() + "\" ");
sb.append("outerWidth=\"" + compartment.getOuterWidth() + "\" ");
sb.append("innerWidth=\"" + compartment.getInnerWidth() + "\"/>\n");
sb.append(getDoubleLineNode(compartment));
sb.append("<celldesigner:paint ");
sb.append("color=\"" + XmlParser.colorToString(compartment.getFillColor()) + "\" scheme=\"Color\"/>\n");
@@ -223,4 +224,41 @@ public class CompartmentAliasXmlParser extends AbstractAliasXmlParser<Compartmen
return sb.toString();
}
private String getDoubleLineNode(Compartment compartment) {
StringBuilder result = new StringBuilder();
result.append("<celldesigner:doubleLine ");
double innerWidth = getInnerWidth(compartment);
if (innerWidth != compartment.getInnerWidth()) {
logger.warn(new LogMarker(ProjectLogEntryType.EXPORT_ISSUE, compartment),
"CellDesigner requires innerWidth to be at least: " + innerWidth);
}
double outerWidth = getOuterWidth(compartment);
if (outerWidth != compartment.getOuterWidth()) {
logger.warn(new LogMarker(ProjectLogEntryType.EXPORT_ISSUE, compartment),
"CellDesigner requires outerWidth to be at least: " + outerWidth);
}
double thickness = getThickness(compartment);
if (thickness != compartment.getThickness()) {
logger.warn(new LogMarker(ProjectLogEntryType.EXPORT_ISSUE, compartment),
"CellDesigner requires thickness to be at least: " + thickness);
}
result.append("thickness=\"" + thickness + "\" ");
result.append("outerWidth=\"" + outerWidth + "\" ");
result.append("innerWidth=\"" + innerWidth + "\"/>\n");
return result.toString();
}
private double getInnerWidth(Compartment compartment) {
return Math.max(MIN_INNER_WIDTH, compartment.getInnerWidth());
}
private double getOuterWidth(Compartment compartment) {
return Math.max(getInnerWidth(compartment) + 1, compartment.getOuterWidth());
}
private double getThickness(Compartment compartment) {
return Math.max((getInnerWidth(compartment) + getOuterWidth(compartment)) / 2 + 1, compartment.getThickness());
}
}
Loading