19package org.sleuthkit.autopsy.keywordsearch;
22import java.nio.file.Paths;
24import org.apache.commons.lang.math.NumberUtils;
25import org.sleuthkit.autopsy.casemodule.Case;
26import org.sleuthkit.autopsy.appservices.AutopsyService;
33 private static final String KWS_OUTPUT_FOLDER_NAME =
"keywordsearch";
34 private static final String KWS_DATA_FOLDER_NAME =
"data";
35 private static final String INDEX_FOLDER_NAME =
"index";
36 private static final String CURRENT_SOLR_VERSION =
"8";
37 private static final int CURRENT_SOLR_VERSION_INT = 8;
38 private static final String CURRENT_SOLR_SCHEMA_VERSION =
"2.3";
40 static String getCurrentSolrVersion() {
41 return CURRENT_SOLR_VERSION;
44 static String getCurrentSchemaVersion() {
45 return CURRENT_SOLR_SCHEMA_VERSION;
48 static Index findLatestVersionIndex(List<Index> allIndexes) {
49 for (Index index : allIndexes) {
50 if (index.getSolrVersion().equals(CURRENT_SOLR_VERSION) && index.getSchemaVersion().equals(CURRENT_SOLR_SCHEMA_VERSION)) {
57 static Index createLatestVersionIndex(Case theCase)
throws AutopsyService.AutopsyServiceException {
58 String indexFolderName =
"solr" + CURRENT_SOLR_VERSION +
"_schema" + CURRENT_SOLR_SCHEMA_VERSION;
60 File targetDirPath = Paths.get(theCase.getModuleDirectory(), KWS_OUTPUT_FOLDER_NAME, KWS_DATA_FOLDER_NAME, indexFolderName, INDEX_FOLDER_NAME).toFile();
61 return new Index(targetDirPath.getAbsolutePath(), CURRENT_SOLR_VERSION, CURRENT_SOLR_SCHEMA_VERSION,
"", theCase.getName());
64 static Index identifyIndexToUse(List<Index> allIndexes) {
73 Index bestCandidateIndex =
null;
74 double solrVerFound = 0.0;
75 double schemaVerFound = 0.0;
76 for (Index index : allIndexes) {
77 if (NumberUtils.toDouble(index.getSolrVersion()) > CURRENT_SOLR_VERSION_INT) {
82 if (NumberUtils.toDouble(index.getSolrVersion()) >= solrVerFound) {
84 if (NumberUtils.toDouble(index.getSchemaVersion()) >= schemaVerFound) {
85 bestCandidateIndex = index;
86 solrVerFound = NumberUtils.toDouble(index.getSolrVersion());
87 schemaVerFound = NumberUtils.toDouble(index.getSchemaVersion());
91 return bestCandidateIndex;
103 static String isFutureIndexPresent(List<Index> allIndexes) {
104 for (Index index : allIndexes) {
105 if (NumberUtils.toDouble(index.getSolrVersion()) > CURRENT_SOLR_VERSION_INT) {
107 return index.getSolrVersion();