Beispiel #1
0
        /// <summary>
        /// Sends the specified <paramref name="complexStructureQuery"/> to the Web Service defined by <see cref="_config"/>
        /// </summary>
        /// <param name="complexStructureQuery">The <see cref="IComplexStructureQuery"/></param>
        /// <returns>The ISdmxObjects returned by the Web Service</returns>
        private ISdmxObjects SendQueryStructureRequest(IComplexStructureQuery complexStructureQuery, SDMXWSFunctionV21 sdmxwsFunctionV21)
        {
            IStructureQueryFormat <XDocument> queryFormat = new ComplexQueryFormatV21();

            IComplexStructureQueryFactory <XDocument>        factory = new ComplexStructureQueryFactoryV21 <XDocument>();
            IComplexStructureQueryBuilderManager <XDocument> complexStructureQueryBuilderManager = new ComplexStructureQueryBuilderManager <XDocument>(factory);
            var wdoc = complexStructureQueryBuilderManager.BuildComplexStructureQuery(complexStructureQuery, queryFormat);
            var doc  = new XmlDocument();

            doc.LoadXml(wdoc.ToString());

            string tempFileName = Path.GetTempFileName();

            try
            {
                this.SendRequest(doc, sdmxwsFunctionV21, tempFileName);

                ISdmxObjects             structureObjects = new SdmxObjectsImpl();
                IStructureParsingManager parsingManager   = new StructureParsingManager(SdmxSchemaEnumType.Null);
                using (var dataLocation = new FileReadableDataLocation(tempFileName))
                {
                    IStructureWorkspace structureWorkspace = parsingManager.ParseStructures(dataLocation);
                    structureObjects = structureWorkspace.GetStructureObjects(false);
                }

                NsiClientValidation.CheckResponse(structureObjects);
                return(structureObjects);
            }
            finally
            {
                //Delete the temporary file
                File.Delete(tempFileName);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Sends the specified <paramref name="request"/> to the Web Service defined by <see cref="_config"/>
        /// </summary>
        /// <param name="request">
        /// The <see cref="IComplexStructureQuery"/>
        /// </param>
        /// <returns>
        /// The ISdmxObjects returned by the Web Service
        /// </returns>
        private ISdmxObjects SendQueryStructureRequest(string request)
        {
            string tempFileName = Path.GetTempFileName();

            try
            {
                this.SendRequest(request, tempFileName, RequestType.Structure);

                ISdmxObjects             structureObjects = new SdmxObjectsImpl();
                IStructureParsingManager parsingManager   = new StructureParsingManager(SdmxSchemaEnumType.Null);
                using (var dataLocation = new FileReadableDataLocation(tempFileName))
                {
                    IStructureWorkspace structureWorkspace = parsingManager.ParseStructures(dataLocation);
                    structureObjects = structureWorkspace.GetStructureObjects(false);
                }

                NsiClientValidation.CheckResponse(structureObjects);
                return(structureObjects);
            }
            finally
            {
                // Delete the temporary file
                File.Delete(tempFileName);
            }
        }
        /// <summary>
        /// Sends the specified <paramref name="references"/> to the Web Service defined by <see cref="_config"/>
        /// </summary>
        /// <param name="references">The <see cref="IStructureReference"/></param>
        /// <param name="resolveReferences">
        /// The resolve references
        /// </param>
        /// <returns>The QueryStructureResponse returned by the Web Service</returns>
        public ISdmxObjects SendQueryStructureRequest(IEnumerable <IStructureReference> references, bool resolveReferences)
        {
            var queryStructureRequestBuilderManager = new QueryStructureRequestBuilderManager();

            IStructureQueryFormat <XDocument> queryFormat = new QueryStructureRequestFormat();
            var wdoc = queryStructureRequestBuilderManager.BuildStructureQuery(references, queryFormat, resolveReferences);

            var doc = new XmlDocument();

            doc.LoadXml(wdoc.ToString());

            string tempFileName = Path.GetTempFileName();

            try
            {
                this.SendRequest(doc, SDMXWSFunction.QueryStructure, tempFileName);

                ISdmxObjects             structureObjects = new SdmxObjectsImpl();
                IStructureParsingManager parsingManager   = new StructureParsingManager(SdmxSchemaEnumType.Null);
                using (var dataLocation = new FileReadableDataLocation(tempFileName))
                {
                    IStructureWorkspace structureWorkspace = parsingManager.ParseStructures(dataLocation);
                    structureObjects = structureWorkspace.GetStructureObjects(false);
                }

                NsiClientValidation.CheckResponse(structureObjects);
                return(structureObjects);
            }
            finally
            {
                //delete the temporary file
                File.Delete(tempFileName);
            }
        }
        private ISdmxObjects GetSdmxOBJ(string FileName)
        {
            ISdmxObjects             structureObjects = new SdmxObjectsImpl();
            IStructureParsingManager parsingManager   = new StructureParsingManager(SdmxSchemaEnumType.VersionTwo);

            string FullNamePath = Path.Combine(Utils.GetTreeCachePath(), FileName);

            if (!File.Exists(FullNamePath))
            {
                return(null);
            }
            using (var dataLocation = new FileReadableDataLocation(FullNamePath))
            {
                IStructureWorkspace structureWorkspace = parsingManager.ParseStructures(dataLocation);
                structureObjects = structureWorkspace.GetStructureObjects(false);
            }

            return(structureObjects);
        }
Beispiel #5
0
        /// <summary>
        /// Submits the specified structural meta-data .
        /// </summary>
        /// <param name="dataLocation">The data location pointing to the structural meta-data.</param>
        /// <returns>The imported objects</returns>
        /// <exception cref="Estat.Sri.Ws.SubmitStructure.SubmitStructureException">An error occurred while importing structural meta-data.</exception>
        public ISdmxObjects Submit(IReadableDataLocation dataLocation, SubmitStructureConstant.ActionType actionType = SubmitStructureConstant.ActionType.Replace)
        {
            // Parse structures IStructureParsingManager is an instance field.
            IStructureWorkspace structureWorkspace = this._parsingManager.ParseStructures(dataLocation);

            // Get immutable objects from workspace
            ISdmxObjects objects = structureWorkspace.GetStructureObjects(false);

            // create a new instance of the MappingStoreManager class which implements the IStructurePersistenceManager
            IList <ArtefactImportStatus> importStatus       = new List <ArtefactImportStatus>();
            IStructurePersistenceManager persistenceManager = new MappingStoreManager(this._connectionStringSettings, importStatus);

            switch (actionType)
            {
            case SubmitStructureConstant.ActionType.Append:
                break;

            case SubmitStructureConstant.ActionType.Replace:
                // Save the structure to the mapping store database.
                persistenceManager.SaveStructures(objects);

                // Validate objects.
                ValidateImport(importStatus);

                break;

            case SubmitStructureConstant.ActionType.Delete:
                // Delete the structure to the mapping store database.
                persistenceManager.DeleteStructures(objects);
                break;

            default:
                break;
            }

            // Return the immutable object container.
            return(objects);
        }
Beispiel #6
0
        public ISdmxObjects GetDsd(string DsdId, string DsdAgency, string DsdVersion, bool resolseRef = false)
        {
            Logger.InfoFormat(
                CultureInfo.InvariantCulture,
                Resources.InfoGettingStructureFormat3,
                DsdAgency,
                DsdId,
                DsdVersion);



            System.Reflection.Assembly ass = System.Reflection.Assembly.GetExecutingAssembly();
            string path         = System.IO.Path.GetDirectoryName(ass.CodeBase);
            string templateFile = Path.Combine(path, "Model\\XMLQueryTemplate\\DOTSTAT_GetDataStructureDefinition.xml");
            var    doc          = new XmlDocument();

            doc.Load(templateFile);

            var nodesId = doc.GetElementsByTagName("KeyFamily");

            if (nodesId == null || nodesId.Count < 1)
            {
                return(null);
            }
            nodesId[0].InnerText = DsdId;

            var nodeAgency = doc.GetElementsByTagName("Receiver");

            if (nodeAgency == null || nodeAgency.Count < 1)
            {
                return(null);
            }
            nodeAgency[0].Attributes.GetNamedItem("id").Value = DsdAgency;

            string tempFileName = Path.GetTempFileName();

            try
            {
                this.SendRequest(doc, SDMXWSFunction.GetDataStructureDefinition, tempFileName);


                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(tempFileName);


                var codes = xmlDoc.GetElementsByTagName("Code");
                for (int i = 0; i < codes.Count; i++)
                {
                    var val = codes.Item(i).Attributes.GetNamedItem("value");
                    var par = codes.Item(i).Attributes.GetNamedItem("parentCode");
                    if (val != null && par != null && val.Value == par.Value)
                    {
                        codes.Item(i).Attributes.GetNamedItem("parentCode").Value = null;
                    }
                }

                var time_dimensions = xmlDoc.GetElementsByTagName("TimeDimension");
                time_dimensions.Item(0).Attributes.RemoveNamedItem("codelist");

                xmlDoc.Save(tempFileName);

                ISdmxObjects             structureObjects = new SdmxObjectsImpl();
                IStructureParsingManager parsingManager   = new StructureParsingManager(SdmxSchemaEnumType.VersionTwo);

                using (var dataLocation = new FileReadableDataLocation(tempFileName))
                {
                    IStructureWorkspace structureWorkspace = parsingManager.ParseStructures(dataLocation);
                    structureObjects = structureWorkspace.GetStructureObjects(false);
                }

                NsiClientValidation.CheckResponse(structureObjects);
                return(structureObjects);
            }
            finally
            {
                //delete the temporary file
                File.Delete(tempFileName);
            }
        }
        /// <summary>
        /// The merge workspace.
        /// </summary>
        /// <param name="workspace">
        /// The workspace.
        /// </param>
        public virtual void MergeWorkspace(IStructureWorkspace workspace)
        {
            this._allSdmxObjects = new SdmxObjectsImpl(this._allSdmxObjects, workspace.GetStructureObjects(true));
            this._sdmxObjects = new SdmxObjectsImpl(this._sdmxObjects, workspace.GetStructureObjects(false));

            IDictionary<IIdentifiableObject, ISet<IIdentifiableObject>> localCrossReferencedBeans =
                workspace.CrossReferences;
            if (localCrossReferencedBeans != null)
            {
                /* foreach */
                foreach (KeyValuePair<IIdentifiableObject, ISet<IIdentifiableObject>> currentKey in localCrossReferencedBeans)
                {
                    ISet<IIdentifiableObject> currentSet;
                    if (!this._crossReferencedObjects.TryGetValue(currentKey.Key, out currentSet))
                    {
                        currentSet = new HashSet<IIdentifiableObject>();
                        this._crossReferencedObjects.Add(currentKey.Key, currentSet);
                    }

                    currentSet.AddAll(currentKey.Value);
                }
            }
        }