From 86105eaba2cba46127ab5cb6429cc3062a00e91c Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Sat, 29 Mar 2014 02:07:05 +0100 Subject: [PATCH] [Minor] Added exception when adding a resource which already exists --- .../persistence/inmemory/InMemoryDao.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/li/strolch/persistence/inmemory/InMemoryDao.java b/src/main/java/li/strolch/persistence/inmemory/InMemoryDao.java index afc817f32..259232dab 100644 --- a/src/main/java/li/strolch/persistence/inmemory/InMemoryDao.java +++ b/src/main/java/li/strolch/persistence/inmemory/InMemoryDao.java @@ -1,5 +1,6 @@ package li.strolch.persistence.inmemory; +import java.text.MessageFormat; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -10,6 +11,7 @@ import java.util.Set; import li.strolch.model.StrolchElement; import li.strolch.persistence.api.StrolchDao; +import li.strolch.persistence.api.StrolchPersistenceException; public class InMemoryDao implements StrolchDao { @@ -101,6 +103,12 @@ public class InMemoryDao implements StrolchDao { this.elementMap.put(element.getType(), byType); } + if (byType.containsKey(element.getId())) { + String msg = "An element already exists with the id {0}. Elements of the same class must always have a unique id, regardless of their type!"; //$NON-NLS-1$ + msg = MessageFormat.format(msg, element.getId()); + throw new StrolchPersistenceException(msg); + } + byType.put(element.getId(), element); } @@ -113,7 +121,13 @@ public class InMemoryDao implements StrolchDao { @Override public void update(T element) { - save(element); + Map byType = this.elementMap.get(element.getType()); + if (byType == null) { + byType = new HashMap<>(); + this.elementMap.put(element.getType(), byType); + } + + byType.put(element.getId(), element); } @Override