Example #1
0
        public static ObjectReference FromXML(string xmlData)
        {
            ObjectReferenceSAXHandler handler = new ObjectReferenceSAXHandler();
            MgSAXParser parser = new MgSAXParser(handler);

            parser.Parse(xmlData);
            return(handler.ParsedReference);
        }
Example #2
0
        /// <summary>
        ///   To allocate and fill inner objects of the class
        /// </summary>
        /// <param name = "foundTagName">possible tag name , name of object, which need be allocated</param>
        /// <param name="parentForm">the form of the task that called the current task (note: NOT triggering task)</param>
        protected virtual bool initInnerObjects(String foundTagName, MgFormBase parentForm)
        {
            XmlParser parser = Manager.GetCurrentRuntimeContext().Parser;

            switch (foundTagName)
            {
            case XMLConstants.MG_TAG_HELPTABLE:
                if (_helpTab == null)
                {
                    _helpTab = new Helps();
                }

                if (Events.ShouldLog(Logger.LogLevels.Development))
                {
                    Events.WriteDevToLog(string.Format("{0} ...", foundTagName));
                }

                _helpTab.fillData();
                break;

            case XMLConstants.MG_TAG_DVHEADER:
                if (Events.ShouldLog(Logger.LogLevels.Development))
                {
                    Events.WriteDevToLog(string.Format("{0} ...", foundTagName));
                }

                DataView.fillHeaderData();
                break;

            case XMLConstants.MG_TAG_PROP:
                _propTab.fillData(this, 'T');
                break;

            case XMLConstants.MG_TAG_FORM:
                Form = FormInitData(parentForm);
                break;

            case XMLConstants.MG_TAG_ASSEMBLIES:
                int start      = parser.getCurrIndex();
                int endContext = parser.getXMLdata().IndexOf('/' + XMLConstants.MG_TAG_ASSEMBLIES,
                                                             parser.getCurrIndex());
                parser.setCurrIndex(endContext);
                parser.setCurrIndex2EndOfTag();
                String assemblyData = parser.getXMLdata().Substring(start, parser.getCurrIndex() - start);
                //read assemblies data using sax parser
                try
                {
                    var mgSAXParser = new MgSAXParser(new AssembliesSaxHandler());
                    mgSAXParser.Parse(assemblyData);
                }
                catch (Exception ex)
                {
                    Events.WriteExceptionToLog(ex);
                }
                break;

            case XMLConstants.MG_ATTR_MENU_CONTENT:
                // set current index after tag name end
                parser.setCurrIndex(parser.getXMLdata().IndexOf(XMLConstants.MG_ATTR_MENU_CONTENT, parser.getCurrIndex()) +
                                    XMLConstants.MG_ATTR_MENU_CONTENT.Length + 1);
                endContext    = parser.getXMLdata().IndexOf("</" + XMLConstants.MG_ATTR_MENU_CONTENT, parser.getCurrIndex());
                _menusContent = Encoding.Unicode.GetBytes(parser.getXMLsubstring(endContext));

                Manager.MenuManager.getApplicationMenus(this);
                parser.setCurrIndex(endContext);
                parser.setCurrIndex2EndOfTag();
                break;

            default:
                return(false);
            }

            return(true);
        }
Example #3
0
        /// <summary>
        ///   Fill inner members and needed links for the current 'fld'
        /// </summary>
        /// <param name = "((DataView)dataView)">reference to all DataView object, which consist relevant fields </param>
        private bool initInnerObjects(XmlParser parser, String foundTagName, DataView dataView)
        {
            switch (foundTagName)
            {
            case XMLConstants.MG_TAG_FLD:
                if (_isOwnerFld)
                // init <fld id = recompute_by=> first time, init reference by id
                {
                    fillFldField(parser, dataView);
                    _isOwnerFld = false; // must to be after FillFldField
                }
                else
                {
                    fillFldField(parser, dataView); // it's not need ((DataView)dataView), it's not first <fld >
                }
                break;

            case ConstInterface.MG_TAG_LINK:
                fillLink(parser, dataView);
                break;

            case XMLConstants.MG_TAG_CONTROL:
                if (_ctrlProps == null)
                {
                    _ctrlProps = new PropTable();
                }

                // fill the prop table using the existing properties
                _ctrlProps.fillDataByExists(Task);

                //if virtual field causes recompute of repeatable control
                if (_ctrlProps.getCtrlRef() != null && _ctrlProps.getCtrlRef().IsRepeatable&& OwnerFld.IsVirtual &&
                    (!(OwnerFld.hasInitExp())))
                {
                    OwnerFld.causeTableInvalidation(true);
                }
                break;

            case XMLConstants.MG_TAG_FORM_PROPERTIES:
                if (_formProps == null)
                {
                    _formProps = new PropTable();
                }

                // fill the prop table using the existing properties
                _formProps.fillDataByExists(Task);
                break;

            case ConstInterface.MG_TAG_FLD_END:
                parser.setCurrIndex2EndOfTag();
                return(false);

            case XMLConstants.MG_TAG_DCVALUES:
                string segment = parser.ReadToEndOfCurrentElement();
                var    handler = new DCValuesRecomputeSaxHandler(Task);
                MgSAXParser.Parse(segment, handler);
                AddRecomputeItem(handler.DcValuesRecomputeAction);
                break;

            default:
                Logger.Instance.WriteExceptionToLog(
                    "There is no such tag in Recompute. Insert else if to Recompute.initInnerObjects for " + foundTagName);
                return(false);
            }
            return(true);
        }