mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-12 07:56:16 +00:00
Merge branch 'develop' of https://github.com/sleuthkit/autopsy into core-corecomponents
This commit is contained in:
commit
607f96ef29
@ -14,9 +14,7 @@ GetTagNameAndCommentDialog.commentLabel.text=Comment:
|
||||
GetTagNameAndCommentDialog.cancelButton.text=Cancel
|
||||
GetTagNameAndCommentDialog.tagCombo.toolTipText=Select tag to use
|
||||
GetTagNameAndCommentDialog.tagLabel.text=Tag:
|
||||
#todo this means to tag a result? not result of a tag?
|
||||
AddBlackboardArtifactTagAction.singularTagResult=Tag Result
|
||||
#todo check meaning
|
||||
AddBlackboardArtifactTagAction.pluralTagResult=Tag Results
|
||||
AddBlackboardArtifactTagAction.unableToTag.msg=Unable to tag {0}.
|
||||
AddBlackboardArtifactTagAction.taggingErr=Tagging Error
|
||||
|
@ -10,8 +10,8 @@ GetTagNameAndCommentDialog.commentLabel.text=\u30B3\u30E1\u30F3\u30C8\uFF1A
|
||||
GetTagNameAndCommentDialog.cancelButton.text=\u30AD\u30E3\u30F3\u30BB\u30EB
|
||||
GetTagNameAndCommentDialog.tagCombo.toolTipText=\u4F7F\u7528\u3059\u308B\u30BF\u30B0\u3092\u9078\u629E
|
||||
GetTagNameAndCommentDialog.tagLabel.text=\u30BF\u30B0\uFF1A
|
||||
AddBlackboardArtifactTagAction.singularTagResult=\u30BF\u30B0\u306E\u7D50\u679C
|
||||
AddBlackboardArtifactTagAction.pluralTagResult=\u30BF\u30B0\u306E\u7D50\u679C
|
||||
AddBlackboardArtifactTagAction.singularTagResult=\u7D50\u679C\u306B\u30BF\u30B0\u3092\u8FFD\u52A0
|
||||
AddBlackboardArtifactTagAction.pluralTagResult=\u7D50\u679C\u306B\u30BF\u30B0\u3092\u8FFD\u52A0
|
||||
AddBlackboardArtifactTagAction.unableToTag.msg={0}\u306B\u30BF\u30B0\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002
|
||||
AddBlackboardArtifactTagAction.taggingErr=\u30BF\u30B0\u4ED8\u3051\u30A8\u30E9\u30FC
|
||||
AddContentTagAction.singularTagFile=\u30D5\u30A1\u30A4\u30EB\u306B\u30BF\u30B0\u3092\u8FFD\u52A0
|
||||
|
@ -18,6 +18,7 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.casemodule;
|
||||
|
||||
import org.sleuthkit.autopsy.coreutils.LocalDisk;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
|
@ -10,3 +10,5 @@ OpenIDE-Module-Name=Autopsy-Core
|
||||
OpenIDE-Module-Short-Description=Autopsy Core Module
|
||||
org_sleuthkit_autopsy_core_update_center=http://sleuthkit.org/autopsy/updates.xml
|
||||
Services/AutoupdateType/org_sleuthkit_autopsy_core_update_center.settings=Autopsy Update Center
|
||||
Installer.errorInitJavafx.msg=Error initializing JavaFX.
|
||||
Installer.errorInitJavafx.details=\ Some features will not be available. Check that you have the right JRE installed (Oracle JRE > 1.7.10).
|
||||
|
14
Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties
Normal file
14
Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties
Normal file
@ -0,0 +1,14 @@
|
||||
OpenIDE-Module-Display-Category=\u57FA\u76E4
|
||||
OpenIDE-Module-Long-Description=\
|
||||
Autopsy\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30B3\u30A2\u3067\u3059\u3002\n\n\
|
||||
\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u307F\u3067\u5B9F\u884C\u3059\u308B\u306E\u306B\u5FC5\u8981\u306A\u4E3B\u8981\u306A\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\uFF1ARCP\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3001\u30A6\u30A3\u30F3\u30C9\u30A6\u30A4\u30F3\u30B0GUI\u3001Sleuth Kit\u30D0\u30A4\u30F3\u30C7\u30A3\u30F3\u30B0\u3001\u30C7\u30FC\u30BF\u30E2\u30C7\u30EB\uFF0F\u30B9\u30C8\u30EC\u30FC\u30B8\u3001\u30A8\u30AF\u30B9\u30D7\u30ED\u30FC\u30E9\u3001\u7D50\u679C\u30D3\u30E5\u30FC\u30A2\u30FC\u3001\u30B3\u30F3\u30C6\u30F3\u30C4\u30D3\u30E5\u30FC\u30A2\u30FC\u3001\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u7528\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF\u3001\u30EC\u30DD\u30FC\u30C8\u751F\u6210\u3001\u30D5\u30A1\u30A4\u30EB\u691C\u7D22\u7B49\u306E\u4E3B\u8981\u30C4\u30FC\u30EB\u3002\n\n\
|
||||
\u30E2\u30B8\u30E5\u30FC\u30EB\u5185\u306E\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF\u306B\u306F\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u3001\u30D3\u30E5\u30FC\u30A2\u30FC\u3001\u30EC\u30DD\u30FC\u30C8\u751F\u6210\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u958B\u767A\u7528\u306EAPI\u304C\u542B\u307E\u308C\u307E\u3059\u3002\
|
||||
\u30E2\u30B8\u30E5\u30FC\u30EB\u306FAutopsy\u30D7\u30E9\u30B0\u30A4\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FC\u3092\u4F7F\u7528\u3057\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u3068\u3057\u3066\u5B9F\u88C5\u3067\u304D\u307E\u3059\u3002\n\
|
||||
\u3053\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u30A2\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u306F\u3044\u3051\u307E\u305B\u3093\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u306A\u3051\u308C\u3070\u3001Autopsy\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n\n\
|
||||
\u8A73\u7D30\u306F\u4E0B\u8A18\u3092\u3054\u89A7\u4E0B\u3055\u3044\u3002http\://www.sleuthkit.org/autopsy/
|
||||
OpenIDE-Module-Name=Autopsy-\u30B3\u30A2
|
||||
OpenIDE-Module-Short-Description=Autopsy\u30B3\u30A2\u30E2\u30B8\u30E5\u30FC\u30EB
|
||||
org_sleuthkit_autopsy_core_update_center=http\://sleuthkit.org/autopsy/updates.xml
|
||||
Services/AutoupdateType/org_sleuthkit_autopsy_core_update_center.settings=Autopsy\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30BB\u30F3\u30BF\u30FC
|
||||
Installer.errorInitJavafx.msg=JavaFX\u521D\u671F\u5316\u30A8\u30E9\u30FC
|
||||
Installer.errorInitJavafx.details=\u4E00\u90E8\u306E\u6A5F\u80FD\u304C\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u6B63\u3057\u3044JRE\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u308B\u306E\u3092\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002\uFF08Oracle JRE > 1.7.10\uFF09
|
@ -23,6 +23,7 @@ import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import javafx.application.Platform;
|
||||
import javafx.embed.swing.JFXPanel;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.openide.modules.ModuleInstall;
|
||||
import org.openide.windows.WindowManager;
|
||||
@ -113,9 +114,8 @@ public class Installer extends ModuleInstall {
|
||||
javaFxInit = true;
|
||||
} catch (UnsatisfiedLinkError | NoClassDefFoundError | Exception e) {
|
||||
//in case javafx not present
|
||||
final String msg = "Error initializing JavaFX. ";
|
||||
final String details = " Some features will not be available. "
|
||||
+ " Check that you have the right JRE installed (Oracle JRE > 1.7.10). ";
|
||||
final String msg = NbBundle.getMessage(Installer.class, "Installer.errorInitJavafx.msg");
|
||||
final String details = NbBundle.getMessage(Installer.class, "Installer.errorInitJavafx.details");
|
||||
logger.log(Level.SEVERE, msg
|
||||
+ details, e);
|
||||
|
||||
|
@ -148,6 +148,9 @@
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="GeneralPanel.useGMTTimeRB.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="useGMTTimeRBActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="jLabel3">
|
||||
<Properties>
|
||||
|
@ -20,6 +20,7 @@ package org.sleuthkit.autopsy.corecomponents;
|
||||
|
||||
import java.util.prefs.Preferences;
|
||||
import org.openide.util.NbPreferences;
|
||||
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
||||
|
||||
final class GeneralPanel extends javax.swing.JPanel {
|
||||
|
||||
@ -33,6 +34,7 @@ final class GeneralPanel extends javax.swing.JPanel {
|
||||
GeneralPanel(GeneralOptionsPanelController controller) {
|
||||
this.controller = controller;
|
||||
initComponents();
|
||||
ContentUtils.setDisplayInLocalTime(useLocalTimeRB.isSelected());
|
||||
// TODO listen to changes in form fields and call controller.changed()
|
||||
}
|
||||
|
||||
@ -80,6 +82,11 @@ final class GeneralPanel extends javax.swing.JPanel {
|
||||
|
||||
buttonGroup3.add(useGMTTimeRB);
|
||||
org.openide.awt.Mnemonics.setLocalizedText(useGMTTimeRB, org.openide.util.NbBundle.getMessage(GeneralPanel.class, "GeneralPanel.useGMTTimeRB.text")); // NOI18N
|
||||
useGMTTimeRB.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
useGMTTimeRBActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(GeneralPanel.class, "GeneralPanel.jLabel3.text")); // NOI18N
|
||||
|
||||
@ -144,6 +151,10 @@ final class GeneralPanel extends javax.swing.JPanel {
|
||||
// TODO add your handling code here:
|
||||
}//GEN-LAST:event_useBestViewerRBActionPerformed
|
||||
|
||||
private void useGMTTimeRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_useGMTTimeRBActionPerformed
|
||||
ContentUtils.setDisplayInLocalTime(useLocalTimeRB.isSelected());
|
||||
}//GEN-LAST:event_useGMTTimeRBActionPerformed
|
||||
|
||||
void load() {
|
||||
boolean keepPreferredViewer = prefs.getBoolean(KEEP_PREFERRED_VIEWER, false);
|
||||
keepCurrentViewerRB.setSelected(keepPreferredViewer);
|
||||
|
@ -16,7 +16,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.sleuthkit.autopsy.casemodule;
|
||||
package org.sleuthkit.autopsy.coreutils;
|
||||
|
||||
/**
|
||||
* Representation of a PhysicalDisk or partition.
|
@ -37,7 +37,6 @@ import org.hyperic.sigar.Sigar;
|
||||
import org.hyperic.sigar.ptql.ProcessFinder;
|
||||
import org.openide.modules.InstalledFileLocator;
|
||||
import org.openide.modules.Places;
|
||||
import org.sleuthkit.autopsy.casemodule.LocalDisk;
|
||||
import org.sleuthkit.datamodel.SleuthkitJNI;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
|
||||
|
@ -162,7 +162,13 @@ public abstract class AbstractAbstractFileNode<T extends AbstractFile> extends A
|
||||
public String toString() {
|
||||
return "MD5 Hash";
|
||||
}
|
||||
},
|
||||
ObjectID {
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Object ID";
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@ -201,6 +207,7 @@ public abstract class AbstractAbstractFileNode<T extends AbstractFile> extends A
|
||||
map.put(AbstractFilePropertyType.KNOWN.toString(), content.getKnown().getName());
|
||||
map.put(AbstractFilePropertyType.HASHSETS.toString(), getHashSetHitsForFile(content));
|
||||
map.put(AbstractFilePropertyType.MD5HASH.toString(), content.getMd5Hash() == null ? "" : content.getMd5Hash());
|
||||
map.put(AbstractFilePropertyType.ObjectID.toString(), content.getId());
|
||||
}
|
||||
|
||||
|
||||
|
@ -50,7 +50,7 @@ public final class ContentUtils {
|
||||
private final static Logger logger = Logger.getLogger(ContentUtils.class.getName());
|
||||
private static final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
|
||||
private static final SimpleDateFormat dateFormatterISO8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
|
||||
|
||||
private static boolean displayInLocalTime;
|
||||
// don't instantiate
|
||||
private ContentUtils() {
|
||||
throw new AssertionError();
|
||||
@ -106,10 +106,9 @@ public final class ContentUtils {
|
||||
}
|
||||
|
||||
public static TimeZone getTimeZone(Content c) {
|
||||
Preferences generalPanelPrefs = NbPreferences.root().node("/org/sleuthkit/autopsy/core");
|
||||
boolean useLocalTime = generalPanelPrefs.getBoolean("useLocalTime", true);
|
||||
|
||||
try {
|
||||
if (!useLocalTime) {
|
||||
if (!getDisplayInLocalTime()) {
|
||||
return TimeZone.getTimeZone("GMT");
|
||||
}
|
||||
else {
|
||||
@ -360,4 +359,18 @@ public final class ContentUtils {
|
||||
+ cntnt.getClass().getSimpleName());
|
||||
}
|
||||
}
|
||||
/**sets displayInlocalTime value based on button in GeneralPanel.java
|
||||
*
|
||||
* @param flag
|
||||
*/
|
||||
public static void setDisplayInLocalTime(boolean flag) {
|
||||
displayInLocalTime = flag;
|
||||
}
|
||||
/** get global timezone setting for displaying time values
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static boolean getDisplayInLocalTime(){
|
||||
return displayInLocalTime;
|
||||
}
|
||||
}
|
||||
|
@ -20,6 +20,8 @@
|
||||
package org.sleuthkit.autopsy.keywordsearch;
|
||||
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.keywordsearch.Ingester.IngesterException;
|
||||
|
||||
/**
|
||||
@ -59,7 +61,8 @@ class AbstractFileChunk {
|
||||
//logger.log(Level.INFO, "Ingesting string chunk: " + this.getName() + ": " + chunkID);
|
||||
} catch (Exception ingEx) {
|
||||
success = false;
|
||||
throw new IngesterException("Problem ingesting file string chunk: " + parent.getSourceFile().getId() + ", chunk: " + chunkID, ingEx);
|
||||
throw new IngesterException(NbBundle.getMessage(this.getClass(), "AbstractFileChunk.index.exception.msg",
|
||||
parent.getSourceFile().getId(), chunkID), ingEx);
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
@ -23,6 +23,8 @@ import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.apache.solr.common.util.ContentStream;
|
||||
import org.sleuthkit.datamodel.AbstractContent;
|
||||
@ -69,12 +71,13 @@ import org.sleuthkit.datamodel.AbstractFile;
|
||||
@Override
|
||||
public Long getSize() {
|
||||
//return convertedLength;
|
||||
throw new UnsupportedOperationException("Cannot tell how many chars in converted string, until entire string is converted");
|
||||
throw new UnsupportedOperationException(
|
||||
NbBundle.getMessage(this.getClass(), "AbstractFileStringContentStream.getSize.exception.msg"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSourceInfo() {
|
||||
return "File:" + content.getId();
|
||||
return NbBundle.getMessage(this.getClass(), "AbstractFileStringContentStream.getSrcInfo.text", content.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -90,7 +90,6 @@ KeywordSearchListsViewerPanel.manageListsButton.toolTipText=Manage keyword lists
|
||||
KeywordSearchConfigurationPanel2.frequencyLabel.text=Results update frequency during ingest:
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton4.text_1=1 minute (faster feedback, longest ingest)
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton4.toolTipText=1 minute (overall ingest time will be longest)
|
||||
KeywordSearchConfigurationPanel2.showSnippetsCB.text=Show Keyword Preview in Keyword Search Results (will result in longer search times)
|
||||
AbstractKeywordSearchPerformer.search.dialogErrorHeader=Keyword Search Error
|
||||
AbstractKeywordSearchPerformer.search.invalidSyntaxHeader=Invalid query syntax.
|
||||
AbstractKeywordSearchPerformer.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress
|
||||
@ -149,6 +148,9 @@ KeywordSearchIngestModule.init.badInitMsg=Keyword search server was not properly
|
||||
KeywordSearchIngestModule.init.tryStopSolrMsg={0}<br />Please try stopping old java Solr process (if it exists) and restart the application.
|
||||
KeywordSearchIngestModule.init.noKwInLstMsg=No keywords in keyword list.
|
||||
KeywordSearchIngestModule.init.onlyIdxKwSkipMsg=Only indexing will be done and and keyword search will be skipped (you can still add keyword lists using the Keyword Lists - Add to Ingest).
|
||||
KeywordSearchIngestModule.doInBackGround.displayName=Keyword Search
|
||||
KeywordSearchIngestModule.doInBackGround.finalizeMsg=Finalizing...
|
||||
KeywordSearchIngestModule.doInBackGround.pendingMsg=Working on Keyword Search...
|
||||
KeywordSearchIngestModule.postIndexSummary.knowFileHeaderLbl=Files with known types
|
||||
KeywordSearchIngestModule.postIndexSummary.fileGenStringsHead=Files with general strings extracted
|
||||
KeywordSearchIngestModule.postIndexSummary.mdOnlyLbl=Metadata only was indexed
|
||||
@ -183,4 +185,83 @@ KeywordSearch.listImportFeatureTitle=Keyword List Import
|
||||
KeywordSearchIngestModule.hashDbModuleName=Hash Lookup
|
||||
KeywordSearchIngestModule.moduleName=Keyword Search
|
||||
KeywordSearchIngestModule.moduleDescription=Performs file indexing and periodic search using keywords and regular expressions in lists.
|
||||
AbstractFileChunk.index.exception.msg=Problem ingesting file string chunk\: {0}, chunk\: {1}
|
||||
AbstractFileStringContentStream.getSize.exception.msg=Cannot tell how many chars in converted string, until entire string is converted
|
||||
AbstractFileStringContentStream.getSrcInfo.text=File\:{0}
|
||||
ByteContentStream.getSrcInfo.text=File\:{0}
|
||||
ExtractedContentPanel.SetMarkup.progress.loading=Loading text
|
||||
ExtractedContentPanel.SetMarkup.progress.displayName=Loading text
|
||||
ExtractedContentViewer.nextPage.exception.msg=No next page.
|
||||
ExtractedContentViewer.previousPage.exception.msg=No previous page.
|
||||
ExtractedContentViewer.hasNextItem.exception.msg=Not supported, not a searchable source.
|
||||
ExtractedContentViewer.hasPreviousItem.exception.msg=Not supported, not a searchable source.
|
||||
ExtractedContentViewer.nextItem.exception.msg=Not supported, not a searchable source.
|
||||
ExtractedContentViewer.previousItem.exception.msg=Not supported, not a searchable source.
|
||||
ExtractedContentViewer.currentItem.exception.msg=Not supported, not a searchable source.
|
||||
HighlightedMatchesSource.nextPage.exception.msg=No next page.
|
||||
HighlightedMatchesSource.previousPage.exception.msg=No previous page.
|
||||
HighlightedMatchesSource.nextItem.exception.msg=No next item.
|
||||
HighlightedMatchesSource.previousItem.exception.msg=No previous item.
|
||||
Ingester.ingest.exception.unknownImgId.msg=Skipping indexing the file, unknown image id, for file\: {0}
|
||||
Ingester.ingest.exception.cantReadStream.msg=Could not read content stream\: {0}
|
||||
Ingester.ingest.exception.err.msg=Error ingesting document\: {0}
|
||||
Ingester.ingestExtract.exception.solrTimeout.msg=Solr index request time out for id\: {0}, name\: {1}
|
||||
Ingester.ingestExtract.exception.probPostToSolr.msg=Problem posting content to Solr, id\: {0}, name\: {1}
|
||||
Ingester.UpReqestTask.run.exception.sorlNotAvail.msg=No Solr core available, cannot index the content
|
||||
Ingester.UpRequestTask.run.exception.probReadFile.msg=Problem reading file.
|
||||
Ingester.UpRequestTask.run.exception.solrProb.msg=Problem with Solr
|
||||
Ingester.UpRequestTask.run.exception.probPostToSolr.msg=Problem posting file contents to Solr. SolrException error code\: {0}
|
||||
Ingester.FscContentStream.getSrcInfo=File\:{0}
|
||||
Ingester.FscContentStream.getReader=Not supported yet.
|
||||
Ingester.NullContentStream.getSrcInfo.text=File\:{0}
|
||||
Ingester.NullContentStream.getReader=Not supported yet.
|
||||
Keyword.toString.text=Keyword'{'query\={0}, isLiteral\={1}, keywordType\={2}'}'
|
||||
KeywordSearch.moduleErr=Module Error
|
||||
KeywordSearch.fireNumIdxFileChg.moduleErr.msg=A module caused an error listening to KeywordSearch updates. See log to determine which module. Some data could be incomplete.
|
||||
KeywordSearchIngestModule.init.exception.errConnToSolr.msg=Error connecting to SOLR server\: {0}
|
||||
KeywordSearchListsEncase.save.exception.msg=Not supported yet.
|
||||
KeywordSearchListsEncase.save2.exception.msg=Not supported yet.
|
||||
KeywordSearchListsEncase.encaseMetaType.exception.msg=Unsupported EncaseMetaType\: {0}
|
||||
KeywordSearchListsManagementPanel.getColName.text=Name
|
||||
KeywordSearchListsManagementPanel.setValueAt.exception.msg=Editing of cells is not supported
|
||||
KeywordSearchListsViewerPanel.isLuceneQuerySel.exception.msg=Not supported for multi-word queries.
|
||||
KeywordSearchListsViewerPanel.getQueryText.exception.msg=Not supported for multi-word queries.
|
||||
KeywordSearchOptionsPanelController.moduleErr=Module Error
|
||||
KeywordSearchOptionsPanelController.moduleErr.msg1=A module caused an error listening to KeywordSearchOptionsPanelController updates. See log to determine which module. Some data could be incomplete.
|
||||
KeywordSearchOptionsPanelController.moduleErr.msg2=A module caused an error listening to KeywordSearchOptionsPanelController updates. See log to determine which module. Some data could be incomplete.
|
||||
KeywordSearchPanel.getQueryList.exception.msg=No list for single-keyword search
|
||||
KeywordSearchQueryManager.pathText.text=Keyword search
|
||||
KeywordSearchResultFactory.progress.saving=Saving results\: {0}
|
||||
KeywordSearchSettings.moduleName.text=KeywordSearch
|
||||
KeywordSearchSettings.properties_options.text={0}_Options
|
||||
KeywordSearchSettings.propertiesNSRL.text={0}_NSRL
|
||||
KeywordSearchSettings.propertiesScripts.text={0}_Scripts
|
||||
NoOpenCoreException.err.noOpenSorlCore.msg=No currently open Solr core.
|
||||
Server.start.exception.cantStartSolr.msg=Could not start Solr server process
|
||||
Server.start.exception.cantStartSolr.msg2=Could not start Solr server process
|
||||
Server.isRunning.exception.errCheckSolrRunning.msg=Error checking if Solr server is running
|
||||
Server.isRunning.exception.errCheckSolrRunning.msg2=Error checking if Solr server is running
|
||||
Server.openCore.exception.alreadyOpen.msg=Already an open Core\! Explicitely close Core first.
|
||||
Server.queryNumIdxFiles.exception.msg=Error querying number of indexed files,
|
||||
Server.queryNumIdxChunks.exception.msg=Error querying number of indexed chunks,
|
||||
Server.queryNumIdxDocs.exception.msg=Error querying number of indexed documents,
|
||||
Server.queryIsIdxd.exception.msg=Error checkign if content is indexed,
|
||||
Server.queryNumFileChunks.exception.msg=Error getting number of file chunks,
|
||||
Server.query.exception.msg=Error running query\: {0}
|
||||
Server.query2.exception.msg=Error running query\: {0}
|
||||
Server.queryTerms.exception.msg=Error running terms query\: {0}
|
||||
Server.openCore.exception.msg=Core open requested, but server not yet running
|
||||
Server.openCore.exception.cantOpen.msg=Could not open Core
|
||||
Server.openCore.exception.cantOpen.msg2=Could not open Core
|
||||
Server.request.exception.exception.msg=Could not issue Solr request
|
||||
Server.commit.exception.msg=Could not commit index
|
||||
Server.addDoc.exception.msg=Could not add document to index via update handler\: {0}
|
||||
Server.addDoc.exception.msg2=Could not add document to index via update handler\: {0}
|
||||
Server.close.exception.msg=Cannot close Core
|
||||
Server.close.exception.msg2=Cannot close Core
|
||||
Server.solrServerNoPortException.msg=Indexing server could not bind to port {0}, port is not available, consider change the default {1} port.
|
||||
KeywordSearchIngestModule.doInBackGround.displayName=Keyword Search
|
||||
KeywordSearchIngestModule.doInBackGround.finalizeMsg= - Finalizing
|
||||
KeywordSearchIngestModule.doInBackGround.pendingMsg= (Pending)
|
||||
KeywordSearchIngestModule.doInBackGround.cancelMsg= (Cancelling...)
|
||||
|
||||
|
@ -8,16 +8,16 @@ ListBundleName=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8
|
||||
ListBundleConfig=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u8A2D\u5B9A
|
||||
IndexProgressPanel.statusText.text=\u30B9\u30C6\u30FC\u30BF\u30B9\u30C6\u30AD\u30B9\u30C8
|
||||
IndexProgressPanel.cancelButton.text=\u30AD\u30E3\u30F3\u30BB\u30EB
|
||||
ExtractedContentPanel.hitLabel.text=\u30DA\u30FC\u30B8\u4E0A\u306E\u4E00\u81F4
|
||||
ExtractedContentPanel.hitCountLabel.text=
|
||||
ExtractedContentPanel.hitOfLabel.text=
|
||||
ExtractedContentPanel.hitTotalLabel.text=
|
||||
ExtractedContentPanel.hitLabel.text=\u30DA\u30FC\u30B8\u5185\u306E\u4E00\u81F4\uFF1A
|
||||
ExtractedContentPanel.hitCountLabel.text=-
|
||||
ExtractedContentPanel.hitOfLabel.text=of
|
||||
ExtractedContentPanel.hitTotalLabel.text=-
|
||||
ExtractedContentPanel.hitButtonsLabel.text=\u4E00\u81F4
|
||||
ExtractedContentPanel.copyMenuItem.text=\u30B3\u30D4\u30FC
|
||||
ExtractedContentPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629E
|
||||
KeywordSearchEditListPanel.saveListButton.text=\u30EA\u30B9\u30C8\u3092\u30B3\u30D4\u30FC
|
||||
KeywordSearchEditListPanel.addWordButton.text=\u8FFD\u52A0
|
||||
KeywordSearchEditListPanel.chRegex.text=\u4E00\u822C\u7684\u306A\u8868\u73FE
|
||||
KeywordSearchEditListPanel.chRegex.text=\u6B63\u898F\u8868\u73FE
|
||||
KeywordSearchEditListPanel.deleteWordButton.text=\u9078\u629E\u3057\u305F\u3082\u306E\u3092\u524A\u9664
|
||||
KeywordSearchEditListPanel.cutMenuItem.text=\u30AB\u30C3\u30C8
|
||||
KeywordSearchEditListPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629E
|
||||
@ -28,8 +28,8 @@ KeywordSearchEditListPanel.deleteListButton.text=\u30EA\u30B9\u30C8\u3092\u524A\
|
||||
KeywordSearchListsManagementPanel.newListButton.text=\u65B0\u898F\u30EA\u30B9\u30C8
|
||||
KeywordSearchEditListPanel.useForIngestCheckbox.text=\u51E6\u7406\u4E2D\u306B\u4F7F\u7528
|
||||
KeywordSearchListsManagementPanel.importButton.text=\u30EA\u30B9\u30C8\u3092\u30A4\u30F3\u30DD\u30FC\u30C8
|
||||
KeywordSearchPanel.searchBox.text=\u691C\u7D22...
|
||||
KeywordSearchPanel.regExCheckboxMenuItem.text=\u4E00\u822C\u7684\u306A\u8868\u73FE\u3092\u4F7F\u7528
|
||||
KeywordSearchPanel.searchBox.text=\u691C\u7D22\u2026
|
||||
KeywordSearchPanel.regExCheckboxMenuItem.text=\u6B63\u898F\u8868\u73FE\u3092\u4F7F\u7528
|
||||
KeywordSearchListsViewerPanel.searchAddButton.text=\u691C\u7D22
|
||||
KeywordSearchListsViewerPanel.manageListsButton.text=\u30EA\u30B9\u30C8\u3092\u7BA1\u7406
|
||||
KeywordSearchListsViewerPanel.ingestIndexLabel.text=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\uFF1A
|
||||
@ -42,10 +42,10 @@ ExtractedContentPanel.pagesLabel.text=\u30DA\u30FC\u30B8\uFF1A
|
||||
KeywordSearchEditListPanel.ingestMessagesCheckbox.text=\u51E6\u7406\u4E2D\u306B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u30A4\u30F3\u30DC\u30C3\u30AF\u30B9\u306B\u9001\u4FE1
|
||||
KeywordSearchEditListPanel.ingestMessagesCheckbox.toolTipText=\u3053\u306E\u30EA\u30B9\u30C8\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u304C\u691C\u7D22\u306B\u30D2\u30C3\u30C8\u3057\u305F\u5834\u5408\u3001\u51E6\u7406\u4E2D\u306B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u30A4\u30F3\u30DC\u30C3\u30AF\u30B9\u306B\u9001\u4FE1
|
||||
KeywordSearchConfigurationPanel2.skipNSRLCheckBox.text=\u51E6\u7406\u4E2D\u306BNSRL\u306E\u30D5\u30A1\u30A4\u30EB\uFF08\u65E2\u77E5\u306E\u30D5\u30A1\u30A4\u30EB\uFF09\u3092\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306B\u8FFD\u52A0\u3057\u306A\u3044
|
||||
KeywordSearchConfigurationPanel2.skipNSRLCheckBox.toolTipText=Hash DB\u30B5\u30FC\u30D3\u30B9\u3092\u4E8B\u524D\u306B\u5B9F\u884C\u3059\u308B\u304B\u3001\u6B21\u56DE\u306E\u51E6\u7406\u6642\u306B\u9078\u629E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
|
||||
KeywordSearchConfigurationPanel2.skipNSRLCheckBox.toolTipText=Hash DB\u30B5\u30FC\u30D3\u30B9\u3092\u4E8B\u524D\u306B\u5B9F\u884C\u3059\u308B\u304B\u3001\u6B21\u56DE\u306E\u51E6\u7406\u306B\u9078\u629E\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002
|
||||
KeywordSearchConfigurationPanel2.filesIndexedLabel.text=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5185\u306E\u30D5\u30A1\u30A4\u30EB\uFF1A
|
||||
KeywordSearchIngestSimplePanel.languagesLabel.text=\u4E0D\u660E\u306A\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F\u304B\u3089\u306E\u30B9\u30C8\u30EA\u30F3\u30B0\u62BD\u51FA\u3092\u6709\u52B9\u306B\u3057\u305F\u30B9\u30AF\u30EA\u30D7\u30C8\uFF1A
|
||||
KeywordSearchIngestSimplePanel.languagesLabel.toolTipText=\u4E0D\u660E\u306A\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F\u304B\u3089\u306E\u30B9\u30C8\u30EA\u30F3\u30B0\u62BD\u51FA\u3092\u6709\u52B9\u306B\u3057\u305F\u30B9\u30AF\u30EA\u30D7\u30C8\u3002\u30A2\u30C9\u30D0\u30F3\u30B9\u8A2D\u5B9A\u3067\u5909\u66F4\u304C\u53EF\u80FD\u3067\u3059\u3002
|
||||
KeywordSearchIngestSimplePanel.languagesLabel.toolTipText=\u4E0D\u660E\u306A\u30D5\u30A1\u30A4\u30EB\u5F62\u5F0F\u304B\u3089\u306E\u30B9\u30C8\u30EA\u30F3\u30B0\u62BD\u51FA\u3092\u6709\u52B9\u306B\u3057\u305F\u30B9\u30AF\u30EA\u30D7\u30C8\u3002\u30A2\u30C9\u30D0\u30F3\u30B9\u8A2D\u5B9A\u304B\u3089\u5909\u66F4\u304C\u53EF\u80FD\u3067\u3059\u3002
|
||||
KeywordSearchConfigurationPanel3.languagesLabel.text=\u6709\u52B9\u306A\u30B9\u30AF\u30EA\u30D7\u30C8\uFF08\u8A00\u8A9E\uFF09\uFF1A
|
||||
KeywordSearchConfigurationPanel2.chunksLabel.text=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5185\u306E\u30C1\u30E3\u30F3\u30AF\uFF1A
|
||||
KeywordSearchConfigurationPanel3.enableUTF8Checkbox.text=UTF8\u30C6\u30AD\u30B9\u30C8\u62BD\u51FA\u306E\u6709\u52B9\u5316
|
||||
@ -70,7 +70,6 @@ KeywordSearchListsViewerPanel.manageListsButton.toolTipText=\u30AD\u30FC\u30EF\u
|
||||
KeywordSearchConfigurationPanel2.frequencyLabel.text=\u51E6\u7406\u4E2D\u306E\u7D50\u679C\u66F4\u65B0\u306E\u983B\u5EA6\uFF1A
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton4.text_1=\uFF11\u5206\uFF08\u3088\u308A\u901F\u3044\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3001\u6700\u3082\u9577\u3044\u51E6\u7406\u6642\u9593\uFF09
|
||||
KeywordSearchConfigurationPanel2.timeRadioButton4.toolTipText=\uFF11\u5206\uFF08\u5168\u4F53\u7684\u306A\u51E6\u7406\u6642\u9593\u304C\u9577\u304F\u306A\u308A\u307E\u3059\uFF09
|
||||
KeywordSearchConfigurationPanel2.showSnippetsCB.text=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u7D50\u679C\u306B\u30AD\u30FC\u30EF\u30FC\u30C9\u30D7\u30EC\u30D3\u30E5\u30FC\u3092\u8868\u793A\uFF08\u691C\u7D22\u6642\u9593\u304C\u9577\u304F\u306A\u308A\u307E\u3059\uFF09
|
||||
AbstractKeywordSearchPerformer.search.dialogErrorHeader=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u30A8\u30E9\u30FC
|
||||
AbstractKeywordSearchPerformer.search.invalidSyntaxHeader=\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u30A8\u30E9\u30FC
|
||||
AbstractKeywordSearchPerformer.search.searchIngestInProgressTitle=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3092\u5B9F\u884C\u4E2D
|
||||
@ -105,22 +104,22 @@ KeywordSearch.newKwListTitle=\u65B0\u898F\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u3
|
||||
KeywordSearchConfigurationPanel1.customizeComponents.noOwDefaultMsg=\u30C7\u30D5\u30A9\u30EB\u30C8\u30EA\u30B9\u30C8\u306F\u4E0A\u66F8\u304D\u3067\u304D\u307E\u305B\u3093
|
||||
KeywordSearchConfigurationPanel1.customizeComponents.kwListExistMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8 <{0}> \u306F\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059\u3002\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\uFF1F
|
||||
KeywordSearchConfigurationPanel1.customizeComponents.kwListSavedMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8 <{0}> \u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F
|
||||
KeywordSearchEditListPanel.customizeComponents.kwReToolTip=\u30AD\u30FC\u30EF\u30FC\u30C9\u306F\u4E00\u822C\u7684\u306A\u8868\u73FE\u3067\u3059
|
||||
KeywordSearchEditListPanel.customizeComponents.kwReToolTip=\u30AD\u30FC\u30EF\u30FC\u30C9\u306F\u6B63\u7FA9\u8868\u73FE\u3067\u3059
|
||||
KeywordSearchEditListPanel.customizeComponents.addWordToolTip=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u30EA\u30B9\u30C8\u306B\u5358\u8A9E\u3092\u8FFD\u52A0
|
||||
KeywordSearchEditListPanel.customizeComponents.enterNewWordToolTip=\u65B0\u898F\u5358\u8A9E\u3084\u4E00\u822C\u7684\u306A\u8868\u73FE\u3092\u5165\u529B
|
||||
KeywordSearchEditListPanel.customizeComponents.enterNewWordToolTip=\u65B0\u898F\u5358\u8A9E\u3084\u4E00\u6B63\u898F\u8868\u73FE\u3092\u5165\u529B
|
||||
KeywordSearchEditListPanel.customizeComponents.exportToFile=\u65E2\u5B58\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u3092\u30D5\u30A1\u30A4\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8
|
||||
KeywordSearchEditListPanel.customizeComponents.saveCurrentWIthNewNameToolTip=\u65E2\u5B58\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u306B\u540D\u524D\u3092\u4ED8\u3051\u3066\u4FDD\u5B58
|
||||
KeywordSearchEditListPanel.customizeComponents.removeSelectedMsg=\u9078\u629E\u3057\u305F\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u30EA\u30B9\u30C8\u304B\u3089\u524A\u9664
|
||||
KeywordSearchEditListPanel.newKwTitle=\u65B0\u898F\u30AD\u30FC\u30EF\u30FC\u30C9\u30A8\u30F3\u30C8\u30EA\u30FC
|
||||
KeywordSearchEditListPanel.addWordButtonAction.kwAlreadyExistsMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u306F\u65E2\u306B\u30EA\u30B9\u30C8\u306B\u5B58\u5728\u3057\u307E\u3059\u3002
|
||||
KeywordSearchEditListPanel.invalidKwMsg=\u7121\u52B9\u306A\u30AD\u30FC\u30EF\u30FC\u30C9\u30D1\u30BF\u30FC\u30F3\u3002\u5358\u8A9E\u3082\u3057\u304F\u306F\u6B63\u3057\u3044\u4E00\u822C\u7684\u306A\u8868\u73FE\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
||||
KeywordSearchEditListPanel.invalidKwMsg=\u7121\u52B9\u306A\u30AD\u30FC\u30EF\u30FC\u30C9\u30D1\u30BF\u30FC\u30F3\u3002\u5358\u8A9E\u3082\u3057\u304F\u306F\u6B63\u3057\u3044\u6B63\u898F\u8868\u73FE\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
||||
KeywordSearchEditListPanel.removeKwMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u524A\u9664
|
||||
KeywordSearchEditListPanel.deleteWordButtonActionPerformed.delConfirmMsg=\u5168\u3066\u306E\u30B1\u30FC\u30B9\u306B\u304A\u3051\u308B\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u3092\u524A\u9664\u3057\u307E\u3059\u3002\u3053\u306E\u524A\u9664\u3092\u5B9F\u884C\u3057\u307E\u3059\u304B\uFF1F
|
||||
KeywordSearchEditListPanel.exportButtonActionPerformed.fileFilterLabel=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8XML\u30D5\u30A1\u30A4\u30EB
|
||||
KeywordSearchEditListPanel.exportButtonActionPerformed.fileExistPrompt=\ {0} \u30D5\u30A1\u30A4\u30EB\u306F\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059\u3002\u4E0A\u66F8\u304D\u3057\u307E\u3059\u304B\uFF1F
|
||||
KeywordSearchEditListPanel.exportButtonActionPerformed.kwListExportedMsg=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3055\u308C\u305F\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8
|
||||
KeywordSearchEditListPanel.kwColName=\u30AD\u30FC\u30EF\u30FC\u30C9
|
||||
KeywordSearchEditListPanel.exportButtonActionPerformed.regExColName=\u4E00\u822C\u7684\u306A\u8868\u73FE
|
||||
KeywordSearchEditListPanel.exportButtonActionPerformed.regExColName=\u6B63\u898F\u8868\u73FE
|
||||
KeywordSearchFilterNode.getFileActions.openExternViewActLbl=\u5916\u90E8\u30D3\u30E5\u30FC\u30A2\u3067\u958B\u304F
|
||||
KeywordSearchFilterNode.getFileActions.searchSameMd5=\u540C\u4E00\u306EMD5\u30CF\u30C3\u30B7\u30E5\u3092\u6301\u3064\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22
|
||||
KeywordSearchFilterNode.getFileActions.viewInNewWinActionLbl=\u65B0\u3057\u3044\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u8868\u793A
|
||||
@ -128,7 +127,7 @@ KeywordSearchIngestModule.init.badInitMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u
|
||||
KeywordSearchIngestModule.init.tryStopSolrMsg={0}<br />\u53E4\u3044java Solr\u51E6\u7406\u3092\u505C\u6B62\u3057\uFF08\u3082\u3057\u5B58\u5728\u3059\u308C\u3070\uFF09\u3001\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u3092\u518D\u8D77\u52D5\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
||||
KeywordSearchIngestModule.init.noKwInLstMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u306B\u30AD\u30FC\u30EF\u30FC\u30C9\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
KeywordSearchIngestModule.init.onlyIdxKwSkipMsg=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3060\u3051\u5B9F\u884C\u3055\u308C\u3001\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u306F\u30B9\u30AD\u30C3\u30D7\u3055\u308C\u307E\u3059\uFF08\u300C\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8 - \u51E6\u7406\u306B\u8FFD\u52A0\u300D\u3092\u4F7F\u7528\u3057\u3001\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u3092\u8FFD\u52A0\u3059\u308B\u306E\u306F\u53EF\u80FD\u3067\u3059
|
||||
KeywordSearchIngestModule.postIndexSummary.knowFileHeaderLbl=\u65E2\u77E5\u306E\u7A2E\u985E\u306E\u30D5\u30A1\u30A4\u30EB
|
||||
KeywordSearchIngestModule.postIndexSummary.knowFileHeaderLbl=\u65E2\u77E5\u30BF\u30A4\u30D7\u306E\u30D5\u30A1\u30A4\u30EB
|
||||
KeywordSearchIngestModule.postIndexSummary.fileGenStringsHead=\u4E00\u822C\u7684\u306A\u30B9\u30C8\u30EA\u30F3\u30B0\u304C\u62BD\u51FA\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB
|
||||
KeywordSearchIngestModule.postIndexSummary.mdOnlyLbl=\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u307F\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u307E\u3057\u305F
|
||||
KeywordSearchIngestModule.postIndexSummary.idxErrLbl=\u30A8\u30E9\u30FC\uFF08\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u30A8\u30E9\u30FC\uFF09
|
||||
@ -136,7 +135,7 @@ KeywordSearchIngestModule.postIndexSummary.errTxtLbl=\u30A8\u30E9\u30FC\uFF08\u3
|
||||
KeywordSearchIngestModule.postIndexSummary.errIoLbl=\u30A8\u30E9\u30FC\uFF08I/O\uFF09
|
||||
KeywordSearchIngestModule.postIndexSummary.kwIdxResultsLbl=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u7D50\u679C
|
||||
KeywordSearchIngestModule.postIndexSummary.kwIdxErrsTitle=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u30A8\u30E9\u30FC
|
||||
KeywordSearchIngestModule.postIndexSummary.kwIdxErrMsgFiles=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u30B5\u30FC\u30D3\u30B9\u4E2D\u306B {0} \u30D5\u30A1\u30A4\u30EB\u306E\u51E6\u7406\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F\u3002
|
||||
KeywordSearchIngestModule.postIndexSummary.kwIdxErrMsgFiles=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u30B5\u30FC\u30D3\u30B9\u4E2D\u306B{0}\u30D5\u30A1\u30A4\u30EB\u306E\u51E6\u7406\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F\u3002
|
||||
KeywordSearchIngestModule.postIndexSummary.kwIdxWarnMsgTitle=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u8B66\u544A
|
||||
KeywordSearchIngestModule.postIndexSummary.idxErrReadFilesMsg=\u30AD\u30FC\u30EF\u30FC\u30C9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u30B5\u30FC\u30D3\u30B9\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u307F\u8FBC\u307F\u3084\u30C6\u30AD\u30B9\u30C8\u62BD\u51FA\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F\u3002\u539F\u56E0\u306F\u7834\u640D\u3057\u305F\u30E1\u30C7\u30A3\u30A2\u3084\u30D5\u30A1\u30A4\u30EB\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002
|
||||
KeywordSearchListsViewerPanel.initIngest.addIngestTitle=\u51E6\u7406\u306B\u8FFD\u52A0
|
||||
@ -146,11 +145,11 @@ KeywordSearchListsViewerPanel.initIngest.addIdxSearchMsg=\u9078\u629E\u3057\u305
|
||||
KeywordSearchListsViewerPanel.initIngest.ongoingIngestMsg=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\uFF1A {0} \uFF08\u51E6\u7406\u306F\u5B9F\u884C\u4E2D\uFF09
|
||||
KeywordSearchListsViewerPanel.initIngest.fileIndexCtMsg=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\uFF1A {0}
|
||||
KeywordSearch.selectedColLbl=\u9078\u629E\u6E08\u307F
|
||||
KeywordSearch.nameColLbl=\u540D\u524D
|
||||
KeywordSearch.regExColLbl=\u4E00\u822C\u7684\u306A\u8868\u73FE
|
||||
KeywordSearch.nameColLbl=\u540D\u79F0
|
||||
KeywordSearch.regExColLbl=\u6B63\u898F\u8868\u73FE
|
||||
KeywordSearchQueryManager.execute.exeWinTitle=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22 {0} - {1}
|
||||
KeywordSearch.newKeywordListMsg=\u65B0\u898F\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8
|
||||
KeywordSearch.importListFileDialogMsg=\ {0}\u3000\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3059\u308B\u306E\u306B\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F
|
||||
KeywordSearch.importListFileDialogMsg={0}\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F
|
||||
KeywordSearch.yesOwMsg=\u306F\u3044\u3001\u4E0A\u66F8\u304D\u3057\u307E\u3059
|
||||
KeywordSearch.noSkipMsg=\u3044\u3044\u3048\u3001\u30B9\u30AD\u30C3\u30D7\u3057\u307E\u3059
|
||||
KeywordSearch.cancelImportMsg=\u30A4\u30F3\u30DD\u30FC\u30C8\u3092\u30AD\u30E3\u30F3\u30BB\u30EB
|
||||
@ -161,6 +160,94 @@ KeywordSearchListsManagementPanel.fileExtensionFilterLbl=\u30AD\u30FC\u30EF\u30F
|
||||
KeywordSearch.listImportFeatureTitle=\u30AD\u30FC\u30EF\u30FC\u30C9\u30EA\u30B9\u30C8\u30A4\u30F3\u30DD\u30FC\u30C8
|
||||
KeywordSearchIngestModule.hashDbModuleName=\u30CF\u30C3\u30B7\u30E5\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7
|
||||
KeywordSearchIngestModule.moduleName=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22
|
||||
KeywordSearchIngestModule.moduleDescription=\u30EA\u30B9\u30C8\u5185\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u304A\u3088\u3073\u4E00\u822C\u7684\u306A\u8868\u73FE\u3092\u4F7F\u3044\u3001\u30D5\u30A1\u30A4\u30EB\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u304A\u3088\u3073\u5B9A\u671F\u7684\u306A\u691C\u7D22\u3092\u5B9F\u884C\u3057\u307E\u3059\u3002
|
||||
KeywordSearchIngestModule.moduleDescription=\u30EA\u30B9\u30C8\u5185\u306E\u30AD\u30FC\u30EF\u30FC\u30C9\u304A\u3088\u3073\u6B63\u898F\u8868\u73FE\u3092\u4F7F\u3044\u3001\u30D5\u30A1\u30A4\u30EB\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u304A\u3088\u3073\u5B9A\u671F\u7684\u306A\u691C\u7D22\u3092\u5B9F\u884C\u3057\u307E\u3059\u3002
|
||||
OptionsCategory_Name_KeywordSearchOptions=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22
|
||||
OptionsCategory_Keywords_KeywordSearchOptions=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22
|
||||
ExtractedContentPanel.pagePreviousButton.actionCommand=
|
||||
ExtractedContentPanel.pageOfLabel.text=of
|
||||
ExtractedContentPanel.pageCurLabel.text=-
|
||||
ExtractedContentPanel.pageTotalLabel.text=-
|
||||
KeywordSearchConfigurationPanel2.filesIndexedValue.text=-
|
||||
KeywordSearchIngestSimplePanel.languagesValLabel.text=-
|
||||
KeywordSearchConfigurationPanel2.chunksValLabel.text=-
|
||||
KeywordSearchIngestSimplePanel.keywordSearchEncodings.text=-
|
||||
AbstractFileChunk.index.exception.msg=\u30D5\u30A1\u30A4\u30EB\u30B9\u30C8\u30EA\u30F3\u30B0\u30C1\u30E3\u30F3\u30AF\u306E\u51E6\u7406\u4E2D\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF1A {0}, \u30C1\u30E3\u30F3\u30AF\: {1}
|
||||
AbstractFileStringContentStream.getSize.exception.msg=\u30B9\u30C8\u30EA\u30F3\u30B0\u5168\u4F53\u304C\u5909\u63DB\u3055\u308C\u306A\u3051\u308C\u3070\u3001\u5909\u63DB\u3055\u308C\u305F\u30B9\u30C8\u30EA\u30F3\u30B0\u5185\u306E\u30AD\u30E3\u30E9\u30AF\u30BF\u30FC\u6570\u306F\u4E0D\u660E\u3067\u3059\u3002
|
||||
AbstractFileStringContentStream.getSrcInfo.text=\u30D5\u30A1\u30A4\u30EB\uFF1A{0}
|
||||
ByteContentStream.getSrcInfo.text=\u30D5\u30A1\u30A4\u30EB\uFF1A{0}
|
||||
ExtractedContentPanel.SetMarkup.progress.loading=\u30C6\u30AD\u30B9\u30C8\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D
|
||||
ExtractedContentPanel.SetMarkup.progress.displayName=\u30C6\u30AD\u30B9\u30C8\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D
|
||||
ExtractedContentViewer.nextPage.exception.msg=\u6B21\u306E\u30DA\u30FC\u30B8\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
ExtractedContentViewer.previousPage.exception.msg=\u524D\u306E\u30DA\u30FC\u30B8\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
ExtractedContentViewer.hasNextItem.exception.msg=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u691C\u7D22\u53EF\u80FD\u306A\u30BD\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
ExtractedContentViewer.hasPreviousItem.exception.msg=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u691C\u7D22\u53EF\u80FD\u306A\u30BD\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
ExtractedContentViewer.nextItem.exception.msg=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u691C\u7D22\u53EF\u80FD\u306A\u30BD\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
ExtractedContentViewer.previousItem.exception.msg=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u691C\u7D22\u53EF\u80FD\u306A\u30BD\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
ExtractedContentViewer.currentItem.exception.msg=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u691C\u7D22\u53EF\u80FD\u306A\u30BD\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
HighlightedMatchesSource.nextPage.exception.msg=\u6B21\u306E\u30DA\u30FC\u30B8\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
HighlightedMatchesSource.previousPage.exception.msg=\u524D\u306E\u30DA\u30FC\u30B8\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
HighlightedMatchesSource.nextItem.exception.msg=\u6B21\u306E\u30A2\u30A4\u30C6\u30E0\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
HighlightedMatchesSource.previousItem.exception.msg=\u524D\u306E\u30A2\u30A4\u30C6\u30E0\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
Ingester.ingest.exception.unknownImgId.msg=\u4E0B\u8A18\u306E\u30D5\u30A1\u30A4\u30EB\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3092\u30B9\u30AD\u30C3\u30D7\u3057\u3066\u3044\u307E\u3059\u3002\u4E0D\u660E\u306A\u30A4\u30E1\u30FC\u30B8ID\uFF1A{0}
|
||||
Ingester.ingest.exception.cantReadStream.msg=\u30B3\u30F3\u30C6\u30F3\u30C4\u30B9\u30C8\u30EA\u30FC\u30E0\u3092\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF1A{0}
|
||||
Ingester.ingest.exception.err.msg=\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u51E6\u7406\u4E2D\u306E\u30A8\u30E9\u30FC\uFF1A{0}
|
||||
Ingester.ingestExtract.exception.solrTimeout.msg=\u4E0B\u8A18\u306EID\u306B\u5BFE\u3059\u308B\u3001Solr\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u30EA\u30AF\u30A8\u30B9\u30C8\u306F\u30BF\u30A4\u30E0\u30A2\u30A6\u30C8\u3057\u307E\u3057\u305F\uFF1A{0}, name\: {1}
|
||||
Ingester.ingestExtract.exception.probPostToSolr.msg=Solr\u306B\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u30DD\u30B9\u30C8\u3059\u308B\u306E\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002ID\uFF1A{0}, \u540D\u79F0\: {1}
|
||||
Ingester.UpReqestTask.run.exception.sorlNotAvail.msg=Solr\u30B3\u30A2\u304C\u5229\u7528\u4E0D\u53EF\u3067\u3059\u3002\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3067\u304D\u307E\u305B\u3093\u3002
|
||||
Ingester.UpRequestTask.run.exception.probReadFile.msg=\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u307F\u53D6\u308A\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||
Ingester.UpRequestTask.run.exception.solrProb.msg=Solr\u306B\u306F\u554F\u984C\u304C\u3042\u308A\u307E\u3059
|
||||
Ingester.UpRequestTask.run.exception.probPostToSolr.msg=\u30D5\u30A1\u30A4\u30EB\u30B3\u30F3\u30C6\u30F3\u30C4\u3092Solr\u306B\u30DD\u30B9\u30C8\u3059\u308B\u306E\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002SolrException\u30A8\u30E9\u30FC\u30B3\u30FC\u30C9\uFF1A{0}
|
||||
Ingester.FscContentStream.getSrcInfo=\u30D5\u30A1\u30A4\u30EB\uFF1A{0}
|
||||
Ingester.FscContentStream.getReader=\u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
|
||||
Ingester.NullContentStream.getSrcInfo.text=\u30D5\u30A1\u30A4\u30EB\uFF1A{0}
|
||||
Ingester.NullContentStream.getReader=\u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
|
||||
KeywordSearch.moduleErr=\u30E2\u30B8\u30E5\u30FC\u30EB\u30A8\u30E9\u30FC
|
||||
KeywordSearch.fireNumIdxFileChg.moduleErr.msg=KeywordSearch\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3092\u78BA\u8A8D\u4E2D\u306B\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u30A8\u30E9\u30FC\u3092\u8D77\u3053\u3057\u307E\u3057\u305F\u3002\u3069\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u304B\u30ED\u30B0\u3067\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002\u4E00\u90E8\u306E\u30C7\u30FC\u30BF\u304C\u4E0D\u5B8C\u5168\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002
|
||||
KeywordSearchIngestModule.init.exception.errConnToSolr.msg=Solr\u30B5\u30FC\u30D0\u3078\u63A5\u7D9A\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF1A{0}
|
||||
KeywordSearchListsEncase.save.exception.msg=\u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
|
||||
KeywordSearchListsEncase.save2.exception.msg=\u307E\u3060\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
|
||||
KeywordSearchListsEncase.encaseMetaType.exception.msg=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044EncaseMetaType\uFF1A{0}
|
||||
KeywordSearchListsManagementPanel.getColName.text=\u540D\u79F0
|
||||
KeywordSearchListsManagementPanel.setValueAt.exception.msg=\u30BB\u30EB\u306E\u7DE8\u96C6\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093
|
||||
KeywordSearchListsViewerPanel.isLuceneQuerySel.exception.msg=\u30DE\u30EB\u30C1\u30EF\u30FC\u30C9\u30AF\u30A8\u30EA\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
|
||||
KeywordSearchListsViewerPanel.getQueryText.exception.msg=\u30DE\u30EB\u30C1\u30EF\u30FC\u30C9\u30AF\u30A8\u30EA\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
|
||||
KeywordSearchOptionsPanelController.moduleErr=\u30E2\u30B8\u30E5\u30FC\u30EB\u30A8\u30E9\u30FC
|
||||
KeywordSearchOptionsPanelController.moduleErr.msg1=KeywordSearchOptionsPanelController\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3092\u78BA\u8A8D\u4E2D\u306B\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u30A8\u30E9\u30FC\u3092\u8D77\u3053\u3057\u307E\u3057\u305F\u3002\u3069\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u304B\u30ED\u30B0\u3067\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002\u4E00\u90E8\u306E\u30C7\u30FC\u30BF\u304C\u4E0D\u5B8C\u5168\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002
|
||||
KeywordSearchOptionsPanelController.moduleErr.msg2=KeywordSearchOptionsPanelController\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3092\u78BA\u8A8D\u4E2D\u306B\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u30A8\u30E9\u30FC\u3092\u8D77\u3053\u3057\u307E\u3057\u305F\u3002\u3069\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u304B\u30ED\u30B0\u3067\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002\u4E00\u90E8\u306E\u30C7\u30FC\u30BF\u304C\u4E0D\u5B8C\u5168\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002
|
||||
KeywordSearchPanel.getQueryList.exception.msg=\u30B7\u30F3\u30B0\u30EB\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\u306E\u30EA\u30B9\u30C8\u304C\u3042\u308A\u307E\u305B\u3093
|
||||
KeywordSearchQueryManager.pathText.text=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22
|
||||
KeywordSearchResultFactory.progress.saving=\u7D50\u679C\u3092\u4FDD\u5B58\u4E2D\uFF1A{0}
|
||||
KeywordSearchSettings.moduleName.text=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22
|
||||
KeywordSearchSettings.properties_options.text={0}_\u30AA\u30D7\u30B7\u30E7\u30F3
|
||||
KeywordSearchSettings.propertiesNSRL.text={0}_NSRL
|
||||
KeywordSearchSettings.propertiesScripts.text={0}_\u30B9\u30AF\u30EA\u30D7\u30C8
|
||||
NoOpenCoreException.err.noOpenSorlCore.msg=\u73FE\u5728\u958B\u3044\u3066\u3044\u308BSolr\u30B3\u30A2\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
Server.start.exception.cantStartSolr.msg=Solr\u30B5\u30FC\u30D0\u30D7\u30ED\u30BB\u30B9\u3092\u958B\u59CB\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
|
||||
Server.start.exception.cantStartSolr.msg2=Solr\u30B5\u30FC\u30D0\u30D7\u30ED\u30BB\u30B9\u3092\u958B\u59CB\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
|
||||
Server.isRunning.exception.errCheckSolrRunning.msg=Solr\u30B5\u30FC\u30D0\u304C\u7A3C\u50CD\u3057\u3066\u3044\u308B\u304B\u78BA\u8A8D\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
|
||||
Server.isRunning.exception.errCheckSolrRunning.msg2=Solr\u30B5\u30FC\u30D0\u304C\u7A3C\u50CD\u3057\u3066\u3044\u308B\u304B\u78BA\u8A8D\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
|
||||
Server.openCore.exception.alreadyOpen.msg=\u3059\u3067\u306B\u958B\u3044\u3066\u3044\u308B\u30B3\u30A2\u3067\u3059\uFF01\u307E\u305A\u660E\u793A\u7684\u306B\u30B3\u30A2\u3092\u9589\u3058\u3066\u4E0B\u3055\u3044\u3002
|
||||
Server.queryNumIdxFiles.exception.msg=\u8907\u6570\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u306B\u5BFE\u3057\u3066\u306E\u30AF\u30A8\u30EA\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||
Server.queryNumIdxChunks.exception.msg=\u8907\u6570\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u30C1\u30E3\u30F3\u30AF\u306B\u5BFE\u3057\u3066\u306E\u30AF\u30A8\u30EA\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||
Server.queryNumIdxDocs.exception.msg=\u8907\u6570\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306B\u5BFE\u3057\u3066\u306E\u30AF\u30A8\u30EA\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||
Server.queryIsIdxd.exception.msg=\u30B3\u30F3\u30C6\u30F3\u30C4\u304C\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3055\u308C\u305F\u304B\u78BA\u8A8D\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||
Server.queryNumFileChunks.exception.msg=\u30D5\u30A1\u30A4\u30EB\u30C1\u30E3\u30F3\u30AF\u306E\u6570\u3092\u78BA\u8A8D\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||
Server.query.exception.msg=\u30AF\u30A8\u30EA\u306E\u5B9F\u884C\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF1A{0}
|
||||
Server.query2.exception.msg=\u30AF\u30A8\u30EA\u306E\u5B9F\u884C\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF1A{0}
|
||||
Server.queryTerms.exception.msg=Terms\u30AF\u30A8\u30EA\u306E\u5B9F\u884C\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
|
||||
Server.openCore.exception.msg=\u30B3\u30A2\u3092\u958B\u304F\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u3057\u307E\u3057\u305F\u304C\u3001\u30B5\u30FC\u30D0\u304C\u307E\u3060\u7A3C\u50CD\u3057\u3066\u3044\u307E\u305B\u3093\u3002
|
||||
Server.openCore.exception.cantOpen.msg=\u30B3\u30A2\u3092\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F
|
||||
Server.openCore.exception.cantOpen.msg2=\u30B3\u30A2\u3092\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F
|
||||
Server.request.exception.exception.msg=Solr\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u767A\u884C\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
|
||||
Server.commit.exception.msg=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u30B3\u30DF\u30C3\u30C8\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
|
||||
Server.addDoc.exception.msg=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30CF\u30F3\u30C9\u30E9\u30FC\u3092\u4F7F\u7528\u3057\u307E\u3057\u305F\u304C\u3001\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306B\u4E0B\u8A18\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF1A{0}
|
||||
Server.close.exception.msg=\u30B3\u30A2\u3092\u9589\u3058\u308C\u307E\u305B\u3093
|
||||
Server.close.exception.msg2=\u30B3\u30A2\u3092\u9589\u3058\u308C\u307E\u305B\u3093
|
||||
Server.solrServerNoPortException.msg=\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u306B\u4F7F\u7528\u3057\u3066\u3044\u308B\u30B5\u30FC\u30D0\u306F\u30DD\u30FC\u30C8{0}\u306B\u30D0\u30A4\u30F3\u30C9\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30DD\u30FC\u30C8\u306F\u4F7F\u7528\u4E0D\u53EF\u3067\u3059\u3002\u30C7\u30D5\u30A9\u30EB\u30C8{1}\u30DD\u30FC\u30C8\u306E\u5909\u66F4\u3092\u691C\u8A0E\u3057\u3066\u4E0B\u3055\u3044\u3002
|
||||
KeywordSearchIngestModule.doInBackGround.displayName=\u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22
|
||||
KeywordSearchIngestModule.doInBackGround.finalizeMsg=-\u3000\u6700\u7D42\u51E6\u7406\u4E2D
|
||||
KeywordSearchIngestModule.doInBackGround.pendingMsg=\uFF08\u30DA\u30F3\u30C7\u30A3\u30F3\u30B0\uFF09
|
||||
KeywordSearchIngestModule.doInBackGround.cancelMsg=\uFF08\u30AD\u30E3\u30F3\u30BB\u30EB\u4E2D\u2026\uFF09
|
||||
Server.addDoc.exception.msg2=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30CF\u30F3\u30C9\u30E9\u30FC\u3092\u4F7F\u7528\u3057\u307E\u3057\u305F\u304C\u3001\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306B\u4E0B\u8A18\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF1A{0}
|
||||
ExtractedContentViewer.getSolrContent.txtBodyItal=<span style\=''font-style\:italic''>{0}</span>
|
||||
Keyword.toString.text=Keyword'{'query\={0}, isLiteral\={1}, keywordType\={2}'}'
|
@ -24,6 +24,8 @@ import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.apache.solr.common.util.ContentStream;
|
||||
import org.sleuthkit.datamodel.AbstractContent;
|
||||
@ -84,7 +86,7 @@ class ByteContentStream implements ContentStream {
|
||||
|
||||
@Override
|
||||
public String getSourceInfo() {
|
||||
return "File:" + aContent.getId();
|
||||
return NbBundle.getMessage(this.getClass(), "ByteContentStream.getSrcInfo.text", aContent.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -685,8 +685,10 @@ class ExtractedContentPanel extends javax.swing.JPanel {
|
||||
|
||||
@Override
|
||||
protected Object doInBackground() throws Exception {
|
||||
progress = ProgressHandleFactory.createHandle("Loading text");
|
||||
progress.setDisplayName("Loading text");
|
||||
progress = ProgressHandleFactory.createHandle(
|
||||
NbBundle.getMessage(this.getClass(), "ExtractedContentPanel.SetMarkup.progress.loading"));
|
||||
progress.setDisplayName(
|
||||
NbBundle.getMessage(this.getClass(), "ExtractedContentPanel.SetMarkup.progress.displayName"));
|
||||
progress.start();
|
||||
progress.switchToIndeterminate();
|
||||
|
||||
|
@ -134,7 +134,8 @@ public class ExtractedContentViewer implements DataContentViewer {
|
||||
@Override
|
||||
public int nextPage() {
|
||||
if (!hasNextPage()) {
|
||||
throw new IllegalStateException("No next page.");
|
||||
throw new IllegalStateException(
|
||||
NbBundle.getMessage(this.getClass(), "ExtractedContentViewer.nextPage.exception.msg"));
|
||||
}
|
||||
++currentPage;
|
||||
return currentPage;
|
||||
@ -143,7 +144,8 @@ public class ExtractedContentViewer implements DataContentViewer {
|
||||
@Override
|
||||
public int previousPage() {
|
||||
if (!hasPreviousPage()) {
|
||||
throw new IllegalStateException("No previous page.");
|
||||
throw new IllegalStateException(
|
||||
NbBundle.getMessage(this.getClass(), "ExtractedContentViewer.previousPage.exception.msg"));
|
||||
}
|
||||
--currentPage;
|
||||
return currentPage;
|
||||
@ -151,27 +153,32 @@ public class ExtractedContentViewer implements DataContentViewer {
|
||||
|
||||
@Override
|
||||
public boolean hasNextItem() {
|
||||
throw new UnsupportedOperationException("Not supported, not a searchable source.");
|
||||
throw new UnsupportedOperationException(
|
||||
NbBundle.getMessage(this.getClass(), "ExtractedContentViewer.hasNextItem.exception.msg"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasPreviousItem() {
|
||||
throw new UnsupportedOperationException("Not supported, not a searchable source.");
|
||||
throw new UnsupportedOperationException(
|
||||
NbBundle.getMessage(this.getClass(), "ExtractedContentViewer.hasPreviousItem.exception.msg"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int nextItem() {
|
||||
throw new UnsupportedOperationException("Not supported, not a searchable source.");
|
||||
throw new UnsupportedOperationException(
|
||||
NbBundle.getMessage(this.getClass(), "ExtractedContentViewer.nextItem.exception.msg"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int previousItem() {
|
||||
throw new UnsupportedOperationException("Not supported, not a searchable source.");
|
||||
throw new UnsupportedOperationException(
|
||||
NbBundle.getMessage(this.getClass(), "ExtractedContentViewer.previousItem.exception.msg"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int currentItem() {
|
||||
throw new UnsupportedOperationException("Not supported, not a searchable source.");
|
||||
throw new UnsupportedOperationException(
|
||||
NbBundle.getMessage(this.getClass(), "ExtractedContentViewer.currentItem.exception.msg"));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -223,7 +223,8 @@ class HighlightedMatchesSource implements MarkupSource, HighlightLookup {
|
||||
@Override
|
||||
public int nextPage() {
|
||||
if (!hasNextPage()) {
|
||||
throw new IllegalStateException("No next page.");
|
||||
throw new IllegalStateException(
|
||||
NbBundle.getMessage(this.getClass(), "HighlightedMatchesSource.nextPage.exception.msg"));
|
||||
}
|
||||
int idx = pages.indexOf(this.currentPage);
|
||||
currentPage = pages.get(idx + 1);
|
||||
@ -233,7 +234,8 @@ class HighlightedMatchesSource implements MarkupSource, HighlightLookup {
|
||||
@Override
|
||||
public int previousPage() {
|
||||
if (!hasPreviousPage()) {
|
||||
throw new IllegalStateException("No previous page.");
|
||||
throw new IllegalStateException(
|
||||
NbBundle.getMessage(this.getClass(), "HighlightedMatchesSource.previousPage.exception.msg"));
|
||||
}
|
||||
int idx = pages.indexOf(this.currentPage);
|
||||
currentPage = pages.get(idx - 1);
|
||||
@ -259,7 +261,8 @@ class HighlightedMatchesSource implements MarkupSource, HighlightLookup {
|
||||
@Override
|
||||
public int nextItem() {
|
||||
if (!hasNextItem()) {
|
||||
throw new IllegalStateException("No next item.");
|
||||
throw new IllegalStateException(
|
||||
NbBundle.getMessage(this.getClass(), "HighlightedMatchesSource.nextItem.exception.msg"));
|
||||
}
|
||||
int cur = pagesToHits.get(currentPage) + 1;
|
||||
pagesToHits.put(currentPage, cur);
|
||||
@ -269,7 +272,8 @@ class HighlightedMatchesSource implements MarkupSource, HighlightLookup {
|
||||
@Override
|
||||
public int previousItem() {
|
||||
if (!hasPreviousItem()) {
|
||||
throw new IllegalStateException("No previous item.");
|
||||
throw new IllegalStateException(
|
||||
NbBundle.getMessage(this.getClass(), "HighlightedMatchesSource.previousItem.exception.msg"));
|
||||
}
|
||||
int cur = pagesToHits.get(currentPage) - 1;
|
||||
pagesToHits.put(currentPage, cur);
|
||||
|
@ -41,6 +41,7 @@ import org.apache.solr.common.SolrException.ErrorCode;
|
||||
import org.apache.solr.common.util.ContentStream;
|
||||
import org.apache.solr.common.SolrInputDocument;
|
||||
import org.openide.util.Exceptions;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
||||
@ -279,7 +280,8 @@ class Ingester {
|
||||
|
||||
if (fields.get(Server.Schema.IMAGE_ID.toString()) == null) {
|
||||
//skip the file, image id unknown
|
||||
String msg = "Skipping indexing the file, unknown image id, for file: " + cs.getName();
|
||||
String msg = NbBundle.getMessage(this.getClass(),
|
||||
"Ingester.ingest.exception.unknownImgId.msg", cs.getName());
|
||||
logger.log(Level.SEVERE, msg);
|
||||
throw new IngesterException(msg);
|
||||
}
|
||||
@ -301,7 +303,9 @@ class Ingester {
|
||||
is = cs.getStream();
|
||||
read = is.read(docChunkContentBuf);
|
||||
} catch (IOException ex) {
|
||||
throw new IngesterException("Could not read content stream: " + cs.getName());
|
||||
throw new IngesterException(
|
||||
NbBundle.getMessage(this.getClass(), "Ingester.ingest.exception.cantReadStream.msg",
|
||||
cs.getName()));
|
||||
} finally {
|
||||
try {
|
||||
is.close();
|
||||
@ -333,7 +337,8 @@ class Ingester {
|
||||
solrServer.addDocument(updateDoc);
|
||||
uncommitedIngests = true;
|
||||
} catch (KeywordSearchModuleException ex) {
|
||||
throw new IngesterException("Error ingestint document: " + cs.getName(), ex);
|
||||
throw new IngesterException(
|
||||
NbBundle.getMessage(this.getClass(), "Ingester.ingest.exception.err.msg", cs.getName()), ex);
|
||||
}
|
||||
|
||||
|
||||
@ -373,9 +378,13 @@ class Ingester {
|
||||
logger.log(Level.WARNING, "Solr timeout encountered, trying to restart Solr");
|
||||
//restart may be needed to recover from some error conditions
|
||||
hardSolrRestart();
|
||||
throw new IngesterException("Solr index request time out for id: " + fields.get("id") + ", name: " + fields.get("file_name"));
|
||||
throw new IngesterException(
|
||||
NbBundle.getMessage(this.getClass(), "Ingester.ingestExtract.exception.solrTimeout.msg",
|
||||
fields.get("id"), fields.get("file_name")));
|
||||
} catch (Exception e) {
|
||||
throw new IngesterException("Problem posting content to Solr, id: " + fields.get("id") + ", name: " + fields.get("file_name"), e);
|
||||
throw new IngesterException(
|
||||
NbBundle.getMessage(this.getClass(), "Ingester.ingestExtract.exception.probPostToSolr.msg",
|
||||
fields.get("id"), fields.get("file_name")), e);
|
||||
}
|
||||
uncommitedIngests = true;
|
||||
}
|
||||
@ -443,14 +452,17 @@ class Ingester {
|
||||
up.setMethod(METHOD.POST);
|
||||
solrServer.request(up);
|
||||
} catch (NoOpenCoreException ex) {
|
||||
throw new RuntimeException("No Solr core available, cannot index the content", ex);
|
||||
throw new RuntimeException(
|
||||
NbBundle.getMessage(this.getClass(), "Ingester.UpReqestTask.run.exception.sorlNotAvail.msg"), ex);
|
||||
} catch (IllegalStateException ex) {
|
||||
// problems with content
|
||||
throw new RuntimeException("Problem reading file.", ex);
|
||||
throw new RuntimeException(
|
||||
NbBundle.getMessage(this.getClass(), "Ingester.UpRequestTask.run.exception.probReadFile.msg"), ex);
|
||||
} catch (SolrServerException ex) {
|
||||
// If there's a problem talking to Solr, something is fundamentally
|
||||
// wrong with ingest
|
||||
throw new RuntimeException("Problem with Solr", ex);
|
||||
throw new RuntimeException(
|
||||
NbBundle.getMessage(this.getClass(), "Ingester.UpRequestTask.run.exception.solrProb.msg"), ex);
|
||||
} catch (SolrException ex) {
|
||||
// Tika problems result in an unchecked SolrException
|
||||
ErrorCode ec = ErrorCode.getErrorCode(ex.code());
|
||||
@ -458,7 +470,10 @@ class Ingester {
|
||||
// When Tika has problems with a document, it throws a server error
|
||||
// but it's okay to continue with other documents
|
||||
if (ec.equals(ErrorCode.SERVER_ERROR)) {
|
||||
throw new RuntimeException("Problem posting file contents to Solr. SolrException error code: " + ec, ex);
|
||||
throw new RuntimeException(NbBundle.getMessage(this.getClass(),
|
||||
"Ingester.UpRequestTask.run.exception.probPostToSolr.msg",
|
||||
ec),
|
||||
ex);
|
||||
} else {
|
||||
// shouldn't get any other error codes
|
||||
throw ex;
|
||||
@ -513,7 +528,7 @@ class Ingester {
|
||||
|
||||
@Override
|
||||
public String getSourceInfo() {
|
||||
return "File:" + f.getId();
|
||||
return NbBundle.getMessage(this.getClass(), "Ingester.FscContentStream.getSrcInfo", f.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -533,7 +548,8 @@ class Ingester {
|
||||
|
||||
@Override
|
||||
public Reader getReader() throws IOException {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
throw new UnsupportedOperationException(
|
||||
NbBundle.getMessage(this.getClass(), "Ingester.FscContentStream.getReader"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -555,7 +571,7 @@ class Ingester {
|
||||
|
||||
@Override
|
||||
public String getSourceInfo() {
|
||||
return "File:" + aContent.getId();
|
||||
return NbBundle.getMessage(this.getClass(), "Ingester.NullContentStream.getSrcInfo.text", aContent.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -575,7 +591,8 @@ class Ingester {
|
||||
|
||||
@Override
|
||||
public Reader getReader() throws IOException {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
throw new UnsupportedOperationException(
|
||||
NbBundle.getMessage(this.getClass(), "Ingester.NullContentStream.getReader"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,7 @@
|
||||
|
||||
package org.sleuthkit.autopsy.keywordsearch;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.datamodel.BlackboardAttribute;
|
||||
|
||||
/**
|
||||
@ -72,7 +73,7 @@ class Keyword {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Keyword{" + "query=" + keywordString + ", isLiteral=" + isLiteral + ", keywordType=" + keywordType + '}';
|
||||
return NbBundle.getMessage(this.getClass(), "Keyword.toString.text", keywordString, isLiteral, keywordType);
|
||||
}
|
||||
|
||||
|
||||
|
@ -28,6 +28,7 @@ import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import java.util.logging.SimpleFormatter;
|
||||
import org.openide.util.Exceptions;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
||||
import org.sleuthkit.autopsy.keywordsearch.KeywordSearchResultFactory.ResultWriter;
|
||||
@ -107,7 +108,10 @@ public class KeywordSearch {
|
||||
}
|
||||
catch (Exception e) {
|
||||
logger.log(Level.SEVERE, "KeywordSearch listener threw exception", e);
|
||||
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to KeywordSearch updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
|
||||
MessageNotifyUtil.Notify.show(NbBundle.getMessage(KeywordSearch.class, "KeywordSearch.moduleErr"),
|
||||
NbBundle.getMessage(KeywordSearch.class,
|
||||
"KeywordSearch.fireNumIdxFileChg.moduleErr.msg"),
|
||||
MessageNotifyUtil.MessageType.ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -377,7 +377,9 @@ public final class KeywordSearchIngestModule extends IngestModuleAbstractFile {
|
||||
// we had cases where getStatus was OK, but the connection resulted in a 404
|
||||
server.queryNumIndexedDocuments();
|
||||
} catch (KeywordSearchModuleException | NoOpenCoreException ex) {
|
||||
throw new IngestModuleException("Error connecting to SOLR server: " + ex.getMessage());
|
||||
throw new IngestModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "KeywordSearchIngestModule.init.exception.errConnToSolr.msg",
|
||||
ex.getMessage()));
|
||||
}
|
||||
|
||||
//initialize extractors
|
||||
|
@ -18,6 +18,8 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.keywordsearch;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
@ -115,12 +117,14 @@ class KeywordSearchListsEncase extends KeywordSearchListsAbstract{
|
||||
|
||||
@Override
|
||||
public boolean save() {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
throw new UnsupportedOperationException(
|
||||
NbBundle.getMessage(this.getClass(), "KeywordSearchListsEncase.save.exception.msg"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean save(boolean isExport) {
|
||||
throw new UnsupportedOperationException("Not supported yet.");
|
||||
throw new UnsupportedOperationException(
|
||||
NbBundle.getMessage(this.getClass(), "KeywordSearchListsEncase.save2.exception.msg"));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -173,7 +177,10 @@ class KeywordSearchListsEncase extends KeywordSearchListsAbstract{
|
||||
} else if(type.equals("")) {
|
||||
return Expression;
|
||||
} else {
|
||||
throw new IllegalArgumentException("Unsupported EncaseMetaType: " + type);
|
||||
throw new IllegalArgumentException(
|
||||
NbBundle.getMessage(KeywordSearchListsEncase.class,
|
||||
"KeywordSearchListsEncase.encaseMetaType.exception.msg",
|
||||
type));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -342,7 +342,7 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel implements Op
|
||||
|
||||
@Override
|
||||
public String getColumnName(int column) {
|
||||
return "Name";
|
||||
return NbBundle.getMessage(this.getClass(), "KeywordSearchListsManagementPanel.getColName.text");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -357,7 +357,8 @@ class KeywordSearchListsManagementPanel extends javax.swing.JPanel implements Op
|
||||
|
||||
@Override
|
||||
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
|
||||
throw new UnsupportedOperationException("Editing of cells is not supported");
|
||||
throw new UnsupportedOperationException(
|
||||
NbBundle.getMessage(this.getClass(), "KeywordSearchListsManagementPanel.setValueAt.exception.msg"));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -322,12 +322,14 @@ class KeywordSearchListsViewerPanel extends AbstractKeywordSearchPerformer {
|
||||
|
||||
@Override
|
||||
public boolean isLuceneQuerySelected() {
|
||||
throw new UnsupportedOperationException("Not supported for multi-word queries.");
|
||||
throw new UnsupportedOperationException(
|
||||
NbBundle.getMessage(this.getClass(), "KeywordSearchListsViewerPanel.isLuceneQuerySel.exception.msg"));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getQueryText() {
|
||||
throw new UnsupportedOperationException("Not supported for multi-word queries.");
|
||||
throw new UnsupportedOperationException(
|
||||
NbBundle.getMessage(this.getClass(), "KeywordSearchListsViewerPanel.getQueryText.exception.msg"));
|
||||
}
|
||||
|
||||
void addSearchButtonActionListener(ActionListener al) {
|
||||
|
@ -10,6 +10,7 @@ import javax.swing.JComponent;
|
||||
import org.netbeans.spi.options.OptionsPanelController;
|
||||
import org.openide.util.HelpCtx;
|
||||
import org.openide.util.Lookup;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||
import java.util.logging.Level;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
@ -82,7 +83,10 @@ public final class KeywordSearchOptionsPanelController extends OptionsPanelContr
|
||||
}
|
||||
catch (Exception e) {
|
||||
logger.log(Level.SEVERE, "KeywordSearchOptionsPanelController listener threw exception", e);
|
||||
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to KeywordSearchOptionsPanelController updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
|
||||
MessageNotifyUtil.Notify.show(
|
||||
NbBundle.getMessage(this.getClass(), "KeywordSearchOptionsPanelController.moduleErr"),
|
||||
NbBundle.getMessage(this.getClass(), "KeywordSearchOptionsPanelController.moduleErr.msg1"),
|
||||
MessageNotifyUtil.MessageType.ERROR);
|
||||
}
|
||||
}
|
||||
try {
|
||||
@ -90,7 +94,10 @@ public final class KeywordSearchOptionsPanelController extends OptionsPanelContr
|
||||
}
|
||||
catch (Exception e) {
|
||||
logger.log(Level.SEVERE, "KeywordSearchOptionsPanelController listener threw exception", e);
|
||||
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to KeywordSearchOptionsPanelController updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
|
||||
MessageNotifyUtil.Notify.show(
|
||||
NbBundle.getMessage(this.getClass(), "KeywordSearchOptionsPanelController.moduleErr"),
|
||||
NbBundle.getMessage(this.getClass(), "KeywordSearchOptionsPanelController.moduleErr.msg2"),
|
||||
MessageNotifyUtil.MessageType.ERROR);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -34,12 +34,14 @@ import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import javax.swing.JMenuItem;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.event.PopupMenuEvent;
|
||||
import javax.swing.event.PopupMenuListener;
|
||||
import org.apache.solr.client.solrj.SolrServerException;
|
||||
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
|
||||
/**
|
||||
@ -384,7 +386,8 @@ class KeywordSearchPanel extends AbstractKeywordSearchPerformer {
|
||||
|
||||
@Override
|
||||
public List<Keyword> getQueryList() {
|
||||
throw new UnsupportedOperationException("No list for single-keyword search");
|
||||
throw new UnsupportedOperationException(
|
||||
NbBundle.getMessage(this.getClass(), "KeywordSearchPanel.getQueryList.exception.msg"));
|
||||
}
|
||||
|
||||
private class KeywordPropertyChangeListener implements PropertyChangeListener {
|
||||
|
@ -165,7 +165,7 @@ class KeywordSearchQueryManager {
|
||||
rootNode = Node.EMPTY;
|
||||
}
|
||||
|
||||
final String pathText = "Keyword search";
|
||||
final String pathText = NbBundle.getMessage(this.getClass(), "KeywordSearchQueryManager.pathText.text");
|
||||
|
||||
DataResultTopComponent.initInstance(pathText, rootNode, things.size(), searchResultWin);
|
||||
|
||||
|
@ -28,6 +28,8 @@ import java.util.Map;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.SwingWorker;
|
||||
@ -571,7 +573,8 @@ class KeywordSearchResultFactory extends ChildFactory<KeyValueQuery> {
|
||||
try {
|
||||
final String queryStr = query.getQueryString();
|
||||
final String queryDisp = queryStr.length() > QUERY_DISPLAY_LEN ? queryStr.substring(0, QUERY_DISPLAY_LEN - 1) + " ..." : queryStr;
|
||||
progress = ProgressHandleFactory.createHandle("Saving results: " + queryDisp, new Cancellable() {
|
||||
progress = ProgressHandleFactory.createHandle(
|
||||
NbBundle.getMessage(this.getClass(), "KeywordSearchResultFactory.progress.saving", queryDisp), new Cancellable() {
|
||||
|
||||
@Override
|
||||
public boolean cancel() {
|
||||
|
@ -25,6 +25,8 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
||||
import org.sleuthkit.autopsy.coreutils.StringExtract;
|
||||
@ -34,10 +36,10 @@ import org.sleuthkit.autopsy.keywordsearch.KeywordSearchIngestModule.UpdateFrequ
|
||||
|
||||
//This file contains constants and settings for KeywordSearch
|
||||
class KeywordSearchSettings {
|
||||
public static final String MODULE_NAME = "KeywordSearch";
|
||||
static final String PROPERTIES_OPTIONS = MODULE_NAME+"_Options";
|
||||
static final String PROPERTIES_NSRL = MODULE_NAME+"_NSRL";
|
||||
static final String PROPERTIES_SCRIPTS = MODULE_NAME+"_Scripts";
|
||||
public static final String MODULE_NAME = NbBundle.getMessage(KeywordSearchSettings.class, "KeywordSearchSettings.moduleName.text");
|
||||
static final String PROPERTIES_OPTIONS = NbBundle.getMessage(KeywordSearchSettings.class, "KeywordSearchSettings.properties_options.text", MODULE_NAME);
|
||||
static final String PROPERTIES_NSRL = NbBundle.getMessage(KeywordSearchSettings.class, "KeywordSearchSettings.propertiesNSRL.text", MODULE_NAME);
|
||||
static final String PROPERTIES_SCRIPTS = NbBundle.getMessage(KeywordSearchSettings.class, "KeywordSearchSettings.propertiesScripts.text", MODULE_NAME);
|
||||
private static boolean skipKnown = true;
|
||||
private static final Logger logger = Logger.getLogger(KeywordSearchSettings.class.getName());
|
||||
private static UpdateFrequency UpdateFreq = UpdateFrequency.DEFAULT;
|
||||
|
@ -18,6 +18,8 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.keywordsearch;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
|
||||
/**
|
||||
*
|
||||
* Exception thrown when no core is open
|
||||
@ -25,7 +27,7 @@ package org.sleuthkit.autopsy.keywordsearch;
|
||||
public class NoOpenCoreException extends Exception {
|
||||
|
||||
NoOpenCoreException() {
|
||||
super("No currently open Solr core.");
|
||||
super(NbBundle.getMessage(NoOpenCoreException.class, "NoOpenCoreException.err.noOpenSorlCore.msg"));
|
||||
}
|
||||
|
||||
|
||||
|
@ -30,7 +30,6 @@ import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.lang.Long;
|
||||
import java.lang.Long;
|
||||
import java.net.ConnectException;
|
||||
import java.net.ServerSocket;
|
||||
import java.net.SocketException;
|
||||
@ -38,9 +37,10 @@ import java.nio.charset.Charset;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import javax.swing.AbstractAction;
|
||||
import org.apache.solr.client.solrj.SolrQuery;
|
||||
@ -57,7 +57,6 @@ import org.openide.modules.Places;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
||||
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
||||
import org.sleuthkit.autopsy.coreutils.Version;
|
||||
import org.sleuthkit.datamodel.Content;
|
||||
import org.apache.solr.common.SolrInputDocument;
|
||||
import org.apache.solr.client.solrj.impl.XMLResponseParser;
|
||||
@ -403,10 +402,12 @@ public class Server {
|
||||
|
||||
} catch (SecurityException ex) {
|
||||
logger.log(Level.WARNING, "Could not start Solr process!", ex);
|
||||
throw new KeywordSearchModuleException("Could not start Solr server process", ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.start.exception.cantStartSolr.msg"), ex);
|
||||
} catch (IOException ex) {
|
||||
logger.log(Level.WARNING, "Could not start Solr server process!", ex);
|
||||
throw new KeywordSearchModuleException("Could not start Solr server process", ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.start.exception.cantStartSolr.msg2"), ex);
|
||||
}
|
||||
} else {
|
||||
logger.log(Level.WARNING, "Could not start Solr server process, port [" + currentSolrServerPort + "] not available!");
|
||||
@ -537,10 +538,12 @@ public class Server {
|
||||
logger.log(Level.INFO, "Solr server is not running, cause: " + cause.getMessage());
|
||||
return false;
|
||||
} else {
|
||||
throw new KeywordSearchModuleException("Error checking if Solr server is running", ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.isRunning.exception.errCheckSolrRunning.msg"), ex);
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
throw new KeywordSearchModuleException("Error checking if Solr server is running", ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.isRunning.exception.errCheckSolrRunning.msg2"), ex);
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -552,7 +555,8 @@ public class Server {
|
||||
|
||||
synchronized void openCore() throws KeywordSearchModuleException {
|
||||
if (currentCore != null) {
|
||||
throw new KeywordSearchModuleException("Already an open Core! Explicitely close Core first. ");
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.openCore.exception.alreadyOpen.msg"));
|
||||
}
|
||||
|
||||
Case currentCase = Case.getCurrentCase();
|
||||
@ -665,7 +669,8 @@ public class Server {
|
||||
try {
|
||||
return currentCore.queryNumIndexedFiles();
|
||||
} catch (SolrServerException ex) {
|
||||
throw new KeywordSearchModuleException("Error querying number of indexed files, ", ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.queryNumIdxFiles.exception.msg"), ex);
|
||||
}
|
||||
|
||||
|
||||
@ -686,7 +691,8 @@ public class Server {
|
||||
try {
|
||||
return currentCore.queryNumIndexedChunks();
|
||||
} catch (SolrServerException ex) {
|
||||
throw new KeywordSearchModuleException("Error querying number of indexed chunks, ", ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.queryNumIdxChunks.exception.msg"), ex);
|
||||
}
|
||||
}
|
||||
|
||||
@ -705,7 +711,8 @@ public class Server {
|
||||
try {
|
||||
return currentCore.queryNumIndexedDocuments();
|
||||
} catch (SolrServerException ex) {
|
||||
throw new KeywordSearchModuleException("Error querying number of indexed documents, ", ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.queryNumIdxDocs.exception.msg"), ex);
|
||||
}
|
||||
}
|
||||
|
||||
@ -724,7 +731,8 @@ public class Server {
|
||||
try {
|
||||
return currentCore.queryIsIndexed(contentID);
|
||||
} catch (SolrServerException ex) {
|
||||
throw new KeywordSearchModuleException("Error checkign if content is indexed, ", ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.queryIsIdxd.exception.msg"), ex);
|
||||
}
|
||||
}
|
||||
|
||||
@ -744,7 +752,8 @@ public class Server {
|
||||
try {
|
||||
return currentCore.queryNumFileChunks(fileID);
|
||||
} catch (SolrServerException ex) {
|
||||
throw new KeywordSearchModuleException("Error getting number of file chunks, ", ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.queryNumFileChunks.exception.msg"), ex);
|
||||
}
|
||||
}
|
||||
|
||||
@ -763,7 +772,8 @@ public class Server {
|
||||
try {
|
||||
return currentCore.query(sq);
|
||||
} catch (SolrServerException ex) {
|
||||
throw new KeywordSearchModuleException("Error running query: " + sq.getQuery(), ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.query.exception.msg", sq.getQuery()), ex);
|
||||
}
|
||||
}
|
||||
|
||||
@ -783,7 +793,8 @@ public class Server {
|
||||
try {
|
||||
return currentCore.query(sq, method);
|
||||
} catch (SolrServerException ex) {
|
||||
throw new KeywordSearchModuleException("Error running query: " + sq.getQuery(), ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.query2.exception.msg", sq.getQuery()), ex);
|
||||
}
|
||||
}
|
||||
|
||||
@ -802,7 +813,8 @@ public class Server {
|
||||
try {
|
||||
return currentCore.queryTerms(sq);
|
||||
} catch (SolrServerException ex) {
|
||||
throw new KeywordSearchModuleException("Error running terms query: " + sq.getQuery(), ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.queryTerms.exception.msg", sq.getQuery()), ex);
|
||||
}
|
||||
}
|
||||
|
||||
@ -873,7 +885,8 @@ public class Server {
|
||||
//handle a possible scenario when server process might not be fully started
|
||||
if (!this.isRunning()) {
|
||||
logger.log(Level.WARNING, "Core open requested, but server not yet running");
|
||||
throw new KeywordSearchModuleException("Core open requested, but server not yet running");
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.openCore.exception.msg"));
|
||||
}
|
||||
|
||||
CoreAdminRequest.Create createCore = new CoreAdminRequest.Create();
|
||||
@ -888,9 +901,11 @@ public class Server {
|
||||
return newCore;
|
||||
|
||||
} catch (SolrServerException ex) {
|
||||
throw new KeywordSearchModuleException("Could not open Core", ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.openCore.exception.cantOpen.msg"), ex);
|
||||
} catch (IOException ex) {
|
||||
throw new KeywordSearchModuleException("Could not open Core", ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.openCore.exception.cantOpen.msg2"), ex);
|
||||
}
|
||||
}
|
||||
|
||||
@ -931,7 +946,8 @@ public class Server {
|
||||
return solrCore.request(request);
|
||||
} catch (IOException e) {
|
||||
logger.log(Level.WARNING, "Could not issue Solr request. ", e);
|
||||
throw new SolrServerException("Could not issue Solr request", e);
|
||||
throw new SolrServerException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.request.exception.exception.msg"), e);
|
||||
}
|
||||
|
||||
}
|
||||
@ -951,7 +967,7 @@ public class Server {
|
||||
solrCore.commit(true, true);
|
||||
} catch (IOException e) {
|
||||
logger.log(Level.WARNING, "Could not commit index. ", e);
|
||||
throw new SolrServerException("Could not commit index", e);
|
||||
throw new SolrServerException(NbBundle.getMessage(this.getClass(), "Server.commit.exception.msg"), e);
|
||||
}
|
||||
}
|
||||
|
||||
@ -960,10 +976,12 @@ public class Server {
|
||||
solrCore.add(doc);
|
||||
} catch (SolrServerException ex) {
|
||||
logger.log(Level.SEVERE, "Could not add document to index via update handler: " + doc.getField("id"), ex);
|
||||
throw new KeywordSearchModuleException("Could not add document to index via update handler: " + doc.getField("id"), ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.addDoc.exception.msg", doc.getField("id")), ex);
|
||||
} catch (IOException ex) {
|
||||
logger.log(Level.SEVERE, "Could not add document to index via update handler: " + doc.getField("id"), ex);
|
||||
throw new KeywordSearchModuleException("Could not add document to index via update handler: " + doc.getField("id"), ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.addDoc.exception.msg2", doc.getField("id")), ex);
|
||||
}
|
||||
}
|
||||
|
||||
@ -994,9 +1012,11 @@ public class Server {
|
||||
try {
|
||||
CoreAdminRequest.unloadCore(this.name, solrServer);
|
||||
} catch (SolrServerException ex) {
|
||||
throw new KeywordSearchModuleException("Cannot close Core", ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.close.exception.msg"), ex);
|
||||
} catch (IOException ex) {
|
||||
throw new KeywordSearchModuleException("Cannot close Core", ex);
|
||||
throw new KeywordSearchModuleException(
|
||||
NbBundle.getMessage(this.getClass(), "Server.close.exception.msg2"), ex);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1092,9 +1112,8 @@ public class Server {
|
||||
private int port;
|
||||
|
||||
SolrServerNoPortException(int port) {
|
||||
super("Indexing server could not bind to port " + port
|
||||
+ ", port is not available, consider change the default "
|
||||
+ Server.PROPERTIES_CURRENT_SERVER_PORT + " port.");
|
||||
super(NbBundle.getMessage(Server.class, "Server.solrServerNoPortException.msg", port,
|
||||
Server.PROPERTIES_CURRENT_SERVER_PORT));
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,6 @@ import java.util.logging.Level;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.ingest.IngestModuleDataSource;
|
||||
import org.sleuthkit.autopsy.report.SQLiteDBConnect;
|
||||
import org.sleuthkit.datamodel.*;
|
||||
|
||||
abstract class Extract extends IngestModuleDataSource{
|
||||
|
@ -20,7 +20,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.sleuthkit.autopsy.report;
|
||||
package org.sleuthkit.autopsy.recentactivity;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
@ -32,7 +32,7 @@ import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
/**
|
||||
* Database connection class & utilities *
|
||||
*/
|
||||
public class SQLiteDBConnect {
|
||||
class SQLiteDBConnect {
|
||||
|
||||
public String sDriver = "";
|
||||
public String sUrl = null;
|
@ -41,7 +41,6 @@ import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.casemodule.services.FileManager;
|
||||
import org.sleuthkit.autopsy.report.SQLiteDBConnect;
|
||||
import org.sleuthkit.datamodel.AbstractFile;
|
||||
import org.sleuthkit.datamodel.Content;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
|
@ -56,6 +56,7 @@ import org.netbeans.jemmy.operators.JLabelOperator;
|
||||
import org.netbeans.jemmy.operators.JTabbedPaneOperator;
|
||||
import org.netbeans.jemmy.operators.JTableOperator;
|
||||
import org.netbeans.jemmy.operators.JTextFieldOperator;
|
||||
import org.netbeans.jemmy.operators.JListOperator;
|
||||
import org.netbeans.junit.NbModuleSuite;
|
||||
import org.openide.util.Exceptions;
|
||||
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||
@ -265,14 +266,13 @@ public class RegressionTest extends TestCase {
|
||||
}
|
||||
logger.info("Enqueue took " + (System.currentTimeMillis() - start) + "ms");
|
||||
while (man.isIngestRunning()) {
|
||||
|
||||
new Timeout("pausing", 1000).sleep(); // give it a second (or five) to process
|
||||
}
|
||||
new Timeout("pausing", 15000).sleep(); // give it a second (or fifteen) to process
|
||||
boolean sleep = true;
|
||||
while (man.areModulesRunning()) {
|
||||
new Timeout("pausing", 5000).sleep(); // give it a second (or five) to process
|
||||
}
|
||||
|
||||
logger.info("Ingest (including enqueue) took " + (System.currentTimeMillis() - start) + "ms");
|
||||
// allow keyword search to finish saving artifacts, just in case
|
||||
// but randomize the timing so that we don't always get the same error
|
||||
@ -299,10 +299,13 @@ public class RegressionTest extends TestCase {
|
||||
logger.info("Generate Report Button");
|
||||
JDialog reportDialog = JDialogOperator.waitJDialog("Generate Report", false, false);
|
||||
JDialogOperator reportDialogOperator = new JDialogOperator(reportDialog);
|
||||
JListOperator listOperator = new JListOperator(reportDialogOperator);
|
||||
JButtonOperator jbo0 = new JButtonOperator(reportDialogOperator, "Next");
|
||||
DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy-HH-mm-ss");
|
||||
Date date = new Date();
|
||||
String datenotime = dateFormat.format(date);
|
||||
listOperator.clickOnItem(1, 1);
|
||||
new Timeout("pausing", 1000).sleep();
|
||||
jbo0.pushNoBlock();
|
||||
new Timeout("pausing", 1000).sleep();
|
||||
JButtonOperator jbo1 = new JButtonOperator(reportDialogOperator, "Finish");
|
||||
|
@ -4,6 +4,29 @@ OpenIDE-Module-Long-Description=\
|
||||
Events for a selected day are viewable in the built-in result and content viewers.
|
||||
OpenIDE-Module-Name=Timeline
|
||||
CTL_MakeTimeline="Make Timeline (Beta)"
|
||||
CTL_TimelineView=Generate Timeline
|
||||
OpenIDE-Module-Short-Description=Displays user activity timeline
|
||||
TimelineProgressDialog.jLabel1.text=Creating timeline . . .
|
||||
TimelineFrame.title=Timeline
|
||||
Timeline.frameName.text={0} - Autopsy Timeline (Beta)
|
||||
Timeline.resultsPanel.title=Timeline Results
|
||||
Timeline.getName=Make Timeline (Beta)
|
||||
Timeline.runJavaFxThread.progress.creating=Creating timeline . . .
|
||||
Timeline.runJavaFxThread.progress.genBodyFile=Generating Bodyfile
|
||||
Timeline.runJavaFxThread.progress.genMacTime=Generating Mactime
|
||||
Timeline.runJavaFxThread.progress.parseMacTime=Parsing Mactime
|
||||
Timeline.zoomOutButton.text=Zoom Out
|
||||
Timeline.goToButton.text=Go To\:
|
||||
Timeline.yearBarChart.x.years=Years
|
||||
Timeline.yearBarChart.y.numEvents=Number of Events
|
||||
Timeline.MonthsBarChart.x.monthYY=Month ({0})
|
||||
Timeline.MonthsBarChart.y.numEvents=Number of Events
|
||||
Timeline.eventsByMoBarChart.x.dayOfMo=Day of Month
|
||||
Timeline.eventsByMoBarChart.y.numEvents=Number of Events
|
||||
Timeline.node.emptyRoot=Empty Root
|
||||
Timeline.resultPanel.loading=Loading...
|
||||
Timeline.node.root=Root
|
||||
Timeline.propChg.confDlg.timelineOOD.msg=Timeline is out of date. Would you like to regenerate it?
|
||||
Timeline.propChg.confDlg.timelineOOD.details=Select an option
|
||||
Timeline.initTimeline.confDlg.genBeforeIngest.msg=You are trying to generate a timeline before ingest has been completed. The timeline may be incomplete. Do you want to continue?
|
||||
Timeline.initTimeline.confDlg.genBeforeIngest.deails=Timeline
|
||||
|
@ -41,7 +41,9 @@ import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Scanner;
|
||||
import java.util.Stack;
|
||||
import java.util.TimeZone;
|
||||
import java.util.logging.Level;
|
||||
import java.util.prefs.Preferences;
|
||||
import javafx.application.Platform;
|
||||
import javafx.beans.value.ChangeListener;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
@ -75,11 +77,11 @@ import org.openide.awt.ActionReference;
|
||||
import org.openide.awt.ActionReferences;
|
||||
import org.openide.awt.ActionRegistration;
|
||||
import org.openide.modules.InstalledFileLocator;
|
||||
import org.openide.modules.ModuleInstall;
|
||||
import org.openide.nodes.Children;
|
||||
import org.openide.nodes.Node;
|
||||
import org.openide.util.HelpCtx;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.util.NbPreferences;
|
||||
import org.openide.util.actions.CallableSystemAction;
|
||||
import org.openide.util.actions.Presenter;
|
||||
import org.openide.util.lookup.Lookups;
|
||||
@ -97,6 +99,7 @@ import org.sleuthkit.autopsy.datamodel.DisplayableItemNodeVisitor;
|
||||
import org.sleuthkit.autopsy.datamodel.FileNode;
|
||||
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||
import org.sleuthkit.autopsy.coreutils.ExecUtil;
|
||||
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
||||
import org.sleuthkit.datamodel.AbstractFile;
|
||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
@ -105,7 +108,7 @@ import org.sleuthkit.datamodel.TskCoreException;
|
||||
@ActionRegistration(displayName = "#CTL_MakeTimeline", lazy = false)
|
||||
@ActionReferences(value = {
|
||||
@ActionReference(path = "Menu/Tools", position = 100)})
|
||||
@NbBundle.Messages(value = "CTL_TimelineView=Generate Timeline")
|
||||
//@NbBundle.Messages(value = "CTL_TimelineView=Generate Timeline")
|
||||
/**
|
||||
* The Timeline Action entry point. Collects data and pushes data to javafx
|
||||
* widgets
|
||||
@ -129,6 +132,7 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
private ComboBox<String> fxDropdownSelectYears; //Dropdown box for selecting years. Useful when the charts' scale means some years are unclickable, despite having events.
|
||||
private final Stack<BarChart<String, Number>> fxStackPrevCharts = new Stack<BarChart<String, Number>>(); //Stack for storing drill-up information.
|
||||
private BarChart<String, Number> fxChartTopLevel; //the topmost chart, used for resetting to default view.
|
||||
private BarChart<String, Number> fxMonthView; //the month chart
|
||||
private DataResultPanel dataResultPanel;
|
||||
private DataContentPanel dataContentPanel;
|
||||
private ProgressHandle progress;
|
||||
@ -142,12 +146,13 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
private EventHandler<MouseEvent> fxMouseExitedListener;
|
||||
private SleuthkitCase skCase;
|
||||
private boolean fxInited = false;
|
||||
private int monthCounter = 0;
|
||||
|
||||
public Timeline() {
|
||||
super();
|
||||
|
||||
fxInited = Installer.isJavaFxInited();
|
||||
|
||||
// TimeZone.setDefault(TimeZone.getTimeZone("UTC")); //sets the default timezone to UTC unless otherwise stated
|
||||
}
|
||||
|
||||
//Swing components and JavafX components don't play super well together
|
||||
@ -175,7 +180,8 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
//Making the main frame *
|
||||
|
||||
mainFrame = new TimelineFrame();
|
||||
mainFrame.setFrameName(Case.getCurrentCase().getName() + " - Autopsy Timeline (Beta)");
|
||||
mainFrame.setFrameName(
|
||||
NbBundle.getMessage(this.getClass(), "Timeline.frameName.text", Case.getCurrentCase().getName()));
|
||||
|
||||
//use the same icon on jframe as main application
|
||||
mainFrame.setIconImage(WindowManager.getDefault().getMainWindow().getIconImage());
|
||||
@ -186,7 +192,9 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
//dataContentPanel.setAlignmentX(Component.RIGHT_ALIGNMENT);
|
||||
//dataContentPanel.setPreferredSize(new Dimension(FRAME_WIDTH, (int) (FRAME_HEIGHT * 0.4)));
|
||||
|
||||
dataResultPanel = DataResultPanel.createInstance("Timeline Results", "", Node.EMPTY, 0, dataContentPanel);
|
||||
dataResultPanel = DataResultPanel.createInstance(
|
||||
NbBundle.getMessage(this.getClass(), "Timeline.resultsPanel.title"),
|
||||
"", Node.EMPTY, 0, dataContentPanel);
|
||||
dataResultPanel.setContentViewer(dataContentPanel);
|
||||
//dataResultPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
|
||||
//dataResultPanel.setPreferredSize(new Dimension((int)(FRAME_WIDTH * 0.5), (int) (FRAME_HEIGHT * 0.5)));
|
||||
@ -211,7 +219,8 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
public void run() {
|
||||
try {
|
||||
// start the progress bar
|
||||
progress = ProgressHandleFactory.createHandle("Creating timeline . . .");
|
||||
progress = ProgressHandleFactory.createHandle(
|
||||
NbBundle.getMessage(this.getClass(), "Timeline.runJavaFxThread.progress.creating"));
|
||||
progress.start();
|
||||
|
||||
fxChartEvents = null; //important to reset old data
|
||||
@ -239,11 +248,13 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
if (!mactimeFile.exists()) {
|
||||
progressDialog.setProgressTotal(3); //total 3 units
|
||||
logger.log(Level.INFO, "Creating body file");
|
||||
progressDialog.updateProgressBar("Generating Bodyfile");
|
||||
progressDialog.updateProgressBar(
|
||||
NbBundle.getMessage(this.getClass(), "Timeline.runJavaFxThread.progress.genBodyFile"));
|
||||
String bodyFilePath = makeBodyFile();
|
||||
progressDialog.updateProgressBar(++currentProgress);
|
||||
logger.log(Level.INFO, "Creating mactime file: " + mactimeFile.getAbsolutePath());
|
||||
progressDialog.updateProgressBar("Generating Mactime");
|
||||
progressDialog.updateProgressBar(
|
||||
NbBundle.getMessage(this.getClass(), "Timeline.runJavaFxThread.progress.genMacTime"));
|
||||
makeMacTime(bodyFilePath);
|
||||
progressDialog.updateProgressBar(++currentProgress);
|
||||
data = null;
|
||||
@ -253,7 +264,8 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
}
|
||||
|
||||
|
||||
progressDialog.updateProgressBar("Parsing Mactime");
|
||||
progressDialog.updateProgressBar(
|
||||
NbBundle.getMessage(this.getClass(), "Timeline.runJavaFxThread.progress.parseMacTime"));
|
||||
if (data == null) {
|
||||
logger.log(Level.INFO, "Parsing mactime file: " + mactimeFile.getAbsolutePath());
|
||||
data = parseMacTime(mactimeFile); //The sum total of the mactime parsing. YearEpochs contain everything you need to make a timeline.
|
||||
@ -269,7 +281,7 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
fxDropdownSelectYears = new ComboBox<String>(listSelect);
|
||||
|
||||
//Buttons for navigating up and down the timeline
|
||||
fxZoomOutButton = new Button("Zoom Out");
|
||||
fxZoomOutButton = new Button(NbBundle.getMessage(this.getClass(), "Timeline.zoomOutButton.text"));
|
||||
fxZoomOutButton.setOnAction(new EventHandler<ActionEvent>() {
|
||||
@Override
|
||||
public void handle(ActionEvent e) {
|
||||
@ -301,7 +313,8 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
|
||||
//Adding things to the V and H boxes.
|
||||
//hBox_Charts stores the pseudo menu bar at the top of the timeline. |Zoom Out|View Year: [Select Year]|►|
|
||||
fxHBoxCharts.getChildren().addAll(fxZoomOutButton, new Label("Go To:"), fxDropdownSelectYears);
|
||||
fxHBoxCharts.getChildren().addAll(fxZoomOutButton, new Label(
|
||||
NbBundle.getMessage(this.getClass(), "Timeline.goToButton.text")), fxDropdownSelectYears);
|
||||
fxVBox.getChildren().addAll(fxHBoxCharts, fxScrollEvents); //FxBox_V holds things in a visual stack.
|
||||
fxGroupCharts.getChildren().add(fxVBox); //Adding the FxBox to the group. Groups make things easier to manipulate without having to update a hundred things every change.
|
||||
fxPanelCharts.setScene(fxSceneCharts);
|
||||
@ -346,8 +359,8 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
final Label l = new Label("");
|
||||
l.setStyle("-fx-font: 24 arial;");
|
||||
l.setTextFill(Color.AZURE);
|
||||
xAxis.setLabel("Years");
|
||||
yAxis.setLabel("Number of Events");
|
||||
xAxis.setLabel(NbBundle.getMessage(this.getClass(), "Timeline.yearBarChart.x.years"));
|
||||
yAxis.setLabel(NbBundle.getMessage(this.getClass(), "Timeline.yearBarChart.y.numEvents"));
|
||||
//Charts are made up of individual pieces of Chart.Data. In this case, a piece of barData is a single bar on the graph.
|
||||
//Data is packaged into a series, which can be assigned custom colors or styling
|
||||
//After the series are created, 1 or more series are packaged into a single chart.
|
||||
@ -410,11 +423,10 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
* Always 12 per year, empty months are represented by no bar.
|
||||
*/
|
||||
private BarChart<String, Number> createMonthsWithDrill(final YearEpoch ye) {
|
||||
|
||||
final CategoryAxis xAxis = new CategoryAxis();
|
||||
final NumberAxis yAxis = new NumberAxis();
|
||||
xAxis.setLabel("Month (" + ye.year + ")");
|
||||
yAxis.setLabel("Number of Events");
|
||||
xAxis.setLabel(NbBundle.getMessage(this.getClass(), "Timeline.MonthsBarChart.x.monthYY", ye.year));
|
||||
yAxis.setLabel(NbBundle.getMessage(this.getClass(), "Timeline.MonthsBarChart.y.numEvents"));
|
||||
ObservableList<BarChart.Series<String, Number>> bcData = FXCollections.observableArrayList();
|
||||
|
||||
BarChart.Series<String, Number> se = new BarChart.Series<String, Number>();
|
||||
@ -465,7 +477,7 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
bc.autosize();
|
||||
bc.setPrefWidth(FRAME_WIDTH);
|
||||
bc.setLegendVisible(false);
|
||||
fxStackPrevCharts.push(bc);
|
||||
fxMonthView= bc;
|
||||
return bc;
|
||||
}
|
||||
|
||||
@ -477,8 +489,8 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
private BarChart<String, Number> createEventsByMonth(final MonthEpoch me, final YearEpoch ye) {
|
||||
final CategoryAxis xAxis = new CategoryAxis();
|
||||
final NumberAxis yAxis = new NumberAxis();
|
||||
xAxis.setLabel("Day of Month");
|
||||
yAxis.setLabel("Number of Events");
|
||||
xAxis.setLabel(NbBundle.getMessage(this.getClass(), "Timeline.eventsByMoBarChart.x.dayOfMo"));
|
||||
yAxis.setLabel(NbBundle.getMessage(this.getClass(), "Timeline.eventsByMoBarChart.y.numEvents"));
|
||||
ObservableList<BarChart.Data<String, Number>> bcData = makeObservableListByMonthAllDays(me, ye.getYear());
|
||||
BarChart.Series<String, Number> series = new BarChart.Series<String, Number>(bcData);
|
||||
series.setName(me.getMonthName() + " " + ye.getYear());
|
||||
@ -507,9 +519,10 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
@Override
|
||||
public void run() {
|
||||
//reset the view and free the current nodes before loading new ones
|
||||
final FileRootNode d = new FileRootNode("Empty Root", new ArrayList<Long>());
|
||||
final FileRootNode d = new FileRootNode(
|
||||
NbBundle.getMessage(this.getClass(), "Timeline.node.emptyRoot"), new ArrayList<Long>());
|
||||
dataResultPanel.setNode(d);
|
||||
dataResultPanel.setPath("Loading...");
|
||||
dataResultPanel.setPath(NbBundle.getMessage(this.getClass(), "Timeline.resultPanel.loading"));
|
||||
}
|
||||
});
|
||||
final int day = (Integer.valueOf((barData.getXValue()).split("-")[1]));
|
||||
@ -525,7 +538,8 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
final FileRootNode d = new FileRootNode("Root", afs);
|
||||
final FileRootNode d = new FileRootNode(
|
||||
NbBundle.getMessage(this.getClass(), "Timeline.node.root"), afs);
|
||||
dataResultPanel.setNode(d);
|
||||
//set result viewer title path with the current date
|
||||
String dateString = ye.getYear() + "-" + (1 + me.getMonthInt()) + "-" + +de.dayNum;
|
||||
@ -539,6 +553,12 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
}
|
||||
bc.autosize();
|
||||
bc.setPrefWidth(FRAME_WIDTH);
|
||||
monthCounter++;
|
||||
if (monthCounter==12)
|
||||
{
|
||||
fxStackPrevCharts.push(fxMonthView);
|
||||
monthCounter=0;
|
||||
}
|
||||
return bc;
|
||||
}
|
||||
|
||||
@ -620,7 +640,12 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
return;
|
||||
}
|
||||
|
||||
int answer = JOptionPane.showConfirmDialog(mainFrame, "Timeline is out of date. Would you like to regenerate it?", "Select an option", JOptionPane.YES_NO_OPTION);
|
||||
int answer = JOptionPane.showConfirmDialog(mainFrame,
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"Timeline.propChg.confDlg.timelineOOD.msg"),
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"Timeline.propChg.confDlg.timelineOOD.details"),
|
||||
JOptionPane.YES_NO_OPTION);
|
||||
if (answer != JOptionPane.YES_OPTION) {
|
||||
return;
|
||||
}
|
||||
@ -914,17 +939,35 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
|
||||
int prevYear = -1;
|
||||
YearEpoch ye = null;
|
||||
|
||||
while (scan.hasNextLine()) {
|
||||
String[] s = scan.nextLine().split(","); //1999-02-08T11:08:08Z, 78706, m..b, rrwxrwxrwx, 0, 0, 8355, /img...
|
||||
|
||||
// break the date into mon, day and year: Note that the ISO times are in GMT
|
||||
String[] datetime = s[0].split("T"); //{1999-02-08, 11:08:08Z}
|
||||
String[] date = datetime[0].split("-"); // {1999, 02, 08}
|
||||
// break the date into year,month,day,hour,minute, and second: Note that the ISO times are in GMT
|
||||
String delims = "[T:Z\\-]+"; //split by the delimiters
|
||||
String[] date = s[0].split(delims); //{1999,02,08,11,08,08,...}
|
||||
|
||||
int year = Integer.valueOf(date[0]);
|
||||
int month = Integer.valueOf(date[1]) - 1; //Months are zero indexed: 1 = February, 6 = July, 11 = December
|
||||
int day = Integer.valueOf(date[2]); //Days are 1 indexed
|
||||
int hour=Integer.valueOf(date[3]);
|
||||
int minute=Integer.valueOf(date[4]);
|
||||
int second=Integer.valueOf(date[5]);
|
||||
|
||||
// get the object id out of the modified outpu
|
||||
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); //set calendar to GMT due to ISO format
|
||||
calendar.set(year, month, day, hour, minute, second);
|
||||
day=calendar.get(Calendar.DAY_OF_MONTH); // this is needed or else timezone change wont work. probably incorrect optimization by compiler
|
||||
|
||||
//conversion to GMT
|
||||
|
||||
if (!ContentUtils.getDisplayInLocalTime()) {
|
||||
calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||
}
|
||||
else{
|
||||
calendar.setTimeZone(TimeZone.getDefault());// local timezone OF the user. should be what the user SETS at startup
|
||||
}
|
||||
|
||||
day=calendar.get(Calendar.DAY_OF_MONTH);//get the day which may be affected by timezone change
|
||||
long ObjId = Long.valueOf(s[4]);
|
||||
|
||||
// when the year changes, create and add a new YearEpoch object to the list
|
||||
@ -961,7 +1004,6 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
// Get report path
|
||||
String bodyFilePath = moduleDir.getAbsolutePath()
|
||||
+ java.io.File.separator + currentCase.getName() + "-" + datenotime + ".txt";
|
||||
|
||||
// Run query to get all files
|
||||
final String filesAndDirs = "name != '.' "
|
||||
+ "AND name != '..'";
|
||||
@ -1123,9 +1165,10 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
|
||||
if (IngestManager.getDefault().isIngestRunning()) {
|
||||
int answer = JOptionPane.showConfirmDialog(new JFrame(),
|
||||
"You are trying to generate a timeline before "
|
||||
+ "ingest has been completed. The timeline may be "
|
||||
+ "incomplete. Do you want to continue?", "Timeline",
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"Timeline.initTimeline.confDlg.genBeforeIngest.msg"),
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"Timeline.initTimeline.confDlg.genBeforeIngest.deails"),
|
||||
JOptionPane.YES_NO_OPTION);
|
||||
if (answer != JOptionPane.YES_OPTION) {
|
||||
return;
|
||||
@ -1177,7 +1220,7 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Make Timeline (Beta)";
|
||||
return NbBundle.getMessage(this.getClass(), "Timeline.getName");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -6,6 +6,14 @@
|
||||
<code-name-base>org.sleuthkit.autopsy.thunderbirdparser</code-name-base>
|
||||
<suite-component/>
|
||||
<module-dependencies>
|
||||
<dependency>
|
||||
<code-name-base>org.openide.util</code-name-base>
|
||||
<build-prerequisite/>
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<specification-version>8.25.1</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<code-name-base>org.sleuthkit.autopsy.core</code-name-base>
|
||||
<build-prerequisite/>
|
||||
|
@ -4,3 +4,24 @@ OpenIDE-Module-Long-Description=\
|
||||
The module extracts Thunderbird e-mail folder hierarchy from the ingested disk image and posts the folder hierarchy and e-mail messages found as results.
|
||||
OpenIDE-Module-Name=ThunderbirdParser
|
||||
OpenIDE-Module-Short-Description=Thunderbird Parser e-mail extractor ingest module
|
||||
MboxParser.parse.errMsg.failedToReadFile=Failed to read mbox file from disk.
|
||||
MboxParser.parse.errMsg.couldntFindCharset=Couldn't find appropriate charset encoder.
|
||||
MboxParser.parse.errMsg.failedToParseNMsgs=Failed to extract {0} email messages.
|
||||
MboxParser.handleAttch.errMsg.failedToCreateOnDisk=Failed to extract attachment to disk\: {0}
|
||||
MboxParser.handleAttch.failedWriteToDisk=Failed to extract attachment to disk\: {0}
|
||||
PstParser.parse.errMsg.failedToParseNMsgs=Failed to extract {0} email messages.
|
||||
PstParser.extractAttch.errMsg.failedToExtractToDisk=Failed to extract attachment to disk\: {0}
|
||||
ThunderbirdMboxFileIngestModule.moduleName=Email Parser
|
||||
ThunderbirdMboxFileIngestModule.hashDbModuleName=Hash Lookup
|
||||
ThunderbirdMboxFileIngestModule.processPst.errMsg.outOfDiskSpace=Out of disk space. Can''t copy {0} to parse.
|
||||
ThunderbirdMboxFileIngestModule.encryptionFileLevel=File-level Encryption
|
||||
ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg=Error while processing {0}
|
||||
ThunderbirdMboxFileIngestModule.processPst.errProcFile.details=Only files from Outlook 2003 and later are supported.
|
||||
ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg2=Error while processing {0}
|
||||
ThunderbirdMboxFileIngestModule.processMBox.errProcFile.msg=Error while processing {0}
|
||||
ThunderbirdMboxFileIngestModule.processMBox.errProfFile.details=Out of disk space. Can't copy file to parse.
|
||||
ThunderbirdMboxFileIngestModule.processMBox.errProcFile.msg2=Error while processing {0}
|
||||
ThunderbirdMboxFileIngestModule.getDesc.text=This module detects and parses mbox and pst/ost files and populates email artifacts in the blackboard.
|
||||
ThunderbirdMboxFileIngestModule.handleAttch.errMsg=Error processing {0}
|
||||
ThunderbirdMboxFileIngestModule.handleAttch.errMsg.details=Failed to add attachment named {0} to the case.
|
||||
ThunderbirdMboxFileIngestModule.notAvail=Not available
|
||||
|
@ -54,6 +54,7 @@ import org.apache.james.mime4j.message.DefaultMessageBuilder;
|
||||
import org.apache.james.mime4j.stream.MimeConfig;
|
||||
import org.apache.tika.parser.txt.CharsetDetector;
|
||||
import org.apache.tika.parser.txt.CharsetMatch;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.ingest.IngestServices;
|
||||
|
||||
/**
|
||||
@ -116,14 +117,14 @@ import org.sleuthkit.autopsy.ingest.IngestServices;
|
||||
// Not the right encoder
|
||||
} catch (IOException ex) {
|
||||
logger.log(Level.WARNING, "couldn't find mbox file.", ex);
|
||||
addErrorMessage("Failed to read mbox file from disk.");
|
||||
addErrorMessage(NbBundle.getMessage(this.getClass(), "MboxParser.parse.errMsg.failedToReadFile"));
|
||||
return Collections.EMPTY_LIST;
|
||||
}
|
||||
}
|
||||
|
||||
// If no encoders work, post an error message and return.
|
||||
if (mboxIterator == null || theEncoder == null) {
|
||||
addErrorMessage("Couldn't find appropriate charset encoder.");
|
||||
addErrorMessage(NbBundle.getMessage(this.getClass(), "MboxParser.parse.errMsg.couldntFindCharset"));
|
||||
return Collections.EMPTY_LIST;
|
||||
}
|
||||
|
||||
@ -142,7 +143,8 @@ import org.sleuthkit.autopsy.ingest.IngestServices;
|
||||
}
|
||||
|
||||
if (failCount > 0) {
|
||||
addErrorMessage("Failed to extract " + failCount + " email messages.");
|
||||
addErrorMessage(
|
||||
NbBundle.getMessage(this.getClass(), "MboxParser.parse.errMsg.failedToParseNMsgs", failCount));
|
||||
}
|
||||
return emails;
|
||||
}
|
||||
@ -255,7 +257,9 @@ import org.sleuthkit.autopsy.ingest.IngestServices;
|
||||
try {
|
||||
fos = new FileOutputStream(outPath);
|
||||
} catch (FileNotFoundException ex) {
|
||||
addErrorMessage("Failed to extract attachment to disk: " + filename);
|
||||
addErrorMessage(
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"MboxParser.handleAttch.errMsg.failedToCreateOnDisk", filename));
|
||||
logger.log(Level.INFO, "Failed to create file output stream for: " + outPath, ex);
|
||||
return;
|
||||
}
|
||||
@ -270,7 +274,7 @@ import org.sleuthkit.autopsy.ingest.IngestServices;
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
logger.log(Level.INFO, "Failed to write mbox email attachment to disk.", ex);
|
||||
addErrorMessage("Failed to extract attachment to disk: " + filename);
|
||||
addErrorMessage(NbBundle.getMessage(this.getClass(), "MboxParser.handleAttch.failedWriteToDisk", filename));
|
||||
return;
|
||||
} finally {
|
||||
try {
|
||||
|
@ -33,6 +33,8 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.ingest.IngestServices;
|
||||
import static org.sleuthkit.autopsy.thunderbirdparser.ThunderbirdMboxFileIngestModule.getRelModuleOutputPath;
|
||||
import org.sleuthkit.datamodel.AbstractFile;
|
||||
@ -80,7 +82,8 @@ class PstParser {
|
||||
pstFile = new PSTFile(file);
|
||||
failures = processFolder(pstFile.getRootFolder(), "\\", true);
|
||||
if (failures > 0) {
|
||||
addErrorMessage("Failed to extract " + failures + " email messages.");
|
||||
addErrorMessage(
|
||||
NbBundle.getMessage(this.getClass(), "PstParser.parse.errMsg.failedToParseNMsgs", failures));
|
||||
}
|
||||
return ParseResult.OK;
|
||||
} catch (PSTException | IOException ex) {
|
||||
@ -219,7 +222,9 @@ class PstParser {
|
||||
attachment.setSize(attach.getFilesize());
|
||||
email.addAttachment(attachment);
|
||||
} catch (PSTException | IOException ex) {
|
||||
addErrorMessage("Failed to extract attachment to disk: " + filename);
|
||||
addErrorMessage(
|
||||
NbBundle.getMessage(this.getClass(), "PstParser.extractAttch.errMsg.failedToExtractToDisk",
|
||||
filename));
|
||||
logger.log(Level.WARNING, "Failed to extract attachment from pst file.", ex);
|
||||
}
|
||||
}
|
||||
|
@ -23,6 +23,8 @@ import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.casemodule.services.FileManager;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
@ -53,8 +55,10 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
||||
private static final Logger logger = Logger.getLogger(ThunderbirdMboxFileIngestModule.class.getName());
|
||||
private static ThunderbirdMboxFileIngestModule instance = null;
|
||||
private IngestServices services;
|
||||
private static final String MODULE_NAME = "Email Parser";
|
||||
private final String hashDBModuleName = "Hash Lookup";
|
||||
private static final String MODULE_NAME = NbBundle.getMessage(ThunderbirdMboxFileIngestModule.class,
|
||||
"ThunderbirdMboxFileIngestModule.moduleName");
|
||||
private final String hashDBModuleName = NbBundle.getMessage(ThunderbirdMboxFileIngestModule.class,
|
||||
"ThunderbirdMboxFileIngestModule.hashDbModuleName");
|
||||
final public static String MODULE_VERSION = Version.getVersion();
|
||||
private int messageId = 0;
|
||||
private FileManager fileManager;
|
||||
@ -132,7 +136,10 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
||||
|
||||
if (abstractFile.getSize() >= services.getFreeDiskSpace()) {
|
||||
logger.log(Level.WARNING, "Not enough disk space to write file to disk.");
|
||||
IngestMessage msg = IngestMessage.createErrorMessage(messageId++, this, getName(), "Out of disk space. Can't copy " + abstractFile.getName() + " to parse.");
|
||||
IngestMessage msg = IngestMessage.createErrorMessage(messageId++, this, getName(),
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"ThunderbirdMboxFileIngestModule.processPst.errMsg.outOfDiskSpace",
|
||||
abstractFile.getName()));
|
||||
services.postMessage(msg);
|
||||
return ProcessResult.OK;
|
||||
}
|
||||
@ -155,14 +162,18 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
||||
try {
|
||||
BlackboardArtifact generalInfo = abstractFile.getGenInfoArtifact();
|
||||
generalInfo.addAttribute(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_ENCRYPTION_DETECTED.getTypeID(),
|
||||
MODULE_NAME, "File-level Encryption"));
|
||||
MODULE_NAME,
|
||||
NbBundle.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.encryptionFileLevel")));
|
||||
} catch (TskCoreException ex) {
|
||||
logger.log(Level.INFO, "Failed to add encryption attribute to file: " + abstractFile.getName());
|
||||
}
|
||||
} else {
|
||||
// parsing error: log message
|
||||
postErrorMessage("Error while processing " + abstractFile.getName(),
|
||||
"Only files from Outlook 2003 and later are supported.");
|
||||
postErrorMessage(
|
||||
NbBundle.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg",
|
||||
abstractFile.getName()),
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"ThunderbirdMboxFileIngestModule.processPst.errProcFile.details"));
|
||||
logger.log(Level.INFO, "PSTParser failed to parse " + abstractFile.getName());
|
||||
return ProcessResult.ERROR;
|
||||
}
|
||||
@ -173,7 +184,9 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
||||
|
||||
String errors = parser.getErrors();
|
||||
if (errors.isEmpty() == false) {
|
||||
postErrorMessage("Error while processing " + abstractFile.getName(), errors);
|
||||
postErrorMessage(
|
||||
NbBundle.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.processPst.errProcFile.msg2",
|
||||
abstractFile.getName()), errors);
|
||||
}
|
||||
|
||||
return ProcessResult.OK;
|
||||
@ -206,8 +219,11 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
||||
|
||||
if (abstractFile.getSize() >= services.getFreeDiskSpace()) {
|
||||
logger.log(Level.WARNING, "Not enough disk space to write file to disk.");
|
||||
postErrorMessage("Error while processing " + abstractFile.getName(),
|
||||
"Out of disk space. Can't copy file to parse.");
|
||||
postErrorMessage(
|
||||
NbBundle.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.processMBox.errProcFile.msg",
|
||||
abstractFile.getName()),
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"ThunderbirdMboxFileIngestModule.processMBox.errProfFile.details"));
|
||||
return ProcessResult.OK;
|
||||
}
|
||||
|
||||
@ -229,7 +245,9 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
||||
|
||||
String errors = parser.getErrors();
|
||||
if (errors.isEmpty() == false) {
|
||||
postErrorMessage("Error while processing " + abstractFile.getName(), errors);
|
||||
postErrorMessage(
|
||||
NbBundle.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.processMBox.errProcFile.msg2",
|
||||
abstractFile.getName()), errors);
|
||||
}
|
||||
|
||||
return ProcessResult.OK;
|
||||
@ -275,7 +293,7 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "This module detects and parses mbox and pst/ost files and populates email artifacts in the blackboard.";
|
||||
return NbBundle.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.getDesc.text");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -347,8 +365,11 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
||||
MODULE_NAME, MODULE_VERSION, "");
|
||||
files.add(df);
|
||||
} catch (TskCoreException ex) {
|
||||
postErrorMessage("Error processing " + abstractFile.getName(),
|
||||
"Failed to add attachment named " + filename + " to the case.");
|
||||
postErrorMessage(
|
||||
NbBundle.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.handleAttch.errMsg",
|
||||
abstractFile.getName()),
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"ThunderbirdMboxFileIngestModule.handleAttch.errMsg.details", filename));
|
||||
logger.log(Level.INFO, "", ex);
|
||||
}
|
||||
}
|
||||
@ -399,7 +420,8 @@ public class ThunderbirdMboxFileIngestModule extends IngestModuleAbstractFile {
|
||||
if (rtf.isEmpty() == false) {
|
||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_EMAIL_CONTENT_RTF.getTypeID(), MODULE_NAME, rtf));
|
||||
}
|
||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_MSG_ID.getTypeID(), MODULE_NAME, ((id < 0L) ? "Not available" : String.valueOf(id))));
|
||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_MSG_ID.getTypeID(), MODULE_NAME, ((id < 0L) ? NbBundle
|
||||
.getMessage(this.getClass(), "ThunderbirdMboxFileIngestModule.notAvail") : String.valueOf(id))));
|
||||
if (subject.isEmpty() == false) {
|
||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_SUBJECT.getTypeID(), MODULE_NAME, subject));
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user