mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-19 11:07:43 +00:00
beginning to use with container panel
This commit is contained in:
parent
cacd846888
commit
d3e5dcc1d5
@ -30,10 +30,16 @@ import javax.swing.table.DefaultTableModel;
|
|||||||
import org.openide.util.NbBundle.Messages;
|
import org.openide.util.NbBundle.Messages;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.datasourcesummary.datamodel.ContainerSummary;
|
import org.sleuthkit.autopsy.datasourcesummary.datamodel.ContainerSummary;
|
||||||
|
import org.sleuthkit.autopsy.datasourcesummary.datamodel.PastCasesSummary;
|
||||||
|
import static org.sleuthkit.autopsy.datasourcesummary.ui.BaseDataSourceSummaryPanel.getFetchResult;
|
||||||
|
import static org.sleuthkit.autopsy.datasourcesummary.ui.BaseDataSourceSummaryPanel.getTableExport;
|
||||||
import org.sleuthkit.autopsy.datasourcesummary.uiutils.DataFetchResult.ResultType;
|
import org.sleuthkit.autopsy.datasourcesummary.uiutils.DataFetchResult.ResultType;
|
||||||
import org.sleuthkit.autopsy.datasourcesummary.uiutils.DataFetchWorker.DataFetchComponents;
|
import org.sleuthkit.autopsy.datasourcesummary.uiutils.DataFetchWorker.DataFetchComponents;
|
||||||
|
import org.sleuthkit.autopsy.datasourcesummary.uiutils.DataFetcher;
|
||||||
import org.sleuthkit.autopsy.datasourcesummary.uiutils.DefaultUpdateGovernor;
|
import org.sleuthkit.autopsy.datasourcesummary.uiutils.DefaultUpdateGovernor;
|
||||||
import org.sleuthkit.autopsy.datasourcesummary.uiutils.ExcelExport;
|
import org.sleuthkit.autopsy.datasourcesummary.uiutils.ExcelExport;
|
||||||
|
import org.sleuthkit.autopsy.datasourcesummary.uiutils.ExcelSpecialFormatExport;
|
||||||
|
import org.sleuthkit.autopsy.datasourcesummary.uiutils.ExcelSpecialFormatExport.KeyValueItemExportable;
|
||||||
import org.sleuthkit.autopsy.datasourcesummary.uiutils.UpdateGovernor;
|
import org.sleuthkit.autopsy.datasourcesummary.uiutils.UpdateGovernor;
|
||||||
import org.sleuthkit.datamodel.DataSource;
|
import org.sleuthkit.datamodel.DataSource;
|
||||||
import org.sleuthkit.datamodel.Image;
|
import org.sleuthkit.datamodel.Image;
|
||||||
@ -42,6 +48,9 @@ import org.sleuthkit.datamodel.TskCoreException;
|
|||||||
/**
|
/**
|
||||||
* Panel to display additional details associated with a specific DataSource
|
* Panel to display additional details associated with a specific DataSource
|
||||||
*/
|
*/
|
||||||
|
@Messages({
|
||||||
|
"ContainerPanel_tabName=Container"
|
||||||
|
})
|
||||||
class ContainerPanel extends BaseDataSourceSummaryPanel {
|
class ContainerPanel extends BaseDataSourceSummaryPanel {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -103,6 +112,7 @@ class ContainerPanel extends BaseDataSourceSummaryPanel {
|
|||||||
private static final Logger logger = Logger.getLogger(ContainerPanel.class.getName());
|
private static final Logger logger = Logger.getLogger(ContainerPanel.class.getName());
|
||||||
|
|
||||||
private final List<DataFetchComponents<DataSource, ?>> dataFetchComponents;
|
private final List<DataFetchComponents<DataSource, ?>> dataFetchComponents;
|
||||||
|
private final DataFetcher<DataSource, ContainerPanelData> containerDataFetcher;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new form ContainerPanel.
|
* Creates a new form ContainerPanel.
|
||||||
@ -117,14 +127,16 @@ class ContainerPanel extends BaseDataSourceSummaryPanel {
|
|||||||
ContainerPanel(ContainerSummary containerSummary) {
|
ContainerPanel(ContainerSummary containerSummary) {
|
||||||
super(containerSummary, CONTAINER_UPDATES);
|
super(containerSummary, CONTAINER_UPDATES);
|
||||||
|
|
||||||
|
containerDataFetcher = (dataSource) -> {
|
||||||
|
return new ContainerPanelData(
|
||||||
|
dataSource,
|
||||||
|
containerSummary.getSizeOfUnallocatedFiles(dataSource)
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
dataFetchComponents = Arrays.asList(
|
dataFetchComponents = Arrays.asList(
|
||||||
new DataFetchComponents<>(
|
new DataFetchComponents<>(
|
||||||
(dataSource) -> {
|
containerDataFetcher,
|
||||||
return new ContainerPanelData(
|
|
||||||
dataSource,
|
|
||||||
containerSummary.getSizeOfUnallocatedFiles(dataSource)
|
|
||||||
);
|
|
||||||
},
|
|
||||||
(result) -> {
|
(result) -> {
|
||||||
if (result != null && result.getResultType() == ResultType.SUCCESS) {
|
if (result != null && result.getResultType() == ResultType.SUCCESS) {
|
||||||
ContainerPanelData data = result.getData();
|
ContainerPanelData data = result.getData();
|
||||||
@ -279,7 +291,21 @@ class ContainerPanel extends BaseDataSourceSummaryPanel {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
List<ExcelExport.ExcelSheetExport> getExports(DataSource ds) {
|
List<ExcelExport.ExcelSheetExport> getExports(DataSource ds) {
|
||||||
return Collections.emptyList();
|
ContainerPanelData result = getFetchResult(containerDataFetcher, "Container sheets", ds);
|
||||||
|
if (ds == null || result == null) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
return Arrays.asList(
|
||||||
|
new ExcelSpecialFormatExport(Bundle.ContainerPanel_tabName(), Arrays.asList(
|
||||||
|
new KeyValueItemExportable(Bundle.ContainerPanel_export_displayName(), ds.getName()),
|
||||||
|
new KeyValueItemExportable(Bundle.ContainerPanel_export_originalName(), ds.getName()),
|
||||||
|
new KeyValueItemExportable(Bundle.ContainerPanel_export_deviceId(), ds.getDeviceId()),
|
||||||
|
new KeyValueItemExportable(Bundle.ContainerPanel_export_timeZone(), ds.getTimeZone()),
|
||||||
|
new KeyValueItemExportable(Bundle.ContainerPanel_export_acquisitionDetails(), null),
|
||||||
|
// ...acquisition details...
|
||||||
|
))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,12 +28,14 @@ import org.apache.poi.ss.usermodel.CellStyle;
|
|||||||
import org.apache.poi.ss.usermodel.Row;
|
import org.apache.poi.ss.usermodel.Row;
|
||||||
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
import org.sleuthkit.autopsy.datasourcesummary.uiutils.ExcelExport.ExcelExportException;
|
import org.sleuthkit.autopsy.datasourcesummary.uiutils.ExcelExport.ExcelExportException;
|
||||||
|
import org.sleuthkit.autopsy.datasourcesummary.uiutils.ExcelExport.ExcelSheetExport;
|
||||||
|
import org.sleuthkit.autopsy.datasourcesummary.uiutils.ExcelSpecialFormatExport.ExcelItemExportable;
|
||||||
import org.sleuthkit.autopsy.datasourcesummary.uiutils.ExcelTableExport.ExcelCellModel;
|
import org.sleuthkit.autopsy.datasourcesummary.uiutils.ExcelTableExport.ExcelCellModel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An excel sheet export of table data.
|
* An excel sheet export of table data.
|
||||||
*/
|
*/
|
||||||
public class ExcelTableExport<T, C extends ExcelCellModel> implements ExcelExport.ExcelSheetExport {
|
public class ExcelTableExport<T, C extends ExcelCellModel> implements ExcelSheetExport, ExcelItemExportable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Basic interface for a cell model.
|
* Basic interface for a cell model.
|
||||||
@ -50,6 +52,7 @@ public class ExcelTableExport<T, C extends ExcelCellModel> implements ExcelExpor
|
|||||||
private final String sheetName;
|
private final String sheetName;
|
||||||
private final List<ColumnModel<T, C>> columns;
|
private final List<ColumnModel<T, C>> columns;
|
||||||
private final List<T> data;
|
private final List<T> data;
|
||||||
|
private final int colStart;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main constructor.
|
* Main constructor.
|
||||||
@ -60,9 +63,14 @@ public class ExcelTableExport<T, C extends ExcelCellModel> implements ExcelExpor
|
|||||||
* @param data The data to export.
|
* @param data The data to export.
|
||||||
*/
|
*/
|
||||||
public ExcelTableExport(String sheetName, List<ColumnModel<T, C>> columns, List<T> data) {
|
public ExcelTableExport(String sheetName, List<ColumnModel<T, C>> columns, List<T> data) {
|
||||||
|
this(sheetName, columns, data, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ExcelTableExport(String sheetName, List<ColumnModel<T, C>> columns, List<T> data, int colStart) {
|
||||||
this.sheetName = sheetName;
|
this.sheetName = sheetName;
|
||||||
this.columns = columns;
|
this.columns = columns;
|
||||||
this.data = data;
|
this.data = data;
|
||||||
|
this.colStart = colStart;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -72,11 +80,14 @@ public class ExcelTableExport<T, C extends ExcelCellModel> implements ExcelExpor
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void renderSheet(Sheet sheet, ExcelExport.WorksheetEnv style) throws ExcelExport.ExcelExportException {
|
public void renderSheet(Sheet sheet, ExcelExport.WorksheetEnv style) throws ExcelExport.ExcelExportException {
|
||||||
renderSheet(sheet, style, columns, data);
|
renderSheet(sheet, style, 1, colStart, columns, data);
|
||||||
// Resize all columns to fit the content size
|
|
||||||
for (int i = 0; i < columns.size(); i++) {
|
}
|
||||||
sheet.autoSizeColumn(i);
|
|
||||||
}
|
@Override
|
||||||
|
public int write(Sheet sheet, int rowStart, ExcelExport.WorksheetEnv env) throws ExcelExportException {
|
||||||
|
int rowsWritten = renderSheet(sheet, env, rowStart, colStart, columns, data);
|
||||||
|
return rowStart + rowsWritten - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -84,12 +95,19 @@ public class ExcelTableExport<T, C extends ExcelCellModel> implements ExcelExpor
|
|||||||
*
|
*
|
||||||
* @param sheet The sheet.
|
* @param sheet The sheet.
|
||||||
* @param worksheetEnv The worksheet environment and preferences.
|
* @param worksheetEnv The worksheet environment and preferences.
|
||||||
|
* @param rowStart The row to start in.
|
||||||
|
* @param colStart The column to start in.
|
||||||
* @param columns The columns.
|
* @param columns The columns.
|
||||||
* @param data The data.
|
* @param data The data.
|
||||||
* @throws ExcelExportException
|
* @throws ExcelExportException
|
||||||
|
* @return The number of rows (including the header) written.
|
||||||
*/
|
*/
|
||||||
private static <T, C extends ExcelCellModel> void renderSheet(
|
private static <T, C extends ExcelCellModel> int renderSheet(
|
||||||
Sheet sheet, ExcelExport.WorksheetEnv worksheetEnv, List<ColumnModel<T, C>> columns, List<T> data)
|
Sheet sheet,
|
||||||
|
ExcelExport.WorksheetEnv worksheetEnv,
|
||||||
|
int rowStart,
|
||||||
|
int colStart,
|
||||||
|
List<ColumnModel<T, C>> columns, List<T> data)
|
||||||
throws ExcelExport.ExcelExportException {
|
throws ExcelExport.ExcelExportException {
|
||||||
|
|
||||||
List<T> safeData = data == null ? Collections.emptyList() : data;
|
List<T> safeData = data == null ? Collections.emptyList() : data;
|
||||||
@ -115,8 +133,15 @@ public class ExcelTableExport<T, C extends ExcelCellModel> implements ExcelExpor
|
|||||||
Optional<CellStyle> cellStyle = (formatString == null)
|
Optional<CellStyle> cellStyle = (formatString == null)
|
||||||
? Optional.empty()
|
? Optional.empty()
|
||||||
: Optional.of(cellStyles.computeIfAbsent(formatString, k -> ExcelExport.createCellStyle(worksheetEnv.getParentWorkbook(), formatString)));
|
: Optional.of(cellStyles.computeIfAbsent(formatString, k -> ExcelExport.createCellStyle(worksheetEnv.getParentWorkbook(), formatString)));
|
||||||
ExcelExport.createCell(row, colNum, cellModel, cellStyle);
|
ExcelExport.createCell(row, colNum + colStart, cellModel, cellStyle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Resize all columns to fit the content size
|
||||||
|
for (int i = colStart; i < columns.size() + colStart; i++) {
|
||||||
|
sheet.autoSizeColumn(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
return safeData.size() + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user