/// <summary> /// Compara la instancia actual con otro objeto del mismo tipo y devuelve un entero /// que indica si la posición de la instancia actual es anterior, posterior o igual /// que la del otro objeto en el criterio de ordenación. /// </summary> /// <param name="obj"> Objeto que se va a comparar con esta instancia.</param> /// <returns> /// Un valor que indica el orden relativo de los objetos que se están comparando.El /// valor devuelto tiene los siguientes significados:Valor Significado Menor que /// cero Esta instancia es anterior a obj en el criterio de ordenación. Zero Esta /// instancia se produce en la misma posición del criterio de ordenación que obj. /// Mayor que cero Esta instancia sigue a obj en el criterio de ordenación. /// </returns> public int CompareTo(object obj) { if (this == obj) { return(0); } PdfTagExtractionItemResult input = (obj as PdfTagExtractionItemResult); if (input == null) { throw new ArgumentException("Parámetro de tipo incorrecto."); } if ((MatchesCount - ErrorsCount) > (input.MatchesCount - input.ErrorsCount)) { return(-1); } else if ((MatchesCount - ErrorsCount) == (input.MatchesCount - input.ErrorsCount)) { if (MatchesCount > input.MatchesCount) { return(-1); } else if (MatchesCount == input.MatchesCount) { // Ordenamos los patrones según su tipo con tal de evitar falsos positivos if (SourceTypeNameOrder[Pattern.SourceTypeName] > SourceTypeNameOrder[input.Pattern.SourceTypeName]) { return(-1); } else if (SourceTypeNameOrder[Pattern.SourceTypeName] < SourceTypeNameOrder[input.Pattern.SourceTypeName]) { return(1); } else { return(0); } } else { return(1); } } else { return(1); } }
///// <summary> ///// Añade un nuevo resultado. ///// </summary> ///// <param name="name">Nombre del item.</param> ///// <param name="matchesCount">Número de matches del patrón.</param> ///// <param name="value">Valor de resultado encontrado.</param> //public void AddResult(string name, int matchesCount, object value) //{ // if (!Results.ContainsKey(name)) // Results.Add(name, new List<PdfTagExtractionItemResult>()); // PdfTagExtractionItemResult itemResult = new PdfTagExtractionItemResult() // { // MatchesCount = matchesCount, // Value = value // }; // if (Results[name].IndexOf(itemResult) == -1) // Results[name].Add(itemResult); //} /// <summary> /// Añade un nuevo resultado. /// </summary> /// <param name="pattern">PdfTagPattern que obtiene el resultado.</param> /// <param name="value">Valor de resultado encontrado.</param> public void AddResult(PdfTagPattern pattern, object value) { if (!Results.ContainsKey(pattern.MetadataItemName)) { Results.Add(pattern.MetadataItemName, new List <PdfTagExtractionItemResult>()); } PdfTagExtractionItemResult itemResult = new PdfTagExtractionItemResult() { Pattern = pattern, Value = value }; if (Results[pattern.MetadataItemName].IndexOf(itemResult) == -1) { Results[pattern.MetadataItemName].Add(itemResult); } }
/// <summary> /// Determina si el objeto especificado es igual al objeto actual. /// </summary> /// <param name="obj">Objeto que se va a comparar con el objeto actual.</param> /// <returns>Es true si el objeto especificado es igual al objeto actual; /// en caso contrario, es false.</returns> public override bool Equals(object obj) { PdfTagExtractionItemResult input = (obj as PdfTagExtractionItemResult); if (input == null) { throw new ArgumentException("Parámetro de tipo incorrecto."); } bool equalsValue = false; if (Value == null) { if (input.Value == null) { equalsValue = true; } } else { equalsValue = Value.Equals(input.Value); } bool equalsPattern = false; if (Pattern == null) { if (input.Pattern == null) { equalsPattern = true; } } else { equalsPattern = Pattern.Equals(input.Pattern); } return(MatchesCount == input.MatchesCount && equalsValue && equalsPattern); }