19 package org.sleuthkit.autopsy.keywordsearch;
21 import com.google.common.util.concurrent.ThreadFactoryBuilder;
22 import java.util.concurrent.ExecutorService;
23 import java.util.concurrent.Executors;
24 import java.util.logging.Level;
25 import org.apache.solr.client.solrj.SolrServerException;
26 import org.openide.modules.ModuleInstall;
27 import org.openide.util.NbBundle;
28 import org.openide.windows.WindowManager;
41 class Installer
extends ModuleInstall {
43 private static final Logger logger = Logger.getLogger(Installer.class.getName());
44 private static final long serialVersionUID = 1L;
45 private static final String KWS_START_THREAD_NAME =
"KWS-server-start-%d";
48 public void restored() {
50 KeywordSearchSettings.setDefaults();
52 final Server server = KeywordSearch.getServer();
54 ExecutorService jobProcessingExecutor = Executors.newSingleThreadExecutor(
new ThreadFactoryBuilder().setNameFormat(KWS_START_THREAD_NAME).build());
55 Runnable kwsStartTask =
new Runnable() {
59 }
catch (SolrServerNoPortException ex) {
60 logger.log(Level.SEVERE,
"Failed to start Keyword Search server: ", ex);
61 if (ex.getPortNumber() == server.getLocalSolrServerPort()) {
62 reportPortError(ex.getPortNumber());
64 reportStopPortError(ex.getPortNumber());
66 }
catch (KeywordSearchModuleException | SolrServerException ex) {
67 logger.log(Level.SEVERE,
"Failed to start Keyword Search server: ", ex);
68 reportInitError(ex.getMessage());
74 jobProcessingExecutor.submit(kwsStartTask);
75 jobProcessingExecutor.shutdown();
79 public boolean closing() {
82 KeywordSearch.getServer().stop();
88 public void uninstalled() {
90 KeywordSearch.getServer().stop();
94 private void reportPortError(
final int curFailPort) {
95 WindowManager.getDefault().invokeWhenUIReady(
new Runnable() {
98 final String msg = NbBundle.getMessage(this.getClass(),
"Installer.reportPortError", curFailPort, Version.getName(), Server.PROPERTIES_CURRENT_SERVER_PORT, Server.PROPERTIES_FILE);
99 MessageNotifyUtil.Notify.error(NbBundle.getMessage(
this.getClass(),
"Installer.errorInitKsmMsg"), msg);
104 private void reportStopPortError(
final int curFailPort) {
105 WindowManager.getDefault().invokeWhenUIReady(
new Runnable() {
108 final String msg = NbBundle.getMessage(this.getClass(),
"Installer.reportStopPortError", curFailPort, Server.PROPERTIES_CURRENT_STOP_PORT, Server.PROPERTIES_FILE);
109 MessageNotifyUtil.Notify.error(NbBundle.getMessage(
this.getClass(),
"Installer.errorInitKsmMsg"), msg);
114 private void reportInitError(
final String msg) {
115 WindowManager.getDefault().invokeWhenUIReady(
new Runnable() {
118 MessageNotifyUtil.Notify.error(NbBundle.getMessage(
this.getClass(),
"Installer.errorInitKsmMsg"), msg);