From e522332ad8547b842d1d4b6d3b84347bf264de0e Mon Sep 17 00:00:00 2001
From: langella <langella@b8ef2a07-7df7-436f-90b9-41648038564b>
Date: Wed, 23 May 2012 12:55:43 +0000
Subject: [PATCH] ceinture and bretelle in case of collision

git-svn-id: https://subversion.renater.fr/xtandempipeline/trunk@280 b8ef2a07-7df7-436f-90b9-41648038564b
---
 .../xtandempipeline/grouping/HashProtein.java | 18 ++++++++
 .../grouping/HashSampleScan.java              | 42 ++++++++++++++-----
 2 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/xtandempipeline/src/fr/inra/pappso/xtandempipeline/grouping/HashProtein.java b/xtandempipeline/src/fr/inra/pappso/xtandempipeline/grouping/HashProtein.java
index d82a5245d..89d3626ff 100644
--- a/xtandempipeline/src/fr/inra/pappso/xtandempipeline/grouping/HashProtein.java
+++ b/xtandempipeline/src/fr/inra/pappso/xtandempipeline/grouping/HashProtein.java
@@ -1,6 +1,10 @@
 package fr.inra.pappso.xtandempipeline.grouping;
 
+import org.apache.log4j.Logger;
+
 public class HashProtein extends HashKey4Groups {
+	private static final Logger logger = Logger.getLogger(HashProtein.class);
+
 	private String accession;
 	private int hascode;
 
@@ -22,4 +26,18 @@ public class HashProtein extends HashKey4Groups {
 		return this.hascode;
 	}
 
+	@Override
+	public boolean equals(Object toCompare) {
+		if (this.hashCode() == toCompare.hashCode()) {
+			// very good idea Benoit !
+			HashProtein toCompareProtein = (HashProtein) toCompare;
+			if (this.accession.equals(toCompareProtein.accession)) {
+				return true;
+			} else {
+				logger.debug("HashProtein COLLISION on " + accession
+						+ " compared to " + toCompareProtein.accession);
+			}
+		}
+		return false;
+	}
 }
diff --git a/xtandempipeline/src/fr/inra/pappso/xtandempipeline/grouping/HashSampleScan.java b/xtandempipeline/src/fr/inra/pappso/xtandempipeline/grouping/HashSampleScan.java
index 0b69d3652..b91942e36 100644
--- a/xtandempipeline/src/fr/inra/pappso/xtandempipeline/grouping/HashSampleScan.java
+++ b/xtandempipeline/src/fr/inra/pappso/xtandempipeline/grouping/HashSampleScan.java
@@ -18,10 +18,10 @@ public class HashSampleScan implements Comparable<HashSampleScan> {
 		this.msRun = msRun;
 		this.hascode = this.getHashCodeStr().hashCode();
 	}
-	
+
 	@Override
 	protected void finalize() throws Throwable {
-//		logger.debug("finalize HashSampleScan");
+		// logger.debug("finalize HashSampleScan");
 	}
 
 	private String getHashCodeStr() {
@@ -32,14 +32,14 @@ public class HashSampleScan implements Comparable<HashSampleScan> {
 		} else {
 			code = new String("-" + scan + "-" + msRun.getSampleName());
 		}
-		//logger.debug("hashcode " + code);
+		// logger.debug("hashcode " + code);
 		return code;
 	}
-	
-//	public String getFingerPrint() {
-//		return getHashCodeStr();
-//	}
-	
+
+	// public String getFingerPrint() {
+	// return getHashCodeStr();
+	// }
+
 	public int compareTo(HashSampleScan p) {
 		int j = this.msRun.getSampleName().compareTo(
 				p.getMsRun().getSampleName());
@@ -49,6 +49,7 @@ public class HashSampleScan implements Comparable<HashSampleScan> {
 		return (i);
 
 	}
+
 	@Override
 	public String toString() {
 		return new String(scan + " " + msRun.getSampleName());
@@ -57,8 +58,29 @@ public class HashSampleScan implements Comparable<HashSampleScan> {
 	@Override
 	public boolean equals(Object toCompare) {
 		if (this.hashCode() == toCompare.hashCode()) {
-			//logger.debug("equals on hashSampleScan "+this.toString());
-			return true;
+			// logger.debug("equals on hashSampleScan "+this.toString());
+			HashSampleScan sampleScanToCompare = (HashSampleScan) toCompare;
+
+			if (this.scan == sampleScanToCompare.scan) {
+				if (msRun == null) {
+					return true;
+				} else {
+					if (this.msRun.getSampleName().equals(
+							sampleScanToCompare.msRun.getSampleName())) {
+						return true;
+					} else {
+						logger.debug("HashSampleScan COLLISION on "
+								+ this.toString() + " compared to "
+								+ sampleScanToCompare.toString());
+					}
+				}
+			}
+			else {
+				logger.debug("HashSampleScan COLLISION on "
+						+ this.toString() + " compared to "
+						+ sampleScanToCompare.toString());
+			}
+
 		}
 		return false;
 	}
-- 
GitLab