Click here to Skip to main content
15,884,739 members
Articles / Web Development / HTML

Catch All Bugs with BugTrap!

Rate me:
Please Sign up or sign in to vote.
4.34/5 (84 votes)
31 Jan 2009MIT5 min read 1.8M   9.1K   292  
A tool that can catch unhandled errors and exceptions, and deliver error reports to remote support servers
/*
 * This is a part of the BugTrap package.
 * Copyright (c) 2005-2007 IntelleSoft.
 * All rights reserved.
 *
 * Description: Application entry.
 * Author: Maksim Pyatkovskiy.
 *
 * This source code is only intended as a supplement to the
 * BugTrap package reference and related electronic documentation
 * provided with the product. See these sources for detailed
 * information regarding the BugTrap package.
 */

using System;
using System.Xml.Serialization;

namespace BugTrapServer
{
	/// <summary>
	/// Application entry info block.
	/// </summary>
	[Serializable, XmlRoot("application")]
	public sealed class AppEntry : IComparable
	{
		/// <summary>
		/// Application name.
		/// </summary>
		[XmlText(Type = typeof(string))]
		public string Name;

		/// <summary>
		/// Application version.
		/// </summary>
		public string Version;

		/// <summary>
		/// Initialize the object.
		/// </summary>
		public AppEntry()
		{
			this.Name = null;
			this.Version = null;
		}

		/// <summary>
		/// Initialize the object.
		/// </summary>
		/// <param name="name">Application name.</param>
		public AppEntry(string name)
		{
			this.Name = name;
			this.Version = null;
		}

		/// <summary>
		/// Initialize the object.
		/// </summary>
		/// <param name="name">Application name.</param>
		/// <param name="version">Application version.</param>
		public AppEntry(string name, string version)
		{
			this.Name = name;
			this.Version = version;
		}

		/// <summary>
		/// Compare two objects.
		/// </summary>
		/// <remarks>This function correctly handlers null references.</remarks>
		/// <param name="obj1">First object.</param>
		/// <param name="obj2">Second object.</param>
		/// <returns>Comparison result.</returns>
		private static int CompareObjects(IComparable obj1, IComparable obj2)
		{
			if (obj1 == null && obj2 == null)
				return 0;
			else if (obj1 == null)
				return -1;
			else if (obj2 == null)
				return +1;
			else
				return obj1.CompareTo(obj2);
		}

		/// <summary>
		/// Compares the current instance with another object of the same type.
		/// </summary>
		/// <param name="obj">An object to compare with this instance.</param>
		/// <returns>A 32-bit signed integer that indicates the relative order of the comparands.</returns>
		int IComparable.CompareTo(object obj)
		{
			AppEntry appEntry = obj as AppEntry;
			if (appEntry == null)
				return +1;
			int result = CompareObjects(this.Name, appEntry.Name);
			if (result == 0)
				result = CompareObjects(this.Version, appEntry.Version);
			return result;
		}

		/// <summary>
		/// Determines whether the specified Object is equal to the current Object.
		/// </summary>
		/// <param name="obj">The Object to compare with the current Object.</param>
		/// <returns>True if the specified Object is equal to the current Object; otherwise, false.</returns>
		public override bool Equals(object obj)
		{
			IComparable compObj = this;
			return (compObj.CompareTo(obj) == 0);
		}

		/// <summary>
		/// Serves as a hash function for a particular type, suitable for use in hashing algorithms and data structures like a hash table.
		/// </summary>
		/// <returns>A hash code for the current Object.</returns>
		public override int GetHashCode()
		{
			int hashCode = 0;
			if (this.Name != null)
				hashCode ^= this.Name.GetHashCode();
			if (this.Version != null)
				hashCode ^= this.Version.GetHashCode();
			return hashCode;
		}
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The MIT License


Written By
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions