From 08264b03a1c4263d6158cab1ea180e05e14605e5 Mon Sep 17 00:00:00 2001
From: Alexandre <alexandre.perles@gmail.com>
Date: Mon, 18 Sep 2023 22:51:19 +0200
Subject: [PATCH] Fix cluster size and bucket id

---
 .../java/fr/irit/smac/amas4dc/amas/agent/ClusterAgent.java    | 4 ++++
 src/main/java/fr/irit/smac/amas4dc/cluster/Cluster.java       | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/src/main/java/fr/irit/smac/amas4dc/amas/agent/ClusterAgent.java b/src/main/java/fr/irit/smac/amas4dc/amas/agent/ClusterAgent.java
index 2162b40..39619e0 100644
--- a/src/main/java/fr/irit/smac/amas4dc/amas/agent/ClusterAgent.java
+++ b/src/main/java/fr/irit/smac/amas4dc/amas/agent/ClusterAgent.java
@@ -46,6 +46,7 @@ public class ClusterAgent<T extends DataPoint> extends Agent<DynamicClusteringAM
 		else
 			cluster = new Cluster<T>(dataPoint);
 		amas.getMasSettings().database().add(cluster.getRepresentative());
+		getAmas().getEnvironment().assignToBucket(cluster.getRepresentative().getBucketId(), this);
 	}
 
 	public enum State {DORMANT, WAITING_FOR_DISTANCE, DEAD}
@@ -222,6 +223,8 @@ public class ClusterAgent<T extends DataPoint> extends Agent<DynamicClusteringAM
 
 		if (getAmas().getMasSettings().amasOptions().contains(AMASOption.KeepAllDataPoints))
 			((ExtendedCluster<T>) cluster).addClusterContent((ExtendedCluster<T>) otherCluster);
+		else
+			cluster.addClusterContent(otherCluster);
 
 	}
 
@@ -229,6 +232,7 @@ public class ClusterAgent<T extends DataPoint> extends Agent<DynamicClusteringAM
 	protected void onDestroy() {
 		nextState = State.DEAD;
 		amas.getMasSettings().database().remove(cluster.getRepresentative());
+		getAmas().getEnvironment().removeFromBucket(cluster.getRepresentative().getBucketId(), this);
 	}
 
 
diff --git a/src/main/java/fr/irit/smac/amas4dc/cluster/Cluster.java b/src/main/java/fr/irit/smac/amas4dc/cluster/Cluster.java
index b4b0753..30a5db5 100644
--- a/src/main/java/fr/irit/smac/amas4dc/cluster/Cluster.java
+++ b/src/main/java/fr/irit/smac/amas4dc/cluster/Cluster.java
@@ -22,9 +22,13 @@ public class Cluster<T extends DataPoint> {
 		this.representative = representative;
 		this.size = 1;
 	}
+
 	public void addDataPoint(T dataPoint) {
 		size++;
 	}
 
+	public void addClusterContent(Cluster<T> otherCluster) {
+		size += otherCluster.size;
+	}
 }
 
-- 
GitLab