bug[ats_ATS103637]: Initialize Activity Log Types on server side
Change-Id: Ibaa1bf5aa8e3613bb3ab7635fe4dd4fac68df2e4
diff --git a/plugins/org.eclipse.osee.activity/src/org/eclipse/osee/activity/ActivityStorage.java b/plugins/org.eclipse.osee.activity/src/org/eclipse/osee/activity/ActivityStorage.java
index 26da8cc..495c255 100644
--- a/plugins/org.eclipse.osee.activity/src/org/eclipse/osee/activity/ActivityStorage.java
+++ b/plugins/org.eclipse.osee.activity/src/org/eclipse/osee/activity/ActivityStorage.java
@@ -27,6 +27,8 @@
void addActivityTypes(ActivityType... types);
+ void addActivityTypes(Iterable<ActivityType> types);
+
void selectTypes(ActivityTypeDataHandler handler);
void selectType(Long typeId, ActivityTypeDataHandler handler);
diff --git a/plugins/org.eclipse.osee.activity/src/org/eclipse/osee/activity/internal/ActivityLogImpl.java b/plugins/org.eclipse.osee.activity/src/org/eclipse/osee/activity/internal/ActivityLogImpl.java
index 696702c..a7a77a7 100644
--- a/plugins/org.eclipse.osee.activity/src/org/eclipse/osee/activity/internal/ActivityLogImpl.java
+++ b/plugins/org.eclipse.osee.activity/src/org/eclipse/osee/activity/internal/ActivityLogImpl.java
@@ -20,9 +20,11 @@
import static org.eclipse.osee.activity.internal.ActivityUtil.captureStackTrace;
import static org.eclipse.osee.activity.internal.ActivityUtil.get;
import static org.eclipse.osee.framework.database.IOseeDatabaseService.MAX_VARCHAR_LENGTH;
+import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.eclipse.osee.activity.ActivityStorage;
import org.eclipse.osee.activity.api.Activity;
import org.eclipse.osee.activity.api.ActivityLog;
@@ -67,6 +69,7 @@
private ExecutorAdmin executorAdmin;
private ActivityStorage storage;
+ private final AtomicBoolean initialized = new AtomicBoolean(false);
private ActivityMonitorImpl activityMonitor;
private volatile long freshnessMillis;
private volatile int exceptionLineCount;
@@ -253,6 +256,9 @@
@Override
public Void call() {
+ if (!initialized.getAndSet(true)) {
+ initialize();
+ }
if (!newEntities.isEmpty()) {
try {
storage.addEntries(new DrainingIterator<Object[]>(newEntities.values().iterator()));
@@ -283,6 +289,23 @@
}
}
+ private void initialize() {
+ final Map<Long, ActivityType> types = new HashMap<Long, ActivityType>(4);
+ for (Activity type : Activity.values()) {
+ types.put(type.getTypeId(), type);
+ }
+ storage.selectTypes(new ActivityTypeDataHandler() {
+
+ @Override
+ public void onData(Long typeId, Long logLevel, String module, String messageFormat) {
+ types.remove(typeId);
+ }
+ });
+ if (!types.isEmpty()) {
+ storage.addActivityTypes(types.values());
+ }
+ }
+
@Override
public void completeEntry(Long entryId) {
updateEntry(entryId, COMPLETE_STATUS);
diff --git a/plugins/org.eclipse.osee.activity/src/org/eclipse/osee/activity/internal/DatabaseActivityStorage.java b/plugins/org.eclipse.osee.activity/src/org/eclipse/osee/activity/internal/DatabaseActivityStorage.java
index 5057e7c..0b40d59 100644
--- a/plugins/org.eclipse.osee.activity/src/org/eclipse/osee/activity/internal/DatabaseActivityStorage.java
+++ b/plugins/org.eclipse.osee.activity/src/org/eclipse/osee/activity/internal/DatabaseActivityStorage.java
@@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.osee.activity.internal;
+import java.util.Arrays;
import org.eclipse.osee.activity.ActivityStorage;
import org.eclipse.osee.activity.api.ActivityLog.ActivityDataHandler;
import org.eclipse.osee.activity.api.ActivityLog.ActivityTypeDataHandler;
@@ -116,6 +117,11 @@
@Override
public void addActivityTypes(ActivityType... types) {
+ addActivityTypes(Arrays.asList(types));
+ }
+
+ @Override
+ public void addActivityTypes(Iterable<ActivityType> types) {
for (ActivityType type : types) {
addLogType(type);
}