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.HostCategorizerDocument; public class HostCategorizerDAO extends AbstractMongoDAO<HostCategorizerDocument, ObjectId> { static Logger logger = LoggerFactory.getLogger(HostCategorizerDAO.class); public HostCategorizerDAO(Datastore ds) { super(HostCategorizerDocument.class, ds); } /** * * @param objectId * @return */ public HostCategorizerDocument getHostCategorizerDocument(ObjectId objectId) { return get(objectId); } /** * * @param objectId * @return */ public HostCategorizerDocument getHostCategorizerDocument(String objectId) { ObjectId id = new ObjectId(objectId); return get(id); } /** * * @param hostCategorizerDocument */ public void updateHostCategorizerDocument(HostCategorizerDocument hostCategorizerDocument) { logger.debug("Updating hostCategorizerDocument with id: {}", hostCategorizerDocument.getId()); save(hostCategorizerDocument); } /** * * Create a new hostCategorizerDocument * * @param hostCategorizerDocument */ public ObjectId createHostCategorizerDocument(HostCategorizerDocument hostCategorizerDocument) { logger.debug("Creating new HostCategorizerDocument."); Key<HostCategorizerDocument> key = save(hostCategorizerDocument); return (ObjectId) key.getId(); } /** * * @param hostName * @return */ public boolean isHostNamePresent(String hostName) { boolean present = false; Query<HostCategorizerDocument> q = ds.createQuery(HostCategorizerDocument.class).field("hostNames").contains(hostName); long count = count(q); if (count > 0l) present = true; return present; } /** * * @param hostName */ public void addHostName(String hostName) { UpdateOperations<HostCategorizerDocument> ops = ds.createUpdateOperations(HostCategorizerDocument.class).add("host_names", hostName, false); ds.update(ds.createQuery(HostCategorizerDocument.class), ops); } /** * * @param objectId * @return */ public HostCategorizerDocument getHostCategorizerDocument(boolean includeHostNameField) { Query<HostCategorizerDocument> q = null; if (includeHostNameField) { q = ds.createQuery(HostCategorizerDocument.class).retrievedFields(true, "lastUpdated", "createdOn", "host_names"); } else { q = ds.createQuery(HostCategorizerDocument.class).retrievedFields(true, "lastUpdated", "createdOn"); } QueryResults<HostCategorizerDocument> qr = find(q); if (qr.countAll() > 0) { return qr.get(); } else { return null; } } /** * * @param objectId * @return */ public HostCategorizerDocument getHostCategorizerDocument() { return getHostCategorizerDocument(true); } }