diff --git a/cave/com.raytheon.uf.viz.archive/src/com/raytheon/uf/viz/archive/data/CategoryInfo.java b/cave/com.raytheon.uf.viz.archive/src/com/raytheon/uf/viz/archive/data/CategoryInfo.java index f12e44e58a..1b4a5d7159 100644 --- a/cave/com.raytheon.uf.viz.archive/src/com/raytheon/uf/viz/archive/data/CategoryInfo.java +++ b/cave/com.raytheon.uf.viz.archive/src/com/raytheon/uf/viz/archive/data/CategoryInfo.java @@ -20,6 +20,7 @@ package com.raytheon.uf.viz.archive.data; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import com.raytheon.uf.common.archive.config.DisplayData; @@ -50,7 +51,7 @@ public class CategoryInfo { private final String categoryName; /** List of display items for the category. */ - private final List displayDataList = new ArrayList(); + private List displayDataList; /** * Constructor. @@ -63,6 +64,8 @@ public class CategoryInfo { List displayInfoList) { this.archiveName = archiveName; this.categoryName = categoryName; + this.displayDataList = new ArrayList( + displayInfoList.size()); this.displayDataList.addAll(displayInfoList); } @@ -75,6 +78,6 @@ public class CategoryInfo { } public List getDisplayDataList() { - return new ArrayList(displayDataList); + return Collections.unmodifiableList(displayDataList); } } diff --git a/cave/com.raytheon.uf.viz.archive/src/com/raytheon/uf/viz/archive/data/SizeJob.java b/cave/com.raytheon.uf.viz.archive/src/com/raytheon/uf/viz/archive/data/SizeJob.java index 86fec8c4a5..36f710c032 100644 --- a/cave/com.raytheon.uf.viz.archive/src/com/raytheon/uf/viz/archive/data/SizeJob.java +++ b/cave/com.raytheon.uf.viz.archive/src/com/raytheon/uf/viz/archive/data/SizeJob.java @@ -141,10 +141,9 @@ public class SizeJob extends Job { /** * Force getting the sizes for all data in the archive Information map. */ - public synchronized void recomputeSize() { + public void recomputeSize() { clearQueue(); - for (String archiveName : archiveInfoMap.keySet()) { - ArchiveInfo archiveInfo = archiveInfoMap.get(archiveName); + for (ArchiveInfo archiveInfo : archiveInfoMap.values()) { for (String categoryName : archiveInfo.getCategoryNames()) { CategoryInfo categoryInfo = archiveInfo.get(categoryName); for (DisplayData displayData : categoryInfo @@ -161,6 +160,8 @@ public class SizeJob extends Job { } } } + + // Forces update of current display. displaySizesComputed.set(false); if (getState() == Job.NONE) { @@ -173,14 +174,14 @@ public class SizeJob extends Job { * * @param fileInfo */ - private synchronized void requeue(DisplayData displayData) { + private void requeue(DisplayData displayData) { if (!shutdown.get()) { requeueRequest.set(false); if (displayData.isSelected()) { selectedQueue.add(displayData); backgroundQueue.remove(displayData); } else { - selectedQueue.remove(backgroundQueue); + selectedQueue.remove(displayData); backgroundQueue.add(displayData); } @@ -217,12 +218,12 @@ public class SizeJob extends Job { /** * @return archiveNames */ - public synchronized Set getArchiveNames() { + public Set getArchiveNames() { return archiveInfoMap.keySet(); } /** - * Change the selection state and if requeue size request. + * Change the selection state and requeue size request. * * @param archiveName * @param categoryName @@ -251,17 +252,18 @@ public class SizeJob extends Job { * @param archiveName * @param categoryName */ - public synchronized void changeDisplayQueue(String archiveName, - String categoryName) { + public void changeDisplayQueue(String archiveName, String categoryName) { if (!archiveName.equals(displayArchive) || !categoryName.equals(displayCategory)) { - if (getState() != Job.NONE) { - requeueRequest.set(true); - stopComputeSize.set(true); + synchronized (this) { + if (getState() != Job.NONE) { + requeueRequest.set(true); + stopComputeSize.set(true); + } + displaySizesComputed.set(false); + displayArchive = archiveName; + displayCategory = categoryName; } - displaySizesComputed.set(false); - displayArchive = archiveName; - displayCategory = categoryName; } } diff --git a/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/DisplayData.java b/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/DisplayData.java index 13a8f606c7..3d03f45163 100644 --- a/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/DisplayData.java +++ b/edexOsgi/com.raytheon.uf.common.archive/src/com/raytheon/uf/common/archive/config/DisplayData.java @@ -243,7 +243,7 @@ public class DisplayData implements Comparable { public String toString() { StringBuilder sb = new StringBuilder("DisplayData["); sb.append("displayLabel: ").append(displayLabel); - sb.append(", isSlected: ").append(selected); + sb.append(", isSlected: ").append(isSelected()); sb.append(", size: ").append(size); sb.append(", category.name: ").append(categoryConfig.getName()); sb.append(", archive.name: ").append(archiveConfig.getName())