+ public void updateUserNatures(Map<String, UserNature> userNaturesData) {
+ updateUserNaturesWithCheck(userNatures, userNaturesData);
+ }
+
+ public static void updateUserNaturesWithCheck(
+ Map<String, UserNature> userNatures,
+ Map<String, UserNature> userNaturesData) {
+ // checks consistency
+ if (userNatures.size() != userNaturesData.size())
+ throw new ArgeoException(
+ "It is forbidden to add or remove user natures via this method");
+
+ for (String type : userNatures.keySet()) {
+ if (!userNaturesData.containsKey(type))
+ throw new ArgeoException(
+ "Could not find a user nature of type " + type);
+ }
+
+ for (String key : userNatures.keySet()) {
+ userNatures.put(key, userNaturesData.get(key));
+ }
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof ArgeoUser))
+ return false;
+ return ((ArgeoUser) obj).getUsername().equals(username);
+ }
+
+ public int compareTo(ArgeoUser o) {
+ return username.compareTo(o.getUsername());
+ }
+
+ @Override
+ public int hashCode() {
+ return username.hashCode();
+ }
+
+ @Override
+ public String toString() {
+ return username;
+ }
+