From 860a6342cf8088e23f5e3917bd652c01c536b8d8 Mon Sep 17 00:00:00 2001 From: Roberto E. Escobar Date: Mon, 8 Sep 2014 13:10:37 -0700 Subject: bug[ats_ATS103637]: Initialize Activity Log Types on server side Change-Id: Ibaa1bf5aa8e3613bb3ab7635fe4dd4fac68df2e4 --- .../org/eclipse/osee/activity/ActivityStorage.java | 2 ++ .../osee/activity/internal/ActivityLogImpl.java | 23 ++++++++++++++++++++++ .../activity/internal/DatabaseActivityStorage.java | 6 ++++++ 3 files changed, 31 insertions(+) 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 26da8cc848b..495c2557ee7 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 @@ public interface ActivityStorage { void addActivityTypes(ActivityType... types); + void addActivityTypes(Iterable 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 696702c9a03..a7a77a70351 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.ActivityConstants.DEFAULT_ACTIVITY_LOGGE 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 @@ public class ActivityLogImpl implements ActivityLog, Callable { 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 @@ public class ActivityLogImpl implements ActivityLog, Callable { @Override public Void call() { + if (!initialized.getAndSet(true)) { + initialize(); + } if (!newEntities.isEmpty()) { try { storage.addEntries(new DrainingIterator(newEntities.values().iterator())); @@ -283,6 +289,23 @@ public class ActivityLogImpl implements ActivityLog, Callable { } } + private void initialize() { + final Map types = new HashMap(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 5057e7c9a05..0b40d590402 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 @@ public class DatabaseActivityStorage implements ActivityStorage { @Override public void addActivityTypes(ActivityType... types) { + addActivityTypes(Arrays.asList(types)); + } + + @Override + public void addActivityTypes(Iterable types) { for (ActivityType type : types) { addLogType(type); } -- cgit v1.2.3