/** {@inheritDoc} */
 @Override
 public boolean existGroup(String groupName) {
   if (groupName == null || groupName.isEmpty()) {
     throw new IllegalArgumentException("Groupname cannot be null nor empty");
   }
   return collection.count(BUILDER.getGroupName(groupName)) > 0;
 }
 /** {@inheritDoc} */
 @Override
 public void disableGroup(String groupName) {
   if (groupName == null || groupName.isEmpty()) {
     throw new IllegalArgumentException("Groupname cannot be null nor empty");
   }
   if (!existGroup(groupName)) {
     throw new GroupNotFoundException(groupName);
   }
   for (DBObject dbObject : collection.find(BUILDER.getGroupName(groupName))) {
     Object enabledd = BUILDER.getEnable(false);
     collection.update(dbObject, BasicDBObjectBuilder.start(MONGO_SET, enabledd).get());
   }
 }
 /** {@inheritDoc} */
 @Override
 public void addToGroup(String uid, String groupName) {
   if (uid == null || uid.isEmpty()) {
     throw new IllegalArgumentException("Feature identifier cannot be null nor empty");
   }
   if (groupName == null || groupName.isEmpty()) {
     throw new IllegalArgumentException("Groupname cannot be null nor empty");
   }
   if (!exist(uid)) {
     throw new FeatureNotFoundException(uid);
   }
   DBObject target = BUILDER.getFeatUid(uid);
   DBObject nGroupName = BUILDER.getGroupName(groupName);
   collection.update(target, BasicDBObjectBuilder.start(MONGO_SET, nGroupName).get());
 }
 /** {@inheritDoc} */
 @Override
 public Map<String, Feature> readGroup(String groupName) {
   if (groupName == null || groupName.isEmpty()) {
     throw new IllegalArgumentException("Groupname cannot be null nor empty");
   }
   if (!existGroup(groupName)) {
     throw new GroupNotFoundException(groupName);
   }
   LinkedHashMap<String, Feature> mapFP = new LinkedHashMap<String, Feature>();
   for (DBObject dbObject : collection.find(BUILDER.getGroupName(groupName))) {
     Feature feature = MAPPER.mapFeature(dbObject);
     mapFP.put(feature.getUid(), feature);
   }
   return mapFP;
 }