Пример #1
0
 /// <summary>
 /// Dispose all Object used for retreial data
 /// </summary>
 public override void DestroyObjects()
 {
     try
     {
         this.Builder = null;
     }
     catch (SdmxException) { throw; }
     catch (Exception ex)
     {
         throw new SdmxException(this, FlyExceptionObject.FlyExceptionTypeEnum.DestroyObjects, ex);
     }
 }
        /// <summary>
        /// Initialie a new instance of the <see cref="RetrievalManager"/> class.
        /// </summary>
        /// <param name="_dataFlowID">
        /// Dataflow ID
        /// </param>
        /// <param name="_versionType">Sdmx Version</param>
        public RetrievalManager(string _dataFlowID, SdmxSchemaEnumType _versionType)
        {
            try
            {
                this.DataFlowID  = _dataFlowID;
                this.VersionType = _versionType;
                DataStructureEngineObject ds      = new DataStructureEngineObject();
                ISDMXObjectBuilder        Builder = ds.CreateBuilder(new SdmxParsingObject(SdmxStructureEnumType.Dataflow)
                {
                    MaintainableId    = DataFlowID,
                    References        = StructureReferenceDetailEnumType.Specific,
                    SpecificReference = new List <SdmxStructureType>()
                    {
                        SdmxStructureType.GetFromEnum(SdmxStructureEnumType.Dsd),
                        SdmxStructureType.GetFromEnum(SdmxStructureEnumType.ConceptScheme),
                    },
                    QueryDetail = StructureQueryDetailEnumType.Full,
                }, _versionType);

                Builder.Build();
                Builder.AddReferences();

                if (Builder._KeyFamily == null || Builder._KeyFamily.Count == 0)
                {
                    throw new SdmxException(this, FlyExceptionObject.FlyExceptionTypeEnum.InternalError, new Exception(string.Format("Dsd Not found for Dataflow code: {0}", DataFlowID)));
                }

                //1DF = 1DSD
                this._dsd = Builder._KeyFamily[0];


                if (Builder._Dataflows.Count > 0)
                {
                    this.DataFlowTitle = Builder._Dataflows[0].Name;
                }
                else
                {
                    throw new Exception("No Dataflow Found");
                }
                this._sdmxObjects = Builder.CreateDSD();


                this.DataFlowID = Builder._Dataflows[0].Id;
                GetGroups();
            }
            catch (SdmxException) { throw; }
            catch (Exception ex)
            {
                throw new SdmxException(this, FlyExceptionObject.FlyExceptionTypeEnum.InternalError, ex);
                //non sono riuscito a cambiare il nome che è arrivato dalla query con quello effettivo della dsd
            }
        }
Пример #3
0
        /// <summary>
        /// Entrypoint of class FlyEngine that processes the request
        /// and produces a response or an error
        /// </summary>
        /// <param name="_parsingObject">Processed request</param>
        /// <param name="_versionType">Sdmx Version</param>
        public void Engine(ISdmxParsingObject _parsingObject, SdmxSchemaEnumType _versionType)
        {
            try
            {
                this.VersionTypeResp = _versionType;

                //IDBAccess DbAccess = new DWHAccess(FlyConfiguration.ConnectionString);


                _parsingObject.PreliminarCheck();
                FlyLog.WriteLog(this, FlyLog.LogTypeEnum.All, "Query Preliminar Check passed. Start creation of SDMXObject");

                Builder = CreateBuilder(_parsingObject, _versionType);

                if (Builder == null)
                {
                    throw new SdmxException(this, FlyExceptionObject.FlyExceptionTypeEnum.NotSupportedRegistryType, new Exception(_parsingObject.SdmxStructureType.ToString()));
                }
                FlyLog.WriteLog(this, FlyLog.LogTypeEnum.All, "Parsing Metadata: {0}", _parsingObject.SdmxStructureType.ToString());

                Builder.Build();

                ParseOtherRegistry(_parsingObject);

                Builder.AddReferences();
            }
            catch (SdmxException sdmxerr)
            {
                HaveError    = true;
                ErrorMessage = sdmxerr;
            }
            catch (Exception err)
            {
                HaveError    = true;
                ErrorMessage = new SdmxException(this, FlyExceptionObject.FlyExceptionTypeEnum.InternalError, err);
            }
        }
Пример #4
0
        private void ParseOtherRegistry(ISdmxParsingObject _parsingObject)
        {
            if (_parsingObject.OtherRegistry != null && _parsingObject.OtherRegistry.Count > 0)
            {
                foreach (var _parsingOther in _parsingObject.OtherRegistry)
                {
                    ISDMXObjectBuilder OtherRegistry = CreateBuilder(_parsingOther, this.VersionTypeResp);
                    if (OtherRegistry == null)
                    {
                        FlyLog.WriteLog(this, FlyLog.LogTypeEnum.Error, "NotSupportedRegistryType (Other Registry) SdmxStructureType {0}", _parsingOther.SdmxStructureType.ToString());
                        continue;
                    }
                    FlyLog.WriteLog(this, FlyLog.LogTypeEnum.All, "Parsing Metadata (Other Registry): {0}", _parsingOther.SdmxStructureType.ToString());
                    OtherRegistry.Build();
                    switch (_parsingOther.SdmxStructureType)
                    {
                    case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Dataflow:
                        if (Builder._Dataflows == null || Builder._Dataflows.Count == 0)
                        {
                            Builder._Dataflows = OtherRegistry._Dataflows;
                        }
                        else
                        {
                            Builder._Dataflows.AddRange(OtherRegistry._Dataflows);
                        }
                        break;

                    case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ConceptScheme:
                        if (Builder._Conceptscheme == null || Builder._Conceptscheme.Count == 0)
                        {
                            Builder._Conceptscheme = OtherRegistry._Conceptscheme;
                        }
                        else
                        {
                            Builder._Conceptscheme.AddRange(OtherRegistry._Conceptscheme);
                        }
                        break;

                    case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.CodeList:
                        if (Builder._Codelists == null || Builder._Codelists.Count == 0)
                        {
                            Builder._Codelists = OtherRegistry._Codelists;
                        }
                        else
                        {
                            Builder._Codelists.AddRange(OtherRegistry._Codelists);
                        }
                        break;

                    case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.AgencyScheme:
                    case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.OrganisationScheme:
                        Builder._AgencyScheme = OtherRegistry._AgencyScheme;
                        break;

                    case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.CategoryScheme:
                    case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Categorisation:
                        if (Builder._CategorisationObject == null || Builder._CategorisationObject.Count == 0)
                        {
                            Builder._CategorisationObject = OtherRegistry._CategorisationObject;
                        }
                        else
                        {
                            Builder._CategorisationObject.AddRange(OtherRegistry._CategorisationObject);
                        }
                        break;

                    case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Dsd:
                        if (Builder._KeyFamily == null || Builder._KeyFamily.Count == 0)
                        {
                            Builder._KeyFamily = OtherRegistry._KeyFamily;
                        }
                        else
                        {
                            Builder._KeyFamily.AddRange(OtherRegistry._KeyFamily);
                        }
                        break;
                    }
                }
            }
        }
Пример #5
0
        /// <summary>
        /// Implement correct Metadata Builder to process the request
        /// identifies the correct implementation with the SdmxStructureType property of SdmxParsingObject
        /// </summary>
        /// <param name="_parsingObject">Processed request</param>
        /// <param name="_versionTypeResp">Sdmx Version</param>
        /// <returns>Implementation of SDMXObjectBuilder</returns>
        public ISDMXObjectBuilder CreateBuilder(ISdmxParsingObject _parsingObject, SdmxSchemaEnumType _versionTypeResp)
        {
            try
            {
                this.VersionTypeResp = _versionTypeResp;
                ISDMXObjectBuilder _builder = null;
                EngineChooser      chooser  = new EngineChooser(_parsingObject, _versionTypeResp);
                #region Creazione dei Builder
                switch (_parsingObject.SdmxStructureType)
                {
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Dataflow:
                    _builder = chooser.GetDataflows();
                    break;

                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ConceptScheme:
                    _builder = chooser.GetConcepts();
                    break;

                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.CodeList:
                    _builder = chooser.GetCodelists();

                    break;

                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.AgencyScheme:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.OrganisationScheme:
                    _builder = chooser.GetAgencyScheme();
                    break;

                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.CategoryScheme:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Categorisation:
                    _builder = chooser.GetCategoryScheme();
                    break;

                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Dsd:
                    _builder = chooser.GetStructure();

                    break;

                //qui sotto ancora non implementate
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Annotation:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Any:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.AttachmentConstraint:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.AttachmentConstraintAttachment:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.AttributeDescriptor:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.CategoryId:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.CategoryMap:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.CategorySchemeMap:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Code:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.CodeListMap:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.CodeListRef:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.CodeMap:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Component:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ComponentMap:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Computation:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ConceptMap:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ConceptSchemeMap:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ConstrainedDataKey:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ConstrainedDataKeyset:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Constraint:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ConstraintContentTarget:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Contact:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ContentConstraint:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ContentConstraintAttachment:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.CrossSectionalMeasure:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.CubeRegion:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.DataAttribute:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.DataConsumer:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.DataConsumerScheme:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.DataProvider:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.DataProviderScheme:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Dataset:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.DatasetReference:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.DatasetTarget:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Datasource:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Dimension:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.DimensionDescriptor:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.DimensionDescriptorValuesTarget:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Group:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.HierarchicalCode:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.HierarchicalCodelist:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Hierarchy:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.HybridCode:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.HybridCodelistMap:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.IdentifiableObjectTarget:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.InputOutput:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ItemMap:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.KeyValues:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Level:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.LocalRepresentation:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.MeasureDescriptor:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.MeasureDimension:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.MetadataAttribute:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.MetadataDocument:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.MetadataFlow:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.MetadataReferenceValue:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.MetadataReport:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.MetadataReportAttribute:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.MetadataReportTarget:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.MetadataSet:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.MetadataTarget:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.MetadataTargetRegion:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Msd:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Null:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.OrganisationMap:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.OrganisationSchemeMap:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.OrganisationUnit:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.OrganisationUnitScheme:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.PrimaryMeasure:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Process:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ProcessStep:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ProvisionAgreement:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ReferencePeriod:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Registration:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.RelatedStructures:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ReleaseCalendar:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ReportPeriodTarget:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ReportStructure:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ReportingCategory:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ReportingTaxonomy:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.ReportingTaxonomyMap:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.RepresentationMap:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.StructureMap:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.StructureSet:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Subscription:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.TextFormat:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.TextType:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.TimeDimension:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.TimeRange:
                case Org.Sdmxsource.Sdmx.Api.Constants.SdmxStructureEnumType.Transition:
                default:
                    break;
                }
                #endregion


                return(_builder);
            }
            catch (SdmxException) { throw; }
            catch (Exception ex)
            {
                throw new SdmxException(this, FlyExceptionObject.FlyExceptionTypeEnum.CreateBuilder, ex);
            }
        }
 /// <summary>
 /// Initialize a new instance of <see cref="RetrievalReferences"/>
 /// </summary>
 /// <param name="_sdmxObjectBuilder">the <see cref="ISDMXObjectBuilder"/></param>
 public RetrievalReferences(ISDMXObjectBuilder _sdmxObjectBuilder)
 {
     this._SDMXObjectBuilder = _sdmxObjectBuilder;
     this.ParsingObject      = this._SDMXObjectBuilder.ParsingObject.CloneForReferences();
     this.ReferencesObject   = new IReferencesObject();
 }