/// <summary> /// Updates an expression according to translation rules /// </summary> /// <param name="step">the step in which the expression occurs</param> /// <param name="expression"></param> /// <returns>the updated string</returns> private string ReviewExpression(Step step, string expression) { string retVal = expression; if (expression.IndexOf('%') >= 0) { SubSequence subSequence = step.TestCase.SubSequence; retVal = retVal.Replace("%D_LRBG", format_decimal_as_str(subSequence.getD_LRBG())); retVal = retVal.Replace("%Level", format_level(subSequence.getLevel())); retVal = retVal.Replace("%Mode", format_mode(subSequence.getMode())); retVal = retVal.Replace("%NID_LRBG", format_decimal_as_str(subSequence.getNID_LRBG())); retVal = retVal.Replace("%Q_DIRLRBG", format_decimal_as_str(subSequence.getQ_DIRLRBG())); retVal = retVal.Replace("%Q_DIRTRAIN", format_decimal_as_str(subSequence.getQ_DIRTRAIN())); retVal = retVal.Replace("%Q_DLRBG", format_decimal_as_str(subSequence.getQ_DLRBG())); retVal = retVal.Replace("%RBC_ID", format_decimal_as_str(subSequence.getRBC_ID())); retVal = retVal.Replace("%RBCPhone", format_str(subSequence.getRBCPhone())); retVal = retVal.Replace("%Step_Distance", step.getDistance() + ""); retVal = retVal.Replace("%Step_LevelIN", format_level(step.getLevelIN())); retVal = retVal.Replace("%Step_LevelOUT", format_level(step.getLevelOUT())); retVal = retVal.Replace("%Step_ModeIN", format_mode(step.getModeOUT())); retVal = retVal.Replace("%Step_ModeOUT", format_mode(step.getModeOUT())); for (int i = 0; i < step.StepMessages.Count; i++) { DBElements.DBMessage message = step.StepMessages[i] as DBElements.DBMessage; if (message != null) { retVal = retVal.Replace("%Step_Messages_" + i, format_message(message)); } } } return(retVal); }
/// <summary> /// Takes the message provided and returns the corresponding message value /// </summary> /// <param name="str"></param> /// <returns></returns> private string format_message(DBElements.DBMessage message) { string retVal = ""; switch (message.MessageType) { case Generated.acceptor.DBMessageType.aEUROBALISE: retVal = format_eurobalise_message(message); break; case Generated.acceptor.DBMessageType.aEUROLOOP: retVal = format_euroloop_message(message); break; case Generated.acceptor.DBMessageType.aEURORADIO: retVal = format_euroradio_message(message); break; } return(retVal); }
private string format_euroradio_message(DBElements.DBMessage message) { string retVal = ""; return(retVal); }
private string format_eurobalise_message(DBElements.DBMessage message) { DataDictionary.Types.NameSpace nameSpace = OverallNameSpaceFinder.INSTANCE.findByName(EFSSystem.Dictionaries[0], "Messages"); Types.Structure structureType = (Types.Structure)EFSSystem.findType(nameSpace, "Messages.EUROBALISE.Message"); Values.StructureValue structure = new Values.StructureValue(structureType, nameSpace); int index = 0; FillStructure(nameSpace, message.Fields, ref index, structure); // fills the message fields // then we fill the packets KeyValuePair <string, Variables.IVariable> subSequencePair = structure.SubVariables.ElementAt(structure.SubVariables.Count - 1); Variables.IVariable subSequenceVariable = subSequencePair.Value; Types.Collection collectionType = (Types.Collection)EFSSystem.findType(nameSpace, "Messages.EUROBALISE.Collection1"); Values.ListValue collection = new Values.ListValue(collectionType, new List <Values.IValue>()); Types.Structure subStructure1Type = (Types.Structure)EFSSystem.findType(nameSpace, "Messages.EUROBALISE.SubStructure1"); Values.StructureValue subStructure1 = new Values.StructureValue(subStructure1Type, nameSpace); Types.Structure packetStructure = (Types.Structure)EFSSystem.findType(nameSpace, "Messages.PACKET.TRACK_TO_TRAIN.Message"); Values.StructureValue packetValue = new Values.StructureValue(packetStructure, nameSpace); // will contain the list of all packets of the message and then be added to the structure packetValue ArrayList subStructures = new ArrayList(); foreach (DBElements.DBPacket packet in message.Packets) { Tests.DBElements.DBField nidPacketField = packet.Fields[0] as Tests.DBElements.DBField; if (nidPacketField.Value != 255) // 255 means "end of information" { Values.StructureValue subStructure = FindStructure(nidPacketField.Value); index = 0; FillStructure(nameSpace, packet.Fields, ref index, subStructure); subStructures.Add(subStructure); } } // the collection of the message packets is copied to the structure packetValue int i = 0; foreach (KeyValuePair <string, Variables.IVariable> pair in packetValue.SubVariables) { if (i == subStructures.Count) { break; } string variableName = pair.Key; Values.StructureValue structureValue = subStructures[i] as Values.StructureValue; if (structureValue.Structure.FullName.Contains(variableName)) { Variables.IVariable variable = pair.Value; variable.Value = structureValue; i++; } } subStructure1.SubVariables.ElementAt(0).Value.Value = packetValue; collection.Val.Add(subStructure1); subSequenceVariable.Value = collection; return(structure.Name); }