diff options
Diffstat (limited to 'collaboration/GSoC-2011-Eranda/couchdb/src/main/java/org/apache/tuscany/nosqldatastore/couchdb/CouchDBGroup.java')
-rw-r--r-- | collaboration/GSoC-2011-Eranda/couchdb/src/main/java/org/apache/tuscany/nosqldatastore/couchdb/CouchDBGroup.java | 47 |
1 files changed, 34 insertions, 13 deletions
diff --git a/collaboration/GSoC-2011-Eranda/couchdb/src/main/java/org/apache/tuscany/nosqldatastore/couchdb/CouchDBGroup.java b/collaboration/GSoC-2011-Eranda/couchdb/src/main/java/org/apache/tuscany/nosqldatastore/couchdb/CouchDBGroup.java index 2590dacc0c..485e87149d 100644 --- a/collaboration/GSoC-2011-Eranda/couchdb/src/main/java/org/apache/tuscany/nosqldatastore/couchdb/CouchDBGroup.java +++ b/collaboration/GSoC-2011-Eranda/couchdb/src/main/java/org/apache/tuscany/nosqldatastore/couchdb/CouchDBGroup.java @@ -20,6 +20,8 @@ package org.apache.tuscany.nosqldatastore.couchdb; import org.apache.tuscany.nosqldatastore.Group; +import org.apache.tuscany.nosqldatastore.exception.DuplicateEntryException; +import org.apache.tuscany.nosqldatastore.exception.EntryNotFoundException; import org.jcouchdb.document.DesignDocument; import org.jcouchdb.document.DocumentHelper; import org.jcouchdb.exception.UpdateConflictException; @@ -42,33 +44,52 @@ public class CouchDBGroup implements Group { try{ database.createOrUpdateDocument(doc); }catch(UpdateConflictException e){ - System.out.println("Connect to the doc "+groupId); + System.out.println("Connect to the doc "+groupId); } } - public void addEntry(String key, Object value) { + public void addEntry(String key, String value) throws DuplicateEntryException { DesignDocument doc = database.getDesignDocument(groupId); Map<String, String> lists = doc.getListFunctions(); - lists.put(key, (String)value); - doc.setListFunctions(lists); - database.updateDocument(doc); + if(!lists.containsKey(key)){ + lists.put(key, value); + doc.setListFunctions(lists); + database.updateDocument(doc); + return; + } + throw new DuplicateEntryException("Entry already exist for key "+key); } - public void updateEntry(String key, Object value) { - addEntry(key, value); + public void updateEntry(String key, String value) throws EntryNotFoundException{ + DesignDocument doc = database.getDesignDocument(groupId); + Map<String, String> lists = doc.getListFunctions(); + if(lists.containsKey(key)){ + lists.put(key, value); + doc.setListFunctions(lists); + database.updateDocument(doc); + return; + } + throw new EntryNotFoundException("Entry does not exist for key "+key); } - public void deleteEntry(String key) { + public void deleteEntry(String key) throws EntryNotFoundException { DesignDocument doc = database.getDesignDocument(groupId); Map<String, String> lists = doc.getListFunctions(); - lists.remove(key); - doc.setListFunctions(lists); - database.updateDocument(doc); + if(lists.containsKey(key)){ + lists.remove(key); + doc.setListFunctions(lists); + database.updateDocument(doc); + return; + } + throw new EntryNotFoundException("Entry does not exist for key "+key); } - public Object getValue(String key) { + public String getEntry(String key) throws EntryNotFoundException { DesignDocument doc = database.getDesignDocument(groupId); Map<String, String> lists = doc.getListFunctions(); - return lists.get(key); + if(lists.containsKey(key)){ + return lists.get(key); + } + throw new EntryNotFoundException("Entry does not exist for key "+key); } } |