package com.nvarghese.beowulf.scs.categorizers.dao;
import org.bson.types.ObjectId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.code.morphia.Datastore;
import com.google.code.morphia.Key;
import com.google.code.morphia.query.Query;
import com.google.code.morphia.query.QueryResults;
import com.google.code.morphia.query.UpdateOperations;
import com.nvarghese.beowulf.common.dao.AbstractMongoDAO;
import com.nvarghese.beowulf.scs.categorizers.model.DirectoryCategorizerDocument;
/**
* This is a single document DAO class
*
* @author nibin
*
*/
public class DirectoryCategorizerDAO extends AbstractMongoDAO<DirectoryCategorizerDocument, ObjectId> {
static Logger logger = LoggerFactory.getLogger(DirectoryCategorizerDAO.class);
public DirectoryCategorizerDAO(Datastore ds) {
super(DirectoryCategorizerDocument.class, ds);
}
/**
*
* @param objectId
* @return
*/
public DirectoryCategorizerDocument getDirectoryCategorizerDocument(ObjectId objectId) {
return get(objectId);
}
/**
*
* @param objectId
* @return
*/
public DirectoryCategorizerDocument getDirectoryCategorizerDocument(String objectId) {
ObjectId id = new ObjectId(objectId);
return get(id);
}
/**
*
* @param testModuleMetaDataDocument
*/
public void updateDirectoryCategorizerDocument(DirectoryCategorizerDocument directoryCategorizerDocument) {
logger.debug("Updating directoryCategorizerDocument with id: {}", directoryCategorizerDocument.getId());
save(directoryCategorizerDocument);
}
/**
*
* Create a new directoryCategorizerDocument
*
* @param directoryCategorizerDocument
*/
public ObjectId createDirectoryCategorizerDocument(DirectoryCategorizerDocument directoryCategorizerDocument) {
logger.debug("Creating new DirectoryCategorizerDocument.");
Key<DirectoryCategorizerDocument> key = save(directoryCategorizerDocument);
return (ObjectId) key.getId();
}
/**
*
* @param dirName
* @return
*/
public boolean isDirectoryNamePresent(String dirName) {
boolean present = false;
Query<DirectoryCategorizerDocument> q = ds.createQuery(DirectoryCategorizerDocument.class).field("testedDirs").contains(dirName);
long count = count(q);
if (count > 0l)
present = true;
return present;
}
public void addDirectoryName(String dirName) {
UpdateOperations<DirectoryCategorizerDocument> ops = ds.createUpdateOperations(DirectoryCategorizerDocument.class).add("tested_dirs",
dirName, false);
ds.update(ds.createQuery(DirectoryCategorizerDocument.class), ops);
}
/**
*
* @param objectId
* @return
*/
public DirectoryCategorizerDocument getDirectoryCategorizerDocument(boolean includeTestedDirField) {
Query<DirectoryCategorizerDocument> q = null;
if (includeTestedDirField) {
q = ds.createQuery(DirectoryCategorizerDocument.class).retrievedFields(true, "lastUpdated", "createdOn", "tested_dirs");
} else {
q = ds.createQuery(DirectoryCategorizerDocument.class).retrievedFields(true, "lastUpdated", "createdOn");
}
QueryResults<DirectoryCategorizerDocument> qr = find(q);
if (qr.countAll() > 0) {
return qr.get();
} else {
return null;
}
}
/**
*
* @param objectId
* @return
*/
public DirectoryCategorizerDocument getDirectoryCategorizerDocument() {
return getDirectoryCategorizerDocument(true);
}
}