コード例 #1
0
ファイル: EventImporter.cs プロジェクト: onwhenrdy/MoBi
        /// <summary>
        ///    Creates the Mobi Event Assignment for one SBML Event Assignment.
        /// </summary>
        internal void CreateEventAssignment(EventAssignment eventAssignment)
        {
            _counter++;
            var assignmentVar = eventAssignment.getVariable();
            var alias         = _sbmlInformation.AliasCreator.CreateAliasFrom(assignmentVar) + _counter;

            var description = String.Empty;

            if (eventAssignment.isSetNotes())
            {
                description += eventAssignment.getNotesString();
            }
            if (eventAssignment.isSetSBOTerm())
            {
                description += (SBMLConstants.SPACE + eventAssignment.getSBOTerm());
            }

            IEventAssignmentBuilder eab = new EventAssignmentBuilder()
                                          .WithId(eventAssignment.getId() + SBMLConstants.SPACE + eventAssignment.getName() + SBMLConstants.SPACE + alias)
                                          .WithName(SBMLConstants.SBML_EVENT_ASSIGNMENT + eventAssignment.getId())
                                          .WithDescription(description);

            var formula = _astHandler.Parse(eventAssignment.getMath(), eab, assignmentVar, _sbmlProject, _sbmlInformation) ??
                          ObjectBaseFactory.Create <ExplicitFormula>().WithFormulaString(String.Empty).WithName(SBMLConstants.DEFAULT_FORMULA_NAME);

            eab.Formula = formula;
            EventGroupBuildingBlock.FormulaCache.Add(formula);
            EventBuilder.AddAssignment(eab);
        }