/// <summary> /// Creates new enviromental object element. /// </summary> /// <param name="name">Environmental object name.</param> /// <param name="errorMessage"> /// Output parameter, which holds error message catched during serialization. /// </param> /// <returns> /// True if serialization was succesfull otherwise returns false. /// </returns> public bool EnvironmentalObjects(string name, out string errorMessage) { try { if (string.IsNullOrEmpty(name)) { throw new ArgumentException(ExceptionsMessage("name", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(name, Regexp.Check.String)) { throw new ArgumentException(ExceptionsMessage("name", (int)ErrorMessages.IncorectCharacters)); } // <environmentalObject name="a"/> XmlElement environmentalObjectElement = v_InventoryXmlDocument.CreateElement("environmentalObject"); environmentalObjectElement.SetAttribute("name", name); XmlNode environmentalObject = v_InventoryXmlDocument.SelectSingleNode("inventory/mSystemDeclaration/environmentalObjects"); environmentalObject?.AppendChild(environmentalObjectElement); errorMessage = null; return(true); } catch (Exception exception) { errorMessage = exception.Message; return(false); } }
/// <summary> /// Creates new radius element. /// </summary> /// <param name="value">Radius value.</param> /// <param name="errorMessage"> /// Output parameter, which holds error message catched during serialization. /// </param> /// <returns> /// True if serialization was succesfull otherwise returns false. /// </returns> public bool Radius(string value, out string errorMessage) { try { if (string.IsNullOrEmpty(value)) { throw new ArgumentException(ExceptionsMessage("value", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(value, Regexp.Check.FloatingNumber)) { throw new ArgumentException(ExceptionsMessage("value", (int)ErrorMessages.IncorectFloatingNumber)); } //<radius value="0.1"/> XmlElement radiuseElement = v_InventoryXmlDocument.CreateElement("radius"); radiuseElement.SetAttribute("name", value); XmlNode radius = v_InventoryXmlDocument.SelectSingleNode("inventory/mSystemDeclaration"); radius?.AppendChild(radiuseElement); errorMessage = null; return(true); } catch (Exception exception) { errorMessage = exception.Message; return(false); } }
/// <summary> /// Creates new protein element. /// </summary> /// <param name="name">Protein name.</param> /// <param name="errorMessage"> /// Output parameter, which holds error message catched during serialization. /// </param> /// <returns> /// True if serialization was succesfull otherwise returns false. /// </returns> public bool Proteins(string name, out string errorMessage) { try { if (string.IsNullOrEmpty(name)) { throw new ArgumentException(ExceptionsMessage("name", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(name, Regexp.Check.StringWithApostroph)) { throw new ArgumentException(ExceptionsMessage("name", (int)ErrorMessages.IncorectCharactersWithApostroph)); } // < protein name = "p0" /> XmlElement protein = v_InventoryXmlDocument.CreateElement("protein"); protein.SetAttribute("name", name); XmlNode proteins = v_InventoryXmlDocument.SelectSingleNode("inventory/mSystemDeclaration/proteins"); proteins?.AppendChild(protein); errorMessage = null; return(true); } catch (Exception exception) { errorMessage = exception.Message; return(false); } }
/// <summary> /// Creates new evoRule element within evoRulesWithPriority block. /// </summary> /// <remarks> /// Catches all exceptions and returned as errorMessage. /// </remarks> /// <param name="type">EvoRule type can be metabolic, divide, center or destroy.</param> /// <param name="priority">EvoRule priority.</param> /// <param name="leftSideList">Container leftSide object.</param> /// <param name="rightSideList">Container rightSide object.</param> /// <param name="errorMessage"> /// Output parameter, which holds error message catched during serialization. /// </param> /// <returns> /// True if serialization was succesfull otherwise returns false. /// </returns> public bool EvoRule(string type, int priority, List <string> leftSideList, List <string> rightSideList, out string errorMessage) { try { if (string.IsNullOrEmpty(type)) { throw new ArgumentException(ExceptionsMessage("type", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(type, Regexp.Check.String)) { throw new ArgumentException(ExceptionsMessage("type", (int)ErrorMessages.IncorectCharacters)); } if (leftSideList == null || leftSideList.Count == 0) { throw new ArgumentException(ExceptionsMessage("leftSideList", (int)ErrorMessages.EmptyList)); } if (rightSideList == null || rightSideList.Count == 0) { throw new ArgumentException(ExceptionsMessage("rightSideList", (int)ErrorMessages.EmptyList)); } /*<evoRule type="2res" priority="0"> * <leftside > * <object name="a"/> * </leftside> * <rightside> * <object name="p1"/> * </rightside> * </evoRule>*/ XmlElement evoRule = v_EvolutionXmlDocument.CreateElement("evoRule"); evoRule.SetAttribute("priority", priority.ToString()); evoRule.SetAttribute("type", type); XmlElement leftsideElement = (XmlElement)evoRule.AppendChild(v_EvolutionXmlDocument.CreateElement("leftside")); foreach (string leftSide in leftSideList) { XmlElement leftobject = (XmlElement)leftsideElement.AppendChild(v_EvolutionXmlDocument.CreateElement("object")); leftobject.SetAttribute("name", leftSide); } XmlElement rightsideElement = (XmlElement)evoRule.AppendChild(v_EvolutionXmlDocument.CreateElement("rightside")); foreach (string rightSide in rightSideList) { XmlElement rightobject = (XmlElement)rightsideElement.AppendChild(v_EvolutionXmlDocument.CreateElement("object")); rightobject.SetAttribute("name", rightSide); } XmlNode evoRulesWithPriority = v_EvolutionXmlDocument.SelectSingleNode("evolution/evoRulesWithPriority"); evoRulesWithPriority?.AppendChild(evoRule); errorMessage = null; return(true); } catch (Exception exception) { errorMessage = exception.Message; return(false); } }
/// <summary> /// Creates new floating object. /// </summary> /// <param name="name">Floating object name.</param> /// <param name="valueOfSides">Sides value.</param> /// <param name="valueOfRadius">Radius value.</param> /// <param name="errorMessage"> /// Output parameter, which holds error message catched during serialization. /// </param> /// <returns> /// True if serialization was succesfull otherwise returns false. /// </returns> public bool FloatingObjects(string name, string valueOfSides, string valueOfRadius, out string errorMessage) { try { if (string.IsNullOrEmpty(name)) { throw new ArgumentException(ExceptionsMessage("floating object", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(name, Regexp.Check.String)) { throw new ArgumentException(ExceptionsMessage("floating object", (int)ErrorMessages.IncorectCharacters)); } if (string.IsNullOrEmpty(valueOfSides)) { throw new ArgumentException(ExceptionsMessage("sides", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(valueOfSides, Regexp.Check.FloatingNumber)) { throw new ArgumentException(ExceptionsMessage("sides", (int)ErrorMessages.IncorectFloatingNumber)); } if (string.IsNullOrEmpty(valueOfRadius)) { throw new ArgumentException(ExceptionsMessage("radius", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(valueOfRadius, Regexp.Check.FloatingNumber)) { throw new ArgumentException(ExceptionsMessage("radius", (int)ErrorMessages.IncorectFloatingNumber)); } /* <floatingObject name="a"> * <sides value="5"/> * <radius value="0.05"/> * </floatingObject> */ XmlElement floatingObject = v_InventoryXmlDocument.CreateElement("floatingObject"); floatingObject.SetAttribute("name", name); XmlElement sides = (XmlElement)floatingObject.AppendChild(v_InventoryXmlDocument.CreateElement("sides")); sides.SetAttribute("value", valueOfSides); XmlElement radius = (XmlElement)floatingObject.AppendChild(v_InventoryXmlDocument.CreateElement("radius")); radius.SetAttribute("value", valueOfRadius); XmlNode floatingObjects = v_InventoryXmlDocument.SelectSingleNode("inventory/mSystemDeclaration/floatingObjects"); floatingObjects?.AppendChild(floatingObject); errorMessage = null; return(true); } catch (Exception exception) { errorMessage = exception.Message; return(false); } }
public void RegexpTestsForDifferentInputs() { Assert.IsTrue(Regexp.CheckInputText(string.Empty, Regexp.Check.NumberOrEmptyString)); Assert.IsTrue(Regexp.CheckInputText("123", Regexp.Check.NumberOrEmptyString)); Assert.IsFalse(Regexp.CheckInputText("1 23", Regexp.Check.NumberOrEmptyString)); Assert.IsTrue(Regexp.CheckInputText(string.Empty, Regexp.Check.FloatingNumberOrEmptyString)); Assert.IsTrue(Regexp.CheckInputText("123.5", Regexp.Check.FloatingNumberOrEmptyString)); Assert.IsFalse(Regexp.CheckInputText("1 23.5", Regexp.Check.FloatingNumberOrEmptyString)); Assert.IsTrue(Regexp.CheckInputText(string.Empty, Regexp.Check.StringOrEmptyString)); Assert.IsTrue(Regexp.CheckInputText("test", Regexp.Check.StringOrEmptyString)); Assert.IsFalse(Regexp.CheckInputText("test test", Regexp.Check.StringOrEmptyString)); }
/// <summary> /// Creates new glueTuple element. /// </summary> /// <param name="protein1">Name of the protein1.</param> /// <param name="protein2">Name of the protein2.</param> /// <param name="signalM">Signal M set string.</param> /// <param name="errorMessage"> /// Used as error output if exception is caught. /// </param> /// <returns> /// True if serialization was succesfull otherwise returns false. /// </returns> public bool GlueRelation(string protein1, string protein2, string signalM, out string errorMessage) { try { if (string.IsNullOrEmpty(protein1)) { throw new ArgumentException(ExceptionsMessage("protein1", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(protein1, Regexp.Check.StringWithApostroph)) { throw new ArgumentException(ExceptionsMessage("protein1", (int)ErrorMessages.IncorectCharactersWithApostroph)); } if (string.IsNullOrEmpty(protein2)) { throw new ArgumentException(ExceptionsMessage("protein2", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(protein2, Regexp.Check.StringWithApostroph)) { throw new ArgumentException(ExceptionsMessage("protein2", (int)ErrorMessages.IncorectCharactersWithApostroph)); } if (!Regexp.CheckInputText(signalM, Regexp.Check.String)) { throw new ArgumentException(ExceptionsMessage("protein1", (int)ErrorMessages.IncorectCharacters)); } // <glueTuple protein1="p0" protein2="p2" signalMset=""/> XmlElement glueTuple = v_EvolutionXmlDocument.CreateElement("glueTuple"); glueTuple.SetAttribute("signalMset", signalM); glueTuple.SetAttribute("protein2", protein2); glueTuple.SetAttribute("protein1", protein1); XmlNode glueRelations = v_EvolutionXmlDocument.SelectSingleNode("evolution/glueRelations"); glueRelations?.AppendChild(glueTuple); errorMessage = null; return(true); } catch (Exception exception) { errorMessage = exception.Message; return(false); } }
/// <summary> /// Creates new tile element. /// </summary> /// <param name="tileName">Tile name.</param> /// <param name="polygonSides">Polygon sides value.</param> /// <param name="polygonVertexDistance">Polygon vertex distance value.</param> /// <param name="polygonAngle">Polygon angle value.</param> /// <param name="positionsList">List of positions.</param> /// <param name="connectorList">List of connectors.</param> /// <param name="surfaceGluen">Surface glue value.</param> /// <param name="proteinsList">List of proteins.</param> /// <param name="errorMessage"></param> /// <returns></returns> public bool Tiles(string tileName, string polygonSides, string polygonVertexDistance, string polygonAngle, List <Positions> positionsList, List <Connect> connectorList, string surfaceGluen, List <string> proteinsList, out string errorMessage) { try { if (string.IsNullOrEmpty(tileName)) { throw new ArgumentException(ExceptionsMessage("tileName", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(tileName, Regexp.Check.String)) { throw new ArgumentException(ExceptionsMessage("tileName", (int)ErrorMessages.IncorectCharacters)); } if (string.IsNullOrEmpty(polygonSides)) { throw new ArgumentException(ExceptionsMessage("polygonSides", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(polygonSides, Regexp.Check.Number)) { throw new ArgumentException(ExceptionsMessage("polygonSides", (int)ErrorMessages.IncorectNumber)); } if (string.IsNullOrEmpty(polygonVertexDistance)) { throw new ArgumentException(ExceptionsMessage("polygonVertexDistance", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(polygonVertexDistance, Regexp.Check.Number)) { throw new ArgumentException(ExceptionsMessage("polygonVertexDistance", (int)ErrorMessages.IncorectNumber)); } if (string.IsNullOrEmpty(polygonAngle)) { throw new ArgumentException(ExceptionsMessage("polygonAngle", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(polygonAngle, Regexp.Check.FloatingNumber)) { throw new ArgumentException(ExceptionsMessage("polygonAngle", (int)ErrorMessages.IncorectFloatingNumber)); } if (string.IsNullOrEmpty(surfaceGluen)) { throw new ArgumentException(ExceptionsMessage("surfaceGlue", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(surfaceGluen, Regexp.Check.String)) { throw new ArgumentException(ExceptionsMessage("surfaceGlue", (int)ErrorMessages.IncorectCharacters)); } if (connectorList.Count == 0) { throw new ArgumentException(ExceptionsMessage("connectorList", (int)ErrorMessages.EmptyList)); } XmlElement xmlTiles = v_InventoryXmlDocument.CreateElement("tile"); xmlTiles.SetAttribute("name", tileName); XmlElement polygon = (XmlElement)xmlTiles.AppendChild(v_InventoryXmlDocument.CreateElement("polygon")); XmlElement sides = (XmlElement)polygon.AppendChild(v_InventoryXmlDocument.CreateElement("sides")); sides.SetAttribute("value", polygonSides); XmlElement vertexDistance = (XmlElement)polygon.AppendChild(v_InventoryXmlDocument.CreateElement("vertexDistance")); vertexDistance.SetAttribute("value", polygonVertexDistance); XmlElement angleElement = (XmlElement)polygon.AppendChild(v_InventoryXmlDocument.CreateElement("angleElement")); angleElement.SetAttribute("value", polygonAngle); if (positionsList.Count != 0) { XmlElement positions = (XmlElement)xmlTiles.AppendChild(v_InventoryXmlDocument.CreateElement("positions")); foreach (Positions posit in positionsList) { XmlElement position = (XmlElement)positions.AppendChild(v_InventoryXmlDocument.CreateElement("position")); position.SetAttribute("name", posit.PositionName); XmlElement positionPosX = (XmlElement)position.AppendChild(v_InventoryXmlDocument.CreateElement("posX")); positionPosX.SetAttribute("value", posit.PositionPosX.ToString(CultureInfo.InvariantCulture)); XmlElement positionPosY = (XmlElement)position.AppendChild(v_InventoryXmlDocument.CreateElement("posY")); positionPosY.SetAttribute("value", posit.PositionPosY.ToString(CultureInfo.InvariantCulture)); XmlElement positionPosZ = (XmlElement)position.AppendChild(v_InventoryXmlDocument.CreateElement("posZ")); positionPosZ.SetAttribute("value", posit.PositionPosZ.ToString(CultureInfo.InvariantCulture)); } } XmlElement connectors = (XmlElement)xmlTiles.AppendChild(v_InventoryXmlDocument.CreateElement("connectors")); foreach (Connect connect in connectorList) { XmlElement connector = (XmlElement)connectors.AppendChild(v_InventoryXmlDocument.CreateElement("connector")); connector.SetAttribute("name", connect.ConnectorAngle); XmlElement connectorPositions = (XmlElement)connector.AppendChild(v_InventoryXmlDocument.CreateElement("positions")); foreach (string position in connect.ConnectorPosition) { XmlElement connectorPosition = (XmlElement)connectorPositions.AppendChild(v_InventoryXmlDocument.CreateElement("position")); connectorPosition.SetAttribute("name", position); } XmlElement protein = (XmlElement)connector.AppendChild(v_InventoryXmlDocument.CreateElement("protein")); protein.SetAttribute("name", connect.ConnectorProtein); if (connect.ConnectorAngle != string.Empty) { XmlElement angle = (XmlElement)connector.AppendChild(v_InventoryXmlDocument.CreateElement("angle")); angle.SetAttribute("value", connect.ConnectorAngle.ToString(CultureInfo.InvariantCulture)); } } XmlElement surfaceGlue = (XmlElement)xmlTiles.AppendChild(v_InventoryXmlDocument.CreateElement("surfaceGlue")); surfaceGlue.SetAttribute("name", surfaceGluen); XmlElement proteins = (XmlElement)xmlTiles.AppendChild(v_InventoryXmlDocument.CreateElement("proteins")); if (proteinsList.Count != 0) { foreach (string protein in proteinsList) { XmlElement proteinsProtein = (XmlElement)proteins.AppendChild(v_InventoryXmlDocument.CreateElement("protein")); proteinsProtein.SetAttribute("name", protein); } } XmlNode tiles = v_InventoryXmlDocument.SelectSingleNode("inventory/mSystemDeclaration/fixedObjects"); tiles?.AppendChild(xmlTiles); errorMessage = null; return(true); } catch (Exception exception) { errorMessage = exception.Message; return(false); } }
/// <summary> /// Creates new initial object element. /// </summary> /// <param name="name">Name.</param> /// <param name="posX">Parameter posX.</param> /// <param name="posY">Parameter posY.</param> /// <param name="posZ">Parameter posZ.</param> /// <param name="angleX">Parameter angleX.</param> /// <param name="angleY">Parameter angleY.</param> /// <param name="angleZ">Parameter angleZ.</param> /// <param name="errorMessage"> /// Output parameter, which holds error message catched during serialization. /// </param> /// <returns> /// True if serialization was succesfull otherwise returns false. /// </returns> public bool SeedTiles(string name, string posX, string posY, string posZ, string angleX, string angleY, string angleZ, out string errorMessage) { try { if (string.IsNullOrEmpty(name)) { throw new ArgumentException(ExceptionsMessage("name", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(name, Regexp.Check.String)) { throw new ArgumentException(ExceptionsMessage("name", (int)ErrorMessages.IncorectCharacters)); } if (string.IsNullOrEmpty(posX)) { throw new ArgumentException(ExceptionsMessage("posX", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(posX, Regexp.Check.FloatingNumber)) { throw new ArgumentException(ExceptionsMessage("posX", (int)ErrorMessages.IncorectFloatingNumber)); } if (string.IsNullOrEmpty(posY)) { throw new ArgumentException(ExceptionsMessage("posY", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(posY, Regexp.Check.FloatingNumber)) { throw new ArgumentException(ExceptionsMessage("posY", (int)ErrorMessages.IncorectFloatingNumber)); } if (string.IsNullOrEmpty(posZ)) { throw new ArgumentException(ExceptionsMessage("posZ", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(posZ, Regexp.Check.FloatingNumber)) { throw new ArgumentException(ExceptionsMessage("posZ", (int)ErrorMessages.IncorectFloatingNumber)); } if (string.IsNullOrEmpty(angleX)) { throw new ArgumentException(ExceptionsMessage("angleX", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(angleX, Regexp.Check.FloatingNumber)) { throw new ArgumentException(ExceptionsMessage("angleX", (int)ErrorMessages.IncorectFloatingNumber)); } if (string.IsNullOrEmpty(angleY)) { throw new ArgumentException(ExceptionsMessage("angleY", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(angleY, Regexp.Check.FloatingNumber)) { throw new ArgumentException(ExceptionsMessage("angleY", (int)ErrorMessages.IncorectFloatingNumber)); } if (string.IsNullOrEmpty(angleZ)) { throw new ArgumentException(ExceptionsMessage("angleZ", (int)ErrorMessages.IsNullOrEmpty)); } if (!Regexp.CheckInputText(angleZ, Regexp.Check.FloatingNumber)) { throw new ArgumentException(ExceptionsMessage("angleZ", (int)ErrorMessages.IncorectFloatingNumber)); } /* <initialObject name="q2"> * <posX value="0"/> * <posY value="0"/> * <posZ value="-16.18"/> * <angleX value="0"/> * <angleY value="0"/> * <angleZ value="0"/> * </initialObject> */ XmlElement seedTile = v_InventoryXmlDocument.CreateElement("initialObject"); seedTile.SetAttribute("name", name); XmlElement posXElement = (XmlElement)seedTile.AppendChild(v_InventoryXmlDocument.CreateElement("posX")); posXElement.SetAttribute("value", posX); XmlElement posYElement = (XmlElement)seedTile.AppendChild(v_InventoryXmlDocument.CreateElement("posY")); posYElement.SetAttribute("value", posY); XmlElement posZElement = (XmlElement)seedTile.AppendChild(v_InventoryXmlDocument.CreateElement("posZ")); posZElement.SetAttribute("value", posZ); XmlElement angleXElement = (XmlElement)seedTile.AppendChild(v_InventoryXmlDocument.CreateElement("angleX")); angleXElement.SetAttribute("value", angleX); XmlElement angleYElement = (XmlElement)seedTile.AppendChild(v_InventoryXmlDocument.CreateElement("angleY")); angleYElement.SetAttribute("value", angleY); XmlElement angleZElement = (XmlElement)seedTile.AppendChild(v_InventoryXmlDocument.CreateElement("angleZ")); angleZElement.SetAttribute("value", angleZ); XmlNode seedTiles = v_InventoryXmlDocument.SelectSingleNode("inventory/mSystemDeclaration/initialObjects"); seedTiles?.AppendChild(seedTile); errorMessage = null; return(true); } catch (Exception exception) { errorMessage = exception.Message; return(false); } }