/// <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);
            }
        }
Exemplo n.º 2
0
        ///// <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);
            }
        }
Exemplo n.º 3
0
        /// <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);
        }