summaryrefslogtreecommitdiffstats
path: root/collaboration/GSoC-2011-Eranda/couchdb/src/main/java/org/apache/tuscany/nosqldatastore/couchdb/CouchDBGroup.java
diff options
context:
space:
mode:
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.java47
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);
}
}