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:
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user