diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownToolbar.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownToolbar.java index 03c9f87fe1..7c456039b3 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownToolbar.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/DropdownToolbar.java @@ -189,10 +189,10 @@ class DropdownToolbar extends javax.swing.JPanel { * schema version and selectively enable the ad * hoc search UI components. */ - boolean schemaIsCurrent = IndexFinder.getCurrentSchemaVersion().equals(indexInfo.getSchemaVersion()); - listsButton.setEnabled(schemaIsCurrent); + boolean schemaIsCompatible = indexInfo.isCompatible(IndexFinder.getCurrentSchemaVersion()); + listsButton.setEnabled(schemaIsCompatible); searchDropButton.setEnabled(true); - dropPanel.setRegexSearchEnabled(schemaIsCurrent); + dropPanel.setRegexSearchEnabled(schemaIsCompatible); active = true; } else { /* diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Index.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Index.java index d93466f2ab..20c62ccab2 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Index.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Index.java @@ -20,6 +20,7 @@ package org.sleuthkit.autopsy.keywordsearch; import java.text.SimpleDateFormat; import java.util.Date; +import org.apache.commons.lang.math.NumberUtils; import org.sleuthkit.autopsy.coreutils.UNCPathUtilities; /** @@ -133,4 +134,20 @@ final class Index { String getIndexName() { return indexName; } + + /** + * Is the current Index instance compatible with the given version number + * + * @param version The version number to compare the current Index against + * + * @return true if the current major version number is equal to the given + * major version number, otherwise false + */ + boolean isCompatible(String version) { + // Versions are compatible if they have the same major version no + int currentMajorVersion = NumberUtils.toInt(schemaVersion.substring(0, schemaVersion.indexOf('.'))); + int givenMajorVersion = NumberUtils.toInt(version.substring(0, version.indexOf('.'))); + + return currentMajorVersion == givenMajorVersion; + } } diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java index 3c6b641eab..8b9a71b207 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java @@ -164,7 +164,7 @@ public final class KeywordSearchIngestModule implements FileIngestModule { if (!IndexFinder.getCurrentSolrVersion().equals(indexInfo.getSolrVersion())) { throw new IngestModuleException(Bundle.KeywordSearchIngestModule_startupException_indexSolrVersionNotSupported(indexInfo.getSolrVersion())); } - if (!IndexFinder.getCurrentSchemaVersion().equals(indexInfo.getSchemaVersion())) { + if (!indexInfo.isCompatible(IndexFinder.getCurrentSchemaVersion())) { throw new IngestModuleException(Bundle.KeywordSearchIngestModule_startupException_indexSchemaNotSupported(indexInfo.getSchemaVersion())); } } catch (NoOpenCoreException ex) { diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java index fe7009128d..1313b9a3ef 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java @@ -325,8 +325,8 @@ public class SolrSearchService implements KeywordSearchService, AutopsyService { double currentSolrVersion = NumberUtils.toDouble(IndexFinder.getCurrentSolrVersion()); double indexSolrVersion = NumberUtils.toDouble(indexToUse.getSolrVersion()); if (indexSolrVersion == currentSolrVersion) { - // latest Solr version but not latest schema. index should be used in read-only mode - if (RuntimeProperties.runningWithGUI()) { + // latest Solr version but schema not compatible. index should be used in read-only mode + if (!indexToUse.isCompatible(IndexFinder.getCurrentSchemaVersion()) && RuntimeProperties.runningWithGUI()) { // pop up a message box to indicate the read-only restrictions. JOptionPane optionPane = new JOptionPane( NbBundle.getMessage(this.getClass(), "SolrSearchService.IndexReadOnlyDialog.msg"),