Esempio n. 1
0
        void IMASynchronization.MapAttributesForExport(string flowRuleName, MVEntry mventry, CSEntry csentry)
        {
            FlowRuleParameters parameters = this.GetParameters(flowRuleName, FlowRuleType.Export);

            if (!parameters.ShouldFlow(csentry, mventry))
            {
                throw new DeclineMappingException();
            }

            IList <object> sourceValues = this.GetSourceValuesForExport(parameters, mventry);

            IList <object> returnValues;

            if (parameters.Transforms.Any(t => t.ImplementsLoopbackProcessing))
            {
                IList <object> existingTargetValues = this.GetExistingTargetValueForExportLoopback(parameters, csentry);
                returnValues = Transform.ExecuteTransformChainWithLoopback(parameters.Transforms, sourceValues, existingTargetValues);
            }
            else
            {
                returnValues = Transform.ExecuteTransformChain(parameters.Transforms, sourceValues);
            }

            this.SetDestinationAttributeValueForExport(parameters, csentry, returnValues);
        }
Esempio n. 2
0
        void IMASynchronization.MapAttributesForJoin(string flowRuleName, CSEntry csentry, ref ValueCollection values)
        {
            FlowRuleParameters parameters = this.GetParameters(flowRuleName, FlowRuleType.Join);

            if (!parameters.ShouldFlow(csentry, null))
            {
                throw new DeclineMappingException();
            }

            AttributeType  type;
            IList <object> sourceValues = this.GetSourceValuesForImport(parameters, csentry, out type);
            IList <object> returnValues = Transform.ExecuteTransformChain(parameters.Transforms, sourceValues);

            foreach (object value in returnValues)
            {
                switch (type)
                {
                case AttributeType.Binary:
                    values.Add(TypeConverter.ConvertData <byte[]>(value));
                    break;

                case AttributeType.Integer:
                    values.Add(TypeConverter.ConvertData <long>(value));
                    break;

                case AttributeType.String:
                    values.Add(TypeConverter.ConvertData <string>(value));
                    break;

                case AttributeType.Reference:
                case AttributeType.Boolean:
                case AttributeType.Undefined:
                    throw new UnknownOrUnsupportedDataTypeException();
                }
            }
        }