public override ValidationResult Validate(object value, CultureInfo cultureInfo) { BindingGroup bindingGroup = (BindingGroup)value; if (bindingGroup.Items.Count > 0) { VmpM.VMPTableBaseModel vmpLayer = (VmpM.VMPTableBaseModel)(bindingGroup.Items[0]); VmpVM.VMPDataRepositoryVM vmpRepo = vmpLayer.Source as VmpVM.VMPDataRepositoryVM; BooleanYesNoConverter boolYesNo = new BooleanYesNoConverter(); bool useBounds = Convert.ToBoolean(boolYesNo.ConvertBack(bindingGroup.GetValue(vmpLayer, "UseBounds"), null, null, null)); object minScaleObj = bindingGroup.GetValue(vmpLayer, "MinScale"); object maxScaleObj = bindingGroup.GetValue(vmpLayer, "MaxScale"); int minScale = -1; int maxScale = -1; try { minScale = Convert.ToInt32(minScaleObj); } catch (Exception ex) { String mes = "Ошибка в значении нижней границы масштаба: \n" + ex.Message; return(new ValidationResult(false, mes)); } try { maxScale = Convert.ToInt32(maxScaleObj); } catch (Exception ex) { String mes = "Ошибка в значении верхней границы масштаба: \n" + ex.Message; return(new ValidationResult(false, mes)); } if (minScale < 0) { return(new ValidationResult(false, "Минимальное значение не может быть отрицательным числом")); } if (maxScale < 0) { return(new ValidationResult(false, "Максимальное значение не может быть отрицательным числом")); } if (minScale > maxScale) { return(new ValidationResult(false, "Минимальное значение не может быть больше максимального")); } } return(ValidationResult.ValidResult); }
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo) { BindingGroup bindingGroup = (BindingGroup)value; if (bindingGroup.Items.Count > 0) { CosmeticTableBaseM cosmLayer = (CosmeticTableBaseM)bindingGroup.Items[0]; SourcePostgres.Model.PgStyleLayerM layerStyle = (SourcePostgres.Model.PgStyleLayerM)bindingGroup.Items[1]; CosmeticDataRepositoryVM cosmRepo = cosmLayer.Source as CosmeticDataRepositoryVM; String cosmName = (String)bindingGroup.GetValue(cosmLayer, "Text"); if (String.IsNullOrWhiteSpace(cosmName)) { return(new ValidationResult(false, "Не задано название косметического слоя")); } bool cosmNameExists = (from TableBaseM cosmTable in cosmRepo.Tables where (cosmTable.Text == cosmName && cosmLayer != cosmTable) select cosmTable).Count() > 0; if (cosmNameExists) { return(new ValidationResult(false, "Слой с таким названием уже существует")); } BooleanYesNoConverter boolYesNo = new BooleanYesNoConverter(); bool useBounds = Convert.ToBoolean(boolYesNo.ConvertBack(bindingGroup.GetValue(layerStyle, "UseBounds"), null, null, null)); object minScaleObj = bindingGroup.GetValue(layerStyle, "MinScale"); object maxScaleObj = bindingGroup.GetValue(layerStyle, "MaxScale"); int minScale = -1; int maxScale = -1; try { minScale = Convert.ToInt32(minScaleObj); } catch (Exception ex) { String mes = "Ошибка в значении нижней границы масштаба: \n" + ex.Message; return(new ValidationResult(false, mes)); } try { maxScale = Convert.ToInt32(maxScaleObj); } catch (Exception ex) { String mes = "Ошибка в значении верхней границы масштаба: \n" + ex.Message; return(new ValidationResult(false, mes)); } if (useBounds) { if (minScale < 0) { return(new ValidationResult(false, "Минимальное значение не может быть отрицательным числом")); } if (maxScale < 0) { return(new ValidationResult(false, "Максимальное значение не может быть отрицательным числом")); } if (minScale > maxScale) { return(new ValidationResult(false, "Минимальное значение не может быть больше максимального")); } } return(ValidationResult.ValidResult); } else { return(new ValidationResult(false, "Не выбран объект для отображения")); } }
public override ValidationResult Validate(object value, CultureInfo cultureInfo) { BindingGroup bindingGroup = (BindingGroup)value; if (bindingGroup.Items.Count > 0) { RasM.RastTableBaseM rastrLayer = (RasM.RastTableBaseM)(bindingGroup.Items[0]); RasVM.RastrDataRepositoryVM rastrRepo = rastrLayer.Source as RasVM.RastrDataRepositoryVM; Object filePathObject = null; if (bindingGroup.TryGetValue(rastrLayer, "FilePath", out filePathObject)) { String filePath = Convert.ToString(filePathObject); bool fileExists = false; fileExists = filePath != "" && System.IO.File.Exists(filePath); if (!fileExists) { if (filePath.StartsWith(".")) { filePath = System.Windows.Forms.Application.StartupPath + "\\" + filePath.TrimStart(new char[] { '.', '\\' }); if (System.IO.File.Exists(filePath)) { fileExists = true; } } } if (!fileExists) { return(new ValidationResult(false, "Путь к файлу задан неправильно")); } else { foreach (var iTable in rastrRepo.Tables) { RasM.RastTableBaseM rastrTable = iTable as RasM.RastTableBaseM; if (rastrTable != rastrLayer && rastrTable.FilePath == filePath) { return(new ValidationResult(false, "В системе уже присутствует растровый слой который указывает на этот файл")); } } } } else { return(new ValidationResult(false, "Не задано свойство \"Путь к файлу\"")); } String rastrName = (String)bindingGroup.GetValue(rastrLayer, "Text"); if (String.IsNullOrEmpty(rastrName.Trim())) { return(new ValidationResult(false, "Не задано название растрового слоя")); } bool rastrNameExists = (from AbsM.TableBaseM rastrTable in rastrRepo.Tables where (rastrTable.Text == rastrName && rastrLayer != rastrTable) select rastrTable).Count() > 0; if (rastrNameExists) { return(new ValidationResult(false, "Слой с таким названием уже существует")); } BooleanYesNoConverter boolYesNo = new BooleanYesNoConverter(); bool useBounds = Convert.ToBoolean(boolYesNo.ConvertBack(bindingGroup.GetValue(rastrLayer, "UseBounds"), null, null, null)); object minScaleObj = bindingGroup.GetValue(rastrLayer, "MinScale"); object maxScaleObj = bindingGroup.GetValue(rastrLayer, "MaxScale"); int minScale = -1; int maxScale = -1; try { minScale = Convert.ToInt32(minScaleObj); } catch (Exception ex) { String mes = "Ошибка в значении нижней границы масштаба: \n" + ex.Message; return(new ValidationResult(false, mes)); } try { maxScale = Convert.ToInt32(maxScaleObj); } catch (Exception ex) { String mes = "Ошибка в значении верхней границы масштаба: \n" + ex.Message; return(new ValidationResult(false, mes)); } if (useBounds) { if (minScale < 0) { return(new ValidationResult(false, "Минимальное значение не может быть отрицательным числом")); } if (maxScale < 0) { return(new ValidationResult(false, "Максимальное значение не может быть отрицательным числом")); } if (minScale > maxScale) { return(new ValidationResult(false, "Минимальное значение не может быть больше максимального")); } } return(ValidationResult.ValidResult); } else { return(new ValidationResult(false, "Не выбран объект для отображения")); } }