All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.stanford.protege.webprotege.webhook.SlackWebhookRepositoryImpl Maven / Gradle / Ivy

The newest version!
package edu.stanford.protege.webprotege.webhook;

import com.mongodb.DuplicateKeyException;
import com.mongodb.bulk.BulkWriteUpsert;
import edu.stanford.protege.webprotege.inject.ApplicationSingleton;
import edu.stanford.protege.webprotege.common.ProjectId;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.BasicUpdate;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.data.mongodb.core.query.UpdateDefinition;

import javax.annotation.Nonnull;
import javax.inject.Inject;
import java.util.List;

import static com.google.common.base.Preconditions.checkNotNull;
import static edu.stanford.protege.webprotege.webhook.SlackWebhook.PROJECT_ID;
import static org.springframework.data.mongodb.core.query.Criteria.where;
import static org.springframework.data.mongodb.core.query.Query.query;

/**
 * Matthew Horridge
 * Stanford Center for Biomedical Informatics Research
 * 8 Jun 2017
 */
@ApplicationSingleton
public class SlackWebhookRepositoryImpl implements SlackWebhookRepository {

    private static final Logger logger = LoggerFactory.getLogger(SlackWebhookRepositoryImpl.class);

    private final MongoTemplate mongo;

    @Inject
    public SlackWebhookRepositoryImpl(@Nonnull MongoTemplate mongo) {
        this.mongo = checkNotNull(mongo);
    }

    @Override
    public void ensureIndexes() {

    }

    @Override
    public List getWebhooks(@Nonnull ProjectId projectId) {
        var query = query(where(PROJECT_ID).is(projectId));
        return mongo.find(query, SlackWebhook.class);
    }

    @Override
    public void clearWebhooks(@Nonnull ProjectId projectId) {
        var query = query(where(PROJECT_ID).is(projectId));
        mongo.remove(query, SlackWebhook.class);
    }

    @Override
    public void addWebhook(@Nonnull SlackWebhook webhook) {
        try {
            mongo.save(webhook);
        } catch (DuplicateKeyException e) {
            logger.debug("Ignored duplicate webhook", e);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy