Example #1
0
        /// <summary>
        /// Validates a record.
        /// </summary>
        /// <param name="record">The record to validate.</param>
        /// <param name="values">The validated record. This dictionary might not contain a valid record. It's only valid if the return list is empty.</param>
        /// <returns>Returns a list of errors if the record is not valid; otherwise an empty list.</returns>
        public List <Error> ValidateRecord(Dictionary <string, object> record, out Dictionary <string, string> values)
        {
            values = new Dictionary <string, string>();
            var errors    = new List <Error>();
            var seriesKey = new Dictionary <string, string>();

            foreach (var dim in KeyFamily.Dimensions)
            {
                ValidateComponent(dim, record, values, errors, "Dimension");

                // build series key
                string name  = dim.Concept.Id;
                string value = null;
                if (values.TryGetValue(name, out value))
                {
                    seriesKey.Add(name, value);
                }
            }

            foreach (var attr in KeyFamily.Attributes)
            {
                ValidateComponent(attr, record, values, errors, "Attribute");
            }

            if (KeyFamily.TimeDimension != null)
            {
                ValidateComponent(KeyFamily.TimeDimension, record, values, errors, "Time dimension");
                string name  = KeyFamily.TimeDimension.Concept.Id;
                string value = null;
                if (values.TryGetValue(name, out value))
                {
                    seriesKey.Add(name, value);
                }
            }

            if (KeyFamily.PrimaryMeasure != null)
            {
                ValidateComponent(KeyFamily.PrimaryMeasure, record, values, errors, "Primary measure");
            }

            string seriesKeyString = ValuesToString(seriesKey);

            if (_keys.ContainsKey(seriesKeyString))
            {
                var error = new DuplicateKeyError(seriesKeyString, 0, 0, string.Format("Duplicate key: {0}", seriesKeyString));
                errors.Add(error);
            }
            else
            {
                _keys.Add(seriesKeyString, true);
            }

            return(errors);
        }
Example #2
0
        /// <summary>
        /// Validates a record.
        /// </summary>
        /// <param name="record">The record to validate.</param>
        /// <param name="values">The validated record. This dictionary might not contain a valid record. It's only valid if the return list is empty.</param>
        /// <returns>Returns a list of errors if the record is not valid; otherwise an empty list.</returns>
        public List<Error> ValidateRecord(Dictionary<string, object> record, out Dictionary<string, string> values)
        {
            values = new Dictionary<string, string>();
            var errors = new List<Error>();
            var seriesKey = new Dictionary<string, string>();

            foreach (var dim in KeyFamily.Dimensions)
            {
                ValidateComponent(dim, record, values, errors, "Dimension");

                // build series key
                string name = dim.Concept.Id;
                string value = null;
                if (values.TryGetValue(name, out value))
                {
                    seriesKey.Add(name, value);
                }
            }

            foreach (var attr in KeyFamily.Attributes)
            {
                ValidateComponent(attr, record, values, errors, "Attribute");
            }

            if (KeyFamily.TimeDimension != null)
            {
                ValidateComponent(KeyFamily.TimeDimension, record, values, errors, "Time dimension");
                string name = KeyFamily.TimeDimension.Concept.Id;
                string value = null;
                if (values.TryGetValue(name, out value))
                {
                    seriesKey.Add(name, value);
                }
            }

            if (KeyFamily.PrimaryMeasure != null)
            {
                ValidateComponent(KeyFamily.PrimaryMeasure, record, values, errors, "Primary measure");
            }

            string seriesKeyString = ValuesToString(seriesKey);
            if (_keys.ContainsKey(seriesKeyString))
            {
                var error = new DuplicateKeyError(seriesKeyString, 0, 0, string.Format("Duplicate key: {0}", seriesKeyString));
                errors.Add(error);
            }
            else
            {
                _keys.Add(seriesKeyString, true);
            }

            return errors;
        }