load columns from search dto

This commit is contained in:
Greg DiCristofaro 2021-10-07 13:01:25 -04:00
parent 30f8b2fc4e
commit 02e921bf11
2 changed files with 29 additions and 4 deletions

View File

@ -41,6 +41,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.prefs.PreferenceChangeEvent; import java.util.prefs.PreferenceChangeEvent;
import java.util.prefs.Preferences; import java.util.prefs.Preferences;
import java.util.stream.Collectors;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.JTable; import javax.swing.JTable;
@ -86,6 +87,7 @@ import org.sleuthkit.autopsy.datamodel.BaseChildFactory;
import org.sleuthkit.autopsy.datamodel.BaseChildFactory.PageChangeEvent; import org.sleuthkit.autopsy.datamodel.BaseChildFactory.PageChangeEvent;
import org.sleuthkit.autopsy.datamodel.BaseChildFactory.PageCountChangeEvent; import org.sleuthkit.autopsy.datamodel.BaseChildFactory.PageCountChangeEvent;
import org.sleuthkit.autopsy.datamodel.BaseChildFactory.PageSizeChangeEvent; import org.sleuthkit.autopsy.datamodel.BaseChildFactory.PageSizeChangeEvent;
import org.sleuthkit.autopsy.datamodel.SearchResultTableNode;
import org.sleuthkit.datamodel.Score.Significance; import org.sleuthkit.datamodel.Score.Significance;
/** /**
@ -258,7 +260,7 @@ public class DataResultViewerTable extends AbstractDataResultViewer {
nodeNameToPagingSupportMap.values().forEach((ps) -> { nodeNameToPagingSupportMap.values().forEach((ps) -> {
ps.postPageSizeChangeEvent(); ps.postPageSizeChangeEvent();
}); });
setCursor(null); setCursor(null);
} }
}); });
@ -446,6 +448,7 @@ public class DataResultViewerTable extends AbstractDataResultViewer {
((DefaultOutlineModel) outline.getOutlineModel()).setNodesColumnLabel(firstProp.getDisplayName()); ((DefaultOutlineModel) outline.getOutlineModel()).setNodesColumnLabel(firstProp.getDisplayName());
} }
/* /*
* Load column sorting information from preferences file and apply it to * Load column sorting information from preferences file and apply it to
* columns. * columns.
@ -748,6 +751,19 @@ public class DataResultViewerTable extends AbstractDataResultViewer {
*/ */
private synchronized List<Node.Property<?>> loadColumnOrder() { private synchronized List<Node.Property<?>> loadColumnOrder() {
if (rootNode instanceof SearchResultTableNode) {
return ((SearchResultTableNode<?, ?>) rootNode).getColumnKeys().stream()
.map(columnKey -> {
return new NodeProperty<>(
columnKey.getFieldName(),
columnKey.getDisplayName(),
columnKey.getDescription(),
""
);
})
.collect(Collectors.toList());
}
List<Property<?>> props = ResultViewerPersistence.getAllChildProperties(rootNode, 100); List<Property<?>> props = ResultViewerPersistence.getAllChildProperties(rootNode, 100);
// If node is not table filter node, use default order for columns // If node is not table filter node, use default order for columns

View File

@ -5,11 +5,14 @@
*/ */
package org.sleuthkit.autopsy.datamodel; package org.sleuthkit.autopsy.datamodel;
import java.util.Collections;
import java.util.List;
import org.openide.nodes.AbstractNode; import org.openide.nodes.AbstractNode;
import org.openide.nodes.Children; import org.openide.nodes.Children;
import org.openide.nodes.Sheet; import org.openide.nodes.Sheet;
import org.openide.util.NbBundle; import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.datamodel.SearchResultChildFactory.NodeCreator; import org.sleuthkit.autopsy.datamodel.SearchResultChildFactory.NodeCreator;
import org.sleuthkit.autopsy.datamodel.ThreePanelDAO.ColumnKey;
import org.sleuthkit.autopsy.datamodel.ThreePanelDAO.RowResultDTO; import org.sleuthkit.autopsy.datamodel.ThreePanelDAO.RowResultDTO;
import org.sleuthkit.autopsy.datamodel.ThreePanelDAO.SearchResultsDTO; import org.sleuthkit.autopsy.datamodel.ThreePanelDAO.SearchResultsDTO;
@ -20,15 +23,17 @@ import org.sleuthkit.autopsy.datamodel.ThreePanelDAO.SearchResultsDTO;
public class SearchResultTableNode<T extends SearchResultsDTO<S>, S extends RowResultDTO> extends AbstractNode { public class SearchResultTableNode<T extends SearchResultsDTO<S>, S extends RowResultDTO> extends AbstractNode {
private final SearchResultChildFactory<T, S> factory; private final SearchResultChildFactory<T, S> factory;
private final List<ColumnKey> columnKeys;
public SearchResultTableNode(NodeCreator<T, S> nodeCreator, T initialResults) { public SearchResultTableNode(NodeCreator<T, S> nodeCreator, T initialResults) {
this(initialResults, new SearchResultChildFactory<>(nodeCreator, initialResults)); this(initialResults, new SearchResultChildFactory<>(nodeCreator, initialResults), initialResults.getColumns());
} }
private SearchResultTableNode(SearchResultsDTO<S> initialResults, SearchResultChildFactory<T, S> factory) { private SearchResultTableNode(SearchResultsDTO<S> initialResults, SearchResultChildFactory<T, S> factory, List<ColumnKey> columnKeys) {
super(Children.create(factory, true)); super(Children.create(factory, true));
this.factory = factory; this.factory = factory;
this.columnKeys = columnKeys;
setName(initialResults.getTypeId()); setName(initialResults.getTypeId());
setDisplayName(initialResults.getDisplayName()); setDisplayName(initialResults.getDisplayName());
@ -57,4 +62,8 @@ public class SearchResultTableNode<T extends SearchResultsDTO<S>, S extends RowR
return sheet; return sheet;
} }
public List<ColumnKey> getColumnKeys() {
return Collections.unmodifiableList(columnKeys);
}
} }