From 5b6fda29f95bf10c3ab0a182beb48baf3da27103 Mon Sep 17 00:00:00 2001
From: Eike Cochu <eike@cochu.com>
Date: Thu, 31 Mar 2016 02:10:52 +0200
Subject: [PATCH] updated cmd, can now concatenate more commands

updated cmd, scanning for selected models when needed instead of at beginning
added last generated date to topic models
---
 .../java/de/vipra/cmd/CommandLineOptions.java | 19 ++++++++-----------
 .../main/java/de/vipra/cmd/lda/Analyzer.java  |  2 ++
 vipra-ui/app/index.html                       |  1 +
 .../de/vipra/util/model/TopicModelFull.java   | 11 +++++++++++
 4 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/CommandLineOptions.java b/vipra-cmd/src/main/java/de/vipra/cmd/CommandLineOptions.java
index f89aa19f..bdf43b15 100644
--- a/vipra-cmd/src/main/java/de/vipra/cmd/CommandLineOptions.java
+++ b/vipra-cmd/src/main/java/de/vipra/cmd/CommandLineOptions.java
@@ -40,7 +40,6 @@ public class CommandLineOptions {
 
 	public void parse(final String[] args) throws ParseException {
 		cmd = new DefaultParser().parse(options, args);
-		checkDependencies();
 	}
 
 	public boolean hasOption(final Option opt) {
@@ -149,18 +148,16 @@ public class CommandLineOptions {
 	}
 
 	public String[] selectedModels() {
+		String[] models = null;
 		if (isAll())
-			return new String[] { "all" };
-		else
-			return getOptionValues(SELECT);
-	}
+			models = new String[] { "all" };
+		else if (isSelect())
+			models = getOptionValues(SELECT);
+
+		if (models != null && models.length > 0)
+			return models;
 
-	private void checkDependencies() throws ParseException {
-		if (isImport() || isModel() || isIndex() || isReread()) {
-			// these options require at least one selected model
-			if (!isSelect() && !isAll())
-				throw new ParseException("select at least one model");
-		}
+		throw new RuntimeException("select at least one model");
 	}
 
 }
diff --git a/vipra-cmd/src/main/java/de/vipra/cmd/lda/Analyzer.java b/vipra-cmd/src/main/java/de/vipra/cmd/lda/Analyzer.java
index 536eb3f5..8f24a846 100644
--- a/vipra-cmd/src/main/java/de/vipra/cmd/lda/Analyzer.java
+++ b/vipra-cmd/src/main/java/de/vipra/cmd/lda/Analyzer.java
@@ -9,6 +9,7 @@ import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.Date;
 import java.util.List;
 
 import org.bson.types.ObjectId;
@@ -425,6 +426,7 @@ public class Analyzer {
 			}
 		}
 
+		topicModel.setLastGenerated(new Date());
 		dbTopicModels.replaceSingle(topicModel);
 	}
 
diff --git a/vipra-ui/app/index.html b/vipra-ui/app/index.html
index 3e9d161a..c23f7998 100644
--- a/vipra-ui/app/index.html
+++ b/vipra-ui/app/index.html
@@ -102,6 +102,7 @@
             <button type="button" class="list-group-item topic-model" ng-repeat="topicModel in topicModels" ng-click="changeTopicModel(topicModel)" ng-class="{'active selected-model':rootModels.topicModel.id===topicModel.id}">
               <span class="badge" ng-bind="topicModel.articleCount" ng-show="topicModel.articleCount" ng-attr-title="{{topicModel.articleCount + ' article(s)'}}"></span>
               <span class="badge" ng-bind="topicModel.topicCount" ng-show="topicModel.topicCount" ng-attr-title="{{topicModel.topicCount + ' topic(s)'}}"></span>
+              <span class="badge" ng-if="!topicModel.lastGenerated" title="Model was never generated">Non-generated</span>
               <span ng-bind="topicModel.id"></span>
               <br ng-show="topicModel.modelConfig.description">
               <small ng-bind="topicModel.modelConfig.description"></small>
diff --git a/vipra-util/src/main/java/de/vipra/util/model/TopicModelFull.java b/vipra-util/src/main/java/de/vipra/util/model/TopicModelFull.java
index 2dbde8fa..308336f4 100644
--- a/vipra-util/src/main/java/de/vipra/util/model/TopicModelFull.java
+++ b/vipra-util/src/main/java/de/vipra/util/model/TopicModelFull.java
@@ -1,6 +1,7 @@
 package de.vipra.util.model;
 
 import java.io.Serializable;
+import java.util.Date;
 
 import org.mongodb.morphia.annotations.Embedded;
 import org.mongodb.morphia.annotations.Entity;
@@ -26,6 +27,8 @@ public class TopicModelFull implements Model<String>, Comparable<TopicModelFull>
 
 	private int windowCount;
 
+	private Date lastGenerated;
+
 	@Embedded
 	@QueryIgnore(multi = true)
 	private TopicModelConfig modelConfig;
@@ -91,6 +94,14 @@ public class TopicModelFull implements Model<String>, Comparable<TopicModelFull>
 		this.modelConfig = modelConfig;
 	}
 
+	public Date getLastGenerated() {
+		return lastGenerated;
+	}
+
+	public void setLastGenerated(Date lastGenerated) {
+		this.lastGenerated = lastGenerated;
+	}
+
 	@Override
 	public int compareTo(final TopicModelFull o) {
 		return id.compareTo(o.getId());
-- 
GitLab