-
Eike Cochu authored
updated import option exception handling
Eike Cochu authoredupdated import option exception handling
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
DeleteCommand.java 2.21 KiB
package de.vipra.cmd.option;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.vipra.cmd.ExecutionException;
import de.vipra.cmd.model.Article;
import de.vipra.util.Config;
import de.vipra.util.ConfigException;
import de.vipra.util.Constants;
import de.vipra.util.ex.DatabaseException;
import de.vipra.util.ex.FilebaseException;
import de.vipra.util.service.DatabaseService;
import de.vipra.util.service.FilebaseService;
public class DeleteCommand implements Command {
public static final Logger log = LoggerFactory.getLogger(DeleteCommand.class);
public static final Logger out = LoggerFactory.getLogger("shellout");
private ArrayList<String> ids = new ArrayList<>();
private Config config;
private DatabaseService<Article> dbArticles;
private FilebaseService<Article> fbArticles;
DeleteCommand() {}
public DeleteCommand(String[] strings) {
addIds(strings);
}
private void addIds(String[] strings) {
for (String str : strings) {
if (str.contains(File.pathSeparator)) {
String[] parts = str.split(File.pathSeparator);
str = parts[parts.length - 1];
}
ids.add(str);
}
}
void deleteEntry(String id) throws ExecutionException {
ArrayList<Exception> errors = new ArrayList<>();
try {
// 1. delete mongodb entry
dbArticles.deleteSingle(id);
} catch (DatabaseException e) {
errors.add(e);
}
try {
// 2. delete file
fbArticles.deleteSingle(id);
} catch (FilebaseException e) {
errors.add(e);
}
// 3. delete elasticsearch index entry
// TODO implement
if (errors.size() > 0) {
throw new ExecutionException(errors);
}
}
@Override
public void run() throws ExecutionException {
try {
config = new Config();
dbArticles = config.getDatabaseService(Constants.Collection.ARTICLES, Article.class);
fbArticles = config.getFilebaseService(Article.class);
} catch (IOException | ConfigException e) {
throw new ExecutionException(e);
}
List<Exception> ex = new ArrayList<>();
for (String id : ids) {
try {
deleteEntry(id);
} catch (Exception e) {
ex.add(e);
}
}
if (ex.size() > 0) {
throw new ExecutionException(ex);
}
}
}