protected override void Validate() { if (String.IsNullOrEmpty(Artist) == true) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Artist)), ValidationErrorType.Warning, "{0} has no value!", nameof(Artist))); } if (String.IsNullOrEmpty(Title) == true) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Title)), ValidationErrorType.Warning, "{0} has no value!", nameof(Title))); } if (Audiofile == null) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Audiofile)), ValidationErrorType.Error, "{0} has no value!", nameof(Audiofile))); } if (tracks.Count < 1) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Tracks)), ValidationErrorType.Error, "{0} has invalid Count ({1})!", nameof(Tracks), 0)); } if (CDTextfile == null) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(CDTextfile)), ValidationErrorType.Warning, "{0} has no value!", nameof(CDTextfile))); } if (Cataloguenumber == null) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Cataloguenumber)), ValidationErrorType.Warning, "{0} has no value!", nameof(Cataloguenumber))); } else { _ = Cataloguenumber.IsValid; validationErrors.AddRange(Cataloguenumber.ValidationErrors); } }
protected override void Validate() { if (String.IsNullOrEmpty(TestProperty)) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(TestProperty)), ValidationErrorType.Warning, "Testmessage")); } }
public void CreateTest() { var testObject = new FieldReferenceTestClass(); var fieldReference = FieldReference.Create(testObject, nameof(FieldReferenceTestClass.Property1)); Assert.AreEqual(fieldReference.DisplayName, "FieldReferenceTestClass.Property1"); fieldReference = FieldReference.Create(testObject, nameof(FieldReferenceTestClass.Property2)); Assert.AreEqual(fieldReference.DisplayName, "FieldReferenceTestClass.Property2"); }
protected override void Validate() { if (String.IsNullOrEmpty(SchemeCuesheet)) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(SchemeCuesheet)), ValidationErrorType.Warning, "{0} has no value!", nameof(SchemeCuesheet))); } else { if (AvailableSchemesTrack != null) { Boolean addValidationError = false; foreach (var availableScheme in AvailableSchemesTrack) { if (SchemeCuesheet.Contains(availableScheme.Value) == true) { addValidationError = true; break; } } if (addValidationError == true) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(SchemeCuesheet)), ValidationErrorType.Warning, "Scheme contains placeholders that can not be solved!")); } } } if (String.IsNullOrEmpty(SchemeTracks)) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(SchemeTracks)), ValidationErrorType.Warning, "{0} has no value!", nameof(SchemeTracks))); } else { if (AvailableSchemeCuesheet != null) { Boolean addValidationError = false; foreach (var availableScheme in AvailableSchemeCuesheet) { if (SchemeTracks.Contains(availableScheme.Value) == true) { addValidationError = true; break; } } if (addValidationError == true) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(SchemeTracks)), ValidationErrorType.Warning, "Scheme contains placeholders that can not be solved!")); } } } }
public void GetFieldIdentifierTest() { var testHelper = new TestHelper(); var cuesheetController = testHelper.CuesheetController; var cuesheet = new Cuesheet(); Assert.IsNotNull(cuesheet); var identifier = cuesheetController.GetFieldIdentifier(cuesheet, nameof(Cuesheet.Artist)); Assert.IsTrue(identifier.StartsWith(String.Format("{0}.{1}", nameof(Cuesheet), nameof(Cuesheet.Artist)))); Assert.AreEqual(cuesheetController.GetFieldIdentifier(cuesheet, nameof(Cuesheet.Artist)), identifier); var fieldReference = FieldReference.Create(cuesheet, nameof(Cuesheet.Artist)); Assert.AreEqual(cuesheetController.GetFieldIdentifier(fieldReference), identifier); }
public String GetFieldIdentifier(IValidateable validateable, String property) { if (validateable == null) { throw new ArgumentNullException(nameof(validateable)); } var identifier = fieldIdentifier.FirstOrDefault(x => x.Key.Owner == validateable && x.Key.Property == property); if (identifier.Key == null) { fieldIdentifier.Add(FieldReference.Create(validateable, property), Guid.NewGuid()); identifier = fieldIdentifier.FirstOrDefault(x => x.Key.Owner == validateable && x.Key.Property == property); } return(String.Format("{0}_{1}", identifier.Key.DisplayName, identifier.Value.ToString())); }
protected override void Validate() { if (String.IsNullOrEmpty(Value)) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Value)), ValidationErrorType.Warning, "{0} has no value!", nameof(Cataloguenumber))); } else { if (Value.All(Char.IsDigit) == false) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Value)), ValidationErrorType.Error, "{0} does not only contain numbers.", nameof(Cataloguenumber))); } if (Value.Length != 13) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Value)), ValidationErrorType.Error, "{0} has invalid length ({1})!", nameof(Cataloguenumber), 13)); } } }
protected override void Validate() { if (String.IsNullOrEmpty(Scheme) == false) { Boolean addValidationError = false; switch (SchemeType) { case Schemetype.Header: case Schemetype.Footer: foreach (var availableScheme in AvailableTrackSchemes) { if (Scheme.Contains(availableScheme.Value) == true) { addValidationError = true; break; } } if (addValidationError == true) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Scheme)), ValidationErrorType.Warning, "Scheme contains placeholders that can not be solved!")); } break; case Schemetype.Body: foreach (var availableScheme in AvailableCuesheetSchemes) { if (Scheme.Contains(availableScheme.Value) == true) { addValidationError = true; break; } } if (addValidationError == true) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Scheme)), ValidationErrorType.Warning, "Scheme contains placeholders that can not be solved!")); } break; case Schemetype.Unknown: validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(SchemeType)), ValidationErrorType.Error, "{0} has invalid value!", nameof(SchemeType))); break; } } }
protected override void Validate() { if (String.IsNullOrEmpty(Scheme) == false) { Boolean addValidationError = false; switch (SchemeType) { case SchemeType.Header: case SchemeType.Footer: foreach (var availableScheme in AvailableTrackSchemes) { if (Scheme.Contains(availableScheme.Value) == true) { addValidationError = true; break; } } if (addValidationError == true) { validationErrors.Add(new ValidationError(localizer["SchemeContainsPlaceholdersThatCanNotBeSolved"], FieldReference.Create(this, nameof(Scheme)), ValidationErrorType.Warning)); } break; case SchemeType.Body: foreach (var availableScheme in AvailableCuesheetSchemes) { if (Scheme.Contains(availableScheme.Value) == true) { addValidationError = true; break; } } if (addValidationError == true) { validationErrors.Add(new ValidationError(localizer["SchemeContainsPlaceholdersThatCanNotBeSolved"], FieldReference.Create(this, nameof(Scheme)), ValidationErrorType.Warning)); } break; } } }
protected override void Validate() { if (Position == null) { validationErrors.Add(new ValidationError(String.Format(_cuesheetController.GetLocalizedString("HasNoValue"), _cuesheetController.GetLocalizedString("Position")), FieldReference.Create(this, nameof(Position)), ValidationErrorType.Error)); } if ((Position != null) && (Position == 0)) { validationErrors.Add(new ValidationError(String.Format(_cuesheetController.GetLocalizedString("HasInvalidValue"), _cuesheetController.GetLocalizedString("Position")), FieldReference.Create(this, nameof(Position)), ValidationErrorType.Error)); } if (String.IsNullOrEmpty(Artist) == true) { validationErrors.Add(new ValidationError(String.Format(_cuesheetController.GetLocalizedString("HasNoValue"), _cuesheetController.GetLocalizedString("Artist")), FieldReference.Create(this, nameof(Artist)), ValidationErrorType.Warning)); } if (String.IsNullOrEmpty(Title) == true) { validationErrors.Add(new ValidationError(String.Format(_cuesheetController.GetLocalizedString("HasNoValue"), _cuesheetController.GetLocalizedString("Title")), FieldReference.Create(this, nameof(Title)), ValidationErrorType.Warning)); } if (Begin == null) { validationErrors.Add(new ValidationError(String.Format(_cuesheetController.GetLocalizedString("HasNoValue"), _cuesheetController.GetLocalizedString("Begin")), FieldReference.Create(this, nameof(Begin)), ValidationErrorType.Error)); } else { if (Begin < TimeSpan.Zero) { validationErrors.Add(new ValidationError(_cuesheetController.GetLocalizedString("HasInvalidBegin"), FieldReference.Create(this, nameof(Begin)), ValidationErrorType.Error)); } } if (End == null) { validationErrors.Add(new ValidationError(String.Format(_cuesheetController.GetLocalizedString("HasNoValue"), _cuesheetController.GetLocalizedString("End")), FieldReference.Create(this, nameof(End)), ValidationErrorType.Error)); } else { if (End < TimeSpan.Zero) { validationErrors.Add(new ValidationError(_cuesheetController.GetLocalizedString("HasInvalidEnd"), FieldReference.Create(this, nameof(End)), ValidationErrorType.Error)); } } if (Length == null) { validationErrors.Add(new ValidationError(_cuesheetController.GetLocalizedString("LengthHasNoValue"), FieldReference.Create(this, nameof(Length)), ValidationErrorType.Error)); } }
protected override void Validate() { if (Position == null) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Position)), ValidationErrorType.Error, "{0} has no value!", nameof(Position))); } if ((Position != null) && (Position == 0)) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Position)), ValidationErrorType.Error, "{0} has invalid value!", nameof(Position))); } if (String.IsNullOrEmpty(Artist) == true) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Artist)), ValidationErrorType.Warning, "{0} has no value!", nameof(Artist))); } if (String.IsNullOrEmpty(Title) == true) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Title)), ValidationErrorType.Warning, "{0} has no value!", nameof(Title))); } if (Begin == null) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Begin)), ValidationErrorType.Error, "{0} has no value!", nameof(Begin))); } else { if (Begin < TimeSpan.Zero) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Begin)), ValidationErrorType.Error, "{0} has invalid timespan!", nameof(Begin))); } } if (End == null) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(End)), ValidationErrorType.Error, "{0} has no value!", nameof(End))); } else { if (End < TimeSpan.Zero) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(End)), ValidationErrorType.Error, "{0} has invalid timespan!", nameof(End))); } } if (Length == null) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Length)), ValidationErrorType.Error, "{0} has no value! Please check {1} and {2}.", nameof(Length), nameof(Begin), nameof(End))); } //Check track overlapping if (Cuesheet != null) { if (Position.HasValue) { IEnumerable <Track> tracksWithSamePosition; if (ClonedFrom != null) { tracksWithSamePosition = Cuesheet.Tracks.Where(x => x.Position == Position && x.Equals(this) == false && (x.Equals(ClonedFrom) == false)); } else { tracksWithSamePosition = Cuesheet.Tracks.Where(x => x.Position == Position && x.Equals(this) == false); } if ((tracksWithSamePosition != null) && (tracksWithSamePosition.Any())) { foreach (var track in tracksWithSamePosition) { track.RankPropertyValueChanged += Track_RankPropertyValueChanged; } validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Position)), ValidationErrorType.Error, "{0} {1} of this track is already in use by track(s) {2}!", nameof(Position), Position, String.Join(", ", tracksWithSamePosition))); } if (IsCloned == false) { Track trackAtPosition = Cuesheet.Tracks.ElementAtOrDefault((int)Position.Value - 1); if ((trackAtPosition == null) || (trackAtPosition != this)) { validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Position)), ValidationErrorType.Error, "{0} {1} of this track does not match track position in cuesheet. Please correct the {2} of this track to {3}!", nameof(Position), Position, nameof(Position), Cuesheet.Tracks.ToList().IndexOf(this) + 1)); } } } if (Begin.HasValue) { IEnumerable <Track> tracksOverlapping; if (ClonedFrom != null) { tracksOverlapping = Cuesheet.Tracks.Where(x => Begin >= x.Begin && Begin < x.End && (x.Equals(this) == false) && (x.Equals(ClonedFrom) == false)); } else { tracksOverlapping = Cuesheet.Tracks.Where(x => Begin >= x.Begin && Begin < x.End && (x.Equals(this) == false)); } if ((tracksOverlapping != null) && tracksOverlapping.Any()) { foreach (var track in tracksOverlapping) { track.RankPropertyValueChanged += Track_RankPropertyValueChanged; } validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(Begin)), ValidationErrorType.Warning, "{0} is overlapping with other track(s) ({1})!", nameof(Begin), String.Join(", ", tracksOverlapping))); } } if (End.HasValue) { IEnumerable <Track> tracksOverlapping; if (ClonedFrom != null) { tracksOverlapping = Cuesheet.Tracks.Where(x => x.Begin < End && End <= x.End && (x.Equals(this) == false) && (x.Equals(ClonedFrom) == false)); } else { tracksOverlapping = Cuesheet.Tracks.Where(x => x.Begin < End && End <= x.End && (x.Equals(this) == false)); } if ((tracksOverlapping != null) && tracksOverlapping.Any()) { foreach (var track in tracksOverlapping) { track.RankPropertyValueChanged += Track_RankPropertyValueChanged; } validationErrors.Add(new ValidationError(FieldReference.Create(this, nameof(End)), ValidationErrorType.Warning, "{0} is overlapping with other track(s) ({1})!", nameof(End), String.Join(", ", tracksOverlapping))); } } } }
protected override void Validate() { if (String.IsNullOrEmpty(Artist) == true) { validationErrors.Add(new ValidationError(String.Format(_cuesheetController.GetLocalizedString("HasNoValue"), _cuesheetController.GetLocalizedString("Artist")), FieldReference.Create(this, nameof(Artist)), ValidationErrorType.Warning)); } if (String.IsNullOrEmpty(Title) == true) { validationErrors.Add(new ValidationError(String.Format(_cuesheetController.GetLocalizedString("HasNoValue"), _cuesheetController.GetLocalizedString("Title")), FieldReference.Create(this, nameof(Title)), ValidationErrorType.Warning)); } if (AudioFile == null) { validationErrors.Add(new ValidationError(String.Format(_cuesheetController.GetLocalizedString("HasNoValue"), _cuesheetController.GetLocalizedString("Audiofile")), FieldReference.Create(this, nameof(AudioFile)), ValidationErrorType.Error)); } //Check track overlapping lock (syncLock) { TimeSpan begin = TimeSpan.Zero; foreach (var track in Tracks) { if ((track.Begin == null) || (track.Begin != begin)) { validationErrors.Add(new ValidationError(String.Format(_cuesheetController.GetLocalizedString("TrackHasInvalidValue"), track.Position, _cuesheetController.GetLocalizedString("Begin"), track.Begin), FieldReference.Create(track, nameof(Track.Begin)), ValidationErrorType.Warning)); } if (track.End != null) { begin = track.End.Value; } } } }