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

error information improved

parent 6a352b23
No related branches found
No related tags found
2 merge requests!630WIP: Resolve "The privileges of a new user are not saved in some cases",!545Import from sbgn issue
......@@ -61,91 +61,98 @@ public class SpeciesAliasXmlParser extends AbstractAliasXmlParser<Species> {
String speciesId = getNodeAttr("species", aliasNode);
String aliasId = getNodeAttr("id", aliasNode);
String errorPrefix = "[" + speciesId + "," + aliasId + "]\t";
CellDesignerSpecies<?> species = elements.getElementByElementId(speciesId);
if (species == null) {
throw new InvalidXmlSchemaException("Unknown species for alias (speciesId: " + speciesId + ")");
}
if (species instanceof CellDesignerComplexSpecies) {
logger.warn("[" + speciesId + "," + aliasId
+ "]\tSpecies is defined as a complex, but alias is not a complex. Changing alias to complex.");
logger.warn(
errorPrefix + "Species is defined as a complex, but alias is not a complex. Changing alias to complex.");
}
elements.addElement(species, aliasId);
Species result = species.createModelElement(aliasId);
String state = "usual";
NodeList nodes = aliasNode.getChildNodes();
View usualView = null;
View briefView = null;
for (int x = 0; x < nodes.getLength(); x++) {
Node node = nodes.item(x);
if (node.getNodeType() == Node.ELEMENT_NODE) {
if (node.getNodeName().equalsIgnoreCase("celldesigner:activity")) {
result.setActivity(getNodeValue(node).equalsIgnoreCase("active"));
} else if (node.getNodeName().equalsIgnoreCase("celldesigner:bounds")) {
result.setX(getNodeAttr("X", node));
result.setY(getNodeAttr("Y", node));
} else if (node.getNodeName().equalsIgnoreCase("celldesigner:font")) {
result.setFontSize(getNodeAttr("size", node));
} else if (node.getNodeName().equalsIgnoreCase("celldesigner:view")) {
state = getNodeAttr("state", node);
} else if (node.getNodeName().equalsIgnoreCase("celldesigner:usualView")) {
usualView = getCommonParser().getView(node);
} else if (node.getNodeName().equalsIgnoreCase("celldesigner:briefView")) {
briefView = getCommonParser().getView(node);
} else if (node.getNodeName().equalsIgnoreCase("celldesigner:info")) {
processAliasState(node, result);
} else if (node.getNodeName().equalsIgnoreCase("celldesigner:structuralState")) {
// not handled
continue;
} else {
throw new InvalidXmlSchemaException("Unknown element of celldesigner:speciesAlias: " + node.getNodeName());
try {
Species result = species.createModelElement(aliasId);
String state = "usual";
NodeList nodes = aliasNode.getChildNodes();
View usualView = null;
View briefView = null;
for (int x = 0; x < nodes.getLength(); x++) {
Node node = nodes.item(x);
if (node.getNodeType() == Node.ELEMENT_NODE) {
if (node.getNodeName().equalsIgnoreCase("celldesigner:activity")) {
result.setActivity(getNodeValue(node).equalsIgnoreCase("active"));
} else if (node.getNodeName().equalsIgnoreCase("celldesigner:bounds")) {
result.setX(getNodeAttr("X", node));
result.setY(getNodeAttr("Y", node));
} else if (node.getNodeName().equalsIgnoreCase("celldesigner:font")) {
result.setFontSize(getNodeAttr("size", node));
} else if (node.getNodeName().equalsIgnoreCase("celldesigner:view")) {
state = getNodeAttr("state", node);
} else if (node.getNodeName().equalsIgnoreCase("celldesigner:usualView")) {
usualView = getCommonParser().getView(node);
} else if (node.getNodeName().equalsIgnoreCase("celldesigner:briefView")) {
briefView = getCommonParser().getView(node);
} else if (node.getNodeName().equalsIgnoreCase("celldesigner:info")) {
processAliasState(node, result);
} else if (node.getNodeName().equalsIgnoreCase("celldesigner:structuralState")) {
// not handled
continue;
} else {
throw new InvalidXmlSchemaException(
errorPrefix + "Unknown element of celldesigner:speciesAlias: " + node.getNodeName());
}
}
}
}
View view = null;
if (state.equalsIgnoreCase("usual")) {
view = usualView;
} else if (state.equalsIgnoreCase("brief")) {
view = briefView;
}
View view = null;
if (state.equalsIgnoreCase("usual")) {
view = usualView;
} else if (state.equalsIgnoreCase("brief")) {
view = briefView;
}
if (view != null) {
// inner position defines the position in compartment
// result.moveBy(view.innerPosition);
result.setWidth(view.getBoxSize().width);
result.setHeight(view.getBoxSize().height);
result.setLineWidth(view.getSingleLine().getWidth());
result.setColor(view.getColor());
} else {
throw new InvalidXmlSchemaException("No view in Alias");
}
result.setState(state);
String compartmentAliasId = getNodeAttr("compartmentAlias", aliasNode);
if (!compartmentAliasId.isEmpty()) {
Compartment compartment = model.getElementByElementId(compartmentAliasId);
if (compartment == null) {
throw new InvalidXmlSchemaException("CompartmentAlias does not exist: " + compartmentAliasId);
if (view != null) {
// inner position defines the position in compartment
// result.moveBy(view.innerPosition);
result.setWidth(view.getBoxSize().width);
result.setHeight(view.getBoxSize().height);
result.setLineWidth(view.getSingleLine().getWidth());
result.setColor(view.getColor());
} else {
result.setCompartment(compartment);
compartment.addElement(result);
throw new InvalidXmlSchemaException(errorPrefix + "No view in Alias");
}
}
String complexAliasId = getNodeAttr("complexSpeciesAlias", aliasNode);
if (!complexAliasId.isEmpty()) {
Complex complex = model.getElementByElementId(complexAliasId);
if (complex == null) {
throw new InvalidXmlSchemaException(
"ComplexAlias does not exist: " + complexAliasId + ", current: " + result.getElementId());
} else {
result.setComplex(complex);
complex.addSpecies(result);
result.setState(state);
String compartmentAliasId = getNodeAttr("compartmentAlias", aliasNode);
if (!compartmentAliasId.isEmpty()) {
Compartment compartment = model.getElementByElementId(compartmentAliasId);
if (compartment == null) {
throw new InvalidXmlSchemaException(errorPrefix + "CompartmentAlias does not exist: " + compartmentAliasId);
} else {
result.setCompartment(compartment);
compartment.addElement(result);
}
}
String complexAliasId = getNodeAttr("complexSpeciesAlias", aliasNode);
if (!complexAliasId.isEmpty()) {
Complex complex = model.getElementByElementId(complexAliasId);
if (complex == null) {
throw new InvalidXmlSchemaException(
errorPrefix + "ComplexAlias does not exist: " + complexAliasId + ", current: " + result.getElementId());
} else {
result.setComplex(complex);
complex.addSpecies(result);
}
}
}
species.updateModelElementAfterLayoutAdded(result);
return result;
species.updateModelElementAfterLayoutAdded(result);
return result;
} catch (NotImplementedException e) {
throw new InvalidXmlSchemaException(errorPrefix + "Problem with creating species");
}
}
/**
......
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