private IExpressionFieldsRetriever GetDestinationFieldsRetriever(FieldEdit field)
        {
            switch (field.ColumnType)
            {
                case ColumnTypes.Checklist:
                    {
                        var settingsStep = field.GetStep<ChecklistSettingsStepEdit>();
                        if (settingsStep == null || string.IsNullOrEmpty(settingsStep.AnswerProcessSystemName))
                        {
                            return null;
                        }

                        return new ChecklistSubfieldsRetriever(
                            settingsStep.AnswerProcessSystemName,
                            f => f.SystemName != Constants.IdColumnName && CanBeDestinationField(f) && f.ColumnType != ColumnTypes.Checklist,
                            CreateDestinationField);
                    }

                default:
                    return null;
            }
        }
        /// <summary>
        /// Gets the destination fields retriever.
        /// </summary>
        /// <param name="field">The field.</param>
        /// <returns>The IExpressionFieldsRetriever.</returns>
        /// <exception cref="System.InvalidOperationException">
        /// Invalid cross reference field: required step not found.
        /// or
        /// Invalid cross reference field: referenced process is null.
        /// </exception>
        private IExpressionFieldsRetriever GetDestinationFieldsRetriever(FieldEdit field)
        {
            switch (field.FieldType.ColumnType)
            {
                case ColumnTypes.Reference:
                case ColumnTypes.MultiReference:
                    {
                        var requiredStep = field.GetStep<CrossRefRequiredStepEdit>();
                        if (requiredStep == null || !requiredStep.CrossRefProcessId.HasValue)
                            return null;

                        return new CrossReferenceSubfieldsRetriever(requiredStep.CrossRefProcessId.Value, CanBeDestinationField, CreateDestinationField);
                    }

                case ColumnTypes.File:
                    return new FileSubfieldsRetriever(CreateConnectionValidator);

                case ColumnTypes.Checklist:
                    {
                        var settingsStep = field.GetStep<ChecklistSettingsStepEdit>();
                        if (settingsStep == null || string.IsNullOrEmpty(settingsStep.AnswerProcessSystemName))
                            return null;

                        return new ChecklistSubfieldsRetriever(settingsStep.AnswerProcessSystemName, CanBeDestinationField, CreateDestinationField);
                    }

                case ColumnTypes.Sample:
                    return new SampleSubfieldsRetriever(CreateConnectionValidator);

                default:
                    return null;
            }
        }
        private static IExpressionFieldsRetriever GetSourceFieldsRetriever(FieldEdit field)
        {
            switch (field.ColumnType)
            {
                case ColumnTypes.Reference:
                case ColumnTypes.MultiReference:
                    {
                        var requiredStep = field.GetStep<CrossRefRequiredStepEdit>();
                        IExpressionFieldsRetriever subfieldsRetriever = null;
                        if (requiredStep != null && requiredStep.CrossRefProcessId.HasValue)
                        {
                            subfieldsRetriever = new CrossReferenceSubfieldsRetriever(requiredStep.CrossRefProcessId.Value, CanBeSourceField, CreateSourceField);
                        }

                        return subfieldsRetriever;
                    }

                case ColumnTypes.Sample:
                    return new SampleSubfieldsRetriever(SourceFieldSetNames.DataTriggerSourceItem);

                case ColumnTypes.File:
                    return new FileSubfieldsRetriever(SourceFieldSetNames.DataTriggerSourceItem);

                default:
                    return null;
            }
        }
        private static bool CanBeSourceField(FieldEdit field)
        {
            switch (field.ColumnType)
            {
                case ColumnTypes.Integer:
                case ColumnTypes.String:
                case ColumnTypes.Numeric:
                case ColumnTypes.Double:
                case ColumnTypes.Boolean:
                case ColumnTypes.DateTime:
                case ColumnTypes.AutoNumber:
                case ColumnTypes.SampleType:
                case ColumnTypes.Label:
                case ColumnTypes.Sample:
                case ColumnTypes.File:
                    return true;

                case ColumnTypes.Reference:
                case ColumnTypes.MultiReference:
                    {
                        var requiredStep = field.GetStep<CrossRefRequiredStepEdit>();
                        return requiredStep != null && requiredStep.CrossRefProcessId.HasValue;
                    }

                case ColumnTypes.DisplayList:
                    {
                        var requiredStep = field.GetStep<DisplayListRequiredStepEdit>();
                        return requiredStep != null && requiredStep.CrossRefProcessId.HasValue;
                    }

                case ColumnTypes.ReverseReference:
                case ColumnTypes.ReverseMultiReference:
                    {
                        var requiredStep = field.GetStep<ReverseCrossRefRequiredStepEdit>();
                        return requiredStep != null && requiredStep.ReverseCrossRefProcessId.HasValue;
                    }

                case ColumnTypes.Checklist:
                    {
                        var requiredStep = field.GetStep<ChecklistSettingsStepEdit>();
                        return requiredStep != null && !string.IsNullOrEmpty(requiredStep.AnswerProcessSystemName);
                    }

                default:
                    return false;
            }
        }
        private IExpressionFieldsRetriever GetSubfieldsRetriever(FieldEdit field)
        {
            switch (field.ColumnType)
            {
                case ColumnTypes.Reference:
                case ColumnTypes.MultiReference:
                    {
                        var requiredStep = field.GetStep<CrossRefRequiredStepEdit>();
                        return requiredStep != null && requiredStep.CrossRefProcessId.HasValue
                                   ? new CrossReferenceSubfieldsRetriever(requiredStep.CrossRefProcessId.Value, CanBeSourceField, CreateSourceField)
                                   : null;
                    }

                case ColumnTypes.DisplayList:
                    {
                        var requiredStep = field.GetStep<DisplayListRequiredStepEdit>();
                        return requiredStep != null && requiredStep.CrossRefProcessId.HasValue
                                   ? new DisplayListSubfieldsRetriever(requiredStep.CrossRefProcessId.Value, CanBeSourceField, CreateSourceField)
                                   : null;
                    }

                case ColumnTypes.ReverseReference:
                case ColumnTypes.ReverseMultiReference:
                    {
                        var requiredStep = field.GetStep<ReverseCrossRefRequiredStepEdit>();
                        return requiredStep != null && requiredStep.ReverseCrossRefProcessId.HasValue
                                   ? new ReverseCrossReferenceSubfieldsRetriever(
                                         requiredStep.ReverseCrossRefProcessId.Value,
                                         CanBeSourceField,
                                         CreateSourceField)
                                   : null;
                    }

                case ColumnTypes.Checklist:
                    {
                        var settingsStep = field.GetStep<ChecklistSettingsStepEdit>();
                        return settingsStep != null && !string.IsNullOrEmpty(settingsStep.AnswerProcessSystemName)
                                   ? new ChecklistSubfieldsRetriever(settingsStep.AnswerProcessSystemName, CanBeSourceField, CreateSourceField)
                                   : null;
                    }

                case ColumnTypes.Sample:
                    {
                        return new SampleSubfieldsRetriever(SourceFieldSetNames.IntegrationServiceResultItem);
                    }

                case ColumnTypes.File:
                    {
                        return new FileSubfieldsRetriever(SourceFieldSetNames.IntegrationServiceResultItem);
                    }

                default:
                    return null;
            }
        }
示例#6
0
        private static DateTimeFormat? GetDateTimeFormat(FieldEdit field)
        {
            if (field.ColumnType != ColumnTypes.DateTime)
            {
                return null;
            }

            var dateStep = field.GetStep<DateRequiredSettingsStepEdit>();
            if (dateStep == null)
            {
                return null;
            }

            DateTimeFormat dateTimeFormat;
            if (Enum.TryParse(dateStep.SelectedDateTimeFormat, out dateTimeFormat))
            {
                return dateTimeFormat;
            }

            return null;
        }
示例#7
0
        private static string GetDisplayFieldName(FieldEdit field)
        {
            switch (field.ColumnType)
            {
                case ColumnTypes.Reference:
                case ColumnTypes.MultiReference:
                    {
                        var crStep = field.GetStep<CrossRefRequiredStepEdit>();
                        return crStep != null ? crStep.DisplayFieldName : null;
                    }

                case ColumnTypes.ReverseReference:
                case ColumnTypes.ReverseMultiReference:
                    {
                        var rcrStep = field.GetStep<ReverseCrossRefRequiredStepEdit>();
                        return rcrStep != null ? rcrStep.DisplayFieldName : null;
                    }

                case ColumnTypes.TreeView:
                    {
                        var tvStep = field.GetStep<TreeViewRequiredStepEdit>();
                        return tvStep != null ? tvStep.DisplayFieldName : null;
                    }
            }

            return null;
        }
示例#8
0
        private static int? GetReferencedProcessId(FieldEdit field)
        {
            switch (field.ColumnType)
            {
                case ColumnTypes.Reference:
                case ColumnTypes.MultiReference:
                    {
                        var crStep = field.GetStep<CrossRefRequiredStepEdit>();
                        return crStep != null ? crStep.CrossRefProcessId : null;
                    }

                case ColumnTypes.ReverseReference:
                case ColumnTypes.ReverseMultiReference:
                    {
                        var rcrStep = field.GetStep<ReverseCrossRefRequiredStepEdit>();
                        return rcrStep != null ? rcrStep.ReverseCrossRefProcessId : null;
                    }

                case ColumnTypes.TreeView:
                    {
                        var tvStep = field.GetStep<TreeViewRequiredStepEdit>();
                        return tvStep != null ? tvStep.ReverseCrossRefProcessId : null;
                    }
            }

            return null;
        }
        /// <summary>
        /// Gets the destination fields retriever.
        /// </summary>
        /// <param name="field">The field.</param>
        /// <returns>The <see cref="IExpressionFieldsRetriever"/>.</returns>
        /// <exception cref="System.InvalidOperationException">
        /// Invalid cross reference field: required step not found.
        /// or
        /// Invalid cross reference field: referenced process is null.
        /// </exception>
        private IExpressionFieldsRetriever GetDestinationFieldsRetriever(FieldEdit field)
        {
            switch (field.ColumnType)
            {
                case ColumnTypes.Reference:
                case ColumnTypes.MultiReference:
                    {
                        var requiredStep = field.GetStep<CrossRefRequiredStepEdit>();
                        if (requiredStep == null)
                            throw new ArgumentException("Invalid cross reference field: required step not found.");

                        if (!requiredStep.CrossRefProcessId.HasValue)
                            throw new ArgumentException("Invalid cross reference field: referenced process is null.");

                        return new CrossReferenceSubfieldsRetriever(
                            requiredStep.CrossRefProcessId.Value,
                            CanBeDestinationField,
                            (fieldInfo, owner) =>
                            {
                                var destinationField = CreateDestinationField(fieldInfo, owner);
                                destinationField.IsKeyVisible = true;
                                destinationField.IsKeyEnabled = CanBeKeyField(fieldInfo);

                                return destinationField;
                            });
                    }

                case ColumnTypes.File:
                    return new FileSubfieldsRetriever();

                default:
                    return null;
            }
        }
        /// <summary>
        /// Determines whether this instance [can be destination field] the specified field.
        /// </summary>
        /// <param name="field">The field.</param>
        /// <returns><c>true</c> if this instance [can be destination field] the specified field; otherwise, <c>false</c>.</returns>
        private static bool CanBeDestinationField(FieldEdit field)
        {
            if (field.IsDeleted || field.IsCalculated())
                return false;

            if (field.ColumnType == ColumnTypes.Reference || field.ColumnType == ColumnTypes.MultiReference)
            {
                var requiredStep = field.GetStep<CrossRefRequiredStepEdit>();
                if (requiredStep == null || requiredStep.CrossRefProcessId == null)
                    return false;
            }

            return CanBeDestinationField(field.ColumnType);
        }