Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
DeleteModelCommand.java 2.24 KiB
package de.vipra.cmd.option;

import java.io.File;
import java.util.Arrays;

import org.bson.types.ObjectId;

import de.vipra.util.Config;
import de.vipra.util.ConsoleUtils;
import de.vipra.util.model.ArticleFull;
import de.vipra.util.model.SequenceFull;
import de.vipra.util.model.TextEntityFull;
import de.vipra.util.model.TopicFull;
import de.vipra.util.model.TopicModel;
import de.vipra.util.model.WindowFull;
import de.vipra.util.model.WordFull;
import de.vipra.util.service.MongoService;
import de.vipra.util.service.Service.QueryBuilder;

public class DeleteModelCommand implements Command {

	private final String[] names;

	public DeleteModelCommand(final String[] names) {
		this.names = names;
	}

	@Override
	public void run() throws Exception {
		final Config config = Config.getConfig();
		final MongoService<TopicModel, String> dbTopicModels = MongoService.getDatabaseService(config, TopicModel.class);
		final MongoService<ArticleFull, ObjectId> dbArticles = MongoService.getDatabaseService(config, ArticleFull.class);
		final MongoService<TopicFull, ObjectId> dbTopics = MongoService.getDatabaseService(config, TopicFull.class);
		final MongoService<WindowFull, Integer> dbWindows = MongoService.getDatabaseService(config, WindowFull.class);
		final MongoService<SequenceFull, ObjectId> dbSequences = MongoService.getDatabaseService(config, SequenceFull.class);
		final MongoService<WordFull, String> dbWords = MongoService.getDatabaseService(config, WordFull.class);
		final MongoService<TextEntityFull, String> dbEntities = MongoService.getDatabaseService(config, TextEntityFull.class);

		for (final String name : names) {
			final File modelDir = new File(config.getDataDirectory(), name);
			if (modelDir.exists()) {
				org.apache.commons.io.FileUtils.deleteDirectory(modelDir);
				ConsoleUtils.info("model deleted: " + name);
			}
		}

		dbTopicModels.deleteMultiple(Arrays.asList(names));

		for (final String name : names) {
			final QueryBuilder builder = QueryBuilder.builder().criteria("topicModel", new TopicModel(name));
			dbArticles.deleteMultiple(builder);
			dbTopics.deleteMultiple(builder);
			dbWindows.deleteMultiple(builder);
			dbSequences.deleteMultiple(builder);
			dbWords.deleteMultiple(builder);
			dbEntities.deleteMultiple(builder);
		}
	}

}