}         // func GetDataFromStream

        /// <summary>Pull dataset from the object.</summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        protected override PpsDataSetServer PullData(PpsObjectAccess obj)
        {
            // get the head or given revision
            // create the dataset
            var data = (PpsDataSetServer)DataSetDefinition.CreateDataSet();

            if (obj.HeadRevId > 0)
            {
                var xDocumentData = XDocument.Parse(obj.GetText());
                data.Read(xDocumentData.Root);
            }
            else
            {
                CallTableMethods(LuaOnCreateRevision, obj, data);
            }

            // correct id and revision
            CheckHeadObjectId(obj, data);

            // fire triggers
            CallTableMethods(LuaOnAfterPull, obj, data);

            // mark all has orignal
            data.Commit();

            return(data);
        }         // func PullData
        }         // func GetDatasetResourceFile

        /// <summary>Process webrequest, return schema.xml and resource files (client scripts).</summary>
        /// <param name="r"></param>
        /// <returns></returns>
        protected override async Task <bool> OnProcessRequestAsync(IDEWebRequestScope r)
        {
            if (r.RelativeSubPath == "schema.xml")
            {
                await Task.Run(() => DataSetDefinition.WriteToDEContext(r, ConfigPath + "/schema.xml"));

                return(true);
            }
            else if (GetDatasetResourceFile(r.RelativeSubPath, out var fi))
            {
                if (MimeTypeMapping.TryGetMimeTypeFromExtension(fi.Extension, out var mimeType))
                {
                    if (mimeType == MimeTypes.Text.Lua || mimeType == MimeTypes.Text.Html)                     // map lua,html to plain text, do not change content
                    {
                        mimeType = MimeTypes.Text.Plain;
                    }
                }
                else
                {
                    mimeType = MimeTypes.Application.OctetStream;
                }

                await Task.Run(() => r.WriteFile(fi.FullName, mimeType));

                return(true);
            }
            return(await base.OnProcessRequestAsync(r));
        }         // proc OnProcessRequest
 internal DataSetPublishingResult(DataSetDefinition dataSetDefinition, DataSourceInfo dataSourceInfo, UserLocationFlags userReferenceLocation, ProcessingMessageList warnings)
 {
     m_dataSetDefinition     = dataSetDefinition;
     m_dataSourceInfo        = dataSourceInfo;
     m_userReferenceLocation = userReferenceLocation;
     m_warnings = warnings;
 }
예제 #4
0
        public static ParsedDataSet ParseIPTWPData(IPTWPPacket iptwpPacket, UdpPacket udp, bool extensive)
        {
            if (iptwpPacket == null || iptwpPacket.IPTWPType == IPTTypes.MA)
            {
                return(null);
            }

            DataSetDefinition dataSetDefinition = null;

            foreach (var collection in DataCollections)
            {
                var find = collection.FindByIdentifier(iptwpPacket.Comid.ToString());
                if (find != null)
                {
                    dataSetDefinition = find;
                    break;
                }
            }

            if (dataSetDefinition != null)
            {
                try
                {
                    var iptPayload = IPTWPPacket.GetIPTPayload(udp, iptwpPacket);

                    return(dataSetDefinition.Parse(iptPayload, extensive));
                }
                catch (Exception e)
                {
                    return(ParsedDataSet.CreateError(e.Message));
                }
            }

            return(null);
        }
예제 #5
0
        public DataSetCollection GetDataSetCollection()
        {
            var c = new DataSetCollection();


            var datasetdic = new Dictionary <string, DataSetDefinition>();

            //var triplets = new Tuple<string, DataSetDefinition, List<int>>();

            foreach (Dataset dataset in Datasets)
            {
                var set = ExtractDataset(dataset);
                var d   = new DataSetDefinition();
                d.BitFields = set;
                var serial = d.Serialize();
                if (!datasetdic.ContainsKey(serial))
                {
                    datasetdic.Add(serial, d);
                }
            }


            foreach (var t in Telegrams)
            {
                var comid = t.Comid.ToString();
                var set   = Datasets.First(dataset => dataset.Datasetid == t.Datasetid);

                var dud = new DataSetDefinition()
                {
                    BitFields = ExtractDataset(set)
                };
                var serial = dud.Serialize();

                var datasetdef = datasetdic[serial];

                if (string.IsNullOrEmpty(datasetdef.Name))
                {
                    datasetdef.Name = t.Name;
                }
                else if (!datasetdef.Name.Contains(t.Name))
                {
                    datasetdef.Name += "," + t.Name;
                }

                if (!datasetdef.Identifiers.Contains(comid))
                {
                    datasetdef.Identifiers.Add(comid);
                }
            }

            var outlist = datasetdic.Values.ToList();

            outlist.RemoveAll(d => d.Identifiers.Count == 0);

            c.DataSets.AddRange(outlist);


            return(c);
        }
        }         // proc WriteDataToStream

        /// <summary>Parse dataset from the input stream.</summary>
        /// <param name="src"></param>
        /// <returns></returns>
        protected override PpsDataSetServer GetDataFromStream(Stream src)
        {
            var data = (PpsDataSetServer)DataSetDefinition.CreateDataSet();

            using (var xml = XmlReader.Create(src, Procs.XmlReaderSettings))
                data.Read(XDocument.Load(xml).Root);
            return(data);
        }         // func GetDataFromStream
        public RSDataSetDefinition PrepareQuery(RSDataSource DataSource, RSDataSetDefinition DataSet, out bool Changed, out string[] ParameterNames)
        {
            DataSource        ds     = (DataSource)Converter.Convert(DataSource);
            DataSetDefinition dsDef  = (DataSetDefinition)Converter.Convert(DataSet);
            DataSetDefinition outval = rs.PrepareQuery(ds, dsDef, out Changed, out ParameterNames);

            return((RSDataSetDefinition)Converter.Convert(outval));
        }
        public void Initialize(DataSetDefinition dataSetDefinition)
        {
            int size = 0;

            if (dataSetDefinition.DataSetCore != null && dataSetDefinition.DataSetCore.Query != null && dataSetDefinition.DataSetCore.Query.Parameters != null)
            {
                size = dataSetDefinition.DataSetCore.Query.Parameters.Count;
            }
            this.m_parameters = new ParametersImpl(size);
            this.InitializeGlobalAndUserCollections();
            this.m_currentFields = new FieldsContext(this, dataSetDefinition.DataSetCore);
            this.m_dataSources   = new DataSourcesImpl(0);
            this.m_dataSets      = new DataSetsImpl(0);
            this.m_variables     = new VariablesImpl(false);
            this.m_aggregates    = new AggregatesImpl(false, this.m_odpContext);
            this.m_reportItems   = new ReportItemsImpl(false);
            this.m_lookups       = new LookupsImpl();
        }
        }         // proc OnEndReadConfiguration

        private async Task BindDataSetDefinitonAsync()
        {
            DataSetDefinition = Application.GetDataSetDefinition(Config.GetAttribute("dataset", String.Empty));
            if (!DataSetDefinition.IsInitialized)             // initialize dataset functionality
            {
                await DataSetDefinition.InitializeAsync();
            }

            // prepare scripts for the the current node
            var luaEngine = this.GetService <IDELuaEngine>(true);

            var list = new List <ILuaAttachedScript>();

            foreach (var scriptId in DataSetDefinition.ServerScripts)
            {
                list.Add(luaEngine.AttachScript(scriptId, this, true));
            }
            currentAttachedScripts = list.ToArray();
        }         // proc BindDataSetDefinitonAsync
 public DataSetDefinition PrepareQuery(DataSource DataSource, DataSetDefinition DataSet, out bool Changed, out string[] ParameterNames)
 {
     object[] results = this.Invoke("PrepareQuery", new object[] {
                 DataSource,
                 DataSet});
     Changed = ((bool)(results[1]));
     ParameterNames = ((string[])(results[2]));
     return ((DataSetDefinition)(results[0]));
 }
 /// <remarks/>
 public System.IAsyncResult BeginPrepareQuery(DataSource DataSource, DataSetDefinition DataSet, System.AsyncCallback callback, object asyncState)
 {
     return this.BeginInvoke("PrepareQuery", new object[] {
                 DataSource,
                 DataSet}, callback, asyncState);
 }
예제 #12
0
 public RetrievalManager(DataSetDefinition dataSetDefinition, OnDemandProcessingContext context)
 {
     this.m_dataSetDefinition = dataSetDefinition;
     this.m_odpContext        = context;
 }
        /// <summary>
        /// Loads subscription settings into SubscriptionSettings object
        /// </summary>
        /// <param name="filename">Name of XML file to parse</param>
        /// <returns>Collection of Subscription Settings</returns>
        /// <remarks>This is the meaty bit</remarks>
        public SubscriptionSettings[] LoadSubscriptions(string filename)
        {
            try
            {
                // Load XML Document
                var xml = XElement.Load(filename);

                //// ---------------------------------------------
                //// Read XML into Linq monster
                //// ---------------------------------------------
                var reportSubscriptions = from reportSubscription in xml.Elements("ReportSubscription")
                                          select
                                              new
                                              {
                                                  reportName = (string)reportSubscription.Attribute("ReportName"),
                                                  subscriptionDescription =
                                                    (string)reportSubscription.Attribute("SubscriptionDescription"),
                                                  deliveryMethod =
                                                    (string)reportSubscription.Attribute("DeliveryMethod"),
                                                  dataSource = (string)reportSubscription.Attribute("DataSource"),
                                                  itemPath = (string)reportSubscription.Attribute("ItemPath"),
                                                  eventType = (string)reportSubscription.Element("EventType"),
                                                  queryDefinition = reportSubscription.Element("QueryDefinition"),
                                                  scheduleXml = reportSubscription.Element("ScheduleDefinition"),
                                                  fields =
                                                      from field in reportSubscription.Element("DatasetDefinition").Elements("Fields").Elements()
                                                      select field,
                                                  extentionParameters =
                                                      from extParam in
                                                          reportSubscription.Element("ExtensionParameters").Elements()
                                                      select extParam,
                                                  parameters =
                                                      from param in
                                                          reportSubscription.Element("Parameters").Elements()
                                                      select param,
                                                  extensionSetting = (string)reportSubscription.Element("ExtensionSetting")
                                              };

                var subSettings = new SubscriptionSettings[reportSubscriptions.Count()];
                var subscriptionIndex = 0;

                //// ---------------------------------------------
                //// Run through each subscription and get values
                //// ---------------------------------------------
                foreach (var reportSubscription in reportSubscriptions)
                {
                    subSettings[subscriptionIndex] = new SubscriptionSettings();

                    // Get Subscription Information
                    subSettings[subscriptionIndex].ReportName = reportSubscription.reportName;
                    subSettings[subscriptionIndex].SubscriptionDescription = reportSubscription.subscriptionDescription;
                    subSettings[subscriptionIndex].DeliveryMethod = reportSubscription.deliveryMethod;
                    subSettings[subscriptionIndex].DataSource = reportSubscription.dataSource;
                    subSettings[subscriptionIndex].ItemPath = reportSubscription.itemPath;
                    subSettings[subscriptionIndex].FullReportName = reportSubscription.itemPath + reportSubscription.reportName;

                    // Get EventType setting
                    subSettings[subscriptionIndex].EventType = reportSubscription.eventType;

                    // Get QueryDefinition
                    subSettings[subscriptionIndex].QueryDefinition = new QueryDefinition
                    {
                        CommandText = (string)reportSubscription.queryDefinition.Element("CommandText"),
                        CommandType = (string)reportSubscription.queryDefinition.Element("CommandType"),
                        Timeout = (int)reportSubscription.queryDefinition.Element("Timeout"),
                        TimeoutSpecified = (bool)reportSubscription.queryDefinition.Element("TimeoutSpecified")
                    };

                    // Get Schedule Raw XML
                    subSettings[subscriptionIndex].ScheduleXml = reportSubscription.scheduleXml.ToString();

                    // Get Fields
                    var numberOfFields = reportSubscription.fields.Count();
                    var fieldsList = new Field[numberOfFields];
                    var fieldIndex = 0;

                    foreach (var field in reportSubscription.fields)
                    {
                        fieldsList[fieldIndex] = new Field
                        {
                            Name = (string)field.Element("Name"),
                            Alias = (string)field.Element("Alias")
                        };
                        fieldIndex++;
                    }

                    // Dataset Definition
                    subSettings[subscriptionIndex].DataSetDefinition = new DataSetDefinition
                    {
                        AccentSensitivitySpecified = false,
                        CaseSensitivitySpecified = false,
                        KanatypeSensitivitySpecified = false,
                        WidthSensitivitySpecified = false,
                        Fields = fieldsList
                    };

                    // Get Extension Paramters
                    int numberOfParameterValues = reportSubscription.extentionParameters.Count();
                    var extensionParams = new ParameterValueOrFieldReference[numberOfParameterValues];
                    var extParamIndex = 0;

                    foreach (var extParam in reportSubscription.extentionParameters)
                    {
                        switch ((string)extParam.Attribute("Type"))
                        {
                            case "ParameterValue":
                                var pv = new ParameterValue
                                {
                                    Name = (string)extParam.Element("Name"),
                                    Value = (string)extParam.Element("Value")
                                };
                                extensionParams[extParamIndex] = pv;
                                break;

                            case "ParameterFieldReference":
                                var pfr = new ParameterFieldReference
                                {
                                    ParameterName = (string)extParam.Element("ParameterName"),
                                    FieldAlias = (string)extParam.Element("FieldAlias")
                                };
                                extensionParams[extParamIndex] = pfr;
                                break;
                        }

                        extParamIndex++;
                    }

                    subSettings[subscriptionIndex].ExtensionParameters = extensionParams;

                    // Get (Input) Parameters
                    int numberOfNormalParameterValues = reportSubscription.parameters.Count();
                    var parameters = new ParameterValueOrFieldReference[numberOfNormalParameterValues];
                    var paramIndex = 0;

                    foreach (var param in reportSubscription.parameters)
                    {
                        switch ((string)param.Attribute("Type"))
                        {
                            case "ParameterValue":
                                var pv = new ParameterValue
                                {
                                    Name = (string)param.Element("Name"),
                                    Value = (string)param.Element("Value")
                                };
                                parameters[paramIndex] = pv;
                                break;

                            case "ParameterFieldReference":
                                var pfr = new ParameterFieldReference
                                {
                                    ParameterName = (string)param.Element("ParameterName"),
                                    FieldAlias = (string)param.Element("FieldAlias")
                                };
                                parameters[paramIndex] = pfr;
                                break;
                        }

                        paramIndex++;
                    }

                    subSettings[subscriptionIndex].Parameters = parameters;

                    // Get Extension setting
                    subSettings[subscriptionIndex].ExtensionSettings = new ExtensionSettings
                    {
                        Extension = reportSubscription.extensionSetting,
                        ParameterValues = extensionParams
                    };

                    // Set up Dataset Definition
                    subSettings[subscriptionIndex].DataSetDefinition.Query = subSettings[subscriptionIndex].QueryDefinition;

                    // Set up Datasource Definition/Reference
                    subSettings[subscriptionIndex].DataSourceReference = new DataSourceReference
                    {
                        Reference = reportSubscription.itemPath + reportSubscription.dataSource
                    };

                    // Prepare Query
                    var preparationResults = new DataSetDefinition();

                    try
                    {
                        bool changed;
                        string[] paramNames;
                        preparationResults =
                            client.PrepareQuery(
                                new DataSource()
                                {
                                    Item = subSettings[subscriptionIndex].DataSourceReference,
                                    Name = "Database" // ?
                                },
                                subSettings[subscriptionIndex].DataSetDefinition,
                                out changed,
                                out paramNames);
                    }
                    catch (SoapException e)
                    {
                        Console.WriteLine(e.Message);
                    }

                    subSettings[subscriptionIndex].DataRetrievalPlan = new DataRetrievalPlan
                    {
                        DataSet = preparationResults,
                        Item = subSettings[subscriptionIndex].DataSourceReference
                    };

                    subscriptionIndex++;
                }

                return subSettings;
            }
            catch (Exception e)
            {
                throw new Exception("Error loading subscription settings. Please use absolute path and check XML file is correctly formed.\n\nError Message:\n------------------\n" + e.Message);
            }
        }
 internal RetrievalManager(DataSetDefinition dataSetDefinition, OnDemandProcessingContext context)
 {
     m_dataSetDefinition = dataSetDefinition;
     m_odpContext        = context;
 }
예제 #15
0
 public RuntimeDataSourceSharedDataSet(DataSetDefinition dataSetDefinition, OnDemandProcessingContext odpContext)
     : base(null, new DataSource(-1, dataSetDefinition.SharedDataSourceReferenceId, dataSetDefinition.DataSetCore), odpContext, false)
 {
     this.m_dataSetDefinition = dataSetDefinition;
 }
 /// <remarks/>
 public void PrepareQueryAsync(DataSource DataSource, DataSetDefinition DataSet)
 {
     this.PrepareQueryAsync(DataSource, DataSet, null);
 }
 /// <remarks/>
 public void PrepareQueryAsync(DataSource DataSource, DataSetDefinition DataSet, object userState)
 {
     if ((this.PrepareQueryOperationCompleted == null))
     {
         this.PrepareQueryOperationCompleted = new System.Threading.SendOrPostCallback(this.OnPrepareQueryOperationCompleted);
     }
     this.InvokeAsync("PrepareQuery", new object[] {
                 DataSource,
                 DataSet}, this.PrepareQueryOperationCompleted, userState);
 }
예제 #18
0
 internal RuntimeDataSourceSharedDataSet(DataSetDefinition dataSetDefinition, OnDemandProcessingContext odpContext)
     : base(null, new DataSource(-1, dataSetDefinition.SharedDataSourceReferenceId, dataSetDefinition.DataSetCore), odpContext, mergeTransactions: false)
 {
     m_dataSetDefinition = dataSetDefinition;
 }