Override hashCode and equals methods of Entity.

In order to make sure entities of same type, having the same name are
equals, these two methods have been override to make sure that Sets
contains only one object with a specific name.
This commit is contained in:
2025-11-04 13:56:03 +01:00
parent 6125cdade7
commit 90e7c81594
2 changed files with 110 additions and 1 deletions

View File

@@ -8,13 +8,16 @@ public class Entity {
private String name; private String name;
public EntityType type; private EntityType type;
public int getId() { public int getId() {
return id; return id;
} }
public void setId(int id) { public void setId(int id) {
if (id < 0) {
throw new IllegalArgumentException("Id can't be null");
}
this.id = id; this.id = id;
} }
@@ -34,4 +37,26 @@ public class Entity {
this.type = type; this.type = type;
} }
@Override
public int hashCode() {
return getName() == null ? super.hashCode() : getName().hashCode();
}
@Override
public boolean equals(Object obj) {
if(super.equals(obj)) {
return true;
}
if (obj instanceof Entity) {
Entity entity = (Entity) obj;
if (getType() != entity.getType()) {
return false;
}
boolean namesAreTheSame = entity.getName() != null && getName() != null && getName().equals(entity.getName());
return namesAreTheSame;
}
return false;
}
} }

View File

@@ -0,0 +1,84 @@
package cm.soungui.guacamole.ext.wallix.sync.db.test;
import java.util.HashSet;
import java.util.Set;
import cm.soungui.guacamole.ext.wallix.sync.db.Entity;
import cm.soungui.guacamole.ext.wallix.sync.db.User;
import cm.soungui.guacamole.ext.wallix.sync.db.UserGroup;
import junit.framework.TestCase;
public class TestEntity extends TestCase {
public final void testEqualsSameObject() {
User user1 = new User();
assertEquals(user1, user1);
}
public final void testEqualsDifferentObject() {
User user1 = new User();
User user2 = new User();
assertNotSame(user1, user2);
}
public final void testEqualsSameName() {
User user1 = new User();
user1.setName("name");
User user2 = new User();
user2.setName("name");
assertEquals(user1, user2);
}
public final void testEqualsDifferentName() {
User user1 = new User();
user1.setName("name");
User user2 = new User();
user2.setName("anotherName");
assertNotSame(user1, user2);
}
public final void testEqualsDifferentType() {
User user1 = new User();
user1.setName("name");
UserGroup group = new UserGroup();
group.setName("name");
assertNotSame(user1, group);
}
public final void testAddDifferentNames() {
Set<Entity> entities = new HashSet<>();
User user1 = new User();
user1.setName("name");
User user2 = new User();
user2.setName("anotherName");
entities.add(user1);
entities.add(user2);
assert(entities.size()==2);
}
public final void testAddSameName() {
Set<Entity> entities = new HashSet<>();
User user1 = new User();
user1.setName("name");
User user2 = new User();
user2.setName("name");
entities.add(user1);
assert(entities.contains(user2));
entities.add(user2);
//
assert(entities.size()==1);
}
}