Closes #210: choose a tag applied on documents

This commit is contained in:
Benjamin Gamard 2018-03-28 16:48:16 +02:00
parent 83b065180f
commit 0409c2ef79
4 changed files with 61 additions and 5 deletions

View File

@ -6,6 +6,7 @@ import com.sismics.docs.core.dao.jpa.DocumentDao;
import com.sismics.docs.core.dao.lucene.LuceneDao; import com.sismics.docs.core.dao.lucene.LuceneDao;
import com.sismics.docs.core.event.DocumentUpdatedAsyncEvent; import com.sismics.docs.core.event.DocumentUpdatedAsyncEvent;
import com.sismics.docs.core.model.jpa.Contributor; import com.sismics.docs.core.model.jpa.Contributor;
import com.sismics.docs.core.model.jpa.Document;
import com.sismics.docs.core.util.TransactionUtil; import com.sismics.docs.core.util.TransactionUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -38,7 +39,12 @@ public class DocumentUpdatedAsyncListener {
// Update Lucene index // Update Lucene index
DocumentDao documentDao = new DocumentDao(); DocumentDao documentDao = new DocumentDao();
LuceneDao luceneDao = new LuceneDao(); LuceneDao luceneDao = new LuceneDao();
luceneDao.updateDocument(documentDao.getById(event.getDocumentId())); Document document = documentDao.getById(event.getDocumentId());
if (document == null) {
// Document deleted since event fired
return;
}
luceneDao.updateDocument(document);
// Update contributors list // Update contributors list
ContributorDao contributorDao = new ContributorDao(); ContributorDao contributorDao = new ContributorDao();

View File

@ -6,6 +6,7 @@ const inquirer = require('inquirer');
const preferences = require('preferences'); const preferences = require('preferences');
const fs = require('fs'); const fs = require('fs');
const argv = require('minimist')(process.argv); const argv = require('minimist')(process.argv);
const _ = require('underscore');
const request = require('request').defaults({ const request = require('request').defaults({
jar: true jar: true
}); });
@ -140,13 +141,54 @@ const askPath = () => {
recursive(answers.path, function (error, files) { recursive(answers.path, function (error, files) {
spinner.succeed(files.length + ' files in this directory'); spinner.succeed(files.length + ' files in this directory');
askDaemon(); askTag();
}); });
}); });
}); });
}); });
}; };
// Ask for the tag to add
const askTag = () => {
console.log('');
// Load tags
const spinner = ora({
text: 'Loading tags',
spinner: 'flips'
}).start();
request.get({
url: prefs.importer.baseUrl + '/api/tag/list',
}, function (error, response, body) {
if (error || !response || response.statusCode !== 200) {
spinner.fail('Error loading tags');
askTag();
return;
}
spinner.succeed('Tags loaded');
const tags = JSON.parse(body).tags;
const defaultTag = _.findWhere(tags, { id: prefs.importer.tag });
const defaultTagName = defaultTag ? defaultTag.name : 'No tag';
inquirer.prompt([
{
type: 'list',
name: 'tag',
message: 'Which tag to add on imported documents?',
default: defaultTagName,
choices: [ 'No tag' ].concat(_.pluck(tags, 'name'))
}
]).then(answers => {
// Save tag
prefs.importer.tag = answers.tag === 'No tag' ?
'' : _.findWhere(tags, { name: answers.tag }).id;
askDaemon();
});
});
};
// Ask for daemon mode // Ask for daemon mode
const askDaemon = () => { const askDaemon = () => {
console.log(''); console.log('');
@ -232,7 +274,8 @@ const importFile = (file, remove, resolve) => {
url: prefs.importer.baseUrl + '/api/document', url: prefs.importer.baseUrl + '/api/document',
form: { form: {
title: file.replace(/^.*[\\\/]/, ''), title: file.replace(/^.*[\\\/]/, ''),
language: 'eng' language: 'eng',
tags: prefs.importer.tag === '' ? undefined : prefs.importer.tag
} }
}, function (error, response, body) { }, function (error, response, body) {
if (error || !response || response.statusCode !== 200) { if (error || !response || response.statusCode !== 200) {
@ -266,8 +309,9 @@ const importFile = (file, remove, resolve) => {
if (argv.hasOwnProperty('d')) { if (argv.hasOwnProperty('d')) {
console.log('Starting in quiet mode with the following configuration:\n' + console.log('Starting in quiet mode with the following configuration:\n' +
'Base URL: ' + prefs.importer.baseUrl + '\n' + 'Base URL: ' + prefs.importer.baseUrl + '\n' +
'Username: ' + prefs.importer.username + '\n' + 'Username: ' + prefs.importer.username + '\n' +
'Password: ***********\n' + 'Password: ***********\n' +
'Tag: ' + prefs.importer.tag + '\n' +
'Daemon mode: ' + prefs.importer.daemon); 'Daemon mode: ' + prefs.importer.daemon);
start(); start();
} else { } else {

View File

@ -738,6 +738,11 @@
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
"optional": true "optional": true
}, },
"underscore": {
"version": "1.8.3",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
"integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI="
},
"uuid": { "uuid": {
"version": "3.2.1", "version": "3.2.1",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz",

View File

@ -22,6 +22,7 @@
"ora": "^2.0.0", "ora": "^2.0.0",
"preferences": "^1.0.2", "preferences": "^1.0.2",
"recursive-readdir": "^2.2.2", "recursive-readdir": "^2.2.2",
"request": "^2.83.0" "request": "^2.83.0",
"underscore": "^1.8.3"
} }
} }