///////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////BUILD FROM IMMUTABLE OBJECT                 //////////////////////////////////////////////
        ///////////////////////////////////////////////////////////////////////////////////////////////////

        /// <summary>
        /// Initializes a new instance of the <see cref="CubeRegionMutableCore"/> class.
        /// </summary>
        /// <param name="immutable">
        /// The immutable. 
        /// </param>
        public CubeRegionMutableCore(ICubeRegion immutable)
            : base(immutable)
        {
            this._keyValues = new List<IKeyValuesMutable>();
            this._attributeValues = new List<IKeyValuesMutable>();
            if (ObjectUtil.ValidCollection(immutable.KeyValues))
            {
                foreach (IKeyValues mutable in immutable.KeyValues)
                {
                    this._keyValues.Add(new KeyValuesMutableImpl(mutable));
                }
            }

            if (ObjectUtil.ValidCollection(immutable.AttributeValues))
            {
                foreach (IKeyValues keyValues in immutable.AttributeValues)
                {
                    this._attributeValues.Add(new KeyValuesMutableImpl(keyValues));
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Inserts the cube region.
        /// </summary>
        /// <param name="state">The state.</param>
        /// <param name="cubeRegion">The cube region.</param>
        /// <param name="artefactStatus">The artefact status.</param>
        /// <param name="isInclude">if set to <c>true</c> [is include].</param>
        private static void InsertCubeRegion(DbTransactionState state, ICubeRegion cubeRegion, ArtefactImportStatus artefactStatus, bool isInclude)
        {
            var  procedure = new InsertCubeRegionProcedure();
            long cubeRegionPrimaryKey;

            using (var command = procedure.CreateCommand(state))
            {
                procedure.CreateContentConstraintIdParameter(command, artefactStatus.PrimaryKeyValue);
                procedure.CreateIncludeParameter(command, isInclude);
                var outputParameter = procedure.CreateOutputParameter(command);
                command.ExecuteNonQuery();
                cubeRegionPrimaryKey = (long)outputParameter.Value;
            }

            // handle dimensions
            var keyValuesWithId = InsertKeyValues(state, isInclude, cubeRegionPrimaryKey, cubeRegion.KeyValues, SdmxComponentType.Dimension);

            InsertValues(state, isInclude, keyValuesWithId);

            // handle attributes
            var attrValuesWithId = InsertKeyValues(state, isInclude, cubeRegionPrimaryKey, cubeRegion.AttributeValues, SdmxComponentType.Attribute);

            InsertValues(state, isInclude, attrValuesWithId);
        }
        /// <summary>
        /// Adds cross references for a cube region to components map.
        /// </summary>
        /// <param name="constraintBean">
        /// The constraint object
        /// </param>
        /// <param name="returnReferences">
        /// The returned references
        /// </param>
        /// <param name="componentMap">
        /// The components map
        /// </param>
        /// <param name="cubeRegionBean">
        /// The cube region object
        /// </param>
        private void AddCrossReferencesForCubeRegion(IContentConstraintObject constraintBean,
                                                     ISet<ICrossReference> returnReferences,
                                                     IDictionary<String, IComponent> componentMap,
                                                     ICubeRegion cubeRegionBean)
        {
            if (cubeRegionBean == null)
                return;

            AddCrossReferencesForCubeRegion(constraintBean, returnReferences, componentMap, cubeRegionBean.KeyValues);
            AddCrossReferencesForCubeRegion(constraintBean, returnReferences, componentMap, cubeRegionBean.AttributeValues);
        }