예제 #1
0
        private void AddDefaultChild()
        {
            var defaultModel = new ResultFieldModel(this);

            defaultModel.ColumnNameChanged += DefaultModelChanged;
            defaultModel.NameChanged       += DefaultModelChanged;
            ResultFields.Add(defaultModel);
        }
예제 #2
0
        private void CreateFromSQL()
        {
            try
            {
                var    connectionType   = executeSQLDesigner.ResolvedConnectionType;
                string connectionString = executeSQLDesigner.ResolvedConnectionString;

                DataTable schemaTable = DatabaseHelpers.RetrieveSchema(connectionType, connectionString,
                                                                       SqlStringHandler.GetSqlStringHandler(this.executeSQLDesigner.ResolvedSqlStatementValue ?? string.Empty).GetExecutableDesignTimeSql());

                var newResults = new List <ResultFieldModel>();
                foreach (DataColumn dataColumn in schemaTable.Columns)
                {
                    var oldModel = ResultFields.FirstOrDefault(x => x.ColumnName == dataColumn.ColumnName);
                    if (oldModel != null)
                    {
                        newResults.Add(oldModel);
                        continue;
                    }

                    ResultFieldModel newModel = new ResultFieldModel(this);
                    newModel.IsDefault  = false;
                    newModel.ColumnName = dataColumn.ColumnName;
                    newModel.Name       = DatabaseHelpers.GetValidName(dataColumn.ColumnName);
                    newModel.SetTypeReferenceValues(dataColumn.DataType);

                    newModel.NameChanged       += ModelNameChanged;
                    newModel.ColumnNameChanged += ModelColumnNameChanged;
                    newResults.Add(newModel);
                }

                ResultFields.Where(x => !newResults.Contains(x)).ToList().ForEach(x =>
                {
                    x.NameChanged       -= ModelNameChanged;
                    x.ColumnNameChanged -= ModelColumnNameChanged;
                });
                ResultFields.Clear();

                newResults.ForEach(x => ResultFields.Add(x));

                AddDefaultChild();
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
예제 #3
0
        public ResultTypeViewModel(ExecuteSQLDesigner executeSQLDesigner)
        {
            this.executeSQLDesigner = executeSQLDesigner;
            CreateDataFromSql       = new DelegateCommand(CreateFromSQL, CanCreateFromSQL);
            Save = new DelegateCommand(ExecuteSave);

            selectedCustomType = executeSQLDesigner.ResultTypeValue.CustomType;

            foreach (var resultType in executeSQLDesigner.ResultTypeValue.Fields)
            {
                var model = new ResultFieldModel(this, resultType);
                model.ColumnNameChanged += ModelColumnNameChanged;
                model.NameChanged       += ModelNameChanged;
                ResultFields.Add(model);
            }
            AddDefaultChild();
        }
예제 #4
0
        private void ValidateName(ResultFieldModel field)
        {
            var sameNameFields = ResultFields.Where(f => (f.Name ?? string.Empty) == (field.Name ?? string.Empty) && !f.IsDefault);

            field.NameIsValid = string.IsNullOrWhiteSpace(field.Name) || (sameNameFields.Count() == 1 && Names.IsNameValid(field.Name) && (!IsMappingCustomType || CustomTypeProperties.Contains(field.Name)));
        }
예제 #5
0
        private void ValidateColumnName(ResultFieldModel field)
        {
            var sameNameFields = ResultFields.Where(x => (x.ColumnName ?? string.Empty).Equals(field.ColumnName ?? string.Empty, StringComparison.InvariantCultureIgnoreCase) && !x.IsDefault);

            field.ColumnNameIsValid = string.IsNullOrWhiteSpace(field.ColumnName) || sameNameFields.Count() == 1;
        }
예제 #6
0
 internal void MoveTo(ResultFieldModel toMove, int destinationIndex)
 {
     ResultFields.Move(ResultFields.IndexOf(toMove), destinationIndex);
 }