This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository coselmar. See https://gitlab.nuiton.org/codelutin/coselmar.git commit ba5916563162056a6ee21bf374daa732aec98947 Author: Yannick Martel <martel@©odelutin.com> Date: Tue May 30 15:58:28 2017 +0200 Remove ExperimentationService --- .../services/v1/ExperimentationService.java | 191 --------------------- coselmar-rest/src/main/resources/mapping | 4 - 2 files changed, 195 deletions(-) diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/ExperimentationService.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/ExperimentationService.java deleted file mode 100644 index 3c83b41..0000000 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/ExperimentationService.java +++ /dev/null @@ -1,191 +0,0 @@ -package fr.ifremer.coselmar.services.v1; - -/* - * #%L - * Coselmar :: Rest Services - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2014 Ifremer, Code Lutin - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.base.Function; -import com.google.common.base.Preconditions; -import com.google.common.collect.Collections2; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; -import com.google.common.collect.Ordering; -import com.google.common.collect.Sets; -import com.rometools.rome.feed.rss.Cloud; -import fr.ifremer.coselmar.beans.CloudWord; -import fr.ifremer.coselmar.beans.DocumentBean; -import fr.ifremer.coselmar.beans.LinkBean; -import fr.ifremer.coselmar.beans.QuestionBean; -import fr.ifremer.coselmar.beans.QuestionExportModel; -import fr.ifremer.coselmar.beans.QuestionSearchBean; -import fr.ifremer.coselmar.beans.QuestionSearchExample; -import fr.ifremer.coselmar.beans.QuestionTreeNode; -import fr.ifremer.coselmar.beans.QuestionUserRole; -import fr.ifremer.coselmar.beans.UserBean; -import fr.ifremer.coselmar.beans.UserWebToken; -import fr.ifremer.coselmar.converter.BeanEntityConverter; -import fr.ifremer.coselmar.exceptions.CoselmarTechnicalException; -import fr.ifremer.coselmar.persistence.entity.CoselmarUser; -import fr.ifremer.coselmar.persistence.entity.CoselmarUserGroup; -import fr.ifremer.coselmar.persistence.entity.CoselmarUserRole; -import fr.ifremer.coselmar.persistence.entity.Document; -import fr.ifremer.coselmar.persistence.entity.Link; -import fr.ifremer.coselmar.persistence.entity.LinkImpl; -import fr.ifremer.coselmar.persistence.entity.Privacy; -import fr.ifremer.coselmar.persistence.entity.Question; -import fr.ifremer.coselmar.persistence.entity.QuestionImpl; -import fr.ifremer.coselmar.persistence.entity.Status; -import fr.ifremer.coselmar.services.CoselmarWebServiceSupport; -import fr.ifremer.coselmar.services.errors.InvalidCredentialException; -import fr.ifremer.coselmar.services.errors.NoResultException; -import fr.ifremer.coselmar.services.errors.UnauthorizedException; -import fr.ifremer.coselmar.services.indexation.DocumentsIndexationService; -import fr.ifremer.coselmar.services.indexation.QuestionsIndexationService; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.lucene.queryparser.classic.ParseException; -import org.debux.webmotion.server.render.Render; -import org.nuiton.csv.Export; -import org.nuiton.topia.persistence.TopiaIdFactory; -import org.nuiton.topia.persistence.TopiaNoResultException; -import org.nuiton.util.DateUtil; -import org.nuiton.util.pagination.PaginationParameter; -import org.nuiton.util.pagination.PaginationResult; - -import javax.annotation.Nullable; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * @author ymartel <martel@codelutin.com> - */ -public class ExperimentationService extends CoselmarWebServiceSupport { - - private static final Log log = LogFactory.getLog(ExperimentationService.class); - - public List<String> evaluateTopWordsGeneration() { - Question question = getQuestionDao().forStatusEquals(Status.IN_PROGRESS).findAny(); - long start = System.currentTimeMillis(); - String questionId = getShortIdFromFull(question.getTopiaId()); - System.out.println("Question : " + questionId); - List<CloudWord> luceneTopWords = getLuceneTopWords(questionId); - long stop = System.currentTimeMillis(); - String luceneTiming = String.format("Recherche par Lucene : %d termes en %d ms", luceneTopWords.size(), stop - start); - start = System.currentTimeMillis(); - List<CloudWord> postgresTopWords = getPostgresTopWords(questionId); - stop = System.currentTimeMillis(); - String pgTiming = String.format("Recherche par Postgresql : %d termes en %d ms", postgresTopWords.size(), stop - start); - - return Lists.newArrayList(luceneTiming, pgTiming); - } - - public List<CloudWord> getLuceneTopWords(String questionId) { - - // Retrieve Question - String fullQuestionId = getFullIdFromShort(Question.class, questionId); - Question question = getQuestionDao().forTopiaIdEquals(fullQuestionId).findUnique(); - - List<CloudWord> topWords = new ArrayList<>(); - - QuestionsIndexationService questionsIndexationService = getServicesContext().newService(QuestionsIndexationService.class); - DocumentsIndexationService documentsIndexationService = getServicesContext().newService(DocumentsIndexationService.class); - try { - Map<String, Long> topQuestionsTerms = questionsIndexationService.getTopQuestionsTerms(Lists.newArrayList(questionId)); - List<String> shortDocumentIds = getShortDocumentIds(question); - Map<String, Long> topDocumentsTerms = documentsIndexationService.getTopDocumentsTerms(shortDocumentIds); - for (Map.Entry<String, Long> documentTermFreq : topDocumentsTerms.entrySet()) { - String term = documentTermFreq.getKey(); - Long frequence = documentTermFreq.getValue(); - if (topQuestionsTerms.containsKey(term)) { - topQuestionsTerms.put(term, topQuestionsTerms.get(term) + frequence); - } else { - topQuestionsTerms.put(term, frequence); - } - } - - for (Map.Entry<String, Long> termFreq : topQuestionsTerms.entrySet()) { - String term = termFreq.getKey(); - CloudWord cloudWord = new CloudWord(term, termFreq.getValue()); - topWords.add(cloudWord); - } - - } catch (IOException e) { - if (log.isErrorEnabled()) { - log.error("Unable to index new question", e); - } - } - - ImmutableList<CloudWord> cloudWords = ImmutableList.copyOf(Ordering.natural().onResultOf(new Function<CloudWord, Long>() { - public Long apply(CloudWord input) { - return input.getWeight(); - } - }).reverse().sortedCopy(topWords)); - - return cloudWords; - } - - public List<CloudWord> getPostgresTopWords(String questionId) { - - List<CloudWord> topWords; - if (getCoselmarServicesConfig().isPostgresqlDatabase()) { - try { - topWords = getQuestionDao().findTopWords(getFullIdFromShort(Question.class, questionId)); - } catch (TopiaNoResultException e) { - if (log.isErrorEnabled()) { - log.error("Try to find top words for non existing questionId" + questionId, e); - } - topWords = Collections.EMPTY_LIST; - } - } else { - topWords = Collections.EMPTY_LIST; - } - - return topWords; - } - - //////////////////////////////////////////////////////////////////////////// - /////////////////////// Internal Parts ///////////////////////////// - //////////////////////////////////////////////////////////////////////////// - - protected List<String> getShortDocumentIds(Question question) { - List<String> shortDocumentIds = new ArrayList<>(); - for (String relatedDocumentId : question.getRelatedDocumentsTopiaIds()) { - String shortIdFromFull = getShortIdFromFull(relatedDocumentId); - shortDocumentIds.add(shortIdFromFull); - } - for (String closingDocumentId : question.getClosingDocumentsTopiaIds()) { - String shortIdFromFull = getShortIdFromFull(closingDocumentId); - shortDocumentIds.add(shortIdFromFull); - } - return shortDocumentIds; - } -} diff --git a/coselmar-rest/src/main/resources/mapping b/coselmar-rest/src/main/resources/mapping index 27e8e5b..b498a97 100644 --- a/coselmar-rest/src/main/resources/mapping +++ b/coselmar-rest/src/main/resources/mapping @@ -76,10 +76,6 @@ GET /v1/questions/{questionId}/topwords QuestionsWebService.getTopWords GET /v1/general/topwords GeneralWebService.getTopWords -GET /v1/experimentation/topwords ExperimentationService.evaluateTopWordsGeneration -GET /v1/experimentation/lucenetopwords/{questionId} ExperimentationService.getLuceneTopWords -GET /v1/experimentation/pgtopwords/{questionId} ExperimentationService.getPostgresTopWords - # Admin API POST /v1/admin/lucene/index AdminWebService.refreshLuceneIndex -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.