/*
* Copyright Siemens AG, 2013-2015. Part of the SW360 Portal Project.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.eclipse.sw360.moderation.db;
import org.eclipse.sw360.components.summary.ModerationRequestSummary;
import org.eclipse.sw360.components.summary.SummaryType;
import org.eclipse.sw360.datahandler.couchdb.DatabaseConnector;
import org.eclipse.sw360.datahandler.couchdb.SummaryAwareRepository;
import org.eclipse.sw360.datahandler.thrift.moderation.ModerationRequest;
import org.ektorp.support.View;
import java.util.List;
/**
* CRUD access for the ModerationRequest class
*
* @author cedric.bodet@tngtech.com
* @author Johannes.Najjar@tngtech.com
*/
@View(name = "all", map = "function(doc) { if (doc.type == 'moderation') emit(null, doc._id) }")
public class ModerationRequestRepository extends SummaryAwareRepository<ModerationRequest> {
private static final String DOCUMENTS_VIEW = "function(doc) { " +
" if (doc.type == 'moderation') {" +
" emit(doc.documentId, doc._id);" +
" }" +
"}";
private static final String USERS_VIEW = "function(doc) { " +
" if (doc.type == 'moderation') {" +
" emit(doc.requestingUser, doc);" +
" }" +
"}";
private static final String MODERATORS_VIEW = "function(doc) {" +
" if (doc.type == 'moderation') {" +
" for(var i in doc.moderators) {" +
" emit(doc.moderators[i], doc);" +
" }" +
" }" +
"}";
public ModerationRequestRepository(DatabaseConnector db) {
super(ModerationRequest.class, db, new ModerationRequestSummary());
initStandardDesignDocument();
}
@View(name = "documents", map = DOCUMENTS_VIEW)
public List<ModerationRequest> getRequestsByDocumentId(String documentId) {
return queryView("documents", documentId);
}
@View(name = "moderators", map = MODERATORS_VIEW)
public List<ModerationRequest> getRequestsByModerator(String moderator) {
return makeSummaryFromFullDocs(SummaryType.SHORT, queryView("moderators", moderator));
}
@View(name = "users", map = USERS_VIEW)
public List<ModerationRequest> getRequestsByRequestingUser(String user) {
return makeSummaryFromFullDocs(SummaryType.SHORT, queryView("users", user));
}
}