/// <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); } }
/// <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); }
/// <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); }
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); } } }