@Override
	public boolean equals(Object obj) {
		boolean result = false;
		
		if (this == obj) {
			result = true;
		} else if(obj != null) {
			
			DataProviderStatus status = null;
			if(obj instanceof String) {
				try {
					status = DataProviderStatus.parse((String) obj);
				} catch(Exception e) {
					status = null;
					result = false;
				}
			} else if(obj instanceof DataProviderStatus) {
				status = (DataProviderStatus) obj;
			}
			
			if(status != null) {
				if(this.name.equals(status.name) && this.status.equals(status.status)) {
					if(Utilities.isNullOrWhitespace(this.version)) {
						result = true;
					} else {
						result = this.version.equals(status.version);
					}
				}
			}
		}
		
		return result;
	}