From ee3f471e39adf47be321717c1b07c70e292e914f Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Wed, 27 Jan 2021 11:08:47 -0500 Subject: [PATCH 01/69] Initial layout --- .../keywordsearch/AdHocSearchPanel.java | 2 +- .../keywordsearch/Bundle.properties-MERGED | 2 + .../keywordsearch/ExtractAllTermsAction.java | 68 +++++++++++++++++++ .../autopsy/keywordsearch/IndexFinder.java | 7 +- .../keywordsearch/SolrSearchService.java | 4 +- 5 files changed, 75 insertions(+), 8 deletions(-) create mode 100755 KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AdHocSearchPanel.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AdHocSearchPanel.java index 6190f392e8..c9aa061400 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AdHocSearchPanel.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/AdHocSearchPanel.java @@ -148,7 +148,7 @@ abstract class AdHocSearchPanel extends javax.swing.JPanel { } /** - * Get a list of data source display name. + * Get a list of data source display names. * * @return The list of data source name */ diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED index 02244f9477..25a07a1bbb 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED @@ -5,10 +5,12 @@ AccountsText.nextPage.exception.msg=No next page. AccountsText.previousItem.exception.msg=No previous item. AccountsText.previousPage.exception.msg=No previous page. CannotRunFileTypeDetection=Unable to run file type detection. +CTL_ExtractAllTermsAction=Extract Unique Words DropdownListSearchPanel.selected=Ad Hoc Search data source filter is selected DropdownSingleTermSearchPanel.selected=Ad Hoc Search data source filter is selected DropdownSingleTermSearchPanel.warning.text=Boundary characters ^ and $ do not match word boundaries. Consider\nreplacing with an explicit list of boundary characters, such as [ \\.,] DropdownSingleTermSearchPanel.warning.title=Warning +ExtractAllTermsAction.getName.text=Extract Unique Words ExtractedContentPanel.setMarkup.panelTxt=Loading text... Please wait # {0} - Content name ExtractedContentPanel.SetMarkup.progress.loading=Loading text for {0} diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java new file mode 100755 index 0000000000..560d018349 --- /dev/null +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java @@ -0,0 +1,68 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.keywordsearch; + +import java.awt.event.ActionEvent; +import org.openide.awt.ActionID; +import org.openide.awt.ActionReference; +import org.openide.awt.ActionRegistration; +import org.openide.util.HelpCtx; +import org.openide.util.NbBundle; +import org.openide.util.actions.CallableSystemAction; +import org.sleuthkit.autopsy.casemodule.Case; + +/** + * Action for accessing the Search Other Cases dialog. + */ +@ActionID(category = "Tools", id = "org.sleuthkit.autopsy.keywordsearch.ExtractAllTermsAction") +@ActionRegistration(displayName = "#CTL_OtherCasesSearchAction=Search All Cases", lazy = false) +@ActionReference(path = "Menu/Tools", position = 202) +@NbBundle.Messages({"CTL_ExtractAllTermsAction=Extract Unique Words"}) +public class ExtractAllTermsAction extends CallableSystemAction { + + @Override + public boolean isEnabled() { + return Case.isCaseOpen(); + } + + @Override + public void actionPerformed(ActionEvent event) { + performAction(); + } + + @Override + public void performAction() { + // ELTODO AllCasesSearchDialog dialog = new AllCasesSearchDialog(); + // ELTODO dialog.display(); + int a = 5; + } + + @NbBundle.Messages({ + "ExtractAllTermsAction.getName.text=Extract Unique Words"}) + @Override + public String getName() { + return Bundle.ExtractAllTermsAction_getName_text(); + } + + @Override + public HelpCtx getHelpCtx() { + return HelpCtx.DEFAULT_HELP; + } + +} diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/IndexFinder.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/IndexFinder.java index 99fef29810..dc9179291d 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/IndexFinder.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/IndexFinder.java @@ -21,10 +21,8 @@ package org.sleuthkit.autopsy.keywordsearch; import java.io.File; import java.nio.file.Paths; import java.util.List; -import java.util.logging.Level; import org.apache.commons.lang.math.NumberUtils; import org.sleuthkit.autopsy.casemodule.Case; -import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.appservices.AutopsyService; /** @@ -32,7 +30,6 @@ import org.sleuthkit.autopsy.appservices.AutopsyService; */ class IndexFinder { - private static final Logger logger = Logger.getLogger(IndexFinder.class.getName()); private static final String KWS_OUTPUT_FOLDER_NAME = "keywordsearch"; private static final String KWS_DATA_FOLDER_NAME = "data"; private static final String INDEX_FOLDER_NAME = "index"; @@ -48,7 +45,7 @@ class IndexFinder { return CURRENT_SOLR_SCHEMA_VERSION; } - static Index findLatestVersionIndexDir(List allIndexes) { + static Index findLatestVersionIndex(List allIndexes) { for (Index index : allIndexes) { if (index.getSolrVersion().equals(CURRENT_SOLR_VERSION) && index.getSchemaVersion().equals(CURRENT_SOLR_SCHEMA_VERSION)) { return index; @@ -57,7 +54,7 @@ class IndexFinder { return null; } - static Index createLatestVersionIndexDir(Case theCase) throws AutopsyService.AutopsyServiceException { + static Index createLatestVersionIndex(Case theCase) throws AutopsyService.AutopsyServiceException { String indexFolderName = "solr" + CURRENT_SOLR_VERSION + "_schema" + CURRENT_SOLR_SCHEMA_VERSION; // new index should be stored in "\ModuleOutput\keywordsearch\data\solrX_schemaY\index" File targetDirPath = Paths.get(theCase.getModuleDirectory(), KWS_OUTPUT_FOLDER_NAME, KWS_DATA_FOLDER_NAME, indexFolderName, INDEX_FOLDER_NAME).toFile(); //NON-NLS diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java index 31ce328cc2..7eea0c3c2f 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/SolrSearchService.java @@ -309,14 +309,14 @@ public class SolrSearchService implements KeywordSearchService, AutopsyService { // new case that doesn't have an existing index. create new index folder progressUnitsCompleted++; progress.progress(Bundle.SolrSearch_creatingNewIndex_msg(), progressUnitsCompleted); - currentVersionIndex = IndexFinder.createLatestVersionIndexDir(theCase); + currentVersionIndex = IndexFinder.createLatestVersionIndex(theCase); // add current index to the list of indexes that exist for this case indexes.add(currentVersionIndex); } else { // check if one of the existing indexes is for latest Solr version and schema progressUnitsCompleted++; progress.progress(Bundle.SolrSearch_checkingForLatestIndex_msg(), progressUnitsCompleted); - currentVersionIndex = IndexFinder.findLatestVersionIndexDir(indexes); + currentVersionIndex = IndexFinder.findLatestVersionIndex(indexes); if (currentVersionIndex == null) { // found existing index(es) but none were for latest Solr version and schema version progressUnitsCompleted++; From 3d50d69b4a32f7489458ba8d6e07f20b5dc6d134 Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Wed, 27 Jan 2021 19:03:57 -0500 Subject: [PATCH 02/69] First cut --- .../keywordsearch/ExtractAllTermsAction.java | 17 ++++++- .../autopsy/keywordsearch/Server.java | 48 +++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java index 560d018349..992b79131f 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java @@ -19,9 +19,12 @@ package org.sleuthkit.autopsy.keywordsearch; import java.awt.event.ActionEvent; +import java.io.IOException; +import org.apache.solr.client.solrj.SolrServerException; import org.openide.awt.ActionID; import org.openide.awt.ActionReference; import org.openide.awt.ActionRegistration; +import org.openide.util.Exceptions; import org.openide.util.HelpCtx; import org.openide.util.NbBundle; import org.openide.util.actions.CallableSystemAction; @@ -50,7 +53,19 @@ public class ExtractAllTermsAction extends CallableSystemAction { public void performAction() { // ELTODO AllCasesSearchDialog dialog = new AllCasesSearchDialog(); // ELTODO dialog.display(); - int a = 5; + final Server server = KeywordSearch.getServer(); + Long dsID = Long.valueOf(4); + try { + server.extractAllTermsForDataSource(dsID); + } catch (IOException ex) { + Exceptions.printStackTrace(ex); + } catch (KeywordSearchModuleException ex) { + Exceptions.printStackTrace(ex); + } catch (NoOpenCoreException ex) { + Exceptions.printStackTrace(ex); + } catch (SolrServerException ex) { + Exceptions.printStackTrace(ex); + } } @NbBundle.Messages({ diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java index a27eb4db78..39c47db9bb 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java @@ -65,8 +65,10 @@ import org.apache.solr.client.solrj.response.CollectionAdminResponse; import org.apache.solr.client.solrj.request.CoreAdminRequest; import org.apache.solr.client.solrj.response.CoreAdminResponse; import org.apache.solr.client.solrj.impl.BaseHttpSolrClient.RemoteSolrException; +import org.apache.solr.client.solrj.request.QueryRequest; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.response.TermsResponse; +import org.apache.solr.client.solrj.response.TermsResponse.Term; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.SolrException; @@ -1766,6 +1768,25 @@ public class Server { currentCoreLock.writeLock().unlock(); } } + + /** + * Extract all unique terms/words for a given data source. + * + * @param dataSourceId to process + * + * @throws NoOpenCoreException + */ + void extractAllTermsForDataSource(Long dataSourceId) throws IOException, KeywordSearchModuleException, NoOpenCoreException, SolrServerException { + try { + currentCoreLock.writeLock().lock(); + if (null == currentCollection) { + throw new NoOpenCoreException(); + } + currentCollection.extractAllTermsForDataSource(dataSourceId); + } finally { + currentCoreLock.writeLock().unlock(); + } + } /** * Get the text contents of the given file as stored in SOLR. @@ -2144,6 +2165,33 @@ public class Server { queryClient.deleteByQuery(deleteQuery); } + + private void extractAllTermsForDataSource(Long dsObjId) throws IOException, SolrServerException { + String dataSourceId = Long.toString(dsObjId); + + SolrQuery query = new SolrQuery(); + query.setRequestHandler("/terms"); + query.setTerms(true); + query.setTermsLimit(20); + //query.setTermsLower("s"); + //query.setTermsPrefix("s"); + query.addTermsField("text"); + query.setTermsMinCount(1); + + query.addFilterQuery("image_id:" + dataSourceId); + + QueryRequest request = new QueryRequest(query); + List terms = request.process(queryClient).getTermsResponse().getTerms("text"); + + if (terms == null || terms.isEmpty()) { + logger.log(Level.WARNING, "No unique terms/words returned for data source ID: " + dataSourceId); //NON-NLS + return; + } + + Term term = terms.get(0); + String word = term.getTerm(); + long frequency = term.getFrequency(); + } /** * Add a Solr document for indexing. Documents get batched instead of From bd2add31add4d4027e63fbc97767fb59537ec1f4 Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Fri, 29 Jan 2021 16:37:26 -0500 Subject: [PATCH 03/69] Got something to work --- .../keywordsearch/ExtractAllTermsAction.java | 8 +- .../autopsy/keywordsearch/Server.java | 125 ++++++++++++++++-- 2 files changed, 118 insertions(+), 15 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java index 992b79131f..a3e693b578 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java @@ -57,13 +57,7 @@ public class ExtractAllTermsAction extends CallableSystemAction { Long dsID = Long.valueOf(4); try { server.extractAllTermsForDataSource(dsID); - } catch (IOException ex) { - Exceptions.printStackTrace(ex); - } catch (KeywordSearchModuleException ex) { - Exceptions.printStackTrace(ex); - } catch (NoOpenCoreException ex) { - Exceptions.printStackTrace(ex); - } catch (SolrServerException ex) { + } catch (Exception ex) { Exceptions.printStackTrace(ex); } } diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java index 39c47db9bb..524d519579 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java @@ -35,14 +35,17 @@ import java.net.ServerSocket; import java.net.SocketException; import java.nio.charset.Charset; import java.nio.file.Files; +import java.nio.file.OpenOption; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Random; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -51,11 +54,13 @@ import java.util.logging.Level; import javax.swing.AbstractAction; import org.apache.commons.io.FileUtils; import java.util.concurrent.TimeoutException; +import java.util.stream.Collectors; import static java.util.stream.Collectors.toList; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrRequest; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.SolrClient; +import org.apache.solr.client.solrj.SolrQuery.SortClause; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.impl.CloudSolrClient; import org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrClient; @@ -81,6 +86,7 @@ import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.Case.CaseType; import org.sleuthkit.autopsy.casemodule.CaseMetadata; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.core.UserPreferences; import org.sleuthkit.autopsy.coreutils.FileUtil; import org.sleuthkit.autopsy.coreutils.Logger; @@ -1776,7 +1782,7 @@ public class Server { * * @throws NoOpenCoreException */ - void extractAllTermsForDataSource(Long dataSourceId) throws IOException, KeywordSearchModuleException, NoOpenCoreException, SolrServerException { + void extractAllTermsForDataSource(Long dataSourceId) throws IOException, KeywordSearchModuleException, NoOpenCoreException, SolrServerException, NoCurrentCaseException { try { currentCoreLock.writeLock().lock(); if (null == currentCollection) { @@ -2166,31 +2172,134 @@ public class Server { queryClient.deleteByQuery(deleteQuery); } - private void extractAllTermsForDataSource(Long dsObjId) throws IOException, SolrServerException { + private void extractAllTermsForDataSource(Long dsObjId) throws IOException, SolrServerException, NoCurrentCaseException, KeywordSearchModuleException { String dataSourceId = Long.toString(dsObjId); + + int numTerms = 400000; + int termStep = 1000; SolrQuery query = new SolrQuery(); query.setRequestHandler("/terms"); query.setTerms(true); - query.setTermsLimit(20); + query.setTermsLimit(numTerms); + query.setTermsSortString("index"); + //query.setSort(SortClause.asc("id")); //query.setTermsLower("s"); //query.setTermsPrefix("s"); query.addTermsField("text"); - query.setTermsMinCount(1); + query.setTermsMinCount(0); query.addFilterQuery("image_id:" + dataSourceId); + + // degbug + String sort1 = query.getFacetSortString(); + String sort2 = query.getSortField(); + List sort3 = query.getSorts(); + String sort4 = query.getTermsSortString(); QueryRequest request = new QueryRequest(query); - List terms = request.process(queryClient).getTermsResponse().getTerms("text"); + TermsResponse response = request.process(queryClient).getTermsResponse(); + List terms = response.getTerms("text"); if (terms == null || terms.isEmpty()) { logger.log(Level.WARNING, "No unique terms/words returned for data source ID: " + dataSourceId); //NON-NLS return; } - Term term = terms.get(0); - String word = term.getTerm(); - long frequency = term.getFrequency(); + //Term term = terms.get(0); + //String word = term.getTerm(); + //long frequency = term.getFrequency(); + + // Write the server data to a file + Case currentCase = Case.getCurrentCaseThrows(); + File caseDirectoryPath = new File(currentCase.getOutputDirectory()); + Path serverFile = Paths.get(caseDirectoryPath.toString(), "terms_"+numTerms+"_whole.txt"); //NON-NLS + Files.deleteIfExists(serverFile); + + List listTerms = terms.stream().map(Term::getTerm).collect(Collectors.toList()); + + OpenOption[] options = new OpenOption[] { java.nio.file.StandardOpenOption.CREATE, java.nio.file.StandardOpenOption.APPEND }; + Files.write(serverFile, listTerms, options); + /*for (Term term : terms) { + try { + Files.write(serverFile, term.getTerm().getBytes(), options); + Files.write(serverFile, "\n".getBytes(), options); + } catch (IOException ex) { + throw new KeywordSearchModuleException(serverFile.toString() + " could not be written", ex); //NON-NLS + } + }*/ + + // repeat the same thing but stepping through the terms + String firstTerm = ""; + Path serverFileIterated = Paths.get(caseDirectoryPath.toString(), "terms_"+numTerms+"_iterated.txt"); //NON-NLS + Files.deleteIfExists(serverFileIterated); + Map termsMap = new HashMap<>(); + for (int step = 0; step < numTerms; step += termStep) { + query = new SolrQuery(); + query.setRequestHandler("/terms"); + query.setTerms(true); + query.setTermsLimit(termStep); + query.setTermsLower(firstTerm); + query.setTermsLowerInclusive(false); + query.setTermsSortString("index"); + //query.setSort(SortClause.desc("index")); + //query.setTermsPrefix(firstTerm); + query.addTermsField("text"); + query.setTermsMinCount(0); + + query.addFilterQuery("image_id:" + dataSourceId); + + request = new QueryRequest(query); + response = request.process(queryClient).getTermsResponse(); + terms = response.getTerms("text"); + + if (terms == null || terms.isEmpty()) { + logger.log(Level.WARNING, "No unique terms/words returned for data source ID: " + dataSourceId); //NON-NLS + break; + } + + // set the first term for the next query + firstTerm = terms.get(terms.size()-1).getTerm(); + + //Term term = terms.get(0); + //String word = term.getTerm(); + //long frequency = term.getFrequency(); + // Write the server data to a file + serverFile = Paths.get(caseDirectoryPath.toString(), "terms_step" + step + "_iterated.txt"); //NON-NLS + Files.deleteIfExists(serverFile); + listTerms = terms.stream().map(Term::getTerm).collect(Collectors.toList()); + Files.write(serverFile, listTerms, options); + Files.write(serverFileIterated, listTerms, options); + + for (Term term : terms) { + Integer oldValue = termsMap.get(term.getTerm()); + if (oldValue == null) { + termsMap.put(term.getTerm(), 1); + } else { + termsMap.put(term.getTerm(), oldValue + 1); + } + //termsMap.put(term.getTerm(), 1); + /*try { + Files.write(serverFile, term.getTerm().getBytes(), options); + Files.write(serverFile, "\n".getBytes(), options); + + Files.write(serverFileIterated, term.getTerm().getBytes(), options); + Files.write(serverFileIterated, "\n".getBytes(), options); + } catch (IOException ex) { + throw new KeywordSearchModuleException(serverFile.toString() + " could not be written", ex); //NON-NLS + }*/ + } + } + + // print the hash map + serverFile = Paths.get(caseDirectoryPath.toString(), "terms_step_hashMap.txt"); //NON-NLS + for (String key : termsMap.keySet()) { + Integer value = termsMap.get(key); + Files.write(serverFile, key.getBytes(), options); + //Files.write(serverFile, " ".getBytes(), options); + //Files.write(serverFile, value, options); + Files.write(serverFile, "\n".getBytes(), options); + } } /** From 02439c737e508822cf4b5ddab16bc4b2e9e2778e Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Wed, 3 Feb 2021 15:57:21 -0500 Subject: [PATCH 04/69] Trying things out --- .../keywordsearch/ExtractAllTermsAction.java | 2 +- .../autopsy/keywordsearch/Server.java | 52 +------------------ 2 files changed, 3 insertions(+), 51 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java index a3e693b578..b7bc000d58 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java @@ -34,7 +34,7 @@ import org.sleuthkit.autopsy.casemodule.Case; * Action for accessing the Search Other Cases dialog. */ @ActionID(category = "Tools", id = "org.sleuthkit.autopsy.keywordsearch.ExtractAllTermsAction") -@ActionRegistration(displayName = "#CTL_OtherCasesSearchAction=Search All Cases", lazy = false) +@ActionRegistration(displayName = "#CTL_OtherExtractAllTermsAction=Extract Unique Words", lazy = false) @ActionReference(path = "Menu/Tools", position = 202) @NbBundle.Messages({"CTL_ExtractAllTermsAction=Extract Unique Words"}) public class ExtractAllTermsAction extends CallableSystemAction { diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java index 524d519579..019f42e3de 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java @@ -2183,19 +2183,10 @@ public class Server { query.setTerms(true); query.setTermsLimit(numTerms); query.setTermsSortString("index"); - //query.setSort(SortClause.asc("id")); - //query.setTermsLower("s"); - //query.setTermsPrefix("s"); query.addTermsField("text"); query.setTermsMinCount(0); - query.addFilterQuery("image_id:" + dataSourceId); - - // degbug - String sort1 = query.getFacetSortString(); - String sort2 = query.getSortField(); - List sort3 = query.getSorts(); - String sort4 = query.getTermsSortString(); + // ELTODO query.addFilterQuery("image_id:" + dataSourceId); QueryRequest request = new QueryRequest(query); TermsResponse response = request.process(queryClient).getTermsResponse(); @@ -2233,7 +2224,6 @@ public class Server { String firstTerm = ""; Path serverFileIterated = Paths.get(caseDirectoryPath.toString(), "terms_"+numTerms+"_iterated.txt"); //NON-NLS Files.deleteIfExists(serverFileIterated); - Map termsMap = new HashMap<>(); for (int step = 0; step < numTerms; step += termStep) { query = new SolrQuery(); query.setRequestHandler("/terms"); @@ -2242,12 +2232,10 @@ public class Server { query.setTermsLower(firstTerm); query.setTermsLowerInclusive(false); query.setTermsSortString("index"); - //query.setSort(SortClause.desc("index")); - //query.setTermsPrefix(firstTerm); query.addTermsField("text"); query.setTermsMinCount(0); - query.addFilterQuery("image_id:" + dataSourceId); + // ELTODO query.addFilterQuery("image_id:" + dataSourceId); request = new QueryRequest(query); response = request.process(queryClient).getTermsResponse(); @@ -2261,44 +2249,8 @@ public class Server { // set the first term for the next query firstTerm = terms.get(terms.size()-1).getTerm(); - //Term term = terms.get(0); - //String word = term.getTerm(); - //long frequency = term.getFrequency(); - // Write the server data to a file - serverFile = Paths.get(caseDirectoryPath.toString(), "terms_step" + step + "_iterated.txt"); //NON-NLS - Files.deleteIfExists(serverFile); listTerms = terms.stream().map(Term::getTerm).collect(Collectors.toList()); - Files.write(serverFile, listTerms, options); Files.write(serverFileIterated, listTerms, options); - - for (Term term : terms) { - Integer oldValue = termsMap.get(term.getTerm()); - if (oldValue == null) { - termsMap.put(term.getTerm(), 1); - } else { - termsMap.put(term.getTerm(), oldValue + 1); - } - //termsMap.put(term.getTerm(), 1); - /*try { - Files.write(serverFile, term.getTerm().getBytes(), options); - Files.write(serverFile, "\n".getBytes(), options); - - Files.write(serverFileIterated, term.getTerm().getBytes(), options); - Files.write(serverFileIterated, "\n".getBytes(), options); - } catch (IOException ex) { - throw new KeywordSearchModuleException(serverFile.toString() + " could not be written", ex); //NON-NLS - }*/ - } - } - - // print the hash map - serverFile = Paths.get(caseDirectoryPath.toString(), "terms_step_hashMap.txt"); //NON-NLS - for (String key : termsMap.keySet()) { - Integer value = termsMap.get(key); - Files.write(serverFile, key.getBytes(), options); - //Files.write(serverFile, " ".getBytes(), options); - //Files.write(serverFile, value, options); - Files.write(serverFile, "\n".getBytes(), options); } } From 1674b6a8b820390bf48829ff14ec77e6c5e1b46c Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Fri, 12 Feb 2021 11:59:19 -0500 Subject: [PATCH 05/69] Japanese translations for release-4.18 --- .../autopsy/actions/Bundle_ja.properties | 103 ++-- .../autopsy/casemodule/Bundle_ja.properties | 15 +- .../casemodule/services/Bundle_ja.properties | 4 +- .../centralrepository/Bundle_ja.properties | 6 +- .../datamodel/Bundle_ja.properties | 5 +- .../eventlisteners/Bundle_ja.properties | 11 +- .../ingestmodule/Bundle_ja.properties | 4 +- .../persona/Bundle_ja.properties | 105 ++-- .../commandlineingest/Bundle_ja.properties | 39 +- .../communications/Bundle_ja.properties | 7 +- .../relationships/Bundle_ja.properties | 24 +- .../contentviewers/Bundle_ja.properties | 520 +++++++++--------- .../artifactviewers/Bundle_ja.properties | 82 ++- .../contextviewer/Bundle_ja.properties | 6 +- .../autopsy/core/Bundle_ja.properties | 42 +- .../corecomponents/Bundle_ja.properties | 184 +++---- .../autopsy/datamodel/Bundle_ja.properties | 3 +- .../datasourcesummary/ui/Bundle_ja.properties | 175 ++++-- .../directorytree/Bundle_ja.properties | 4 +- .../actionhelpers/Bundle_ja.properties | 6 +- .../autopsy/filesearch/Bundle_ja.properties | 11 +- .../autopsy/geolocation/Bundle_ja.properties | 4 +- .../datamodel/Bundle_ja.properties | 3 +- .../autopsy/guiutils/Bundle_ja.properties | 6 +- .../healthmonitor/Bundle_ja.properties | 14 +- .../autopsy/ingest/Bundle_ja.properties | 251 +++++---- .../autopsy/livetriage/Bundle_ja.properties | 6 +- .../logicalimager/dsp/Bundle_ja.properties | 4 +- .../dataSourceIntegrity/Bundle_ja.properties | 6 +- .../modules/drones/Bundle_ja.properties | 6 +- .../Bundle_ja.properties | 3 +- .../autopsy/modules/exif/Bundle_ja.properties | 11 +- .../modules/filetypeid/Bundle_ja.properties | 4 +- .../modules/hashdatabase/Bundle_ja.properties | 8 +- .../interestingitems/Bundle_ja.properties | 34 +- .../photoreccarver/Bundle_ja.properties | 48 +- .../pictureanalyzer/Bundle_ja.properties | 5 +- .../impls/Bundle_ja.properties | 4 +- .../infrastructure/Bundle_ja.properties | 7 +- .../report/modules/excel/Bundle_ja.properties | 4 +- .../report/modules/html/Bundle_ja.properties | 4 +- .../report/modules/kml/Bundle_ja.properties | 5 +- .../modules/portablecase/Bundle_ja.properties | 4 +- .../texttranslation/Bundle_ja.properties | 13 +- .../translators/Bundle_ja.properties | 6 +- .../texttranslation/ui/Bundle_ja.properties | 8 +- .../autoingest/Bundle_ja.properties | 10 +- .../configuration/Bundle_ja.properties | 4 +- .../keywordsearch/Bundle_ja.properties | 57 +- .../recentactivity/Bundle_ja.properties | 33 +- .../lastupdated.properties | 4 +- 51 files changed, 1012 insertions(+), 920 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/actions/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/actions/Bundle_ja.properties index a4a460df69..a4fff0acfa 100644 --- a/Core/src/org/sleuthkit/autopsy/actions/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/actions/Bundle_ja.properties @@ -1,97 +1,82 @@ +#Fri Feb 12 16:56:28 UTC 2021 AddBlackboardArtifactTagAction.pluralTagResult=\u7d50\u679c\u30bf\u30b0\u3092\u8ffd\u52a0 AddBlackboardArtifactTagAction.singularTagResult=\u7d50\u679c\u30bf\u30b0\u3092\u8ffd\u52a0 AddBlackboardArtifactTagAction.taggingErr=\u30bf\u30b0\u4ed8\u3051\u30a8\u30e9\u30fc -# {0} - artifactName AddBlackboardArtifactTagAction.unableToTag.msg={0} \u3092\u30bf\u30b0\u4ed8\u3051\u3067\u304d\u307e\u305b\u3093\u3002 +AddBookmarkTagAction.bookmark.text=\u30d6\u30c3\u30af\u30de\u30fc\u30af AddContentTagAction.cannotApplyTagErr=\u30bf\u30b0\u3092\u9069\u7528\u3067\u304d\u307e\u305b\u3093 AddContentTagAction.pluralTagFile=\u30d5\u30a1\u30a4\u30eb\u30bf\u30b0\u3092\u8ffd\u52a0 AddContentTagAction.singularTagFile=\u30d5\u30a1\u30a4\u30eb\u30bf\u30b0\u3092\u8ffd\u52a0 -# {0} - fileName -# {1} - tagName AddContentTagAction.tagExists={0} \u304c {1} \u3068\u3057\u3066\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u307e\u3057\u305f\u3002\u540c\u3058\u30bf\u30b0\u3092\u518d\u9069\u7528\u3067\u304d\u307e\u305b\u3093\u3002 AddContentTagAction.taggingErr=\u30bf\u30b0\u4ed8\u3051\u30a8\u30e9\u30fc -# {0} - fileName AddContentTagAction.unableToTag.msg={0} \u3092\u30bf\u30b0\u4ed8\u3051\u3067\u304d\u307e\u305b\u3093\u3002\u901a\u5e38\u306e\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -# {0} - fileName AddContentTagAction.unableToTag.msg2={0} \u3092\u30bf\u30b0\u4ed8\u3051\u3067\u304d\u307e\u305b\u3093\u3002 +AddTagAction.bookmarkFile=\u30d6\u30c3\u30af\u30de\u30fc\u30af\u30d5\u30a1\u30a4\u30eb +AddTagAction.newTag=\u65b0\u898f\u30bf\u30b0... +AddTagAction.noTags=\u30bf\u30b0\u306a\u3057 +AddTagAction.quickTag=\u30af\u30a4\u30c3\u30af\u30bf\u30b0 +AddTagAction.tagAndComment=\u30bf\u30b0\u3068\u30b3\u30e1\u30f3\u30c8... +CTL_DumpThreadAction=\u30b9\u30ec\u30c3\u30c9 \u30c0\u30f3\u30d7 +CTL_OpenLogFolder=\u30ed\u30b0\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u304f +CTL_OpenOutputFolder=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u304f +CTL_OpenPythonModulesFolderAction=Python\u30d7\u30e9\u30b0\u30a4\u30f3 CTL_ShowIngestProgressSnapshotAction=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b9\u30c6\u30fc\u30bf\u30b9\u8a73\u7d30 DeleteBlackboardArtifactTagAction.deleteTag=\u9078\u629e\u3057\u305f\u30bf\u30b0\u3092\u524a\u9664 DeleteBlackboardArtifactTagAction.tagDelErr=\u30bf\u30b0\u524a\u9664\u30a8\u30e9\u30fc -# {0} - tagName DeleteBlackboardArtifactTagAction.unableToDelTag.msg={0} \u3092Delete\u30bf\u30b0\u4ed8\u3051\u3067\u304d\u307e\u305b\u3093\u3002 DeleteContentTagAction.deleteTag=\u9078\u629e\u3057\u305f\u30bf\u30b0\u3092\u524a\u9664 DeleteContentTagAction.tagDelErr=\u30bf\u30b0\u524a\u9664\u30a8\u30e9\u30fc -# {0} - tagName DeleteContentTagAction.unableToDelTag.msg={0} \u3092Delete\u30bf\u30b0\u4ed8\u3051\u3067\u304d\u307e\u305b\u3093\u3002 DeleteFileBlackboardArtifactTagAction.deleteTag=\u7d50\u679c\u30bf\u30b0\u3092\u524a\u9664 -# {0} - artifactID DeleteFileBlackboardArtifactTagAction.deleteTag.alert=\u904e\u53bb\u306e\u691c\u7d22\u7d50\u679c {0} \u3092\u30bf\u30b0\u306a\u3057\u306b\u3067\u304d\u307e\u305b\u3093\u3002 -# {0} - artifactID DeleteFileBlackboardArtifactTagAction.deleteTags.alert=\u904e\u53bb\u306e\u691c\u7d22\u7d50\u679c {0} \u3092\u30bf\u30b0\u306a\u3057\u306b\u3067\u304d\u307e\u305b\u3093\u3002 DeleteFileContentTagAction.deleteTag=\u30d5\u30a1\u30a4\u30eb\u30bf\u30b0\u3092\u524a\u9664 -# {0} - fileID DeleteFileContentTagAction.deleteTag.alert=\u904e\u53bb\u306e\u691c\u7d22\u7d50\u679c {0} \u3092\u30bf\u30b0\u306a\u3057\u306b\u3067\u304d\u307e\u305b\u3093\u3002 ExitAction.confirmationDialog.message=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u5b9f\u884c\u4e2d\u3067\u3059\u3002\u7d42\u4e86\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? ExitAction.confirmationDialog.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u5b9f\u884c\u4e2d\u3067\u3059 -# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 -ExitAction.messageBox.caseCloseExceptionMessage=\u6b21\u306e\u30b1\u30fc\u30b9\u3092\u9589\u3058\u3066\u3044\u308b\u9593\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} -GetTagNameDialog.descriptionLabel.text=\u8a18\u8ff0: +ExitAction.messageBox.caseCloseExceptionMessage=\u6b21\u306e\u30b1\u30fc\u30b9\u3092\u9589\u3058\u3066\u3044\u308b\u9593\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\: {0} +GetTagNameAndCommentDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 +GetTagNameAndCommentDialog.cancelName=\u53d6\u308a\u6d88\u3057 +GetTagNameAndCommentDialog.commentLabel.text=\u30b3\u30e1\u30f3\u30c8\: +GetTagNameAndCommentDialog.commentText.text= +GetTagNameAndCommentDialog.commentText.toolTipText=\u4efb\u610f\u30bf\u30b0\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u5165\u529b\u3059\u308b\u304b\u7a7a\u6b04\u306e\u307e\u307e\u306b\u3059\u308b +GetTagNameAndCommentDialog.newTagButton.text=\u65b0\u898f\u30bf\u30b0 +GetTagNameAndCommentDialog.noTags=\u30bf\u30b0\u306a\u3057 +GetTagNameAndCommentDialog.okButton.text=OK +GetTagNameAndCommentDialog.selectTag=\u30bf\u30b0\u3092\u9078\u629e +GetTagNameAndCommentDialog.tagCombo.toolTipText=\u4f7f\u7528\u3059\u308b\u30bf\u30b0\u3092\u9078\u629e +GetTagNameAndCommentDialog.tagLabel.text=\u30bf\u30b0\: +GetTagNameDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 +GetTagNameDialog.cancelName=\u53d6\u308a\u6d88\u3057 +GetTagNameDialog.createTag=\u30bf\u30b0\u3092\u4f5c\u6210 +GetTagNameDialog.descriptionLabel.text=\u8a18\u8ff0\: +GetTagNameDialog.dupTagErr=\u30bf\u30b0\u8907\u88fd\u30a8\u30e9\u30fc +GetTagNameDialog.illegalChars.msg=\u30bf\u30b0\u540d\u306b\u4e0d\u6b63\u306a\u6587\u5b57\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\n\u6b21\u306e\u8a18\u53f7\u3092\u542b\u3081\u3089\u308c\u307e\u305b\u3093\: \\ \: * ? " < > | , ; +GetTagNameDialog.illegalCharsErr=\u4e0d\u6b63\u306a\u6587\u5b57 +GetTagNameDialog.mustSupplyTtagName.msg=\u7d9a\u884c\u3059\u308b\u306b\u306f\u30bf\u30b0\u540d\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +GetTagNameDialog.newTagPanel.border.title=\u65b0\u898f\u30bf\u30b0 GetTagNameDialog.notableCheckbox.text=\u30bf\u30b0\u306f\u9805\u76ee\u304c\u9855\u8457\u3067\u3042\u308b\u3068\u793a\u5506\u3057\u3066\u3044\u307e\u3059\u3002 +GetTagNameDialog.okButton.text=OK +GetTagNameDialog.preexistingLabel.text=\u524d\u304b\u3089\u5b58\u5728\u3059\u308b\u30bf\u30b0\u540d\: GetTagNameDialog.tagDescriptionIllegalCharacters.message=\u30bf\u30b0\u306e\u8a18\u8ff0\u306b\u30ab\u30f3\u30de(,)\u3084\u30bb\u30df\u30b3\u30ed\u30f3(;)\u3092\u542b\u3081\u3089\u308c\u307e\u305b\u3093 GetTagNameDialog.tagDescriptionIllegalCharacters.title=\u30bf\u30b0\u306e\u8a18\u8ff0\u306b\u7121\u52b9\u306a\u6587\u5b57\u304c\u3042\u308a\u307e\u3059 +GetTagNameDialog.tagNameAlreadyDef.msg={0} \u30bf\u30b0\u540d\u3092\u3059\u3067\u306b\u5b9a\u7fa9\u6e08\u307f\u3067\u3059\u3002 GetTagNameDialog.tagNameAlreadyExists.message=\u30bf\u30b0\u540d\u306f\u4e00\u610f\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002\u3053\u306e\u540d\u524d\u306e\u30bf\u30b0\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 GetTagNameDialog.tagNameAlreadyExists.title=\u30bf\u30b0\u540d\u3092\u8907\u88fd -GetTagNameDialog.tagNameField.text= -GetTagNameDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 -GetTagNameDialog.okButton.text=OK -GetTagNameDialog.preexistingLabel.text=\u524d\u304b\u3089\u5b58\u5728\u3059\u308b\u30bf\u30b0\u540d: -GetTagNameDialog.newTagPanel.border.title=\u65b0\u898f\u30bf\u30b0 -GetTagNameDialog.tagNameLabel.text=\u30bf\u30b0\u540d: -GetTagNameAndCommentDialog.newTagButton.text=\u65b0\u898f\u30bf\u30b0 -GetTagNameAndCommentDialog.okButton.text=OK -GetTagNameAndCommentDialog.commentText.toolTipText=\u4efb\u610f\u30bf\u30b0\u306e\u30b3\u30e1\u30f3\u30c8\u3092\u5165\u529b\u3059\u308b\u304b\u7a7a\u6b04\u306e\u307e\u307e\u306b\u3059\u308b -GetTagNameAndCommentDialog.commentText.text= -GetTagNameAndCommentDialog.commentLabel.text=\u30b3\u30e1\u30f3\u30c8: -# \u3053\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u5909\u66f4\u3059\u308b\u306b\u306f\u3001[\u30c4\u30fc\u30eb | \u30c6\u30f3\u30d7\u30ec\u30fc\u30c8] \u3092\u9078\u629e\u3057\u3001 -# \u30a8\u30c7\u30a3\u30bf\u30fc\u3067\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u958b\u304d\u307e\u3059\u3002 -GetTagNameAndCommentDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 -GetTagNameAndCommentDialog.tagLabel.text=\u30bf\u30b0: -AddTagAction.bookmarkFile=\u30d6\u30c3\u30af\u30de\u30fc\u30af\u30d5\u30a1\u30a4\u30eb -AddTagAction.quickTag=\u30af\u30a4\u30c3\u30af\u30bf\u30b0 -AddTagAction.noTags=\u30bf\u30b0\u306a\u3057 -AddTagAction.newTag=\u65b0\u898f\u30bf\u30b0... -AddTagAction.tagAndComment=\u30bf\u30b0\u3068\u30b3\u30e1\u30f3\u30c8... -AddBookmarkTagAction.bookmark.text=\u30d6\u30c3\u30af\u30de\u30fc\u30af -GetTagNameAndCommentDialog.noTags=\u30bf\u30b0\u306a\u3057 -GetTagNameAndCommentDialog.selectTag=\u30bf\u30b0\u3092\u9078\u629e -GetTagNameAndCommentDialog.cancelName=\u53d6\u308a\u6d88\u3057 -GetTagNameDialog.createTag=\u30bf\u30b0\u3092\u4f5c\u6210 -GetTagNameDialog.cancelName=\u53d6\u308a\u6d88\u3057 -GetTagNameDialog.mustSupplyTtagName.msg=\u7d9a\u884c\u3059\u308b\u306b\u306f\u30bf\u30b0\u540d\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 GetTagNameDialog.tagNameErr=\u30bf\u30b0\u540d -GetTagNameDialog.illegalChars.msg=\u30bf\u30b0\u540d\u306b\u4e0d\u6b63\u306a\u6587\u5b57\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\n\u6b21\u306e\u8a18\u53f7\u3092\u542b\u3081\u3089\u308c\u307e\u305b\u3093: \\ : * ? " < > | , ; -GetTagNameDialog.illegalCharsErr=\u4e0d\u6b63\u306a\u6587\u5b57 -GetTagNameDialog.unableToAddTagNameToCase.msg={0} \u30bf\u30b0\u540d\u3092\u30b1\u30fc\u30b9\u306b\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3002 -GetTagNameDialog.taggingErr=\u30bf\u30b0\u4ed8\u3051\u30a8\u30e9\u30fc -GetTagNameDialog.tagNameAlreadyDef.msg={0} \u30bf\u30b0\u540d\u3092\u3059\u3067\u306b\u5b9a\u7fa9\u6e08\u307f\u3067\u3059\u3002 -GetTagNameDialog.dupTagErr=\u30bf\u30b0\u8907\u88fd\u30a8\u30e9\u30fc GetTagNameDialog.tagNameExistsTskCore.msg=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306b {0} \u30bf\u30b0\u540d\u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u304c\u3001\u691c\u7d22\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -OpenLogFolder.error1=\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0} +GetTagNameDialog.tagNameField.text= +GetTagNameDialog.tagNameLabel.text=\u30bf\u30b0\u540d\: +GetTagNameDialog.taggingErr=\u30bf\u30b0\u4ed8\u3051\u30a8\u30e9\u30fc +GetTagNameDialog.unableToAddTagNameToCase.msg={0} \u30bf\u30b0\u540d\u3092\u30b1\u30fc\u30b9\u306b\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3002 OpenLogFolder.CouldNotOpenLogFolder=\u30ed\u30b0\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f -CTL_OpenLogFolder=\u30ed\u30b0\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u304f -CTL_OpenOutputFolder=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u304f -OpenOutputFolder.error1=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0} -OpenOutputFolder.noCaseOpen=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u306a\u3044\u305f\u3081\u3001\u73fe\u5728\u306e\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +OpenLogFolder.error1=\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\: {0} OpenOutputFolder.CouldNotOpenOutputFolder=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f -# {0} - \u53e4\u3044\u30bf\u30b0\u540d -# {1} - artifactID +OpenOutputFolder.error1=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\: {0} +OpenOutputFolder.noCaseOpen=\u958b\u3044\u3066\u3044\u308b\u30b1\u30fc\u30b9\u306f\u306a\u3044\u305f\u3081\u3001\u73fe\u5728\u306e\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +OpenPythonModulesFolderAction.actionName.text=Python\u30d7\u30e9\u30b0\u30a4\u30f3 +OpenPythonModulesFolderAction.errorMsg.folderNotFound=Python\u30d7\u30e9\u30b0\u30a4\u30f3\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\: {0} ReplaceBlackboardArtifactTagAction.replaceTag.alert=\u904e\u53bb\u306e\u691c\u7d22\u7d50\u679c {1} \u306e\u30bf\u30b0 {0} \u3092\u7f6e\u63db\u3067\u304d\u307e\u305b\u3093\u3002 -# {0} - \u53e4\u3044\u30bf\u30b0\u540d -# {1} - \u30b3\u30f3\u30c6\u30f3\u30c4\u30aa\u30d6\u30b8\u30a7\u30af\u30c8ID ReplaceContentTagAction.replaceTag.alert={1} \u306e\u30bf\u30b0 {0} \u3092\u7f6e\u63db\u3067\u304d\u307e\u305b\u3093\u3002 ReplaceTagAction.replaceTag=\u3067\u9078\u629e\u3057\u305f\u30bf\u30b0\u3092\u7f6e\u63db ShowIngestProgressSnapshotAction.actionName.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u9032\u884c\u72b6\u6cc1\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u3092\u53d6\u5f97 -OpenPythonModulesFolderAction.actionName.text=Python\u30d7\u30e9\u30b0\u30a4\u30f3 -OpenPythonModulesFolderAction.errorMsg.folderNotFound=Python\u30d7\u30e9\u30b0\u30a4\u30f3\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0} -CTL_OpenPythonModulesFolderAction=Python\u30d7\u30e9\u30b0\u30a4\u30f3 -GetTagNameAndCommentDialog.tagCombo.toolTipText=\u4f7f\u7528\u3059\u308b\u30bf\u30b0\u3092\u9078\u629e diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties index 5f29c9ed07..f85f5c62d2 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:20 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 AddImageAction.ingestConfig.ongoingIngest.msg=\u5225\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3067\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u65b0\u898f\u30bd\u30fc\u30b9\u3092\u4eca\u8ffd\u52a0\u3059\u308b\u3068\u3001\u73fe\u5728\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u51e6\u7406\u304c\u9045\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002
\u7d9a\u884c\u3057\u3066\u65b0\u898f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u4eca\u3059\u3050\u8ffd\u52a0\u3057\u307e\u3059\u304b? AddImageAction.ingestConfig.ongoingIngest.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059 AddImageAction.wizard.title=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u8ffd\u52a0 @@ -90,8 +90,8 @@ Case.metaDataFileCorrupt.exception.msg=\u30b1\u30fc\u30b9\u30e1\u30bf\u30c7\u30f Case.open.exception.multiUserCaseNotEnabled=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u304c\u6709\u52b9\u3067\u306a\u3044\u5834\u5408\u306f\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u3092\u958b\u3051\u307e\u305b\u3093\u3002[\u30c4\u30fc\u30eb]\u3001[\u30aa\u30d7\u30b7\u30e7\u30f3]\u3001[\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc] \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 Case.open.msgDlg.updated.msg=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u3092\u66f4\u65b0\u3057\u307e\u3057\u305f\u3002\n\u6b21\u306e\u30d1\u30b9\u3092\u6301\u3064\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u30b3\u30d4\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f\:\n {0} Case.open.msgDlg.updated.title=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b9\u30ad\u30fc\u30de\u306e\u66f4\u65b0 -Case.openFileSystems.openingImage=\u753b\u50cf\u306e\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3092\u958b\u304f\uff1a{0}\u2026 -Case.openFileSystems.retrievingImages=\u30b1\u30fc\u30b9\u306e\u753b\u50cf\u3092\u53d6\u5f97\u4e2d\uff1a{0}\u2026 +Case.openFileSystems.openingImage=\u30a4\u30e1\u30fc\u30b8\u7528\u306b\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3092\u958b\u304f\uff1a{0} ... +Case.openFileSystems.retrievingImages=\u30b1\u30fc\u30b9\u306e\u753b\u50cf\u3092\u53d6\u5f97\u3057\u3066\u3044\u307e\u3059\uff1a{0} ... Case.progressIndicatorCancelButton.label=\u53d6\u308a\u6d88\u3057 Case.progressIndicatorTitle.closingCase=\u30b1\u30fc\u30b9\u3092\u9589\u3058\u3066\u3044\u307e\u3059 Case.progressIndicatorTitle.creatingCase=\u30b1\u30fc\u30b9\u3092\u4f5c\u6210\u4e2d\u3067\u3059 @@ -313,7 +313,7 @@ NewCaseVisualPanel1.CaseFolderOnCDriveError.text=\u8b66\u544a\: \u30de\u30eb\u30 NewCaseVisualPanel1.CaseFolderOnInternalDriveLinuxError.text=\u8b66\u544a\: \u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u30fc\u306e\u30d1\u30b9\u306f\u30bf\u30fc\u30b2\u30c3\u30c8\u30b7\u30b9\u30c6\u30e0\u4e0a\u306b\u3042\u308a\u307e\u3059\u3002\u30de\u30a6\u30f3\u30c8\u3055\u308c\u305f\u30c9\u30e9\u30a4\u30d6\u5185\u306b\u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002 NewCaseVisualPanel1.CaseFolderOnInternalDriveWindowsError.text=\u8b66\u544a\: \u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u30fc\u306e\u30d1\u30b9\u306f "C\:" \u30c9\u30e9\u30a4\u30d6\u306b\u3042\u308a\u307e\u3059\u3002\u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u30fc\u306f\u30bf\u30fc\u30b2\u30c3\u30c8\u30b7\u30b9\u30c6\u30e0\u4e0a\u306b\u4f5c\u6210\u3055\u308c\u307e\u3059 NewCaseVisualPanel1.badCredentials.text=\u4e0d\u6b63\u306a\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u8a2d\u5b9a(\u30c4\u30fc\u30eb]\u3001[\u30aa\u30d7\u30b7\u30e7\u30f3]\u3001[\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc] \u3092\u53c2\u7167)\u304b\u3001\u30b5\u30fc\u30d3\u30b9\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059\u3002 -NewCaseVisualPanel1.caseDataStoredLabel.text_1=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u306f\u6b21\u306e\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\uff1a +NewCaseVisualPanel1.caseDataStoredLabel.text_1=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u306f\u6b21\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\uff1a NewCaseVisualPanel1.caseDirBrowse.selectButton.text=\u9078\u629e NewCaseVisualPanel1.caseDirBrowseButton.text=\u53c2\u7167 NewCaseVisualPanel1.caseDirLabel.text=\u30d9\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\: @@ -324,8 +324,9 @@ NewCaseVisualPanel1.caseParentDirTextField.text= NewCaseVisualPanel1.caseParentDirWarningLabel.text= NewCaseVisualPanel1.caseTypeLabel.text=\u30b1\u30fc\u30b9\u30bf\u30a4\u30d7\: NewCaseVisualPanel1.getName.text=\u30b1\u30fc\u30b9\u60c5\u5831 -NewCaseVisualPanel1.multiUserCaseRadioButton.text=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\t\t +NewCaseVisualPanel1.multiUserCaseRadioButton.text=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc NewCaseVisualPanel1.singleUserCaseRadioButton.text=\u30b7\u30f3\u30b0\u30eb\u30e6\u30fc\u30b6\u30fc +NewCaseVisualPanel1.uncPath.error=\u30a8\u30e9\u30fc\uff1a\u30b7\u30f3\u30b0\u30eb\u30e6\u30fc\u30b6\u30fc\u306e\u5834\u5408\u3001UNC\u30d1\u30b9\u306f\u8a31\u53ef\u3055\u308c\u3066\u3044\u307e\u305b\u3093 NewCaseVisualPanel2.getName.text=\u4efb\u610f\u60c5\u5831 NewCaseWizardAction.databaseProblem1.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u958b\u3051\u307e\u305b\u3093\u3002\u30b1\u30fc\u30b9\u306e\u4f5c\u6210\u3092\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059\u3002 NewCaseWizardAction.databaseProblem2.text=\u30a8\u30e9\u30fc @@ -389,6 +390,10 @@ SingleUserCaseConverter.BadDatabaseFileName=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9 SingleUserCaseConverter.CanNotOpenDatabase=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u958b\u3051\u307e\u305b\u3093 SingleUserCaseConverter.NonUniqueDatabaseName=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d\u304c\u4e00\u610f\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 SingleUserCaseConverter.UnableToCopySourceImages=\u30bd\u30fc\u30b9\u30a4\u30e1\u30fc\u30b8\u3092\u30b3\u30d4\u30fc\u3067\u304d\u307e\u305b\u3093 +SolrNotConfiguredDialog.EmptyKeywordSearchHostName=Solr8\u63a5\u7d9a\u30d1\u30e9\u30e1\u30fc\u30bf\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 [\u30c4\u30fc\u30eb]-> [\u30aa\u30d7\u30b7\u30e7\u30f3]-> [\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc]\u306b\u79fb\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +SolrNotConfiguredDialog.messageLabel.text=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u306f\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u304c\u3001Solr8\u30b5\u30fc\u30d0\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002
\n\u65b0\u3057\u3044\u30b1\u30fc\u30b9\u306fSolr8\u3067\u306e\u307f\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002[\u30c4\u30fc\u30eb]-> [\u30aa\u30d7\u30b7\u30e7\u30f3]-> [\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc]\u306b\u79fb\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +SolrNotConfiguredDialog.okButton.text=OK +SolrNotConfiguredDialog.title=Solr8\u30b5\u30fc\u30d0\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093 StartupWindow.title.text=\u3088\u3046\u3053\u305d UnpackagePortableCaseDialog.UnpackagePortableCaseDialog.extensions=\u30dd\u30fc\u30bf\u30d6\u30eb\u30b1\u30fc\u30b9\u30d1\u30c3\u30b1\u30fc\u30b8(.zip, .zip.001) UnpackagePortableCaseDialog.caseErrorLabel.text=jLabel1 diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/services/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/casemodule/services/Bundle_ja.properties index 3a6757eb65..fa3334f939 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/services/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/casemodule/services/Bundle_ja.properties @@ -1,5 +1,5 @@ -#Tue Aug 18 18:09:21 UTC 2020 -OptionsCategory_Name_TagNamesOptions=\u30ab\u30b9\u30bf\u30e0\u30bf\u30b0 +#Fri Feb 12 16:56:28 UTC 2021 +OptionsCategory_Name_TagNamesOptions=\u30ab\u30b9\u30bf\u30e0\u30fb\u30bf\u30b0 OptionsCategory_TagNames=TagNames TagNameDefinition.predefTagNames.bookmark.text=\u30d6\u30c3\u30af\u30de\u30fc\u30af TagNameDefinition.predefTagNames.followUp.text=\u30d5\u30a9\u30ed\u30fc\u30a2\u30c3\u30d7 diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/Bundle_ja.properties index a7854c6085..cb6299b983 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/Bundle_ja.properties @@ -1,3 +1,3 @@ -#Tue Aug 18 18:09:21 UTC 2020 -OpenIDE-Module-Long-Description=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u53d6\u8fbc\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3002\n\n\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30dd\u30b8\u30c8\u30ea\u306e\u53d6\u8fbc\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u9078\u629e\u3057\u305f\u76f8\u95a2\u30bf\u30a4\u30d7\u3068\u4e00\u81f4\u3059\u308b\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u306e\u5c5e\u6027\u3092\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u4fdd\u5b58\u3057\u307e\u3059\u3002\n\u4fdd\u5b58\u3055\u308c\u305f\u5c5e\u6027\u306f\u3001\u4eca\u5f8c\u306e\u30b1\u30fc\u30b9\u3067\u3001\u53d6\u308a\u8fbc\u307f\u4e2d\u306b\u30d5\u30a1\u30a4\u30eb\u3068\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u95a2\u9023\u4ed8\u3051\u3066\u5206\u6790\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002\u300d -OpenIDE-Module-Short-Description=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u8aad\u8fbc\u30e2\u30b8\u30e5\u30fc\u30eb +#Fri Feb 12 16:56:28 UTC 2021 +OpenIDE-Module-Long-Description=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u53d6\u308a\u8fbc\u307f\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\n\n\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u53d6\u308a\u8fbc\u307f\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u9078\u629e\u3057\u305f\u76f8\u95a2\u30bf\u30a4\u30d7\u306b\u4e00\u81f4\u3059\u308b\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u306e\u5c5e\u6027\u3092\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u683c\u7d0d\u3057\u307e\u3059\u3002\n\u4fdd\u5b58\u3055\u308c\u305f\u5c5e\u6027\u306f\u3001\u5c06\u6765\u306e\u30b1\u30fc\u30b9\u3067\u3001\u53d6\u308a\u8fbc\u307f\u4e2d\u306b\u30d5\u30a1\u30a4\u30eb\u3068\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u76f8\u4e92\u306b\u95a2\u9023\u4ed8\u3051\u3066\u5206\u6790\u3059\u308b\u305f\u3081\u306b\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002 +OpenIDE-Module-Short-Description=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u53d6\u308a\u8fbc\u307f\u30e2\u30b8\u30e5\u30fc\u30eb diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/Bundle_ja.properties index 7e0bda440b..f52884e26c 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/datamodel/Bundle_ja.properties @@ -1,10 +1,11 @@ -#Tue Aug 18 18:09:20 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 CentralRepoDbChoice.Disabled.Text=\u7121\u52b9 CentralRepoDbChoice.PostgreSQL.Text=\u30ab\u30b9\u30bf\u30e0PostgreSQL CentralRepoDbChoice.PostgreSQL_Multiuser.Text=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u8a2d\u5b9a\u4f7f\u7528PostgreSQL CentralRepoDbChoice.Sqlite.Text=SQLite CentralRepoDbManager.connectionErrorMsg.text=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30fc\u30fb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u306e\u63a5\u7d9a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 CentralRepositoryService.progressMsg.updatingSchema=\u30b9\u30ad\u30fc\u30de\u3092\u66f4\u65b0\u3057\u3066\u3044\u307e\u3059\u2026 +CentralRepositoryService.progressMsg.waitingForListeners=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u3078\u30c7\u30fc\u30bf\u306e\u8ffd\u52a0\u3092\u7d42\u4e86\u4e2d...\u3002 CentralRepositoryService.serviceName=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30fc\u30fb\u30b5\u30fc\u30d3\u30b9 CorrelationAttributeUtil.emailaddresses.text=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9 -Persona.defaultName=\u540d\u524d\u306a\u3057 +Persona.defaultName=\u7121\u540d diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/Bundle_ja.properties index 0f4bae052b..e58016c3e8 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/eventlisteners/Bundle_ja.properties @@ -1,5 +1,8 @@ -#Tue Aug 18 18:09:20 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 +CentralRepositoryNotificationDialog.bulletHeader=\u3053\u306e\u30c7\u30fc\u30bf\u306e\u4f7f\u7528\u76ee\u7684\u306f\uff1a +CentralRepositoryNotificationDialog.bulletOne=\u4e00\u822c\u7684\u306a\u30a2\u30a4\u30c6\u30e0\uff08\u30d5\u30a1\u30a4\u30eb\u3001\u30c9\u30e1\u30a4\u30f3\u3001\u30a2\u30ab\u30a6\u30f3\u30c8\uff09\u3092\u7121\u8996\u3059\u308b +CentralRepositoryNotificationDialog.bulletThree=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u30b0\u30eb\u30fc\u30d7\u5316\u3059\u308b\u30da\u30eb\u30bd\u30ca\u3092\u4f5c\u6210\u3059\u308b +CentralRepositoryNotificationDialog.bulletTwo=\u30a2\u30a4\u30c6\u30e0\u304c\u4ee5\u524d\u306b\u898b\u3089\u308c\u305f\u5834\u6240\u3092\u7279\u5b9a\u3059\u308b +CentralRepositoryNotificationDialog.finalRemarks=\u4fdd\u5b58\u3059\u308b\u5185\u5bb9\u3092\u5236\u9650\u3059\u308b\u306b\u306f\u3001\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30fb\u30aa\u30d7\u30b7\u30e7\u30f3\u30d1\u30cd\u30eb\u3092\u4f7f\u7528\u3057\u3066\u4e0b\u3055\u3044\u3002 +CentralRepositoryNotificationDialog.header=Autopsy\u306f\u3001\u5404\u30b1\u30fc\u30b9\u306b\u95a2\u3059\u308b\u30c7\u30fc\u30bf\u3092\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u4fdd\u5b58\u3057\u307e\u3059\u3002 IngestEventsListener.ingestmodule.name=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea -Installer.initialCreateSqlite.messageDesc=\u51e6\u7406\u3059\u308b\u3059\u3079\u3066\u306e\u30cf\u30c3\u30b7\u30e5\u3068\u8b58\u5225\u5b50\u306b\u95a2\u3059\u308b\u60c5\u5831\u3092\u4fdd\u5b58\u3057\u307e\u3059\u3002 \u4ee5\u524d\u306b\u78ba\u8a8d\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u7121\u8996\u3057\u3001\u30b1\u30fc\u30b9\u9593\u306e\u95a2\u9023\u3092\u4f5c\u6210\u3067\u304d\u307e\u3059\u3002 -Installer.initialCreateSqlite.messageHeader=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30fc\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 \u6709\u52b9\u306b\u3057\u307e\u3059\u304b\uff1f -Installer.initialCreateSqlite.title=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30fc\u3092 \u6709\u52b9\u306b\u3057\u307e\u3059\u304b\uff1f diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/ingestmodule/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/ingestmodule/Bundle_ja.properties index 818a329626..a53f5ec2f6 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/ingestmodule/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/ingestmodule/Bundle_ja.properties @@ -1,7 +1,7 @@ -#Tue Aug 18 18:09:20 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 CentralRepoIngestModel_name_header=\u540d\u524d\uff1a
CentralRepoIngestModel_previous_case_header=
\u4ee5\u524d\u306e\u30b1\u30fc\u30b9\uff1a
-CentralRepoIngestModule.errorMessage.isNotEnabled=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u8a2d\u5b9a\u304c\u521d\u671f\u5316\u3055\u308c\u3066\u3044\u306a\u3044\u305f\u3081\u3001\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u53d6\u8fbc\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 +CentralRepoIngestModule.errorMessage.isNotEnabled=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u8a2d\u5b9a\u304c\u521d\u671f\u5316\u3055\u308c\u3066\u304a\u3089\u305a\u3001\u53d6\u308a\u8fbc\u307f\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 CentralRepoIngestModuleFactory.ingestmodule.name=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea CentralRepoIngestModule_notable_message_header=\u3053\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u4ee5\u524d\u300c\u6ce8\u76ee\u300d\u3068\u3057\u3066\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u3066\u3044\u307e\u3059\u3002
CentralRepoIngestModule_postToBB_knownBadMsg=\u6ce8\u76ee\uff1a {0} diff --git a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle_ja.properties index d0f758edb8..998d515e18 100644 --- a/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/centralrepository/persona/Bundle_ja.properties @@ -1,67 +1,66 @@ -#Tue Aug 18 18:09:20 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 AddAliasDialog.accountsLbl.text=\u30a2\u30ab\u30a6\u30f3\u30c8\uff1a AddAliasDialog.cancelBtn.text=\u30ad\u30e3\u30f3\u30bb\u30eb AddAliasDialog.okBtn.text=OK -AddMetadataDialog.title.text=\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u8ffd\u52a0 +AddMetadataDialog.title.text=\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u8ffd\u52a0\u3059\u308b AddMetadataDialog_dup_Title=\u30e1\u30bf\u30c7\u30fc\u30bf\u8ffd\u52a0\u30a8\u30e9\u30fc -AddMetadataDialog_dup_msg=\u3053\u306e\u540d\u524d\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u30a8\u30f3\u30c8\u30ea\u306f\u65e2\u306b\u3053\u306e\u30da\u30eb\u30bd\u30ca\u306b\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +AddMetadataDialog_dup_msg=\u3053\u306e\u540d\u524d\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u306f\u3001\u30da\u30eb\u30bd\u30ca\u306b\u3059\u3067\u306b\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u3059\u3002 AddMetadataDialog_empty_name_Title=\u6b20\u843d\u3057\u3066\u3044\u308b\u30d5\u30a3\u30fc\u30eb\u30c9 -AddMetadataDialog_empty_name_msg=\u30e1\u30bf\u30c7\u30fc\u30bf\u30a8\u30f3\u30c8\u30ea\u306e\u540d\u524d\u307e\u305f\u306f\u5024\u3092\u7a7a\u767d\u306b\u306f\u51fa\u6765\u307e\u305b\u3093\u3002 +AddMetadataDialog_empty_name_msg=\u30e1\u30bf\u30c7\u30fc\u30bf\u306e\u540d\u524d\u307e\u305f\u306f\u5024\u3092\u7a7a\u767d\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 CTL_OpenPersonas=\u30da\u30eb\u30bd\u30ca CTL_PersonaDetailsTopComponent=\u30da\u30eb\u30bd\u30ca\u306e\u8a73\u7d30 CTL_PersonasTopComponentAction=\u30da\u30eb\u30bd\u30ca CreatePersonaAccountDialog.cancelBtn.text=\u30ad\u30e3\u30f3\u30bb\u30eb -CreatePersonaAccountDialog.identiferLbl.text=\u8b58\u5225\u540d\uff1a +CreatePersonaAccountDialog.identiferLbl.text=\u8b58\u5225\u5b50\uff1a CreatePersonaAccountDialog.okBtn.text=OK -CreatePersonaAccountDialog.title.text=\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u4f5c\u6210 +CreatePersonaAccountDialog.title.text=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210 CreatePersonaAccountDialog.typeLbl.text=\u30bf\u30a4\u30d7\uff1a CreatePersonaAccountDialog_error_msg=\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 CreatePersonaAccountDialog_error_title=\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30a8\u30e9\u30fc -CreatePersonaAccountDialog_invalid_account_Title=\u7121\u52b9\u306a\u30a2\u30ab\u30a6\u30f3\u30c8\u8b58\u5225\u540d -CreatePersonaAccountDialog_invalid_account_msg=\u30a2\u30ab\u30a6\u30f3\u30c8ID\u304c\u7121\u52b9\u3067\u3059\u3002 +CreatePersonaAccountDialog_invalid_account_msg=\u30a2\u30ab\u30a6\u30f3\u30c8\u8b58\u5225\u5b50\u304c\u7121\u52b9\u3067\u3059\u3002 CreatePersonaAccountDialog_success_msg=\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002 -CreatePersonaAccountDialog_success_title=\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f +CreatePersonaAccountDialog_success_title=\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002 OpenPersonasAction.displayName=\u30da\u30eb\u30bd\u30ca PersonaAccountDialog.cancelBtn.text=\u30ad\u30e3\u30f3\u30bb\u30eb PersonaAccountDialog.confidenceLbl.text=\u4fe1\u983c\u5ea6\uff1a -PersonaAccountDialog.identiferLbl.text=\u8b58\u5225\u540d\uff1a -PersonaAccountDialog.justificationLbl.text=\u8aac\u660e\uff1a +PersonaAccountDialog.identiferLbl.text=\u8b58\u5225\u5b50\uff1a +PersonaAccountDialog.justificationLbl.text=\u5f01\u660e\uff1a PersonaAccountDialog.okBtn.text=OK -PersonaAccountDialog.title.text=\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u8ffd\u52a0 +PersonaAccountDialog.title.text=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u8ffd\u52a0 PersonaAccountDialog.typeLbl.text=\u30bf\u30a4\u30d7\uff1a -PersonaAccountDialog_dup_Title=\u30a2\u30ab\u30a6\u30f3\u30c8\u8ffd\u52a0\u30a8\u30e9\u30fc +PersonaAccountDialog_dup_Title=\u30a2\u30ab\u30a6\u30f3\u30c8\u8ffd\u52a0\u306e\u5931\u6557 PersonaAccountDialog_dup_msg=\u3053\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u3059\u3067\u306b\u30da\u30eb\u30bd\u30ca\u306b\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -PersonaAccountDialog_get_types_exception_Title=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30fc\u30fb\u30a8\u30e9\u30fc -PersonaAccountDialog_get_types_exception_msg=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30fc\u3078\u306e\u30a2\u30af\u30bb\u30b9\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -PersonaAccountDialog_identifier_empty_Title=\u8b58\u5225\u540d\u304c\u7a7a\u767d -PersonaAccountDialog_identifier_empty_msg=\u8b58\u5225\u540d\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u7a7a\u306b\u306f\u3067\u304d\u307e\u305b\u3093\u3002 -PersonaAccountDialog_invalid_account_Title=\u7121\u52b9\u306a\u30a2\u30ab\u30a6\u30f3\u30c8ID -PersonaAccountDialog_invalid_account_msg=\u30a2\u30ab\u30a6\u30f3\u30c8ID\u304c\u7121\u52b9\u3067\u3059\u3002 -PersonaAccountDialog_search_empty_Title=\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 -PersonaAccountDialog_search_empty_msg=\u6307\u5b9a\u3055\u308c\u305f\u8b58\u5225\u540d\u3068\u30bf\u30a4\u30d7\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +PersonaAccountDialog_get_types_exception_Title=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u6545\u969c +PersonaAccountDialog_get_types_exception_msg=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u3078\u306e\u30a2\u30af\u30bb\u30b9\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +PersonaAccountDialog_identifier_empty_Title=\u7a7a\u306e\u8b58\u5225\u5b50 +PersonaAccountDialog_identifier_empty_msg=\u8b58\u5225\u5b50\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u7a7a\u767d\u306b\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +PersonaAccountDialog_invalid_account_Title=\u30a2\u30ab\u30a6\u30f3\u30c8\u8b58\u5225\u5b50\u304c\u7121\u52b9\u3067\u3059 +PersonaAccountDialog_invalid_account_msg=\u30a2\u30ab\u30a6\u30f3\u30c8\u8b58\u5225\u5b50\u304c\u7121\u52b9\u3067\u3059\u3002 +PersonaAccountDialog_search_empty_Title=\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f +PersonaAccountDialog_search_empty_msg=\u6307\u5b9a\u3055\u308c\u305f\u8b58\u5225\u5b50\u3068\u30bf\u30a4\u30d7\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 PersonaAccountDialog_search_failure_Title=\u30a2\u30ab\u30a6\u30f3\u30c8\u8ffd\u52a0\u30a8\u30e9\u30fc -PersonaAccountDialog_search_failure_msg=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30fc\u30fb\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u691c\u7d22\u306b\u5931\u6557\u3057\u307e\u3057\u305f +PersonaAccountDialog_search_failure_msg=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30fb\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u691c\u7d22\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 PersonaAliasDialog.aliasLbl.text=\u30a8\u30a4\u30ea\u30a2\u30b9\uff1a PersonaAliasDialog.cancelBtn.text_1=\u30ad\u30e3\u30f3\u30bb\u30eb PersonaAliasDialog.confidenceLbl.text=\u4fe1\u983c\u5ea6\uff1a -PersonaAliasDialog.justificationLbl.text=\u8aac\u660e\uff1a +PersonaAliasDialog.justificationLbl.text=\u5f01\u660e\uff1a PersonaAliasDialog.okBtn.text_1=OK PersonaAliasDialog.title.text=\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u8ffd\u52a0 -PersonaAliasDialog_dup_Title=\u30a8\u30a4\u30ea\u30a2\u30b9\u8ffd\u52a0\u30a8\u30e9\u30fc -PersonaAliasDialog_dup_msg=\u3053\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u306f\u65e2\u306b\u3053\u306e\u30da\u30eb\u30bd\u30ca\u306b\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -PersonaAliasDialog_empty_Title=\u30a8\u30a4\u30ea\u30a2\u30b9\u304c\u7a7a\u767d -PersonaAliasDialog_empty_msg=\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u7a7a\u767d\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +PersonaAliasDialog_dup_Title=\u30a8\u30a4\u30ea\u30a2\u30b9\u8ffd\u52a0\u306e\u5931\u6557 +PersonaAliasDialog_dup_msg=\u3053\u306e\u30a8\u30a4\u30ea\u30a2\u30b9\u306f\u3059\u3067\u306b\u3053\u306e\u30da\u30eb\u30bd\u30ca\u306b\u8ffd\u52a0\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +PersonaAliasDialog_empty_Title=\u7a7a\u306e\u30a8\u30a4\u30ea\u30a2\u30b9 +PersonaAliasDialog_empty_msg=\u30a8\u30a4\u30ea\u30a2\u30b9\u3092\u7a7a\u767d\u306b\u306f\u3067\u304d\u307e\u305b\u3093\u3002 PersonaDetailsDialog.cancelBtn.text=\u30ad\u30e3\u30f3\u30bb\u30eb PersonaDetailsDialog.okBtn.text=OK -PersonaDetailsDialogCreateTitle=\u30da\u30eb\u30bd\u30ca\u3092\u4f5c\u6210 -PersonaDetailsDialogEditTitle=\u30da\u30eb\u30bd\u30ca\u3092\u7de8\u96c6 +PersonaDetailsDialogCreateTitle=\u30da\u30eb\u30bd\u30ca\u3092\u4f5c\u6210\u3059\u308b +PersonaDetailsDialogEditTitle=\u30da\u30eb\u30bd\u30ca\u306e\u7de8\u96c6 PersonaDetailsDialogViewTitle=\u30da\u30eb\u30bd\u30ca\u3092\u8868\u793a -PersonaDetailsPanel.accountsLbl.text=\u30a2\u30ab\u30a6\u30f3\u30c8\uff1a +PersonaDetailsPanel.accountsLbl.text=\u30a2\u30ab\u30a6\u30f3\u30c8 PersonaDetailsPanel.addAccountBtn.text=\u8ffd\u52a0 PersonaDetailsPanel.addAliasBtn.text=\u8ffd\u52a0 PersonaDetailsPanel.addMetadataBtn.text=\u8ffd\u52a0 -PersonaDetailsPanel.aliasesLabel.text=\u30a8\u30a4\u30ea\u30a2\u30b9\uff1a -PersonaDetailsPanel.casesLbl.text=\u898b\u3064\u304b\u3063\u305f\u30b1\u30fc\u30b9\uff1a +PersonaDetailsPanel.aliasesLabel.text=\u30a8\u30a4\u30ea\u30a2\u30b9 +PersonaDetailsPanel.casesLbl.text=\u898b\u3064\u3051\u305f\u30b1\u30fc\u30b9 PersonaDetailsPanel.commentLbl.text=\u30b3\u30e1\u30f3\u30c8\uff1a PersonaDetailsPanel.creationDateLbl.text=\u4f5c\u6210\u65e5\uff1a PersonaDetailsPanel.deleteAccountBtn.text=\u524a\u9664 @@ -71,42 +70,42 @@ PersonaDetailsPanel.editAccountBtn.text=\u7de8\u96c6 PersonaDetailsPanel.editAliasBtn.text=\u7de8\u96c6 PersonaDetailsPanel.editMetadataBtn.text=\u7de8\u96c6 PersonaDetailsPanel.examinerLbl.text=\u4f5c\u6210\u8005\uff1a -PersonaDetailsPanel.metadataLabel.text=\u30e1\u30bf\u30c7\u30fc\u30bf\uff1a +PersonaDetailsPanel.metadataLabel.text=\u30e1\u30bf\u30c7\u30fc\u30bf PersonaDetailsPanel.nameLbl.text=\u540d\u524d\uff1a -PersonaDetailsPanel_CentralRepoErr_Title=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30fc\u306e\u30a8\u30e9\u30fc -PersonaDetailsPanel_CentralRepoErr_msg=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30fc\u3078\u306e\u66f8\u304d\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +PersonaDetailsPanel_CentralRepoErr_Title=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30a8\u30e9\u30fc +PersonaDetailsPanel_CentralRepoErr_msg=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u3078\u306e\u66f8\u304d\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 PersonaDetailsPanel_EmptyComment_Title=\u7a7a\u767d\u306e\u30da\u30eb\u30bd\u30ca\u30b3\u30e1\u30f3\u30c8 -PersonaDetailsPanel_EmptyComment_msg=\u30da\u30eb\u30bd\u30ca\u306e\u30b3\u30e1\u30f3\u30c8\u306f\u7a7a\u767d\u306b\u3067\u304d\u307e\u305b\u3093\u3002 -PersonaDetailsPanel_EmptyName_Title=\u30da\u30eb\u30bd\u30ca\u540d\u304c\u7a7a\u767d -PersonaDetailsPanel_EmptyName_msg=\u30da\u30eb\u30bd\u30ca\u540d\u306f\u7a7a\u767d\u306b\u3067\u304d\u307e\u305b\u3093\u3002 -PersonaDetailsPanel_NotEnoughAccounts_Title=\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u3042\u308a\u307e\u305b\u3093 +PersonaDetailsPanel_EmptyComment_msg=\u30da\u30eb\u30bd\u30ca\u3092\u7a7a\u767d\u306b\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +PersonaDetailsPanel_EmptyName_Title=\u7a7a\u767d\u306e\u30da\u30eb\u30bd\u30ca\u540d +PersonaDetailsPanel_EmptyName_msg=\u30da\u30eb\u30bd\u30ca\u540d\u3092\u7a7a\u767d\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002 +PersonaDetailsPanel_NotEnoughAccounts_Title=\u6b20\u843d\u3057\u3066\u308b\u30a2\u30ab\u30a6\u30f3\u30c8 PersonaDetailsPanel_NotEnoughAccounts_msg=\u30da\u30eb\u30bd\u30ca\u306b\u306f\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u5fc5\u8981\u3067\u3059\u3002 -PersonaDetailsPanel_empty_justification_Title=\u8aac\u660e\u304c\u7a7a\u767d -PersonaDetailsPanel_empty_justification_msg=\u8aac\u660e\u30d5\u30a3\u30fc\u30eb\u30c9\u306f\u7a7a\u306b\u3067\u304d\u307e\u305b\u3093 +PersonaDetailsPanel_empty_justification_Title=\u7a7a\u767d\u306e\u5f01\u660e +PersonaDetailsPanel_empty_justification_msg=\u5f01\u660e\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u7a7a\u767d\u306b\u306f\u3067\u304d\u307e\u305b\u3093 PersonaDetailsPanel_load_exception_Title=\u521d\u671f\u5316\u30a8\u30e9\u30fc -PersonaDetailsPanel_load_exception_msg=\u30da\u30eb\u30bd\u30ca\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +PersonaDetailsPanel_load_exception_msg=\u30da\u30eb\u30bd\u30ca\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 PersonaMetadataDialog.cancelBtn.text=\u30ad\u30e3\u30f3\u30bb\u30eb PersonaMetadataDialog.confidenceLbl.text=\u4fe1\u983c\u5ea6\uff1a -PersonaMetadataDialog.justificationLbl.text=\u8aac\u660e\uff1a +PersonaMetadataDialog.justificationLbl.text=\u5f01\u660e\: PersonaMetadataDialog.nameLbl.text=\u540d\u524d\uff1a PersonaMetadataDialog.okBtn.text=OK PersonaMetadataDialog.valueLbl.text=\u5024\uff1a -PersonasTopComponent.cbFilterByKeyword.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u3067\u30da\u30eb\u30bd\u30ca\u3092\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3059\u308b -PersonasTopComponent.createAccountBtn.text=\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u4f5c\u6210 -PersonasTopComponent.createBtn.text=\u65b0\u3057\u3044\u30da\u30eb\u30bd\u30ca +PersonasTopComponent.cbFilterByKeyword.text=\u30da\u30eb\u30bd\u30ca\u3092\u540d\u524d\u307e\u305f\u306f\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3059\u308b +PersonasTopComponent.createAccountBtn.text=\u30a2\u30ab\u30a6\u30f3\u30c8\u4f5c\u6210 +PersonasTopComponent.createBtn.text=\u65b0\u30da\u30eb\u30bd\u30ca PersonasTopComponent.deleteBtn.text=\u30da\u30eb\u30bd\u30ca\u3092\u524a\u9664 -PersonasTopComponent.editBtn.text=\u30da\u30eb\u30bd\u30ca\u3092\u7de8\u96c6 -PersonasTopComponent.introText.text=\u30da\u30eb\u30bd\u30ca\u306f\u30aa\u30f3\u30e9\u30a4\u30f3ID\u3092\u8868\u3057\u307e\u3059\u3002 \u305d\u308c\u3089\u306f\u30b1\u30fc\u30b9\u306b\u307e\u305f\u304c\u308a\u3001\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3067\u898b\u3064\u304b\u3063\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u57fa\u3065\u3044\u3066\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30fc\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002 \u3053\u3053\u3067\u30da\u30eb\u30bd\u30ca\u3092\u4f5c\u6210\u3001\u7de8\u96c6\u3001\u524a\u9664\u3067\u304d\u307e\u3059\u3002 +PersonasTopComponent.editBtn.text=\u30da\u30eb\u30bd\u30ca\u306e\u7de8\u96c6 +PersonasTopComponent.introText.text=\u30da\u30eb\u30bd\u30ca\u306f\u30aa\u30f3\u30e9\u30a4\u30f3ID\u3092\u8868\u3057\u307e\u3059\u3002 \u305d\u308c\u3089\u306f\u30b1\u30fc\u30b9\u306b\u307e\u305f\u304c\u308a\u3001\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3067\u898b\u3064\u304b\u3063\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u306b\u57fa\u3065\u3044\u3066\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3059\u3002 \u3053\u3053\u3067\u30da\u30eb\u30bd\u30ca\u3092\u4f5c\u6210\u3001\u7de8\u96c6\u3001\u524a\u9664\u3067\u304d\u307e\u3059\u3002 PersonasTopComponent.resultsTable.columnModel.title0=ID PersonasTopComponent.resultsTable.columnModel.title1=\u540d\u524d PersonasTopComponent.searchAccountRadio.text=\u30a2\u30ab\u30a6\u30f3\u30c8 PersonasTopComponent.searchBtn.text=\u8868\u793a PersonasTopComponent.searchNameRadio.text=\u540d\u524d PersonasTopComponent_Name=\u30da\u30eb\u30bd\u30ca -PersonasTopComponent_delete_confirmation_Title=\u3088\u308d\u3057\u3044\u3067\u3059\u304b? +PersonasTopComponent_delete_confirmation_Title=\u78ba\u304b\u3067\u3059\u304b\uff1f PersonasTopComponent_delete_confirmation_msg=\u3053\u306e\u30da\u30eb\u30bd\u30ca\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f PersonasTopComponent_delete_exception_Title=\u524a\u9664\u30a8\u30e9\u30fc -PersonasTopComponent_delete_exception_msg=\u30da\u30eb\u30bd\u30ca\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -PersonasTopComponent_noCR_msg=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30fc\u304c\u7121\u52b9\u3067\u3059\u3002 -PersonasTopComponent_search_exception_Title=\u691c\u7d22\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 \u30b1\u30fc\u30b9\u3092\u958b\u3044\u3066\u3001\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30fc\u30fb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u5b8c\u5168\u306b\u521d\u671f\u5316\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -PersonasTopComponent_search_exception_msg=\u30da\u30eb\u30bd\u30ca\u306e\u691c\u7d22\u30a8\u30e9\u30fc +PersonasTopComponent_delete_exception_msg=\u30da\u30eb\u30bd\u30ca\u306e\u524a\u9664\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +PersonasTopComponent_noCR_msg=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u3002 +PersonasTopComponent_search_exception_Title=\u691c\u7d22\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 \u30b1\u30fc\u30b9\u3092\u958b\u3044\u3066\u3001\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30fb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3092\u521d\u671f\u5316\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002 +PersonasTopComponent_search_exception_msg=\u30da\u30eb\u30bd\u30ca\u306e\u691c\u7d22\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/commandlineingest/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/commandlineingest/Bundle_ja.properties index 62c8f29e53..3c234acd31 100644 --- a/Core/src/org/sleuthkit/autopsy/commandlineingest/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/commandlineingest/Bundle_ja.properties @@ -1,17 +1,30 @@ +#Fri Feb 12 16:56:28 UTC 2021 +AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.invalidPath.text=\u30d1\u30b9\u306f\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093 +CommandLineIngestSettingPanel_empty_report_name_mgs=\u30ec\u30dd\u30fc\u30c8\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u540d\u306f\u7a7a\u767d\u306a\u306e\u3067\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306f\u4f5c\u6210\u3057\u307e\u305b\u3093\u3002 +CommandLineIngestSettingPanel_existing_report_name_mgs=\u30ec\u30dd\u30fc\u30c8\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u540d\u306f\u3059\u3067\u306b\u5b58\u5728\u3059\u308b\u306e\u3067\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306f\u4f5c\u6210\u3057\u307e\u305b\u3093\u3002 +CommandLineIngestSettingsPanel.CannotAccess=\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093 +CommandLineIngestSettingsPanel.CheckPermissions=\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +CommandLineIngestSettingsPanel.ResultsDirectoryUnspecified=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 +CommandLineIngestSettingsPanel.bnEditIngestSettings.text=\u8a2d\u5b9a +CommandLineIngestSettingsPanel.bnEditIngestSettings.toolTipText=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u51e6\u7406\u30e2\u30fc\u30c9\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u8a2d\u5b9a\u3067\u3059\u3002 +CommandLineIngestSettingsPanel.bnEditReportSettings.AccessibleContext.accessibleName=\u8a2d\u5b9a +CommandLineIngestSettingsPanel.bnEditReportSettings.text=\u8a2d\u5b9a +CommandLineIngestSettingsPanel.browseOutputFolderButton.text=\u53c2\u7167 +CommandLineIngestSettingsPanel.ingestDescriptionTextPane.text=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304b\u3089\u4f7f\u7528\u3059\u308b\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002 +CommandLineIngestSettingsPanel.ingestProfileLabel.text=\u53d6\u8fbc\u307f\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\uff1a +CommandLineIngestSettingsPanel.jLabelInvalidResultsFolder.text=jLabelInvalidOutputFolder +CommandLineIngestSettingsPanel.jLabelSelectOutputFolder.text=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u9078\u629e\: +CommandLineIngestSettingsPanel.jTextPane1.text=\u53d6\u8fbc\u307f\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u4f7f\u7528\u3059\u308b\u53d6\u8fbc\u307f\u30d5\u30a3\u30eb\u30bf\u30fc\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u3001\u304a\u3088\u3073\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 +CommandLineIngestSettingsPanel.outputPathTextField.text= +CommandLineIngestSettingsPanel.outputPathTextField.toolTipText=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u51e6\u7406\u7528\u306e\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc(\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u51e6\u7406\u30e2\u30fc\u30c9\u3067\u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u4f5c\u6210\u3055\u308c\u308b\u5834\u6240)\u3067\u3059\u3002 +CommandLineIngestSettingsPanel.reportDescriptionTextPane.text=\u30ec\u30dd\u30fc\u30c8\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306f\u3001\u4f7f\u7528\u3059\u308b\u30ec\u30dd\u30fc\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3068\u8a2d\u5b9a\u3092\u5b9a\u7fa9\u3057\u307e\u3059\u3002 +CommandLineIngestSettingsPanel.reportProfileLabel.text=\u30ec\u30dd\u30fc\u30c8\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\uff1a +CommandLinePanel.jLabel1.text=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30bf\u30b9\u30af\u3092\u5b9f\u884c\u3057\u3066\u3044\u307e\u3059\u3002 +CommandLineStartupWindow.title.text=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30e2\u30fc\u30c9\u3067\u5b9f\u884c\u4e2d\u3067\u3059 +CommandListIngestSettingsPanel_Default_Report_DisplayName=\u30c7\u30d5\u30a9\u30eb\u30c8 +CommandListIngestSettingsPanel_Make_Config=\u65b0\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210... +CommandListIngestSettingsPanel_Report_Name_Msg=\u30ec\u30dd\u30fc\u30c8\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u540d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\uff1a OpenIDE-Module-Name=CommandLineAutopsy OptionsCategory_Keywords_Command_Line_Ingest_Settings=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u8a2d\u5b9a OptionsCategory_Keywords_General=\u30aa\u30d7\u30b7\u30e7\u30f3 OptionsCategory_Name_Command_Line_Ingest=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 -CommandLineIngestSettingsPanel.ResultsDirectoryUnspecified=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 -AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.invalidPath.text=\u30d1\u30b9\u306f\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093 -CommandLineIngestSettingsPanel.CannotAccess=\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093 -CommandLineIngestSettingsPanel.CheckPermissions=\u30a2\u30af\u30bb\u30b9\u6a29\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -CommandLineIngestSettingsPanel.jLabelSelectOutputFolder.text=\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u9078\u629e: -CommandLineIngestSettingsPanel.jLabelInvalidResultsFolder.text=jLabelInvalidOutputFolder -CommandLineIngestSettingsPanel.outputPathTextField.toolTipText=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u51e6\u7406\u7528\u306e\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc(\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u51e6\u7406\u30e2\u30fc\u30c9\u3067\u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u4f5c\u6210\u3055\u308c\u308b\u5834\u6240)\u3067\u3059\u3002 -CommandLineIngestSettingsPanel.outputPathTextField.text= -CommandLineIngestSettingsPanel.browseOutputFolderButton.text=\u53c2\u7167 -CommandLineIngestSettingsPanel.bnEditIngestSettings.toolTipText=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u51e6\u7406\u30e2\u30fc\u30c9\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u8a2d\u5b9a\u3067\u3059\u3002 -CommandLineIngestSettingsPanel.bnEditIngestSettings.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u8a2d\u5b9a -CommandLinePanel.jLabel1.text=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u304b\u3089\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u4e2d\u3067\u3059 -CommandLineStartupWindow.title.text=\u30b3\u30de\u30f3\u30c9\u30e9\u30a4\u30f3\u30e2\u30fc\u30c9\u3067\u5b9f\u884c\u4e2d\u3067\u3059 diff --git a/Core/src/org/sleuthkit/autopsy/communications/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/communications/Bundle_ja.properties index 0fd9e09efb..9deed89128 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/communications/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:20 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 AccountInstanceNode_Tooltip_Template=\u9023\u7d61\u5148\uff1a{0}-\u30da\u30eb\u30bd\u30ca\uff1a{1} AccountInstanceNode_Tooltip_suffix=(1 of {0}) AccountNode.accountName=\u30a2\u30ab\u30a6\u30f3\u30c8 @@ -26,7 +26,7 @@ FiltersPanel.filtersTitleLabel.text=\u30d5\u30a3\u30eb\u30bf\u30fc FiltersPanel.limitErrorMsgLabel.text=\u7121\u52b9\u306a\u6574\u6570\u5024\u3067\u3059\u3002 FiltersPanel.limitHeaderLabel.text=\u30b3\u30df\u30e5\u30cb\u30b1\u30fc\u30b7\u30e7\u30f3\u9650\u754c\u5024\: FiltersPanel.mostRecentLabel.text=\u6700\u65b0\: -FiltersPanel.needsRefreshLabel.text=\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u30c7\u30fc\u30bf\u304c\u6700\u65b0\u3067\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 [\u66f4\u65b0]\u3092\u62bc\u3057\u3066\u4e0b\u3055\u3044\u3002 +FiltersPanel.needsRefreshLabel.text=\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u30c7\u30fc\u30bf\u304c\u53e4\u304f\u306a\u3063\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 [\u66f4\u65b0]\u3092\u62bc\u3057\u3066\u4e0b\u3055\u3044\u3002 FiltersPanel.refreshButton.text=\u66f4\u65b0 FiltersPanel.startCheckBox.text=\u958b\u59cb\: FiltersPanel.unCheckAllAccountTypesButton.text=\u3059\u3079\u3066\u306e\u30c1\u30a7\u30c3\u30af\u3092\u5916\u3059 @@ -64,12 +64,11 @@ VisualizationPanel.computingLayout=\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u8a08\u7 VisualizationPanel.fastOrganicLayoutButton.text= VisualizationPanel.fastOrganicLayoutButton.toolTipText=\u30af\u30ea\u30c3\u30af\u3057\u3066\u30c1\u30e3\u30fc\u30c8\u3092\u518d\u63cf\u753b VisualizationPanel.fitGraphButton.text= -VisualizationPanel.jTextPane1.text=[\u30a2\u30ab\u30a6\u30f3\u30c8\u53c2\u7167] \u30c6\u30fc\u30d6\u30eb\u3067\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3001[\u53ef\u8996\u5316] \u3092\u9078\u629e\u3057\u3066\u958b\u59cb\u3057\u307e\u3059\u3002 VisualizationPanel.fitZoomButton.text= VisualizationPanel.fitZoomButton.toolTipText=\u53ef\u8996\u5316\u3092\u9069\u5408 VisualizationPanel.forwardButton.text= VisualizationPanel.forwardButton.toolTipText=\u30af\u30ea\u30c3\u30af\u3057\u3066\u9032\u3080 -# {0} - \u30ec\u30a4\u30a2\u30a6\u30c8\u540d +VisualizationPanel.jTextPane1.text=[\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u53c2\u7167]\u30c6\u30fc\u30d6\u30eb\u3067\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3001[\u8868\u793a]\u3092\u9078\u629e\u3057\u3066\u958b\u59cb\u3002 VisualizationPanel.layoutFail.text={0} \u30ec\u30a4\u30a2\u30a6\u30c8\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u5225\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002 VisualizationPanel.layoutFailWithLockedVertices.text=\u9802\u70b9\u304c\u30ed\u30c3\u30af\u3055\u308c\u305f {0} \u30ec\u30a4\u30a2\u30a6\u30c8\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u4e00\u90e8\u306e\u9802\u70b9\u306e\u30ed\u30c3\u30af\u3092\u89e3\u9664\u3059\u308b\u304b\u3001\u5225\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u3092\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002 VisualizationPanel.lockAction.pluralText=\u9078\u629e\u3057\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u30ed\u30c3\u30af diff --git a/Core/src/org/sleuthkit/autopsy/communications/relationships/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/communications/relationships/Bundle_ja.properties index 0e06e76924..b02216ee0e 100644 --- a/Core/src/org/sleuthkit/autopsy/communications/relationships/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/communications/relationships/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 ContactDetailsPane.nameLabel.text=\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc ContactNode_Email=\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9 ContactNode_Home_Number=\u81ea\u5b85\u96fb\u8a71\u756a\u53f7 @@ -38,6 +38,14 @@ MessageViewer_viewMessage_calllogs=\u901a\u8a71\u30ed\u30b0 MessageViewer_viewMessage_selected=\u9078\u629e\u6e08\u307f MessageViewer_viewMessage_unthreaded=\u30b9\u30ec\u30c3\u30c9\u89e3\u9664\u6e08\u307f OutlineViewPanel.messageLabel.text=<\u30b3\u30f3\u30c8\u30ed\u30fc\u30eb\u3092\u7121\u52b9\u5316\u3057\u307e\u3057\u305f> +PersonaPanel.personaIDLabel.text=jLabel1 +PersonaPanel.viewButton.text=\u8868\u793a +RelationshipsNodeUtilities_Tooltip_Template=\u9023\u7d61\u5148\uff1a{0} - \u30da\u30eb\u30bd\u30ca\uff1a{1} +RelationshipsNodeUtilities_Tooltip_suffix=\uff08{0}\u306e1\uff09 +SummaryPersonaPane.createButton.text=\u4f5c\u6210 +SummaryPersonaPane.messageLabel.text=<\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u304c\u30da\u30eb\u30bd\u30ca\u3092\u4f5c\u6210\u304a\u3088\u3073\u8868\u793a\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b> +SummaryPersonaPane.noPersonaLabel.text=\u30da\u30eb\u30bd\u30ca\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +SummaryPersonaPane_not_account_in_cr=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u8b58\u5225\u5b50{0}\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 SummaryViewer.attachmentsDataLabel.text=\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb SummaryViewer.attachmentsLabel.text=\u30e1\u30c7\u30a3\u30a2\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb\: SummaryViewer.callLogsDataLabel.text=callLogs @@ -46,20 +54,18 @@ SummaryViewer.caseReferencesPanel.border.title=\u305d\u306e\u4ed6\u306e\u767a\u7 SummaryViewer.contactsDataLabel.text=\u9023\u7d61\u5148 SummaryViewer.contactsLabel.text=\u9023\u7d61\u5148\: SummaryViewer.countsPanel.border.title=\u30ab\u30a6\u30f3\u30c8 -SummaryViewer.fileReferencesPanel.border.title=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u306e\u30d5\u30a1\u30a4\u30eb\u30ec\u30d5\u30a1\u30ec\u30f3\u30b9 +SummaryViewer.fileRefPane.border.title=\u73fe\u30b1\u30fc\u30b9\u306e\u30d5\u30a1\u30a4\u30eb\u53c2\u7167 SummaryViewer.messagesDataLabel.text=\u30e1\u30c3\u30bb\u30fc\u30b8 SummaryViewer.messagesLabel.text=\u30e1\u30c3\u30bb\u30fc\u30b8\: +SummaryViewer.personaPanel.border.title=\u30da\u30eb\u30bd\u30ca +SummaryViewer.selectAccountFileRefLabel.text=<\u30d5\u30a1\u30a4\u30eb\u53c2\u7167\u3092\u8868\u793a\u3059\u308b\u306b\u306f\u3001\u5358\u4e00\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044> SummaryViewer_CaseRefNameColumn_Title=\u30b1\u30fc\u30b9\u540d SummaryViewer_CentralRepository_Message=<\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc\u3092\u6709\u52b9\u5316\u3057\u3066\u305d\u306e\u4ed6\u306e\u767a\u751f\u3092\u8868\u793a> SummaryViewer_Creation_Date_Title=\u4f5c\u6210\u65e5 +SummaryViewer_Fetching_References=<\u30d5\u30a1\u30a4\u30eb\u53c2\u7167\u306e\u53d6\u5f97> SummaryViewer_FileRefNameColumn_Title=\u30d1\u30b9 +SummaryViewer_Persona_Message=<\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u304c\u30da\u30eb\u30bd\u30ca\u3092\u8868\u793a\u53ef\u80fd\u306b\u3059\u308b> +SummaryViewer_Select_account_for_persona=<\u30da\u30eb\u30bd\u30ca\u3092\u8868\u793a\u3059\u308b\u306b\u306f\u3001\u30a2\u30ab\u30a6\u30f3\u30c8\u30921\u3064\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044> SummaryViewer_TabTitle=\u30b5\u30de\u30ea\u30fc SummeryViewer_FileRef_Message=<\u30a2\u30ab\u30a6\u30f3\u30c8\u30921\u3064\u9078\u629e\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u30ec\u30d5\u30a1\u30ec\u30f3\u30b9\u3092\u8868\u793a> ThreadPane.backButton.text=<--- -SummaryViewer.caseReferencesPanel.border.title=\u305d\u306e\u4ed6\u306e\u767a\u751f -MessageViewer.threadsLabel.text=\u30b9\u30ec\u30c3\u30c9\u3092\u9078\u629e\u3057\u3066\u8868\u793a -MessageViewer.threadNameLabel.text= -MessageViewer.showingMessagesLabel.text=\u6b21\u306e\u30b9\u30ec\u30c3\u30c9\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8868\u793a\u4e2d\u3067\u3059: -MessageViewer.backButton.AccessibleContext.accessibleDescription= -MessageViewer.backButton.text=\u30b9\u30ec\u30c3\u30c9 -MessageViewer.showAllButton.text=\u3059\u3079\u3066\u306e\u30e1\u30c3\u30bb\u30fc\u30b8 \ No newline at end of file diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle_ja.properties index dc355da098..8ebdcdfe58 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/Bundle_ja.properties @@ -1,10 +1,10 @@ -#Tue Aug 18 18:09:20 UTC 2020 -AnnotationsContentViewer.centralRepositoryEntry.title=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30b3\u30e1\u30f3\u30c8 +#Fri Feb 12 16:56:28 UTC 2021 +AnnotationsContentViewer.centralRepositoryEntry.title=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u306e\u30b3\u30e1\u30f3\u30c8 AnnotationsContentViewer.centralRepositoryEntryDataLabel.case=\u30b1\u30fc\u30b9\: AnnotationsContentViewer.centralRepositoryEntryDataLabel.comment=\u30b3\u30e1\u30f3\u30c8\: AnnotationsContentViewer.centralRepositoryEntryDataLabel.path=\u30d1\u30b9\: AnnotationsContentViewer.centralRepositoryEntryDataLabel.type=\u30bf\u30a4\u30d7\: -AnnotationsContentViewer.fileHitEntry.artifactCommentTitle=\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u306e\u30b3\u30e1\u30f3\u30c8 +AnnotationsContentViewer.fileHitEntry.artifactCommentTitle=\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30b3\u30e1\u30f3\u30c8 AnnotationsContentViewer.fileHitEntry.comment=\u30b3\u30e1\u30f3\u30c8\uff1a AnnotationsContentViewer.fileHitEntry.hashSetHitTitle=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30fb\u30d2\u30c3\u30c8\u30b3\u30e1\u30f3\u30c8 AnnotationsContentViewer.fileHitEntry.interestingFileHitTitle=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30d2\u30c3\u30c8\u30b3\u30e1\u30f3\u30c8 @@ -110,14 +110,14 @@ Metadata.tableRowTitle.modified=\u4fee\u6b63\u6e08\u307f Metadata.tableRowTitle.name=\u540d\u524d Metadata.tableRowTitle.sectorSize=\u30bb\u30af\u30bf\u30fc\u30b5\u30a4\u30ba Metadata.tableRowTitle.sha1=SHA1 -Metadata.tableRowTitle.sha256=SHA256 +Metadata.tableRowTitle.sha256=SHA-256 Metadata.tableRowTitle.size=\u30b5\u30a4\u30ba Metadata.tableRowTitle.timezone=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3 Metadata.tableRowTitle.type=\u30bf\u30a4\u30d7 Metadata.title=\u30d5\u30a1\u30a4\u30eb\u306e\u30e1\u30bf\u30c7\u30fc\u30bf Metadata.toolTip=\u30d5\u30a1\u30a4\u30eb\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u8868\u793a\u3057\u307e\u3059\u3002 PDFViewer.encryptedDialog=\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u4fdd\u8b77\u3055\u308c\u3066\u3044\u307e\u3059\u3002 -PDFViewer.errorDialog=\u3053\u306ePDF\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u958b\u304f\u3068\u304d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 \u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u3053\u306e\u6a5f\u80fd\u3092\u4ed6\u306ePDF\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u5f15\u304d\u7d9a\u304d\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 +PDFViewer.errorDialog=PDF\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u958b\u304f\u3068\u304d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 \u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \u3053\u306e\u6a5f\u80fd\u306f\u3001\u4ed6\u306ePDF\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u5f15\u304d\u7d9a\u304d\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 PListNode.KeyCol=\u30ad\u30fc PListNode.TypeCol=\u30bf\u30a4\u30d7 PListNode.ValueCol=\u5024 @@ -158,90 +158,89 @@ TranslatablePanel.comboBoxOption.originalText=\u539f\u6587 TranslatablePanel.comboBoxOption.translatedText=\u7ffb\u8a33\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8 TranslatablePanel.onSetContentError.text=\u30c6\u30ad\u30b9\u30c8\u8868\u793a\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a{0} fontManager.properties.title=ICEpdf\u30d5\u30a9\u30f3\u30c8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc -manager.properties.brokenProperty=\u30c7\u30d5\u30a9\u30eb\u30c8\u30d7\u30ed\u30d1\u30c6\u30a3{0}\u304c\u7834\u640d\u3057\u3066\u3044\u307e\u3059\u3001\u5024\uff1a{1} -manager.properties.createNewDirectory=ICEpdf\u30d3\u30e5\u30fc\u30a2\u304c\u8a2d\u5b9a\u306e\u5909\u66f4\u3092\u4fdd\u5b58\u3059\u308b\u5834\u6240\u3067\u30c7\u30a3\u30ec\u30af\u30c8\u30ea{0}\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001\n[\u306f\u3044]\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u4e0b\u3055\u3044\u3002\n\n\u300c\u3044\u3044\u3048\u300d\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u7d42\u4e86\u3059\u308b\u3068\u3001ICEpdf\u30d3\u30e5\u30fc\u30a2\u30fc\u306e\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u306b\u52a0\u3048\u305f\u3059\u3079\u3066\u306e\u5909\u66f4\u3092\u5931\u308f\u308c\u307e\u3059\u3002 -manager.properties.deleted=\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u304c\u524a\u9664\u3055\u308c\u3066\u307e\u3059\n\uff08{0}\uff09\n\u518d\u4f5c\u6210\u3057\u307e\u3059\u304b\uff1f -manager.properties.failedCreation=\u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306eICEpdf \u30d3\u30e5\u30fc\u30a2\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\uff1a\n{0}\nICEpdf\u30d3\u30e5\u30fc\u30a2\u306f\u3001\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u3078\u306e\u5909\u66f4\u3092\u4fdd\u5b58\u3057\u307e\u305b\u3093\u3002 -manager.properties.lafError=\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3067\u6307\u5b9a\u3055\u308c\u305fLook\uff06Feel {0}\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\n\u30b7\u30b9\u30c6\u30e0\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 +manager.properties.brokenProperty=\u7834\u640d\u3057\u305f\u30c7\u30d5\u30a9\u30eb\u30c8\u30d7\u30ed\u30d1\u30c6\u30a3{0}\u5024\uff1a{1} +manager.properties.createNewDirectory=ICEpdf Viewer\u304c\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u306e\u5909\u66f4\u3092\u4fdd\u5b58\u3059\u308b\u30d5\u30a9\u30eb\u30c0\u30fc{0}\u3092\u4f5c\u6210\u3059\u308b\u306b\u306f\u3001\n[\u306f\u3044]\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\n[\u3044\u3044\u3048]\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001ICEpdf Viewer\u306e\u8a2d\u5b9a\u306b\u52a0\u3048\u305f\u3059\u3079\u3066\u306e\u5909\u66f4\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u7d42\u4e86\u6642\u306b\u5931\u308f\u308c\u307e\u3059\u3002 +manager.properties.deleted=\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u304c\u524a\u9664\u3055\u308c\u307e\u3057\u305f\n\uff08{0}\uff09\n\u518d\u4f5c\u6210\u3057\u307e\u3059\u304b\uff1f +manager.properties.failedCreation=\u30e6\u30fc\u30b6\u30fc\u30c7\u30fc\u30bf\u3092\u4fdd\u5b58\u7528\u306eICEpdf Viewer\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\uff1a\n{0}\nICEpdf Viewer\u306f\u3001\u5909\u66f4\u3092\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u3078\u4fdd\u5b58\u3057\u307e\u305b\u3093\u3002 +manager.properties.lafError=\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3067\u6307\u5b9a\u3055\u308c\u305fLook\uff06Feel {0}\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\n\u30b7\u30b9\u30c6\u30e0\u8a2d\u5b9a\u3092\u4f7f\u7528\u3057\u3066\u3044\u307e\u3059\u3002 manager.properties.missingProperty=\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3{0}\u5024\u304c\u3042\u308a\u307e\u305b\u3093\uff1a{1} -manager.properties.modified=\u524d\u56de\u306e\u66f4\u65b0\u4ee5\u964d\u3001\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u304c\u5909\u66f4\u3055\u308c\u3066\u3044\u307e\u3059\n\uff08{0\u3001date\u3001long}\uff09\n\u30d5\u30a1\u30a4\u30eb\u306e\u5909\u66f4\u3092\u73fe\u5728\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3068\u30de\u30fc\u30b8\u3057\u307e\u3059\u304b\uff1f -manager.properties.saveError=\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3002\n\u6b21\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a\n{0} -manager.properties.session.nolock=\u30ed\u30c3\u30af\u30d5\u30a1\u30a4\u30eb\u306e\u4f5c\u6210\u30a8\u30e9\u30fc\uff1a\n{0}\n -manager.properties.session.readError=\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u30a8\u30e9\u30fc\uff1a\n{0} -manager.properties.title=ICEpdf\u30d7\u30ed\u30d1\u30c6\u30a3\u30fb\u30de\u30cd\u30fc\u30b8\u30e3 +manager.properties.modified=\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u306f\u524d\u56de\u306e\u66f4\u65b0\u4ee5\u964d\u306b\u5909\u66f4\u3055\u308c\u3066\u3044\u307e\u3059\n\uff08{0\u3001date\u3001long}\uff09\n\u30d5\u30a1\u30a4\u30eb\u5185\u306e\u5909\u66f4\u3092\u73fe\u5728\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3068\u30de\u30fc\u30b8\u3057\u307e\u3059\u304b\uff1f +manager.properties.saveError=\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3002\n\u6b21\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a\n{0} +manager.properties.session.nolock=\u30ed\u30c3\u30af\u30d5\u30a1\u30a4\u30eb\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff1a\n{0}\n +manager.properties.session.readError=\u30d7\u30ed\u30d1\u30c6\u30a3\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u30a8\u30e9\u30fc\uff1a\n{0} +manager.properties.title=ICEpdf\u30d7\u30ed\u30d1\u30c6\u30a3\u30de\u30cd\u30fc\u30b8\u30e3\u30fc parse.choice=\u8b66\u544a\uff1a{0}\u306f\u6709\u52b9\u306a\u9078\u629e\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -parse.double=\u8b66\u544a\uff1a{0}\u306f\u6b63\u3057\u3044double\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +parse.double=\u8b66\u544a\uff1a{0}\u306f\u6b63\u3057\u3044double \u578b\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 parse.float=\u8b66\u544a\uff1a{0}\u306f\u6b63\u3057\u3044\u6d6e\u52d5\u5c0f\u6570\u70b9\u6570\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 parse.integer=\u8b66\u544a\uff1a{0}\u306f\u6b63\u3057\u3044\u6574\u6570\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 -parse.laf=\u8b66\u544a\uff1a\u30eb\u30c3\u30af\u30a2\u30f3\u30c9\u30d5\u30a3\u30fc\u30eb{0}\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +parse.laf=\u8b66\u544a\uff1aLook\uff06Feel {0}\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 parse.title=\u30d7\u30ed\u30d1\u30c6\u30a3\u89e3\u6790\u30a8\u30e9\u30fc pilot.display.msg={0}\u3092\u8868\u793a\u3057\u3066\u3044\u307e\u3059 -pilot.error.classLoading=\u5fc5\u8981\u306a\u30af\u30e9\u30b9{0}\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 \u5fc5\u8981\u306a\u30e9\u30a4\u30d6\u30e9\u30ea\u300cicepdf.jar\u300d\u304c\u30af\u30e9\u30b9\u30d1\u30b9\u306b\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059-PDF\u30d1\u30a4\u30ed\u30c3\u30c8\u304c\u7121\u52b9\u306b\u306a\u308a\u307e\u3057\u305f\u3002 "; -pilot.loading.error.msg=PDF\u30d1\u30a4\u30ed\u30c3\u30c8\uff1a{0}\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -pilot.loading.msg=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8{0}\u3092\u958b\u3044\u3066\u3044\u307e\u3059\u2026 +pilot.error.classLoading=\u5fc5\u8981\u306a\u30af\u30e9\u30b9{0}\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 \u30e9\u30a4\u30d6\u30e9\u30ea 'icepdf.jar'\u304c\u30af\u30e9\u30b9\u30d1\u30b9\u306b\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059 - PDF Pilot\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 "; +pilot.loading.error.msg=PDF Pilot\uff1a{0}\u306e\u8aad\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +pilot.loading.msg=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u958b\u304f{0}... pilot.title=ICEbrowser - ICEpdf Pilot \u30a8\u30e9\u30fc viewer.annotation.popup.delete.label=\u524a\u9664 viewer.annotation.popup.minimizeAll.label=\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u6700\u5c0f\u5316 viewer.annotation.popup.openAll.label=\u3059\u3079\u3066\u306e\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u958b\u304f viewer.annotation.popup.reply.label=\u5fdc\u7b54 -viewer.annotation.popup.replyTo.label=\u518d\uff1a{0} -viewer.annotation.popup.status.accepted.label=\u53d7\u3051\u5165\u308c\u307e\u3057\u305f -viewer.annotation.popup.status.accepted.msg={0}\u304c\u627f\u8a8d\u3057\u305f\u8a2d\u5b9a -viewer.annotation.popup.status.accepted.title=\u627f\u8a8d\u6e08\u307f\uff1a{0} -viewer.annotation.popup.status.cancelled.label=\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u307e\u3057\u305f -viewer.annotation.popup.status.cancelled.msg={0}\u306b\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u307e\u3057\u305f +viewer.annotation.popup.replyTo.label=\u518d\uff1a {0} +viewer.annotation.popup.status.accepted.label=\u627f\u8a8d\u6e08\u307f +viewer.annotation.popup.status.accepted.msg={0}\u306b\u3088\u3063\u3066\u53d7\u3051\u5165\u308c\u3089\u308c\u305f\u30bb\u30c3\u30c8 +viewer.annotation.popup.status.accepted.title=\u627f\u8a8d\u6e08\uff1a{0} +viewer.annotation.popup.status.cancelled.label=\u30ad\u30e3\u30f3\u30bb\u30eb +viewer.annotation.popup.status.cancelled.msg={0}\u306b\u3088\u3063\u3066\u30ad\u30e3\u30f3\u30bb\u30eb\u306b\u8a2d\u5b9a\u3055\u308c\u307e\u3057\u305f viewer.annotation.popup.status.cancelled.title=\u30ad\u30e3\u30f3\u30bb\u30eb\u6e08\u307f\uff1a{0} -viewer.annotation.popup.status.completed.label=\u5b8c\u4e86\u3057\u307e\u3057\u305f -viewer.annotation.popup.status.completed.msg={0}\u304c\u30bb\u30c3\u30c8\u3092\u5b8c\u6210\u3057\u307e\u3057\u305f +viewer.annotation.popup.status.completed.label=\u5b8c\u4e86 +viewer.annotation.popup.status.completed.msg={0}\u304c\u5b8c\u6210\u3057\u305f\u30bb\u30c3\u30c8 viewer.annotation.popup.status.completed.title=\u5b8c\u4e86\uff1a{0} -viewer.annotation.popup.status.label=\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u8a2d\u5b9a -viewer.annotation.popup.status.none.label=\u306a\u3057 -viewer.annotation.popup.status.none.msg={0}\u306b\u3088\u3063\u3066\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093 -viewer.annotation.popup.status.none.title=\u306a\u3057\uff1a{0} -viewer.annotation.popup.status.rejected.label=\u62d2\u5426\u3055\u308c\u307e\u3057\u305f -viewer.annotation.popup.status.rejected.msg=\u62d2\u5426\u6307\u5b9a\uff1a{0} -viewer.annotation.popup.status.rejected.title=\u62d2\u5426\u3055\u308c\u307e\u3057\u305f\uff1a{0} -viewer.annotation.signature.menu.showCertificates.label=\u8a3c\u660e\u66f8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8868\u793a -viewer.annotation.signature.menu.signaturePageNavigation.label=\u30da\u30fc\u30b8\u306b\u79fb\u52d5\u2026 -viewer.annotation.signature.menu.signatureProperties.label=\u7f72\u540d\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8868\u793a -viewer.annotation.signature.menu.validateSignature.label=\u7f72\u540d\u3092\u691c\u8a3c +viewer.annotation.popup.status.label=\u30b9\u30c6\u30fc\u30bf\u30b9\u8a2d\u5b9a +viewer.annotation.popup.status.none.label=\u7121\u3057 +viewer.annotation.popup.status.none.msg={0}\u3067\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +viewer.annotation.popup.status.none.title=\u7121\u3057\uff1a{0} +viewer.annotation.popup.status.rejected.label=\u62d2\u5426\u3059\u308b +viewer.annotation.popup.status.rejected.msg={0}\u306b\u3088\u3063\u3066\u62d2\u5426\u3055\u308c\u307e\u3057\u305f +viewer.annotation.popup.status.rejected.title=\u62d2\u5426\uff1a{0} +viewer.annotation.signature.menu.showCertificates.label=\u8a3c\u660e\u66f8\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8868\u793a +viewer.annotation.signature.menu.signaturePageNavigation.label=\u30da\u30fc\u30b8\u306b\u79fb\u52d5... +viewer.annotation.signature.menu.signatureProperties.label=\u7f72\u540d\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u8868\u793a\u3059\u308b +viewer.annotation.signature.menu.validateSignature.label=\u7f72\u540d\u306e\u691c\u8a3c viewer.annotation.signature.properties.dialog.certificateExpired.failure=-\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u306e\u6709\u52b9\u671f\u9650\u304c\u5207\u308c\u3066\u3044\u307e\u3059\u3002 viewer.annotation.signature.properties.dialog.invalid.label=\u7f72\u540d\u304c\u7121\u52b9\u3067\u3059 viewer.annotation.signature.properties.dialog.location.label=\u5834\u6240\uff1a{0} -viewer.annotation.signature.properties.dialog.pathValidation.failure=-\u30d1\u30b9\u306e\u691c\u8a3c\u30c1\u30a7\u30c3\u30af\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002 -viewer.annotation.signature.properties.dialog.pathValidation.success=-\u30d1\u30b9\u691c\u8a3c\u30c1\u30a7\u30c3\u30af\u304c\u6210\u529f\u3057\u307e\u3057\u305f\u3002 +viewer.annotation.signature.properties.dialog.pathValidation.failure=-\u30d1\u30b9\u691c\u8a3c\u30c1\u30a7\u30c3\u30af\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +viewer.annotation.signature.properties.dialog.pathValidation.success=- \u30d1\u30b9\u691c\u8a3c\u30c1\u30a7\u30c3\u30af\u306f\u6210\u529f\u3057\u307e\u3057\u305f\u3002 viewer.annotation.signature.properties.dialog.reason.label=\u7406\u7531\uff1a{0} viewer.annotation.signature.properties.dialog.revocation.failure=-\u5931\u52b9\u30c1\u30a7\u30c3\u30af\u306f\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -viewer.annotation.signature.properties.dialog.revocation.success=-\u7f72\u540d\u8005\u306e\u8a3c\u660e\u66f8\u306f\u6709\u52b9\u3067\u3042\u308a\u3001\u53d6\u308a\u6d88\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 -viewer.annotation.signature.properties.dialog.showCertificates.label=\u7f72\u540d\u8005\u306e\u8a3c\u660e\u66f8\u2026 +viewer.annotation.signature.properties.dialog.revocation.success=-\u7f72\u540d\u8005\u306e\u8a3c\u660e\u66f8\u306f\u6709\u52b9\u3067\u3059\u3001\u53d6\u308a\u6d88\u3055\u308c\u3066\u306f\u3044\u307e\u305b\u3093\u3002 +viewer.annotation.signature.properties.dialog.showCertificates.label=\u7f72\u540d\u8005\u306e\u8a3c\u660e\u66f8... viewer.annotation.signature.properties.dialog.signedBy.label={0} {1}\u306b\u3088\u308b\u7f72\u540d viewer.annotation.signature.properties.dialog.signerInfo.title=\u7f72\u540d\u8005\u60c5\u5831 viewer.annotation.signature.properties.dialog.signingTime.label=\u7f72\u540d\u6642\u9593\uff1a{0} -viewer.annotation.signature.properties.dialog.title=\u7f72\u540d\u306e\u30d7\u30ed\u30d1\u30c6\u30a3 +viewer.annotation.signature.properties.dialog.title=\u7f72\u540d\u30d7\u30ed\u30d1\u30c6\u30a3 viewer.annotation.signature.properties.dialog.unknown.label=\u7f72\u540d\u306f\u6709\u52b9\u3067\u3059 viewer.annotation.signature.properties.dialog.valid.label=\u7f72\u540d\u306e\u6709\u52b9\u6027\u306f\u4e0d\u660e\u3067\u3059 viewer.annotation.signature.properties.dialog.validity.title=\u59a5\u5f53\u6027\u306e\u8981\u7d04 -viewer.annotation.signature.validation.common.doc.major.label=-\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u304c\u7f72\u540d\u5f8c\u306b\u5909\u66f4\u307e\u305f\u306f\u7834\u640d\u3055\u308c\u3066\u3044\u307e\u3059 -viewer.annotation.signature.validation.common.doc.modified.label=\ - \u3053\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u5909\u66f4\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c,\u305d\u306e\u5f8c\u5909\u66f4\u304c\u52a0\u3048\u3089\u308c\u3066\u3044\u307e\u3059 -viewer.annotation.signature.validation.common.doc.unmodified.label=-\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u7f72\u540d\u3055\u308c\u3066\u304b\u3089\u5909\u66f4\u3055\u308c\u3066\u3044\u307e\u305b\u3093 -viewer.annotation.signature.validation.common.identity.unchecked.label=-\u7f72\u540d\u306f\u6709\u52b9\u3067\u3059\u304c\u3001\u7f72\u540d\u8005ID\u306e\u53d6\u308a\u6d88\u3057\u304c\u78ba\u8a8d\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -viewer.annotation.signature.validation.common.identity.unknown.label=-keystore\u3067\u898b\u3064\u304b\u3089\u306a\u304b\u3063\u305f\u305f\u3081\u3001\u7f72\u540d\u8005\u306eID\u306f\u4e0d\u660e\u3067\u3059 +viewer.annotation.signature.validation.common.doc.major.label=-\u7f72\u540d\u5f8c\u306b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u304c\u5909\u66f4\u307e\u305f\u306f\u7834\u640d\u3057\u3066\u307e\u3059 +viewer.annotation.signature.validation.common.doc.modified.label=-\u3053\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5909\u308f\u308a\u306f\u7121\u3044\u3067\u3059\u304c\u3001\u305d\u306e\u5f8c\u306e\u5909\u66f4\u304c\u52a0\u3048\u3089\u308c\u3066\u3044\u307e\u3059 +viewer.annotation.signature.validation.common.doc.unmodified.label=- \u7f72\u540d\u5f8c\u306b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5909\u66f4\u306f\u3042\u308a\u307e\u305b\u3093 +viewer.annotation.signature.validation.common.identity.unchecked.label=-\u7f72\u540d\u306f\u6709\u52b9\u3067\u3059\u304c\u3001ID\u306e\u5931\u52b9\u3092\u78ba\u8a8d\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +viewer.annotation.signature.validation.common.identity.unknown.label=- \u7f72\u540d\u8005\u306eID\u306f\u4e0d\u660e\u3067\u3059\u3001\u30ad\u30fc\u30b9\u30c8\u30a2\u306b\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 viewer.annotation.signature.validation.common.identity.valid.label=-\u7f72\u540d\u8005\u306eID\u306f\u6709\u52b9\u3067\u3059 -viewer.annotation.signature.validation.common.invalid.label=\u7f72\u540d\u304c\u7121\u52b9\u3067\u3059\uff1a -viewer.annotation.signature.validation.common.notAvailable.label=\u306a\u3057 +viewer.annotation.signature.validation.common.notAvailable.label=\u8a72\u5f53\u306a\u3057 viewer.annotation.signature.validation.common.signedBy.label=-{0} {1}\u306b\u3088\u308b\u7f72\u540d -viewer.annotation.signature.validation.common.time.embedded.label=\u3000-\u7f72\u540d\u306b\u306f\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u304c\u57cb\u3081\u8fbc\u307e\u308c\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u691c\u8a3c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -viewer.annotation.signature.validation.common.time.local.label=-\u7f72\u540d\u6642\u523b\u306f\u3001\u3053\u306e\u7f72\u540d\u8005\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u306e\u6642\u8a08\u304b\u3089\u3067\u3059 +viewer.annotation.signature.validation.common.time.embedded.label=-\u7f72\u540d\u306b\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u691c\u8a3c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +viewer.annotation.signature.validation.common.time.local.label=-\u7f72\u540d\u6642\u9593\u306f\u3001\u7f72\u540d\u8005\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u6642\u523b\u3092\u4f7f\u7528 viewer.annotation.signature.validation.common.unknown.label=\u7f72\u540d\u306f\u6709\u52b9\u3067\u3059\uff1a viewer.annotation.signature.validation.common.valid.label=\u7f72\u540d\u306e\u6709\u52b9\u6027\u306f\u4e0d\u660e\u3067\u3059\uff1a viewer.annotation.signature.validation.dialog.close.button.label=\u9589\u3058\u308b -viewer.annotation.signature.validation.dialog.signerProperties.button.label=\u7f72\u540d\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u2026 +viewer.annotation.signature.validation.dialog.signerProperties.button.label=\u7f72\u540d\u30d7\u30ed\u30d1\u30c6\u30a3... viewer.annotation.signature.validation.dialog.title=\u7f72\u540d\u691c\u8a3c\u306e\u6982\u8981 viewer.button.cancel.label=\u30ad\u30e3\u30f3\u30bb\u30eb viewer.button.cancel.mnemonic=C viewer.button.ok.label=OK viewer.button.ok.mnemonic=O -viewer.commandLin.error=\u4f7f\u7528\u6cd5\: java org.icepdf.ri.viewer.Main [-loadfile ] [-loadurl ] +viewer.commandLin.error=\u4f7f\u7528\u6cd5\uff1a java org.icepdf.ri.viewer.Main [-loadfile ] [-loadurl ] viewer.common.number.eight=8 viewer.common.number.eighteen=18 viewer.common.number.eleven=11 @@ -257,6 +256,7 @@ viewer.common.number.seven=7 viewer.common.number.seventeen=17 viewer.common.number.six=6 viewer.common.number.sixteen=16 +viewer.common.number.ten=10 viewer.common.number.thirteen=13 viewer.common.number.thirtySix=36 viewer.common.number.three=3 @@ -270,10 +270,10 @@ viewer.common.number.twentySix=26 viewer.common.number.twentyThree=23 viewer.common.number.twentyTwo=22 viewer.common.number.two=2 -viewer.dialog.about.pageNumber.label=ICEpdf Web\u30b5\u30a4\u30c8\u3067\u6700\u65b0\u306e\u30cb\u30e5\u30fc\u30b9\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nhttp\://www.icepdf.org/ -viewer.dialog.about.title=ICEpdf\u30d3\u30e5\u30fc\u30a2\u306b\u3064\u3044\u3066 -viewer.dialog.documentInformation.author.label=\u4f5c\u8005\uff1a -viewer.dialog.documentInformation.created.label=\u4f5c\u6210\uff1a +viewer.dialog.about.pageNumber.label=\u6700\u65b0\u306e\u30cb\u30e5\u30fc\u30b9\u306b\u3064\u3044\u3066\u306f\u3001ICEpdfWeb\u30b5\u30a4\u30c8\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\nhttp\://www.icepdf.org/\n +viewer.dialog.about.title=ICEpdf Viewer\u306b\u3064\u3044\u3066 +viewer.dialog.documentInformation.author.label=\u8457\u8005\uff1a +viewer.dialog.documentInformation.created.label=\u4f5c\u6210\u6e08\uff1a viewer.dialog.documentInformation.creator.label=\u4f5c\u6210\u8005\uff1a viewer.dialog.documentInformation.keywords.label=\u30ad\u30fc\u30ef\u30fc\u30c9\uff1a viewer.dialog.documentInformation.modified.label=\u5909\u66f4\uff1a @@ -282,81 +282,82 @@ viewer.dialog.documentInformation.producer.label=\u30d7\u30ed\u30c7\u30e5\u30fc\ viewer.dialog.documentInformation.subject.label=\u4ef6\u540d\uff1a viewer.dialog.documentInformation.title=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u60c5\u5831 viewer.dialog.documentInformation.title.label=\u984c\u540d\uff1a -viewer.dialog.documentPermissions.accessibility.label=\u30b3\u30f3\u30c6\u30f3\u30c4\u30fb\u30a2\u30af\u30bb\u30b7\u30d3\u30ea\u30c6\u30a3\u304c\u6709\u52b9\uff1a -viewer.dialog.documentPermissions.allowed=\u8a31\u53ef\u3057\u307e\u3059 -viewer.dialog.documentPermissions.assembly.label=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u7d44\u307f\u7acb\u3066\uff1a +viewer.dialog.documentPermissions.accessibility.label=\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u30a2\u30af\u30bb\u30b7\u30d3\u30ea\u30c6\u30a3\u3092\u6709\u52b9\uff1a +viewer.dialog.documentPermissions.allowed=\u8a31\u53ef +viewer.dialog.documentPermissions.assembly.label=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u7d44\u7acb\uff1a viewer.dialog.documentPermissions.changing.label=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u5909\u66f4\uff1a -viewer.dialog.documentPermissions.comments.label=\u8457\u8005\u306e\u30b3\u30e1\u30f3\u30c8\u3068\u30d5\u30a9\u30fc\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\uff1a +viewer.dialog.documentPermissions.comments.label=\u8457\u8005\u30b3\u30e1\u30f3\u30c8\u3068\u30d5\u30a9\u30fc\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\uff1a viewer.dialog.documentPermissions.copyExtraction.label=\u30b3\u30f3\u30c6\u30f3\u30c4\u306e\u30b3\u30d4\u30fc\u307e\u305f\u306f\u62bd\u51fa\uff1a viewer.dialog.documentPermissions.encryptionLevel.label=\u6697\u53f7\u5316\u30ec\u30d9\u30eb\uff1a -viewer.dialog.documentPermissions.formFillingIn.label=\u30d5\u30a9\u30fc\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u8a18\u5165\u307e\u305f\u306f\u7f72\u540d\uff1a -viewer.dialog.documentPermissions.fullyAllowed=\u5b8c\u5168\u306b\u8a31\u53ef -viewer.dialog.documentPermissions.no=\u756a\u53f7 -viewer.dialog.documentPermissions.none=\u306a\u3057 -viewer.dialog.documentPermissions.notAllowed=\u7981\u6b62\u3055\u308c\u3066\u3044\u307e\u3059 +viewer.dialog.documentPermissions.formFillingIn.label=\u30d5\u30a9\u30fc\u30e0\u30d5\u30a3\u30fc\u30eb\u30c9\u3078\u306e\u5165\u529b\u307e\u305f\u306f\u7f72\u540d\uff1a +viewer.dialog.documentPermissions.fullyAllowed=\u5b8c\u5168\u8a31\u53ef +viewer.dialog.documentPermissions.no=\u3044\u3044\u3048 +viewer.dialog.documentPermissions.none=\u7121\u3057 +viewer.dialog.documentPermissions.notAllowed=\u7981\u6b62\u3055\u308c\u3066\u3044\u308b viewer.dialog.documentPermissions.ownerPassword.label=\u6240\u6709\u8005\u30d1\u30b9\u30ef\u30fc\u30c9\uff1a viewer.dialog.documentPermissions.partial=\u90e8\u5206\u7684\uff08\u4f4e\u54c1\u8cea\uff09 viewer.dialog.documentPermissions.printing.label=\u5370\u5237\uff1a viewer.dialog.documentPermissions.securityLevel={0}-bit v{1} R {2} viewer.dialog.documentPermissions.securityMethod.label=\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u65b9\u6cd5\uff1a -viewer.dialog.documentPermissions.standardSecurity=Adobe Acrobat\u6a19\u6e96\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 -viewer.dialog.documentPermissions.title=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u6a29\u9650 -viewer.dialog.documentPermissions.userPassword.label=\u30e6\u30fc\u30b6\u30fc\u30d1\u30b9\u30ef\u30fc\u30c9\uff1a +viewer.dialog.documentPermissions.standardSecurity=Adobe Acrobat \u6a19\u6e96\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 +viewer.dialog.documentPermissions.title=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30a2\u30af\u30bb\u30b9\u8a31\u53ef +viewer.dialog.documentPermissions.userPassword.label=\u30e6\u30fc\u30b6\u30fb\u30d1\u30b9\u30ef\u30fc\u30c9\uff1a viewer.dialog.documentPermissions.yes=\u306f\u3044 -viewer.dialog.error.exception.msg=\u30b3\u30de\u30f3\u30c9\u306e\u5b9f\u884c\u4e2d\u306b\u6b21\u306e\u4f8b\u5916\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\n{0}\u3002 -viewer.dialog.error.exception.title=ICEsoft ICEpdf-\u4f8b\u5916 -viewer.dialog.exportSVG.exportError.msg=ICEpdf\u306f{0}\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\n\u30b5\u30dd\u30fc\u30c8\u5916\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u304b\u3001\n\u30d5\u30a1\u30a4\u30eb\u304c\u7834\u640d\u3057\u3066\u3044\u307e\u3059\u3002 -viewer.dialog.exportSVG.exportError.title=ICEsoft ICEpdf-SVG\u30a8\u30e9\u30fc +viewer.dialog.error.exception.msg=\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3067\u6b21\u306e\u4f8b\u5916\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\n{0}\u3002 +viewer.dialog.error.exception.title=ICEsoftICEpdf-\u4f8b\u5916 +viewer.dialog.exportSVG.exportError.msg=\u30b5\u30dd\u30fc\u30c8\u5916\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u30d5\u30a1\u30a4\u30eb\u304c\u7834\u640d\u3057\u3066\u3044\u308b\u305f\u3081\u3001ICEpdf\u3092{0}\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +viewer.dialog.exportSVG.exportError.title=ICEsoftICEpdf - SVG\u30a8\u30e9\u30fc viewer.dialog.exportSVG.noExtensionError.msg=\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -viewer.dialog.exportSVG.noExtensionError.title=ICEsoft ICEpdf-SVG\u30a8\u30e9\u30fc -viewer.dialog.exportSVG.status.error.msg=\u30da\u30fc\u30b8{0}\u3092SVG\u30d5\u30a1\u30a4\u30eb\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u969b\u306e\u554f\u984c\u3000{1}\uff1a{2} -viewer.dialog.exportSVG.status.exporting.msg=\u30da\u30fc\u30b8{0}\u3092SVG\u30d5\u30a1\u30a4\u30eb{1}\u3078\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u4e2d \u2026 -viewer.dialog.exportSVG.status.finished.msg=\u30da\u30fc\u30b8{0}\u3092SVG\u30d5\u30a1\u30a4\u30eb{1}\u3078\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f +viewer.dialog.exportSVG.noExtensionError.title=ICEsoftICEpdf - SVG\u30a8\u30e9\u30fc +viewer.dialog.exportSVG.status.error.msg=\u30da\u30fc\u30b8{0}\u3092SVG\u30d5\u30a1\u30a4\u30eb{1}\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u6642\u306e\u554f\u984c\uff1a{2} +viewer.dialog.exportSVG.status.exporting.msg=\u30da\u30fc\u30b8{0}\u3092SVG\u30d5\u30a1\u30a4\u30eb{1}\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u4e2d\u3002\u3002\u3002 +viewer.dialog.exportSVG.status.finished.msg=SVG\u30d5\u30a1\u30a4\u30eb{1}\u306b\u30da\u30fc\u30b8{0}\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u307e\u3057\u305f viewer.dialog.exportSVG.title=SVG\u306b\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 viewer.dialog.exportText.noExtensionError.msg=\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -viewer.dialog.exportText.noExtensionError.title=ICEsoft ICEpdf-\u4fdd\u5b58\u30a8\u30e9\u30fc +viewer.dialog.exportText.noExtensionError.title=ICEsoft ICEpdf - \u4fdd\u5b58\u30a8\u30e9\u30fc viewer.dialog.exportText.progress.msg=PDF\u30c6\u30ad\u30b9\u30c8\u306e\u62bd\u51fa -viewer.dialog.exportText.title=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30c6\u30ad\u30b9\u30c8\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 +viewer.dialog.exportText.title=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30c6\u30ad\u30b9\u30c8\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8 viewer.dialog.fonts.border.label=\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3067\u4f7f\u7528\u3055\u308c\u3066\u3044\u308b\u30d5\u30a9\u30f3\u30c8 viewer.dialog.fonts.info.encoding.label=\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\uff1a{0} viewer.dialog.fonts.info.substitution.path.label=\u30d1\u30b9\uff1a{0} viewer.dialog.fonts.info.substitution.type.label=\u5b9f\u969b\u306e\u30bf\u30a4\u30d7\uff1a{0} viewer.dialog.fonts.info.type.label=\u30bf\u30a4\u30d7\uff1a{0} viewer.dialog.fonts.resetCache.label=\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30ea\u30bb\u30c3\u30c8 -viewer.dialog.fonts.resetCache.tip=\u30d5\u30a9\u30f3\u30c8\u30fb\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30ea\u30bb\u30c3\u30c8\u3057\u3001\u518d\u30b9\u30ad\u30e3\u30f3\u3057\u3066\u65b0\u3057\u3044\u30d5\u30a9\u30f3\u30c8\u3092\u63a2\u3057\u307e\u3059\u3002 -viewer.dialog.fonts.searching.label=\u30d5\u30a9\u30f3\u30c8\u30c7\u30fc\u30bf\u3092\u53ce\u96c6\u3057\u3066\u3044\u307e\u3059\uff08{0}\uff05\uff09\u3002 +viewer.dialog.fonts.resetCache.tip=\u30d5\u30a9\u30f3\u30c8\u30d7\u30ed\u30d1\u30c6\u30a3\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30ea\u30bb\u30c3\u30c8\u3057\u3001\u30b7\u30b9\u30c6\u30e0\u3092\u518d\u30b9\u30ad\u30e3\u30f3\u3057\u3066\u65b0\u3057\u3044\u30d5\u30a9\u30f3\u30c8\u3092\u63a2\u3057\u307e\u3059\u3002 +viewer.dialog.fonts.searching.label=\u30d5\u30a9\u30f3\u30c8\u30c7\u30fc\u30bf\u306e\u53ce\u96c6\uff08{0}\uff05\uff09\u3002 viewer.dialog.fonts.title=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30d5\u30a9\u30f3\u30c8\u30d7\u30ed\u30d1\u30c6\u30a3 viewer.dialog.goToPage.description.label=\u30da\u30fc\u30b8\u756a\u53f7 -viewer.dialog.goToPage.title=\u30da\u30fc\u30b8\u306b\u79fb\u52d5\u2026 -viewer.dialog.information.copyAll.msg=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u306f{0}\u30da\u30fc\u30b8\u4ee5\u4e0a\u3042\u308a\u307e\u3059\u3002\n\u300c\u30c6\u30ad\u30b9\u30c8\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8..."\u300d\u4f7f\u7528\u3057\u3066\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30c6\u30ad\u30b9\u30c8\u3092\u62bd\u51fa\u3057\u3066\u4e0b\u3055\u3044\u3002 -viewer.dialog.information.copyAll.title=ICEsoft ICEpdf-\u60c5\u5831 -viewer.dialog.openDocument.exception.msg=ICEpdf\u306f\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb{0}\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f\u3002\n\u30d5\u30a1\u30a4\u30eb\u304c\u7834\u640d\u3057\u3066\u3044\u308b\u304b\u3001\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u7121\u3044\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 -viewer.dialog.openDocument.exception.title=ICEsoft ICEpdf-\u4f8b\u5916 -viewer.dialog.openDocument.pdfException.msg=ICEpdf\u306f\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3051\u307e\u305b\u3093{0}\n\u30d5\u30a1\u30a4\u30eb\u304c\u7834\u640d\u3057\u3066\u3044\u308b\u304b\u3001\u30b5\u30dd\u30fc\u30c8\u5916\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 -viewer.dialog.openDocument.pdfException.title=ICEsoft ICEpdf-PDF\u4f8b\u5916 -viewer.dialog.openDocument.pdfSecurityException.msg=ICEpdf\u306f\u6697\u53f7\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb{0}\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f\u3002\n\u3053\u308c\u306f\u3001\u7121\u52b9\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\u307e\u305f\u306fJCE\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u6b20\u843d\u306e\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\n\n\u8a73\u7d30\u306b\u3064\u3044\u3066\u306f\u3001ICEpdf\u958b\u767a\u8005\u30ac\u30a4\u30c9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +viewer.dialog.goToPage.title=\u30da\u30fc\u30b8\u306b\u79fb\u52d5... +viewer.dialog.information.copyAll.msg=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f{0}\u30da\u30fc\u30b8\u4ee5\u4e0a\u3042\u308a\u307e\u3059\u3002"\u30c6\u30ad\u30b9\u30c8\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8... "\u4f7f\u7528\u3057\u3066\n\u30c6\u30ad\u30b9\u30c8\u3092\u62bd\u51fa\u3057\u3066\u4e0b\u3055\u3044\u3002 +viewer.dialog.information.copyAll.title=ICEsoft ICEpdf - \u60c5\u5831 +viewer.dialog.openDocument.exception.msg=ICEpdf\u306f{0}\u3067\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\n\u30d5\u30a1\u30a4\u30eb\u304c\u7834\u640d\u3057\u3066\u3044\u308b\u304b\u3001\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +viewer.dialog.openDocument.exception.title=ICEsoftICEpdf - \u4f8b\u5916 +viewer.dialog.openDocument.pdfException.msg=ICEpdf\u306f\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb{0}\u3092\u958b\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\n\u30d5\u30a1\u30a4\u30eb\u304c\u7834\u640d\u3057\u3066\u3044\u308b\u304b\u3001\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +viewer.dialog.openDocument.pdfException.title=ICEsoftICEpdf - PDF\u4f8b\u5916 +viewer.dialog.openDocument.pdfSecurityException.msg=\u300cICEpdf\u306f\u6697\u53f7\u5316\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb{0}\u3092\u958b\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3001\n\u7121\u52b9\u306a\u30d1\u30b9\u30ef\u30fc\u30c9\u307e\u305f\u306fJCE\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30d7\u30ed\u30d0\u30a4\u30c0\u30fc\u306e\u6b20\u843d\u304c\u539f\u56e0\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\n\n\u8a73\u7d30\u306f\u3001ICEpdf\u958b\u767a\u8005\u30ac\u30a4\u30c9\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 viewer.dialog.openDocument.pdfSecurityException.title=ICEsoft ICEpdf - PDF\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916 -viewer.dialog.openFile.error.msg=ICEpdf\u306f\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb{0}\u3092\u958b\u3051\u307e\u305b\u3093\u3067\u3057\u305f\u3002\n\u30d5\u30a1\u30a4\u30eb\u304c\u7834\u640d\u3057\u3066\u3044\u308b\u304b\u3001\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 -viewer.dialog.openFile.error.title=ICEsoft ICEpdf-\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u30a8\u30e9\u30fc +viewer.dialog.openFile.error.msg=\u300cICEpdf\u306f{0}\u3067\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\n\u30d5\u30a1\u30a4\u30eb\u304c\u7834\u640d\u3057\u3066\u3044\u308b\u304b\u3001\u30b5\u30dd\u30fc\u30c8\u5916\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +viewer.dialog.openFile.error.title=ICEsoftICEpdf-\u30d5\u30a1\u30a4\u30eb\u958b\u30a8\u30e9\u30fc viewer.dialog.openFile.title=\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f -viewer.dialog.openURL.downloading.msg={0}\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u3044\u307e\u3059 -viewer.dialog.openURL.exception.msg=\u300cICEpdf\u306f\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3051\u307e\u305b\u3093\u3002{0}\nURL\uff1a{1}\u300d -viewer.dialog.openURL.exception.title=ICEsoft ICEpdf-URL\u4f8b\u5916 +viewer.dialog.openURL.downloading.msg={0}\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u4e2d +viewer.dialog.openURL.exception.msg=ICEpdf\u306f\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb{0}\u3092\u958b\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\nURL\uff1a{1} +viewer.dialog.openURL.exception.title=ICEsoftICEpdf - URL\u4f8b\u5916 viewer.dialog.openURL.title=URL\u3092\u958b\u304f -viewer.dialog.printing.status.start.msg=\u30d7\u30ea\u30f3\u30bf\u3078\u30da\u30fc\u30b8\u3092\u30b9\u30d7\u30fc\u30eb\u4e2d -viewer.dialog.saveAs.extensionError.msg=ICEpdf\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u7121\u3044\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u70ba\u3001{0}\u306b\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -viewer.dialog.saveAs.extensionError.title=ICEsoft ICEpdf-\u4fdd\u5b58\u30a8\u30e9\u30fc +viewer.dialog.printing.status.progress.msg={1}\u306e\u30da\u30fc\u30b8{0} +viewer.dialog.printing.status.start.msg=\u30d7\u30ea\u30f3\u30bf\u3078\u30da\u30fc\u30b8\u3092\u30b9\u30d7\u30fc\u30ea\u30f3\u30b0\u3057\u3066\u3044\u307e\u3059 +viewer.dialog.saveAs.extensionError.msg=ICEpdf\u306f\u3001\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u306a\u3044\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u305f\u3081\u3001{0}\u306b\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +viewer.dialog.saveAs.extensionError.title=ICEsoftICEpdf - \u4fdd\u5b58\u30a8\u30e9\u30fc viewer.dialog.saveAs.noExtensionError.msg=\u30d5\u30a1\u30a4\u30eb\u62e1\u5f35\u5b50\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -viewer.dialog.saveAs.noExtensionError.title=ICEsoft ICEpdf-\u4fdd\u5b58\u30a8\u30e9\u30fc -viewer.dialog.saveAs.noPermission.msg=\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u4fdd\u5b58\u3059\u308b\u6a29\u9650\u307e\u305f\u306f\u8cc7\u683c\u60c5\u5831\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -viewer.dialog.saveAs.noPermission.title=ICEpdf \u30d3\u30e5\u30fc\u30a2 RI-\u4fdd\u5b58\u30a8\u30e9\u30fc -viewer.dialog.saveAs.noUpdates.msg=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u5909\u66f4\u3092\u4fdd\u5b58\u3059\u308b\u306b\u306fICEpdfPRO\u306b\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -viewer.dialog.saveAs.noUpdates.title=ICEpdf \u30d3\u30e5\u30fc\u30a2 RI -viewer.dialog.saveAs.noneUniqueName.msg=\u30d5\u30a1\u30a4\u30eb{0}\u306f\u65e2\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 \u4e00\u610f\u306e\u540d\u524d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -viewer.dialog.saveAs.noneUniqueName.title=ICEsoft ICEpdf-\u4fdd\u5b58\u30a8\u30e9\u30fc +viewer.dialog.saveAs.noExtensionError.title=ICEsoft ICEpdf - \u4fdd\u5b58\u30a8\u30e9\u30fc +viewer.dialog.saveAs.noPermission.msg=\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306e\u6a29\u9650\u307e\u305f\u306f\u8cc7\u683c\u60c5\u5831\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +viewer.dialog.saveAs.noPermission.title=ICEpdf Viewer RI - \u4fdd\u5b58\u30a8\u30e9\u30fc +viewer.dialog.saveAs.noUpdates.msg=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u5909\u66f4\u306f\u4fdd\u5b58\u3055\u308c\u307e\u305b\u3093\u3002ICEpdfPRO\u306b\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +viewer.dialog.saveAs.noUpdates.title=ICEpdf Viewer RI +viewer.dialog.saveAs.noneUniqueName.msg={0}\u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 \u4ed6\u306e\u540d\u524d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +viewer.dialog.saveAs.noneUniqueName.title=ICEsoft ICEpdf - \u4fdd\u5b58\u30a8\u30e9\u30fc viewer.dialog.saveAs.title=\u540d\u524d\u3092\u4ed8\u3051\u3066\u4fdd\u5b58 viewer.dialog.saveOnClose.noUpdates.msg=\u5909\u66f4\u3092{0}\u306b\u4fdd\u5b58\u3057\u307e\u3059\u304b\uff1f -viewer.dialog.saveOnClose.noUpdates.title=ICEpdf \u30d3\u30e5\u30fc\u30a2 RI +viewer.dialog.saveOnClose.noUpdates.title=ICEpdf Viewer RI viewer.dialog.security.cancelButton.label=\u30ad\u30e3\u30f3\u30bb\u30eb viewer.dialog.security.cancelButton.mnemonic=C viewer.dialog.security.msg=\u3053\u306ePDF\u306f\u4fdd\u8b77\u3055\u308c\u3066\u3044\u307e\u3059 @@ -364,53 +365,53 @@ viewer.dialog.security.okButton.label=OK viewer.dialog.security.okButton.mnemonic=O viewer.dialog.security.password.label=\u30d1\u30b9\u30ef\u30fc\u30c9\uff1a viewer.dialog.security.title=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3 -viewer.exportText.fileStamp.msg=ICEsoft ICEpdf\u30d3\u30e5\u30fc\u30a2\u3001\uff08c\uff09ICEsoft Technologies\u3001Inc. -viewer.exportText.fileStamp.progress.moreFile.msg={2}\u3000\u30da\u30fc\u30b8 +viewer.exportText.fileStamp.msg=ICEsoft ICEpdf Viewer, (c) ICEsoft Technologies, Inc. +viewer.exportText.fileStamp.progress.moreFile.msg={2} \u30da\u30fc\u30b8 viewer.exportText.fileStamp.progress.msg={1}\u306e\u3046\u3061{0}\u3092\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002 viewer.exportText.fileStamp.progress.oneFile.msg={2}\u30da\u30fc\u30b8 -viewer.exportText.pageStamp.msg=<\!----- \u30da\u30fc\u30b8{0}\u3000\u30c6\u30ad\u30b9\u30c8 ----> -viewer.launcher.URLError.dialog.message=ICEpdf\u306f\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u3051\u307e\u305b\u3093\u3002 {0}\u3001URL\uff1a{1}\u3002 +viewer.exportText.pageStamp.msg=<\!----- \u30da\u30fc\u30b8{0}\u30c6\u30ad\u30b9\u30c8 ----> +viewer.launcher.URLError.dialog.message=ICEpdf\u306f\u6307\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 URL\uff1a{1}\u306e{0}\u3002 viewer.launcher.URLError.dialog.title=ICEsoft ICEpdf viewer.launcher.lookAndFeel.error.message=\u6307\u5b9a\u3055\u308c\u305f\u30eb\u30c3\u30af\u30a2\u30f3\u30c9\u30d5\u30a3\u30fc\u30eb\uff08{0}\uff09\u306f\u3001\u3053\u306e\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u304b\u3089\u30a2\u30af\u30bb\u30b9\u3067\u304d\u307e\u305b\u3093\u3002 viewer.menu.close.label=\u9589\u3058\u308b -viewer.menu.document.firstPage.label=\uff11\u30da\u30fc\u30b8\u76ee -viewer.menu.document.gotToPage.label=\u30da\u30fc\u30b8\u306b\u79fb\u52d5\u2026 +viewer.menu.document.firstPage.label=1\u30da\u30fc\u30b8\u76ee +viewer.menu.document.gotToPage.label=\u30da\u30fc\u30b8\u306b\u79fb\u52d5... viewer.menu.document.label=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8 viewer.menu.document.lastPage.label=\u6700\u7d42\u30da\u30fc\u30b8 viewer.menu.document.mnemonic=D viewer.menu.document.nextPage.label=\u6b21\u306e\u30da\u30fc\u30b8 viewer.menu.document.previousPage.label=\u524d\u306e\u30da\u30fc\u30b8 -viewer.menu.document.search.label=\u691c\u51fa... -viewer.menu.documentFonts.label=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30d5\u30a9\u30f3\u30c8\u2026 -viewer.menu.documentInformation.label=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u60c5\u5831\u2026 -viewer.menu.documentPermission.label=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u6a29\u9650\u2026 +viewer.menu.document.search.label=\u691c\u7d22... +viewer.menu.documentFonts.label=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30d5\u30a9\u30f3\u30c8... +viewer.menu.documentInformation.label=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u60c5\u5831... +viewer.menu.documentPermission.label=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30a2\u30af\u30bb\u30b9\u8a31\u53ef... viewer.menu.edit.copy.label=\u30b3\u30d4\u30fc viewer.menu.edit.delete.label=\u524a\u9664 -viewer.menu.edit.deselectAll.label=\u3059\u3079\u3066\u306e\u9078\u629e\u3092\u89e3\u9664 +viewer.menu.edit.deselectAll.label=\u5168\u9078\u629e\u3092\u89e3\u9664 viewer.menu.edit.label=\u7de8\u96c6 viewer.menu.edit.mnemonic=E viewer.menu.edit.redo.label=\u3084\u308a\u76f4\u3057 viewer.menu.edit.selectAll.label=\u3059\u3079\u3066\u9078\u629e -viewer.menu.edit.undo.label=\u5143\u306b\u623b\u3059 -viewer.menu.exit.label=\u7d42\u4e86\uff1a +viewer.menu.edit.undo.label=\u3084\u308a\u76f4\u3059 +viewer.menu.exit.label=\u51fa\u53e3 viewer.menu.exportSVG.label=SVG\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8... -viewer.menu.exportText.label=\u30c6\u30ad\u30b9\u30c8\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u2026 +viewer.menu.exportText.label=\u30c6\u30ad\u30b9\u30c8\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8... viewer.menu.file.label=\u30d5\u30a1\u30a4\u30eb viewer.menu.file.mnemonic=F -viewer.menu.help.about.label=ICEpdf\u30d3\u30e5\u30fc\u30a2\u306b\u3064\u3044\u3066\u2026 +viewer.menu.help.about.label=ICEpdf Viewer\u306b\u3064\u3044\u3066... viewer.menu.help.label=\u30d8\u30eb\u30d7 viewer.menu.help.mnemonic=H viewer.menu.open.URL.label=URL... viewer.menu.open.file.label=\u30d5\u30a1\u30a4\u30eb... viewer.menu.open.label=\u958b\u304f -viewer.menu.print.label=\u5370\u5237\u2026 -viewer.menu.printSetup.label=\u5370\u5237\u8a2d\u5b9a\u2026 -viewer.menu.saveAs.label=\u540d\u524d\u3092\u4ed8\u3051\u3066\u4fdd\u5b58\u2026 -viewer.menu.view.actualSize.label=\u5b9f\u5bf8 -viewer.menu.view.fitInWindow.label=\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u5408\u308f\u305b\u308b -viewer.menu.view.fitWidth.label=\u5e45\u306b\u5408\u308f\u305b\u308b +viewer.menu.print.label=\u5370\u5237... +viewer.menu.printSetup.label=\u5370\u5237\u8a2d\u5b9a... +viewer.menu.saveAs.label=\u540d\u524d\u3092\u4ed8\u3051\u3066\u4fdd\u5b58... +viewer.menu.view.actualSize.label=\u539f\u5bf8 +viewer.menu.view.fitInWindow.label=\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u53ce\u3081\u308b +viewer.menu.view.fitWidth.label=\u30d5\u30a3\u30c3\u30c8\u5e45 viewer.menu.view.hideToolBar.label=\u30c4\u30fc\u30eb\u30d0\u30fc\u3092\u975e\u8868\u793a -viewer.menu.view.hideUtilityPane.label=\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30fb\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u975e\u8868\u793a +viewer.menu.view.hideUtilityPane.label=\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30da\u30a4\u30f3\u3092\u975e\u8868\u793a viewer.menu.view.label=\u8868\u793a viewer.menu.view.mnemonic=V viewer.menu.view.rotateLeft.label=\u5de6\u56de\u8ee2 @@ -430,13 +431,14 @@ viewer.menu.window.4.mnemonic=4 viewer.menu.window.5.label=5 viewer.menu.window.5.mnemonic=5 viewer.menu.window.6.label=6 +viewer.menu.window.6.mnemonic=6 viewer.menu.window.7.label=7 viewer.menu.window.7.mnemonic=7 viewer.menu.window.8.label=8 viewer.menu.window.8.mnemonic=8 viewer.menu.window.9.label=9 viewer.menu.window.9.mnemonic=9 -viewer.menu.window.frontAll.label=\u3059\u3079\u3066\u3092\u524d\u9762\u306b +viewer.menu.window.frontAll.label=\u3059\u3079\u3066\u3092\u524d\u9762\u306b\u79fb\u52d5 viewer.menu.window.frontAll.mnemonic=B viewer.menu.window.label=\u30a6\u30a3\u30f3\u30c9\u30a6 viewer.menu.window.minAll.label=\u3059\u3079\u3066\u3092\u6700\u5c0f\u5316 @@ -444,66 +446,67 @@ viewer.menu.window.minAll.mnemonic=M viewer.menu.window.mnemonic=W viewer.statusbar.currentPage=\u30da\u30fc\u30b8{0} / {1} viewer.toolbar.hideToolBar.label=\u30c4\u30fc\u30eb\u30d0\u30fc\u3092\u975e\u8868\u793a -viewer.toolbar.hideUtilityPane.label=\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30fb\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u975e\u8868\u793a +viewer.toolbar.hideUtilityPane.label=\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30da\u30a4\u30f3\u3092\u975e\u8868\u793a viewer.toolbar.navigation.current.tooltip=\u73fe\u5728\u306e\u30da\u30fc\u30b8\u756a\u53f7 -viewer.toolbar.navigation.firstPage.tooltip=\uff11\u30da\u30fc\u30b8\u76ee +viewer.toolbar.navigation.firstPage.tooltip=1\u30da\u30fc\u30b8\u76ee +viewer.toolbar.navigation.lastPage.tooltip=\u6700\u7d42\u30da\u30fc\u30b8 viewer.toolbar.navigation.nextPage.tooltip=\u6b21\u306e\u30da\u30fc\u30b8 viewer.toolbar.navigation.pages.tooltip=\u30da\u30fc\u30b8\u6570 viewer.toolbar.navigation.previousPage.tooltip=\u524d\u306e\u30da\u30fc\u30b8 viewer.toolbar.open.tooltip=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u958b\u304f -viewer.toolbar.pageFit.actualsize.tooltip=\u5b9f\u5bf8 -viewer.toolbar.pageFit.fitWidth.tooltip=\u5e45\u306b\u5408\u308f\u305b\u308b -viewer.toolbar.pageFit.fitWindow.tooltip=\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u5408\u308f\u305b\u308b -viewer.toolbar.pageFit.fontEngine.tooltip=\u30d5\u30a9\u30f3\u30c8\u30a8\u30f3\u30b8\u30f3\u3092\u6709\u52b9/\u7121\u52b9\u306b\u3059\u308b -viewer.toolbar.pageIndicator=\u306e {0} -viewer.toolbar.pageView.continuous.facingPage.tooltip=\u9023\u7d9a\u3057\u305f\u30da\u30fc\u30b8\u30d3\u30e5\u30fc -viewer.toolbar.pageView.continuous.singlePage.tooltip=\u5358\u4e00\u30da\u30fc\u30b8\u9023\u7d9a\u8868\u793a -viewer.toolbar.pageView.nonContinuous.facingPage.tooltip=\u4e0d\u9023\u7d9a\u30da\u30fc\u30b8\u8868\u793a -viewer.toolbar.pageView.nonContinuous.singlePage.tooltip=\u5358\u4e00\u30da\u30fc\u30b8\u306e\u975e\u9023\u7d9a\u8868\u793a +viewer.toolbar.pageFit.actualsize.tooltip=\u539f\u5bf8 +viewer.toolbar.pageFit.fitWidth.tooltip=\u30d5\u30a3\u30c3\u30c8\u5e45 +viewer.toolbar.pageFit.fitWindow.tooltip=\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u53ce\u3081\u308b +viewer.toolbar.pageFit.fontEngine.tooltip=\u30d5\u30a9\u30f3\u30c8\u30a8\u30f3\u30b8\u30f3\u306e\u6709\u52b9/\u7121\u52b9 +viewer.toolbar.pageIndicator={0}\u306e +viewer.toolbar.pageView.continuous.facingPage.tooltip=\u9023\u7d9a\u898b\u958b\u304d\u30da\u30fc\u30b8\u8868\u793a +viewer.toolbar.pageView.continuous.singlePage.tooltip=\u9023\u7d9a\u5358\u4e00\u30da\u30fc\u30b8\u8868\u793a +viewer.toolbar.pageView.nonContinuous.facingPage.tooltip=\u898b\u958b\u304d\u30da\u30fc\u30b8\u30d3\u30e5\u30fc\u975e\u9023\u7d9a +viewer.toolbar.pageView.nonContinuous.singlePage.tooltip=\u975e\u9023\u7d9a\u5358\u4e00\u30da\u30fc\u30b8\u8868\u793a viewer.toolbar.print.label=\u5370\u5237 viewer.toolbar.print.tooltip=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u5370\u5237 viewer.toolbar.rotation.left.tooltip=\u5de6\u56de\u8ee2 viewer.toolbar.rotation.right.tooltip=\u53f3\u56de\u8ee2 viewer.toolbar.saveAs.label=\u540d\u524d\u3092\u4ed8\u3051\u3066\u4fdd\u5b58 -viewer.toolbar.saveAs.tooltip=\u540d\u524d\u3092\u4ed8\u3051\u3066\u4fdd\u5b58... +viewer.toolbar.saveAs.tooltip=\u540d\u524d\u3092\u4ed8\u3051\u3066\u4fdd\u5b58... viewer.toolbar.search.label=\u691c\u7d22 viewer.toolbar.search.tooltip=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u691c\u7d22 viewer.toolbar.showToolBar.label=\u30c4\u30fc\u30eb\u30d0\u30fc\u3092\u8868\u793a viewer.toolbar.showUtilityPane.label=\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30da\u30a4\u30f3\u3092\u8868\u793a -viewer.toolbar.tool.circle.label=\u4e38 -viewer.toolbar.tool.circle.tooltip=\u30b5\u30fc\u30af\u30eb\u6ce8\u91c8\u30c4\u30fc\u30eb -viewer.toolbar.tool.forms.highlight.label=\u30d5\u30a9\u30fc\u30e0\u306e\u5f37\u8abf\u8868\u793a -viewer.toolbar.tool.forms.highlight.tooltip=\u30d5\u30a9\u30fc\u30e0\u306e\u30cf\u30a4\u30e9\u30a4\u30c8\u3092\u8868\u793a/\u975e\u8868\u793a +viewer.toolbar.tool.circle.label=\u5186 +viewer.toolbar.tool.circle.tooltip=\u5186\u578b\u6ce8\u91c8\u30c4\u30fc\u30eb +viewer.toolbar.tool.forms.highlight.label=\u5f37\u8abf\u8868\u793a\u30d5\u30a9\u30fc\u30e0 +viewer.toolbar.tool.forms.highlight.tooltip=\u30d5\u30a9\u30fc\u30e0\u306e\u5f37\u8abf\u8868\u793a/\u975e\u8868\u793a viewer.toolbar.tool.freeText.label=\u30d5\u30ea\u30fc\u30c6\u30ad\u30b9\u30c8 -viewer.toolbar.tool.freeText.tooltip=\u30d5\u30ea\u30fc\u30c6\u30ad\u30b9\u30c8\u6ce8\u91c8\u30c4\u30fc\u30eb +viewer.toolbar.tool.freeText.tooltip=\u7121\u6599\u30c6\u30ad\u30b9\u30c8\u6ce8\u91c8\u30c4\u30fc\u30eb viewer.toolbar.tool.highlight.label=\u30cf\u30a4\u30e9\u30a4\u30c8 viewer.toolbar.tool.highlight.tooltip=\u30cf\u30a4\u30e9\u30a4\u30c8\u6ce8\u91c8\u30c4\u30fc\u30eb viewer.toolbar.tool.ink.label=\u30a4\u30f3\u30af viewer.toolbar.tool.ink.tooltip=\u30a4\u30f3\u30af\u6ce8\u91c8\u30c4\u30fc\u30eb viewer.toolbar.tool.line.label=\u7dda -viewer.toolbar.tool.line.tooltip=\u30e9\u30a4\u30f3\u6ce8\u91c8\u30c4\u30fc\u30eb -viewer.toolbar.tool.lineArrow.label=\u7dda\u77e2\u5370 -viewer.toolbar.tool.lineArrow.tooltip=\u7dda\u77e2\u5370\u6ce8\u91c8\u30c4\u30fc\u30eb +viewer.toolbar.tool.line.tooltip=\u7dda\u6ce8\u91c8\u30c4\u30fc\u30eb +viewer.toolbar.tool.lineArrow.label=\u7dda\u3068\u77e2\u5370 +viewer.toolbar.tool.lineArrow.tooltip=\u7dda\u77e2\u5370\u578b\u6ce8\u91c8\u30c4\u30fc\u30eb viewer.toolbar.tool.link.tooltip=\u30ea\u30f3\u30af\u6ce8\u91c8\u30c4\u30fc\u30eb viewer.toolbar.tool.pan.tooltip=\u30d1\u30f3\u30c4\u30fc\u30eb -viewer.toolbar.tool.plolyLine.label=\u30dd\u30ea\u30e9\u30a4\u30f3 -viewer.toolbar.tool.plolyLine.tooltip=\u30dd\u30ea\u30e9\u30a4\u30f3\u6ce8\u91c8\u30c4\u30fc\u30eb +viewer.toolbar.tool.plolyLine.label=\u6298\u308c\u7dda +viewer.toolbar.tool.plolyLine.tooltip=\u30dd\u30ea\u30e9\u30a4\u30f3\u578b\u6ce8\u91c8\u30c4\u30fc\u30eb viewer.toolbar.tool.rectangle.label=\u9577\u65b9\u5f62 viewer.toolbar.tool.rectangle.tooltip=\u9577\u65b9\u5f62\u6ce8\u91c8\u30c4\u30fc\u30eb viewer.toolbar.tool.select.tooltip=\u9078\u629e\u30c4\u30fc\u30eb -viewer.toolbar.tool.strikeOut.label=\u53d6\u308a\u6d88\u3057\u7dda -viewer.toolbar.tool.strikeOut.tooltip=\u53d6\u308a\u6d88\u3057\u7dda\u6ce8\u91c8\u30c4\u30fc\u30eb +viewer.toolbar.tool.strikeOut.label=\u53d6\u6d88\u7dda +viewer.toolbar.tool.strikeOut.tooltip=\u53d6\u6d88\u3057\u6ce8\u91c8\u30c4\u30fc\u30eb viewer.toolbar.tool.text.tooltip=\u30c6\u30ad\u30b9\u30c8\u9078\u629e\u30c4\u30fc\u30eb viewer.toolbar.tool.textAnno.label=\u30c6\u30ad\u30b9\u30c8\u6ce8\u91c8 viewer.toolbar.tool.textAnno.tooltip=\u30c6\u30ad\u30b9\u30c8\u6ce8\u91c8\u30c4\u30fc\u30eb viewer.toolbar.tool.underline.label=\u4e0b\u7dda -viewer.toolbar.tool.underline.tooltip=\u4e0b\u7dda\u7de8\u96c6\u30c4\u30fc\u30eb -viewer.toolbar.tool.zoomDynamic.tooltip=\u30ba\u30fc\u30e0\u52d5\u7684\u30c4\u30fc\u30eb +viewer.toolbar.tool.underline.tooltip=\u4e0b\u7dda\u6ce8\u91c8\u30c4\u30fc\u30eb +viewer.toolbar.tool.zoomDynamic.tooltip=\u30ba\u30fc\u30e0\u30c0\u30a4\u30ca\u30df\u30c3\u30af\u30c4\u30fc\u30eb viewer.toolbar.tool.zoomIn.tooltip=\u30ba\u30fc\u30e0\u30a4\u30f3\u30c4\u30fc\u30eb -viewer.toolbar.tool.zoomMarquis.tooltip=\u30de\u30fc\u30ad\u30fc\u30ba\u30fc\u30e0\u30c4\u30fc\u30eb +viewer.toolbar.tool.zoomMarquis.tooltip=\u30ba\u30fc\u30e0\u30de\u30fc\u30ad\u30fc\u30c4\u30fc\u30eb viewer.toolbar.tool.zoomOut.tooltip=\u30ba\u30fc\u30e0\u30a2\u30a6\u30c8\u30c4\u30fc\u30eb -viewer.toolbar.utilityPane.label=\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30fb\u30da\u30a4\u30f3 -viewer.toolbar.utilityPane.tooltip=\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30fb\u30da\u30a4\u30f3\u306e\u8868\u793a/\u975e\u8868\u793a +viewer.toolbar.utilityPane.label=\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30da\u30a4\u30f3 +viewer.toolbar.utilityPane.tooltip=\u30e6\u30fc\u30c6\u30a3\u30ea\u30c6\u30a3\u30da\u30a4\u30f3\u306e\u8868\u793a/\u975e\u8868\u793a viewer.toolbar.zoom.in.tooltip=\u30ba\u30fc\u30e0\u30a4\u30f3 viewer.toolbar.zoom.out.tooltip=\u30ba\u30fc\u30e0\u30a2\u30a6\u30c8 viewer.toolbar.zoom.tooltip=\u30ba\u30fc\u30e0 @@ -511,27 +514,27 @@ viewer.utilityPane.action.addAction=\u8ffd\u52a0 viewer.utilityPane.action.dialog.delete.msgs=\u3053\u306e\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u524a\u9664\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f viewer.utilityPane.action.dialog.delete.title=\u524a\u9664\u78ba\u8a8d viewer.utilityPane.action.dialog.goto.bottom.label=\u4e0b\uff1a -viewer.utilityPane.action.dialog.goto.browse=\u30d6\u30e9\u30a6\u30ba... +viewer.utilityPane.action.dialog.goto.browse=\u95b2\u89a7... viewer.utilityPane.action.dialog.goto.current=\u5834\u6240\u3092\u8a2d\u5b9a viewer.utilityPane.action.dialog.goto.current.label=\u73fe\u5728\u306e\u30d3\u30e5\u30fc\uff1a viewer.utilityPane.action.dialog.goto.explicitDestination.title=\u6697\u9ed9\u306e\u5b9b\u5148 viewer.utilityPane.action.dialog.goto.left.label=\u5de6\uff1a viewer.utilityPane.action.dialog.goto.name.label=\u540d\u524d\uff1a -viewer.utilityPane.action.dialog.goto.nameDestination.title=\u540d\u4ed8\u304d\u5b9b\u5148 -viewer.utilityPane.action.dialog.goto.nameTree.branch.label={0}\u301c{1} -viewer.utilityPane.action.dialog.goto.nameTree.root.label=\u540d\u524d\u30c4\u30ea\u30fc +viewer.utilityPane.action.dialog.goto.nameDestination.title=\u540d\u524d\u4ed8\u304d\u5b9b\u5148 +viewer.utilityPane.action.dialog.goto.nameTree.branch.label={0}\u304b\u3089{1} +viewer.utilityPane.action.dialog.goto.nameTree.root.label=\u30cd\u30fc\u30e0\u30c4\u30ea\u30fc viewer.utilityPane.action.dialog.goto.nameTree.title=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u540d\u30c4\u30ea\u30fc viewer.utilityPane.action.dialog.goto.page.label=\u30da\u30fc\u30b8\uff1a viewer.utilityPane.action.dialog.goto.right.label=\u53f3\uff1a -viewer.utilityPane.action.dialog.goto.title=GoTo\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u30d7\u30ed\u30d1\u30c6\u30a3 +viewer.utilityPane.action.dialog.goto.title=GoTo \u30a2\u30af\u30b7\u30e7\u30f3\u30fb\u30d7\u30ed\u30d1\u30c6\u30a3 viewer.utilityPane.action.dialog.goto.top.label=\u4e0a\uff1a viewer.utilityPane.action.dialog.goto.type.fit.label=\u30da\u30fc\u30b8\u306b\u5408\u308f\u305b\u308b viewer.utilityPane.action.dialog.goto.type.fitb.label=\u30da\u30fc\u30b8\u5883\u754c\u306b\u5408\u308f\u305b\u308b -viewer.utilityPane.action.dialog.goto.type.fitbh.label=\u5883\u754c\u3092\u4e0a\u306b\u5408\u308f\u305b\u308b -viewer.utilityPane.action.dialog.goto.type.fitbv.label=\u5883\u754c\u3092\u5de6\u306b\u5408\u308f\u305b\u308b -viewer.utilityPane.action.dialog.goto.type.fith.label=\u4e0a\u5e45\u306b\u5408\u308f\u305b\u308b +viewer.utilityPane.action.dialog.goto.type.fitbh.label=\u4e0a\u5883\u754c\u306b\u5408\u308f\u305b\u308b +viewer.utilityPane.action.dialog.goto.type.fitbv.label=\u5de6\u5883\u754c\u306b\u5408\u308f\u305b\u308b +viewer.utilityPane.action.dialog.goto.type.fith.label=\u4e0a\u90e8\u5e45\u3092\u5408\u308f\u305b\u308b viewer.utilityPane.action.dialog.goto.type.fitr.label=\u30ba\u30fc\u30e0\u30dc\u30c3\u30af\u30b9\u306b\u5408\u308f\u305b\u308b -viewer.utilityPane.action.dialog.goto.type.fitv.label=\u5de6\u306e\u5e45\u306b\u5408\u308f\u305b\u308b +viewer.utilityPane.action.dialog.goto.type.fitv.label=\u5de6\u5e45\u306b\u5408\u308f\u305b\u308b viewer.utilityPane.action.dialog.goto.type.label=\u30bf\u30a4\u30d7 viewer.utilityPane.action.dialog.goto.type.xyz.label=\u7d76\u5bfe viewer.utilityPane.action.dialog.goto.unassigned.label=NaN @@ -539,52 +542,52 @@ viewer.utilityPane.action.dialog.goto.zoom.label=\u30ba\u30fc\u30e0\uff1a viewer.utilityPane.action.dialog.launch.msgs=\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\uff1a viewer.utilityPane.action.dialog.launch.title=\u8d77\u52d5\u30a2\u30af\u30b7\u30e7\u30f3\u306e\u30d7\u30ed\u30d1\u30c6\u30a3 viewer.utilityPane.action.dialog.new.msgs=\u30a2\u30af\u30b7\u30e7\u30f3\u30bf\u30a4\u30d7\uff1a -viewer.utilityPane.action.dialog.new.title=\u65b0\u3057\u3044\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u8ffd\u52a0 +viewer.utilityPane.action.dialog.new.title=\u65b0\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u8ffd\u52a0 viewer.utilityPane.action.dialog.uri.msgs=URI\: -viewer.utilityPane.action.dialog.uri.title=URI\u30a2\u30af\u30b7\u30e7\u30f3\u30fb\u30d7\u30ed\u30d1\u30c6\u30a3 +viewer.utilityPane.action.dialog.uri.title=URI\u30a2\u30af\u30b7\u30e7\u30f3\u30d7\u30ed\u30d1\u30c6\u30a3 viewer.utilityPane.action.editAction=\u7de8\u96c6 viewer.utilityPane.action.removeAction=\u524a\u9664 viewer.utilityPane.action.selectionTitle=\u30a2\u30af\u30b7\u30e7\u30f3 -viewer.utilityPane.action.type.destination.label=\u9001\u4ed8\u5148 -viewer.utilityPane.action.type.goToAction.label=GoTo\u30a2\u30af\u30b7\u30e7\u30f3 +viewer.utilityPane.action.type.destination.label=\u5b9b\u5148 +viewer.utilityPane.action.type.goToAction.label=GoTo \u30a2\u30af\u30b7\u30e7\u30f3 viewer.utilityPane.action.type.launchAction.label=\u8d77\u52d5\u30a2\u30af\u30b7\u30e7\u30f3 viewer.utilityPane.action.type.uriAction.label=URI\u30a2\u30af\u30b7\u30e7\u30f3 viewer.utilityPane.annotation.border.beveled=\u9762\u53d6\u308a -viewer.utilityPane.annotation.border.borderType.invisibleRectangle=\u975e\u8868\u793a -viewer.utilityPane.annotation.border.borderType.visibleRectangle=\u8868\u793a -viewer.utilityPane.annotation.border.colorChooserTitle=\u67a0\u306e\u8272 +viewer.utilityPane.annotation.border.borderType.invisibleRectangle=\u900f\u660e +viewer.utilityPane.annotation.border.borderType.visibleRectangle=\u898b\u3048\u308b +viewer.utilityPane.annotation.border.colorChooserTitle=\u30dc\u30fc\u30c0\u8272 viewer.utilityPane.annotation.border.colorLabel=\u8272\uff1a viewer.utilityPane.annotation.border.dashed=\u7834\u7dda -viewer.utilityPane.annotation.border.inset=\u30a4\u30f3\u30bb\u30c3\u30c8 -viewer.utilityPane.annotation.border.lineStyle=\u67a0\u30b9\u30bf\u30a4\u30eb\uff1a -viewer.utilityPane.annotation.border.lineThickness=\u67a0\u306e\u5e45\uff1a -viewer.utilityPane.annotation.border.linkType=\u67a0\u306e\u7a2e\u985e +viewer.utilityPane.annotation.border.inset=\u633f\u5165\u56f3 +viewer.utilityPane.annotation.border.lineStyle=\u30dc\u30fc\u30c0\u30fc\u30b9\u30bf\u30a4\u30eb\uff1a +viewer.utilityPane.annotation.border.lineThickness=\u30dc\u30fc\u30c0\u30fc\u5e45\uff1a +viewer.utilityPane.annotation.border.linkType=\u30dc\u30fc\u30c0\u30fc\u30bf\u30a4\u30d7\uff1a viewer.utilityPane.annotation.border.solid=\u5b9f\u7dda -viewer.utilityPane.annotation.border.title=\u67a0 +viewer.utilityPane.annotation.border.title=\u30dc\u30fc\u30c0\u30fc viewer.utilityPane.annotation.border.underline=\u4e0b\u7dda -viewer.utilityPane.annotation.circle.appearance.title=\u5186\u6ce8\u91c8 -viewer.utilityPane.annotation.circle.colorBorderChooserTitle=\u67a0\u306e\u8272 -viewer.utilityPane.annotation.circle.colorBorderLabel=\u67a0\u8272 -viewer.utilityPane.annotation.circle.colorInteriorChooserTitle=\u5185\u5074\u8272 +viewer.utilityPane.annotation.circle.appearance.title=\u5186\u578b\u6ce8\u91c8 +viewer.utilityPane.annotation.circle.colorBorderChooserTitle=\u30dc\u30fc\u30c0\u8272 +viewer.utilityPane.annotation.circle.colorBorderLabel=\u30dc\u30fc\u30c0\u306e\u8272\uff1a +viewer.utilityPane.annotation.circle.colorInteriorChooserTitle=\u5185\u90e8\u30ab\u30e9\u30fc viewer.utilityPane.annotation.circle.colorInteriorLabel=\u5857\u308a\u3064\u3076\u3057\u8272\uff1a viewer.utilityPane.annotation.circle.fillTypeLabel=\u5857\u308a\u3064\u3076\u3057\u30bf\u30a4\u30d7\uff1a -viewer.utilityPane.annotation.circle.lineStyle=\u67a0\u30b9\u30bf\u30a4\u30eb\uff1a -viewer.utilityPane.annotation.circle.lineThickness=\u67a0\u5e45\uff1a +viewer.utilityPane.annotation.circle.lineStyle=\u30dc\u30fc\u30c0\u30fc\u30b9\u30bf\u30a4\u30eb\uff1a +viewer.utilityPane.annotation.circle.lineThickness=\u30dc\u30fc\u30c0\u30fc\u5e45\uff1a viewer.utilityPane.annotation.circle.transparencyLabel=\u900f\u660e\u5ea6\uff1a viewer.utilityPane.annotation.flags.disabled=\u7121\u52b9 viewer.utilityPane.annotation.flags.enabled=\u6709\u52b9 viewer.utilityPane.annotation.flags.noRotate=\u56de\u8ee2\u306a\u3057\uff1a viewer.utilityPane.annotation.flags.noZoom=\u30ba\u30fc\u30e0\u306a\u3057\uff1a viewer.utilityPane.annotation.flags.printable=\u5370\u5237\u53ef\u80fd\uff1a -viewer.utilityPane.annotation.flags.readOnly=\u8aad\u307f\u53d6\u308a\u5c02\u7528\uff1a -viewer.utilityPane.annotation.flags.title=\u5370 +viewer.utilityPane.annotation.flags.readOnly=\u8aad\u53d6\u5c02\u7528\uff1a +viewer.utilityPane.annotation.flags.title=\u30d5\u30e9\u30b0 viewer.utilityPane.annotation.flags.yes=\u5370\u5237\u53ef\u80fd\uff1a viewer.utilityPane.annotation.freeText.appearance.title=\u30d5\u30ea\u30fc\u30c6\u30ad\u30b9\u30c8\u6ce8\u91c8 -viewer.utilityPane.annotation.freeText.border.color=\u67a0\u8272 -viewer.utilityPane.annotation.freeText.border.color.ChooserTitle=\u67a0\u306e\u8272 -viewer.utilityPane.annotation.freeText.border.style=\u67a0\u306e\u30b9\u30bf\u30a4\u30eb +viewer.utilityPane.annotation.freeText.border.color=\u30dc\u30fc\u30c0\u8272\uff1a +viewer.utilityPane.annotation.freeText.border.color.ChooserTitle=\u30dc\u30fc\u30c0\u8272 +viewer.utilityPane.annotation.freeText.border.style=\u30dc\u30fc\u30c0\u30fc\u30b9\u30bf\u30a4\u30eb\uff1a viewer.utilityPane.annotation.freeText.border.thickness=\u30dc\u30fc\u30c0\u30fc\u5e45\uff1a -viewer.utilityPane.annotation.freeText.border.type=\u67a0\u30bf\u30a4\u30d7\uff1a +viewer.utilityPane.annotation.freeText.border.type=\u30dc\u30fc\u30c0\u30fc\u30bf\u30a4\u30d7\uff1a viewer.utilityPane.annotation.freeText.fill.color=\u5857\u308a\u3064\u3076\u3057\u8272\uff1a viewer.utilityPane.annotation.freeText.fill.color.ChooserTitle=\u5857\u308a\u3064\u3076\u3057\u8272 viewer.utilityPane.annotation.freeText.fill.type=\u5857\u308a\u3064\u3076\u3057\u30bf\u30a4\u30d7\uff1a @@ -592,7 +595,7 @@ viewer.utilityPane.annotation.freeText.font.color=\u30d5\u30a9\u30f3\u30c8\u8272 viewer.utilityPane.annotation.freeText.font.color.ChooserTitle=\u30d5\u30a9\u30f3\u30c8\u8272 viewer.utilityPane.annotation.freeText.font.dialog=\u30c0\u30a4\u30a2\u30ed\u30b0 viewer.utilityPane.annotation.freeText.font.dialogInput=\u30c0\u30a4\u30a2\u30ed\u30b0\u5165\u529b -viewer.utilityPane.annotation.freeText.font.monospaced=Monospaced +viewer.utilityPane.annotation.freeText.font.monospaced=\u7b49\u5e45 viewer.utilityPane.annotation.freeText.font.name=\u30d5\u30a9\u30f3\u30c8\u540d\uff1a viewer.utilityPane.annotation.freeText.font.name.HelveticaBoldOblique=Helvetica-BoldOblique viewer.utilityPane.annotation.freeText.font.name.courier=Courier @@ -610,115 +613,116 @@ viewer.utilityPane.annotation.freeText.font.sanSerif=SansSerif viewer.utilityPane.annotation.freeText.font.serif=Serif viewer.utilityPane.annotation.freeText.font.size=\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba\uff1a viewer.utilityPane.annotation.freeText.font.style=\u30d5\u30a9\u30f3\u30c8\u30b9\u30bf\u30a4\u30eb\uff1a -viewer.utilityPane.annotation.freeText.font.style.bold=Bold +viewer.utilityPane.annotation.freeText.font.style.bold=\u30dc\u30fc\u30eb\u30c9 viewer.utilityPane.annotation.freeText.font.style.italic=Italic -viewer.utilityPane.annotation.freeText.font.style.plain=Plain +viewer.utilityPane.annotation.freeText.font.style.plain=\u7121\u5730 viewer.utilityPane.annotation.freeText.transparencyLabel=\u900f\u660e\u5ea6\uff1a viewer.utilityPane.annotation.ink.appearance.title=\u30a4\u30f3\u30af\u6ce8\u91c8 viewer.utilityPane.annotation.ink.colorBorderChooserTitle=\u30a4\u30f3\u30af\u8272 viewer.utilityPane.annotation.ink.colorBorderLabel=\u30a4\u30f3\u30af\u8272\uff1a viewer.utilityPane.annotation.ink.lineStyle=\u30a4\u30f3\u30af\u30b9\u30bf\u30a4\u30eb\uff1a -viewer.utilityPane.annotation.ink.lineThickness=\u30a4\u30f3\u30af\u5e45\uff1a +viewer.utilityPane.annotation.ink.lineThickness=\u30a4\u30f3\u30af\u306e\u539a\u3055\uff1a viewer.utilityPane.annotation.ink.transparencyLabel=\u900f\u660e\u5ea6\uff1a -viewer.utilityPane.annotation.line.appearance.title=\u30e9\u30a4\u30f3\u6ce8\u91c8 -viewer.utilityPane.annotation.line.colorChooserTitle=\u30e9\u30a4\u30f3\u8272 +viewer.utilityPane.annotation.line.appearance.title=\u7dda\u6ce8\u91c8 +viewer.utilityPane.annotation.line.colorChooserTitle=\u7dda\u306e\u8272 viewer.utilityPane.annotation.line.colorInternalChooserTitle=\u7dda\u306e\u5185\u90e8\u8272 -viewer.utilityPane.annotation.line.colorInternalLabel=\u5857\u308a\u3064\u3076\u3057\u306e\u8272\uff1a +viewer.utilityPane.annotation.line.colorInternalLabel=\u5857\u308a\u3064\u3076\u3057\u8272\uff1a viewer.utilityPane.annotation.line.colorLabel=\u8272\uff1a -viewer.utilityPane.annotation.line.end.circle=\u4e38 +viewer.utilityPane.annotation.line.end.circle=\u5186 viewer.utilityPane.annotation.line.end.closedArrow=\u9589\u77e2\u5370 viewer.utilityPane.annotation.line.end.diamond=\u30c0\u30a4\u30e4\u30e2\u30f3\u30c9 -viewer.utilityPane.annotation.line.end.none=\u306a\u3057 +viewer.utilityPane.annotation.line.end.none=\u7121\u3057 viewer.utilityPane.annotation.line.end.openArrow=\u958b\u77e2\u5370 -viewer.utilityPane.annotation.line.end.square=\u56db\u89d2 +viewer.utilityPane.annotation.line.end.square=\u6b63\u65b9\u5f62 viewer.utilityPane.annotation.line.endStyle=\u7d42\u4e86\uff1a -viewer.utilityPane.annotation.line.lineStyle=\u7dda\u306e\u30b9\u30bf\u30a4\u30eb\uff1a -viewer.utilityPane.annotation.line.lineThickness=\u7dda\u5e45\uff1a -viewer.utilityPane.annotation.line.startStyle=\u958b\u59cb\uff1a +viewer.utilityPane.annotation.line.lineStyle=\u30e9\u30a4\u30f3\u30b9\u30bf\u30a4\u30eb\uff1a +viewer.utilityPane.annotation.line.lineThickness=\u7dda\u306e\u592a\u3055\uff1a +viewer.utilityPane.annotation.line.startStyle=\u30b9\u30bf\u30fc\u30c8\uff1a viewer.utilityPane.annotation.line.transparencyLabel=\u900f\u660e\u5ea6\uff1a viewer.utilityPane.annotation.link.appearance.title=\u30ea\u30f3\u30af\u6ce8\u91c8 -viewer.utilityPane.annotation.link.highlightType=\u30cf\u30a4\u30e9\u30a4\u30c8\u30fb\u30b9\u30bf\u30a4\u30eb\uff1a -viewer.utilityPane.annotation.link.invert=\u53cd\u8ee2 ` -viewer.utilityPane.annotation.link.none=\u306a\u3057 +viewer.utilityPane.annotation.link.highlightType=\u30cf\u30a4\u30e9\u30a4\u30c8\u30b9\u30bf\u30a4\u30eb\uff1a +viewer.utilityPane.annotation.link.invert=\u9006 ` +viewer.utilityPane.annotation.link.none=\u7121\u3057 viewer.utilityPane.annotation.link.outline=\u30a2\u30a6\u30c8\u30e9\u30a4\u30f3 viewer.utilityPane.annotation.link.push=\u62bc\u3059 -viewer.utilityPane.annotation.square.appearance.title=\u6b63\u65b9\u5f62\u6ce8\u91c8 -viewer.utilityPane.annotation.square.borderTypeLabel=\u67a0\u30bf\u30a4\u30d7\uff1a -viewer.utilityPane.annotation.square.colorBorderChooserTitle=\u67a0\u8272 -viewer.utilityPane.annotation.square.colorBorderLabel=\u67a0\u8272\uff1a -viewer.utilityPane.annotation.square.colorInteriorChooserTitle=\u5857\u308a\u3064\u3076\u3057\u306e\u8272 +viewer.utilityPane.annotation.square.appearance.title=\u56db\u89d2\u578b\u6ce8\u91c8 +viewer.utilityPane.annotation.square.borderTypeLabel=\u30dc\u30fc\u30c0\u30fc\u30bf\u30a4\u30d7\uff1a +viewer.utilityPane.annotation.square.colorBorderChooserTitle=\u30dc\u30fc\u30c0\u30fc\u8272 +viewer.utilityPane.annotation.square.colorBorderLabel=\u30dc\u30fc\u30c0\u8272\uff1a +viewer.utilityPane.annotation.square.colorInteriorChooserTitle=\u5857\u308a\u3064\u3076\u3057\u8272 viewer.utilityPane.annotation.square.colorInteriorLabel=\u5857\u308a\u3064\u3076\u3057\u8272\uff1a viewer.utilityPane.annotation.square.fillTypeLabel=\u5857\u308a\u3064\u3076\u3057\u30bf\u30a4\u30d7\uff1a -viewer.utilityPane.annotation.square.lineStyle=\u67a0\u30b9\u30bf\u30a4\u30eb\uff1a -viewer.utilityPane.annotation.square.lineThickness=\u67a0\u5e45\uff1a +viewer.utilityPane.annotation.square.lineStyle=\u30dc\u30fc\u30c0\u30fc\u30b9\u30bf\u30a4\u30eb\uff1a +viewer.utilityPane.annotation.square.lineThickness=\u30dc\u30fc\u30c0\u30fc\u5e45\uff1a viewer.utilityPane.annotation.square.transparencyLabel=\u900f\u660e\u5ea6\uff1a viewer.utilityPane.annotation.tab.title=\u6ce8\u91c8 viewer.utilityPane.annotation.text.appearance.title=\u30c6\u30ad\u30b9\u30c8\u6ce8\u91c8 viewer.utilityPane.annotation.text.iconName=\u30a2\u30a4\u30b3\u30f3\uff1a viewer.utilityPane.annotation.text.iconName.check=\u30c1\u30a7\u30c3\u30af viewer.utilityPane.annotation.text.iconName.checkMark=\u30c1\u30a7\u30c3\u30af\u30de\u30fc\u30af -viewer.utilityPane.annotation.text.iconName.circle=\u4e38 +viewer.utilityPane.annotation.text.iconName.circle=\u5186 viewer.utilityPane.annotation.text.iconName.comment=\u30b3\u30e1\u30f3\u30c8 viewer.utilityPane.annotation.text.iconName.cross=\u5341\u5b57 viewer.utilityPane.annotation.text.iconName.crossHairs=\u5341\u5b57\u7dda viewer.utilityPane.annotation.text.iconName.help=\u30d8\u30eb\u30d7 -viewer.utilityPane.annotation.text.iconName.insert=\u5dee\u5165\u308c +viewer.utilityPane.annotation.text.iconName.insert=\u5dee\u3057\u5165\u308c viewer.utilityPane.annotation.text.iconName.key=\u30ad\u30fc viewer.utilityPane.annotation.text.iconName.newParagraph=\u65b0\u6bb5\u843d viewer.utilityPane.annotation.text.iconName.paragraph=\u6bb5\u843d viewer.utilityPane.annotation.text.iconName.rightArrow=\u53f3\u77e2\u5370 -viewer.utilityPane.annotation.text.iconName.rightPointer=\u53f3\u30dd\u30a4\u30f3\u30bf\u30fc +viewer.utilityPane.annotation.text.iconName.rightPointer=\u53f3\u30dd\u30a4\u30f3\u30bf viewer.utilityPane.annotation.text.iconName.star=\u661f viewer.utilityPane.annotation.text.iconName.upArrow=\u4e0a\u77e2\u5370 -viewer.utilityPane.annotation.text.iconName.upLeftArrow=\u5de6\u4e0a\u77e2\u5370 +viewer.utilityPane.annotation.text.iconName.upLeftArrow=\u4e0a\u5de6\u77e2\u5370 viewer.utilityPane.annotation.textMarkup.appearance.title=\u30c6\u30ad\u30b9\u30c8\u30de\u30fc\u30af\u30a2\u30c3\u30d7\u6ce8\u91c8 -viewer.utilityPane.annotation.textMarkup.colorChooserTitle=\u30de\u30fc\u30af\u30a2\u30c3\u30d7\u8272 +viewer.utilityPane.annotation.textMarkup.colorChooserTitle=\u30de\u30fc\u30af\u30a2\u30c3\u30d7\u30ab\u30e9\u30fc viewer.utilityPane.annotation.textMarkup.colorLabel=\u8272\uff1a -viewer.utilityPane.annotation.textMarkup.highlightType=\u7a2e\u985e\uff1a +viewer.utilityPane.annotation.textMarkup.highlightType=\u30bf\u30a4\u30d7\uff1a viewer.utilityPane.annotation.textMarkup.transparencyLabel=\u900f\u660e\u5ea6\uff1a viewer.utilityPane.attachments.column.compressedSize.title=\u5727\u7e2e\u30b5\u30a4\u30ba viewer.utilityPane.attachments.column.description.title=\u8aac\u660e viewer.utilityPane.attachments.column.fileName.title=\u540d\u524d +viewer.utilityPane.attachments.column.modified.title=\u5909\u66f4 viewer.utilityPane.attachments.column.size.title=\u30b5\u30a4\u30ba -viewer.utilityPane.attachments.menu.saveAs.label=\u540d\u524d\u3092\u4ed8\u3051\u3066\u4fdd\u5b58\u2026 -viewer.utilityPane.attachments.saveAs.replace.msg=\u30d5\u30a1\u30a4\u30eb{0}\u30d5\u30a1\u30a4\u30eb\u306f\u65e2\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 \u66f8\u304d\u63db\u3048\u307e\u3059\u304b\uff1f -viewer.utilityPane.attachments.saveAs.replace.title=ICEsoft ICEpdf-\u4fdd\u5b58\u30a8\u30e9\u30fc -viewer.utilityPane.attachments.tab.title=\u30a2\u30bf\u30c3\u30c1\u30e1\u30f3\u30c8 +viewer.utilityPane.attachments.menu.saveAs.label=\u540d\u524d\u3092\u4ed8\u3051\u3066\u4fdd\u5b58... +viewer.utilityPane.attachments.saveAs.replace.msg={0}\u3068\u3044\u3046\u540d\u524d\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 \u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b\uff1f +viewer.utilityPane.attachments.saveAs.replace.title=ICEsoft ICEpdf - \u4fdd\u5b58\u30a8\u30e9\u30fc +viewer.utilityPane.attachments.tab.title=\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb viewer.utilityPane.bookmarks.tab.title=\u30d6\u30c3\u30af\u30de\u30fc\u30af viewer.utilityPane.layers.tab.title=\u30ec\u30a4\u30e4\u30fc viewer.utilityPane.search.caseSenstiveCheckbox.label=\u5927\u30fb\u5c0f\u6587\u5b57\u3092\u533a\u5225 -viewer.utilityPane.search.clearSearchButton.label=\u7a7a\u767d +viewer.utilityPane.search.clearSearchButton.label=\u30af\u30ea\u30a2\u30fc viewer.utilityPane.search.cumlitiveCheckbox.label=\u7d2f\u8a08 -viewer.utilityPane.search.progress.moreMatch.msg={2}\u4ef6\u4e00\u81f4 +viewer.utilityPane.search.progress.moreMatch.msg={2}\u4e00\u81f4 viewer.utilityPane.search.progress.morePage.msg=\u30da\u30fc\u30b8 -viewer.utilityPane.search.progress.msg=\u691c\u7d22{0} {1}\uff08{2}\uff09 +viewer.utilityPane.search.progress.msg=\u691c\u7d22\u3055\u308c\u305f{0} {1}\uff08{2}\uff09 viewer.utilityPane.search.progress.oneMatch.msg={2}\u4e00\u81f4 viewer.utilityPane.search.progress.onePage.msg=\u30da\u30fc\u30b8 -viewer.utilityPane.search.result.moreFile.msg={2}\u4ef6\u306e\u7d50\u679c -viewer.utilityPane.search.result.msg={0}\u30da\u30fc\u30b8\uff08{1}\uff09 +viewer.utilityPane.search.result.moreFile.msg={2}\u7d50\u679c +viewer.utilityPane.search.result.msg=\u30da\u30fc\u30b8{0}\uff08{1}\uff09 viewer.utilityPane.search.result.oneFile.msg={2}\u7d50\u679c viewer.utilityPane.search.results.label=\u7d50\u679c\uff1a viewer.utilityPane.search.searchButton.label=\u691c\u7d22 viewer.utilityPane.search.searchText.label=\u691c\u7d22\u30c6\u30ad\u30b9\u30c8\uff1a -viewer.utilityPane.search.searching.msg=\u691c\u7d22\u2026 +viewer.utilityPane.search.searching.msg=\u691c\u7d22... viewer.utilityPane.search.searching1.moreFile.msg={2}\u30da\u30fc\u30b8 -viewer.utilityPane.search.searching1.msg={1}\u4e2d{0}\u3092\u691c\u7d22 -viewer.utilityPane.search.searching1.oneFile.msg={2}\u30da\u30fc\u30b8 +viewer.utilityPane.search.searching1.msg={1}\u304b\u3089{0}\u3092\u691c\u7d22 +viewer.utilityPane.search.searching1.oneFile.msg={2} \u30da\u30fc\u30b8 viewer.utilityPane.search.showPagesCheckbox.label=\u30da\u30fc\u30b8\u3092\u8868\u793a -viewer.utilityPane.search.stopButton.label=\u505c\u6b62 +viewer.utilityPane.search.stopButton.label=\u3084\u3081\u308b viewer.utilityPane.search.tab.title=\u691c\u7d22 -viewer.utilityPane.search.wholeWordCheckbox.label=\u5168\u6587\u306e\u307f +viewer.utilityPane.search.wholeWordCheckbox.label=\u5358\u8a9e\u5168\u4f53\u306e\u307f viewer.utilityPane.signatures.cert.dialog.closeButton.label=\u9589\u3058\u308b viewer.utilityPane.signatures.cert.dialog.closeButton.mnemonic=C viewer.utilityPane.signatures.cert.dialog.info.certificateInfo.label={0} - {1} viewer.utilityPane.signatures.cert.dialog.info.column1.label=\u30d5\u30a3\u30fc\u30eb\u30c9 viewer.utilityPane.signatures.cert.dialog.info.column2.label=\u5024 viewer.utilityPane.signatures.cert.dialog.info.issuer.label=\u767a\u884c\u8005 -viewer.utilityPane.signatures.cert.dialog.info.issuer.value=\u7d44\u7e54\uff1a{0}\n\u90e8\u9580\uff1a{1}\n\u4e00\u822c\u540d\uff1a{2}\n\u30ed\u30fc\u30ab\u30eb\uff1a{3}\n\u5dde\uff1a{4}\n\u56fd\uff1a{5}\n\u30e1\u30fc\u30eb\uff1a{6} +viewer.utilityPane.signatures.cert.dialog.info.issuer.value=\u7d44\u7e54\uff1a{0}\n\u7d44\u7e54\u5358\u4f4d\uff1a{1}\n\u4e00\u822c\u540d\uff1a{2}\n\u30ed\u30fc\u30ab\u30eb\uff1a{3}\n\u5dde\u30fb\u770c\uff1a{4}\n\u56fd\uff1a{5}\n\u30e1\u30fc\u30eb\uff1a{6} viewer.utilityPane.signatures.cert.dialog.info.md5.label=MD5\u30d5\u30a3\u30f3\u30ac\u30fc\u30d7\u30ea\u30f3\u30c8 viewer.utilityPane.signatures.cert.dialog.info.md5.value={0} -viewer.utilityPane.signatures.cert.dialog.info.notAvailable.label=\u5229\u7528\u4e0d\u53ef -viewer.utilityPane.signatures.cert.dialog.info.serialNumber.label=\u30b7\u30ea\u30a2\u30eb\u756a\u53f7 +viewer.utilityPane.signatures.cert.dialog.info.notAvailable.label=N/A +viewer.utilityPane.signatures.cert.dialog.info.serialNumber.label=\u30b7\u30ea\u30a2\u30eb\u30ca\u30f3\u30d0\u30fc viewer.utilityPane.signatures.cert.dialog.info.serialNumber.value={0} viewer.utilityPane.signatures.cert.dialog.info.sha1.label=SHA1\u30d5\u30a3\u30f3\u30ac\u30fc\u30d7\u30ea\u30f3\u30c8 viewer.utilityPane.signatures.cert.dialog.info.sha1.value={0} @@ -726,38 +730,38 @@ viewer.utilityPane.signatures.cert.dialog.info.signature.label=\u7f72\u540d viewer.utilityPane.signatures.cert.dialog.info.signatureAlgorithm.label=\u7f72\u540d\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0 viewer.utilityPane.signatures.cert.dialog.info.signatureAlgorithm.value={0} viewer.utilityPane.signatures.cert.dialog.info.subject.label=\u4ef6\u540d -viewer.utilityPane.signatures.cert.dialog.info.subject.value=\u7d44\u7e54\uff1a{0}\n\u90e8\u9580\uff1a{1}\n\u4e00\u822c\u540d\uff1a{2}\n\u30ed\u30fc\u30ab\u30eb\uff1a{3}\n\u5dde\uff1a{4}\n\u56fd\uff1a{5}\n\u30e1\u30fc\u30eb\uff1a{6} -viewer.utilityPane.signatures.cert.dialog.info.unknownIssuer.label=\u767a\u884c\u8005\u4e0d\u660e -viewer.utilityPane.signatures.cert.dialog.info.unknownSubject.label=\u8a72\u5f53\u306a\u3057 -viewer.utilityPane.signatures.cert.dialog.info.validity.label=\u6709\u52b9 -viewer.utilityPane.signatures.cert.dialog.info.validity.value=\u5dee\u51fa\uff1a{0}\n\u5b9b\u5148\uff1a{1} +viewer.utilityPane.signatures.cert.dialog.info.subject.value=\u7d44\u7e54\uff1a{0}\n\u7d44\u7e54\u5358\u4f4d\uff1a{1}\n\u4e00\u822c\u540d\uff1a{2}\n\u4f4f\u6240\uff1a{3}\n\u5dde\u30fb\u770c\uff1a{4}\n\u56fd\uff1a{5}\n\u30e1\u30fc\u30eb\uff1a{6} +viewer.utilityPane.signatures.cert.dialog.info.unknownIssuer.label=\u8a72\u5f53\u306a\u3057\u767a\u884c\u8005 +viewer.utilityPane.signatures.cert.dialog.info.unknownSubject.label=\u8a72\u5f53\u306a\u3057\u4ef6\u540d +viewer.utilityPane.signatures.cert.dialog.info.validity.label=\u59a5\u5f53\u6027 +viewer.utilityPane.signatures.cert.dialog.info.validity.value=\u5dee\u51fa\u4eba\uff1a{0}\n \u5b9b\u5148\uff1a{1} viewer.utilityPane.signatures.cert.dialog.info.version.label=\u30d0\u30fc\u30b8\u30e7\u30f3 viewer.utilityPane.signatures.cert.dialog.info.version.value=v{0} viewer.utilityPane.signatures.cert.dialog.title=\u8a3c\u660e\u66f8\u306e\u8a73\u7d30 viewer.utilityPane.signatures.tab.certTree.cert.invalid.label=\u7f72\u540d\u304c\u7121\u52b9\u3067\u3059\uff1a viewer.utilityPane.signatures.tab.certTree.cert.unknown.label=\u7f72\u540d\u306f\u6709\u52b9\u3067\u3059\uff1a viewer.utilityPane.signatures.tab.certTree.cert.valid.label=\u7f72\u540d\u306e\u6709\u52b9\u6027\u306f\u4e0d\u660e\u3067\u3059\uff1a -viewer.utilityPane.signatures.tab.certTree.doc.major.label=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u7f72\u540d\u5f8c\u306b\u5909\u66f4\u307e\u305f\u306f\u7834\u640d\u3057\u3066\u3044\u307e\u3059 -viewer.utilityPane.signatures.tab.certTree.doc.modified.label=\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u5909\u66f4\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u5909\u66f4\u304c\u52a0\u3048\u3089\u308c\u3066\u3044\u307e\u3059 -viewer.utilityPane.signatures.tab.certTree.doc.unmodified.label=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u7f72\u540d\u3055\u308c\u3066\u304b\u3089\u5909\u66f4\u3055\u308c\u3066\u3044\u307e\u305b\u3093 -viewer.utilityPane.signatures.tab.certTree.error.label=\u7f72\u540d\u7121\u3057\u7f72\u540d\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u3092\u691c\u8a3c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f{0} {1} +viewer.utilityPane.signatures.tab.certTree.doc.major.label=\u7f72\u540d\u5f8c\u306b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u304c\u5909\u66f4\u307e\u305f\u306f\u7834\u640d\u3057\u3066\u3044\u308b +viewer.utilityPane.signatures.tab.certTree.doc.modified.label=\u3053\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u5909\u66f4\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u304c\u3001\u305d\u306e\u5f8c\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u306b\u306f\u5909\u66f4\u304c\u52a0\u3048\u3089\u308c\u3066\u3044\u307e\u3059 +viewer.utilityPane.signatures.tab.certTree.doc.unmodified.label=\u7f72\u540d\u5f8c\u306b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u5909\u66f4\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +viewer.utilityPane.signatures.tab.certTree.error.label=\u7f72\u540d\u3055\u308c\u3066\u3044\u306a\u3044\u30d5\u30a3\u30fc\u30eb\u30c9\u306e\u7f72\u540d\u8005\u8a3c\u660e\u66f8\u3092\u691c\u8a3c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f{0} {1} viewer.utilityPane.signatures.tab.certTree.rootSigned.label={0} {1}\u306b\u3088\u308b\u7f72\u540d viewer.utilityPane.signatures.tab.certTree.rootValidating.label=\u7f72\u540d\u306e\u691c\u8a3c{0} {1} -viewer.utilityPane.signatures.tab.certTree.signature.details.full.label=\u8a3c\u660e\u66f8\u306e\u8a73\u7d30\u2026 +viewer.utilityPane.signatures.tab.certTree.signature.details.full.label=\u8a3c\u660e\u66f8\u306e\u8a73\u7d30... viewer.utilityPane.signatures.tab.certTree.signature.details.label=\u7f72\u540d\u306e\u8a73\u7d30 viewer.utilityPane.signatures.tab.certTree.signature.details.location.label=\u5834\u6240\uff1a{0} viewer.utilityPane.signatures.tab.certTree.signature.details.reason.label=\u7406\u7531\uff1a{0} -viewer.utilityPane.signatures.tab.certTree.signature.identity.unchecked.label=\u7f72\u540d\u306f\u6709\u52b9\u3067\u3059\u304c\u3001\u7f72\u540d\u8005\u306eID\u306e\u53d6\u308a\u6d88\u3057\u3092\u78ba\u8a8d\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -viewer.utilityPane.signatures.tab.certTree.signature.identity.unknown.label=keystore\u306b\u898b\u3064\u304b\u3089\u306a\u304b\u3063\u305f\u305f\u3081\u3001\u7f72\u540d\u8005\u306eID\u306f\u4e0d\u660e\u3067\u3059 +viewer.utilityPane.signatures.tab.certTree.signature.identity.unchecked.label=\u7f72\u540d\u306f\u6709\u52b9\u3067\u3059\u304c\u3001\u7f72\u540d\u8005\u306eID\u306e\u5931\u52b9\u3092\u78ba\u8a8d\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +viewer.utilityPane.signatures.tab.certTree.signature.identity.unknown.label=\u30ad\u30fc\u30b9\u30c8\u30a2\u3067\u7f72\u540d\u8005\u306eID\u304c\u898b\u3064\u304b\u3089\u306a\u304b\u3063\u305f\u305f\u3081\u3001ID\u306f\u4e0d\u660e\u3067\u3059\u3002 viewer.utilityPane.signatures.tab.certTree.signature.identity.valid.label=\u7f72\u540d\u8005\u306eID\u306f\u6709\u52b9\u3067\u3059 -viewer.utilityPane.signatures.tab.certTree.signature.lastChecked.label=\u6700\u7d42\u78ba\u8a8d\u65e5\uff1a{0} -viewer.utilityPane.signatures.tab.certTree.signature.time.embedded.label=\u7f72\u540d\u306b\u306f\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u304c\u57cb\u3081\u8fbc\u307e\u308c\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u691c\u8a3c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -viewer.utilityPane.signatures.tab.certTree.signature.time.local.label=\u7f72\u540d\u6642\u523b\u306f\u3053\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u306e\u6642\u8a08\u304b\u3089\u3067\u3059 -viewer.utilityPane.signatures.tab.certTree.unsigned.label=\u7a7a\u767d\u306e\u7f72\u540d\u30d5\u30a3\u30fc\u30eb\u30c9 +viewer.utilityPane.signatures.tab.certTree.signature.lastChecked.label=\u524d\u56de\u30c1\u30a7\u30c3\u30af\uff1a{0} +viewer.utilityPane.signatures.tab.certTree.signature.time.embedded.label=\u7f72\u540d\u306b\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3057\u305f\u304c\u3001\u691c\u8a3c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +viewer.utilityPane.signatures.tab.certTree.signature.time.local.label=\u7f72\u540d\u6642\u9593\u306f\u3001\u7f72\u540d\u8005\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u6642\u523b\u3092\u4f7f\u7528 +viewer.utilityPane.signatures.tab.certTree.unsigned.label=\u7121\u8a18\u5165\u306e\u7f72\u540d\u30d5\u30a3\u30fc\u30eb\u30c9 viewer.utilityPane.signatures.tab.title=\u7f72\u540d viewer.utilityPane.signatures.verify.completeMessage.label=\u691c\u8a3c\u30d7\u30ed\u30bb\u30b9\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f -viewer.utilityPane.signatures.verify.initializingMessage.label={1}\u500b\u4e2d{0}\u500b\u306e\u7f72\u540d\u3092\u691c\u8a3c\u3057\u3066\u3044\u307e\u3059 -viewer.utilityPane.signatures.verify.validating.label=\u7f72\u540d\u3092\u691c\u8a3c\u3057\u3066\u3044\u307e\u3059... +viewer.utilityPane.signatures.verify.initializingMessage.label={1}\u7f72\u540d\u306e{0}\u3092\u691c\u8a3c\u3057\u3066\u3044\u307e\u3059 +viewer.utilityPane.signatures.verify.validating.label=\u7f72\u540d\u306e\u691c\u8a3c... viewer.utilityPane.thumbs.tab.title=\u30b5\u30e0\u30cd\u30a4\u30eb -viewer.window.title.default=ICEpdf\u30d3\u30e5\u30fc\u30a2 -viewer.window.title.open.default=ICEpdf\u30d3\u30e5\u30fc\u30a2-[{0}] +viewer.window.title.default=ICEpdf Viewer +viewer.window.title.open.default=IICEpdf Viewer - [{0}] diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/artifactviewers/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/artifactviewers/Bundle_ja.properties index c76255ef36..88ac8cd65e 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/artifactviewers/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/artifactviewers/Bundle_ja.properties @@ -1,69 +1,101 @@ -#Tue Aug 18 18:09:20 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 CallLogArtifactViewer_heading_Source=\u30bd\u30fc\u30b9 CallLogArtifactViewer_heading_metadata=\u30e1\u30bf\u30c7\u30fc\u30bf CallLogArtifactViewer_heading_others=\u305d\u306e\u4ed6\u306e\u5c5e\u6027 -CallLogArtifactViewer_heading_parties=\u96c6\u56e3 -CallLogArtifactViewer_label_datasource=\u30c7\u30fc\u30bf\u30fb\u30bd\u30fc\u30b9 +CallLogArtifactViewer_heading_parties=\u56e3\u4f53 +CallLogArtifactViewer_label_datasource=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 CallLogArtifactViewer_label_date=\u65e5\u4ed8 CallLogArtifactViewer_label_direction=\u65b9\u5411 -CallLogArtifactViewer_label_duration=\u671f\u9593 +CallLogArtifactViewer_label_duration=\u671f\u9650 CallLogArtifactViewer_label_from=\u5dee\u51fa\u4eba CallLogArtifactViewer_label_to=\u5b9b\u5148 CallLogArtifactViewer_suffix_local=\uff08\u30ed\u30fc\u30ab\u30eb\uff09 CallLogArtifactViewer_value_unknown=\u4e0d\u660e -CalllogArtifactViewer_cr_disabled_message=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u304c\u30da\u30eb\u30bd\u30ca\u3092\u8868\u793a\u3001\u4f5c\u6210\u3001\u7de8\u96c6\u53ef\u80fd\u306b\u3059\u308b\u3002 +CalllogArtifactViewer_cr_disabled_message=\u30da\u30eb\u30bd\u30ca\u3092\u8868\u793a\u3001\u4f5c\u6210\u3001\u7de8\u96c6\u3092\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002 +CommunicationArtifactViewerHelper_contact_label=\u9023\u7d61\u5148\uff1a{0} +CommunicationArtifactViewerHelper_contact_label_unknown=\u4e0d\u660e CommunicationArtifactViewerHelper_menuitem_copy=\u30b3\u30d4\u30fc CommunicationArtifactViewerHelper_persona_button_create=\u4f5c\u6210 CommunicationArtifactViewerHelper_persona_button_view=\u8868\u793a CommunicationArtifactViewerHelper_persona_label=\u30da\u30eb\u30bd\u30ca\uff1a -CommunicationArtifactViewerHelper_persona_searching=\u691c\u7d22\u4e2d... +CommunicationArtifactViewerHelper_persona_searching=\u691c\u7d22... CommunicationArtifactViewerHelper_persona_unknown=\u4e0d\u660e ContactArtifactViewer_contactname_unknown=\u4e0d\u660e -ContactArtifactViewer_cr_disabled_message=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u304c\u30da\u30eb\u30bd\u30ca\u3092\u8868\u793a\u3001\u4f5c\u6210\u3001\u7de8\u96c6\u53ef\u80fd\u306b\u3059\u308b\u3002 -ContactArtifactViewer_emails_header=\u30e1\u30fc\u30eb -ContactArtifactViewer_found_all_accounts_label=\u5168\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002 +ContactArtifactViewer_cr_disabled_message=\u30da\u30eb\u30bd\u30ca\u3092\u8868\u793a\u3001\u4f5c\u6210\u3001\u7de8\u96c6\u3092\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u53ef\u80fd\u306b\u3057\u307e\u3059\u3002 +ContactArtifactViewer_emails_header=E\u30e1\u30fc\u30eb +ContactArtifactViewer_found_all_accounts_label=\u5168\u3066\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002 ContactArtifactViewer_heading_Source=\u30bd\u30fc\u30b9 -ContactArtifactViewer_label_datasource=\u30c7\u30fc\u30bf\u30fb\u30bd\u30fc\u30b9 +ContactArtifactViewer_id_not_found_in_cr=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u9023\u7d61\u5148{0}\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +ContactArtifactViewer_label_datasource=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 ContactArtifactViewer_missing_account_label=\u9023\u7d61\u5148\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u3042\u308a\u307e\u305b\u3093 ContactArtifactViewer_others_header=\u305d\u306e\u4ed6 -ContactArtifactViewer_persona_account_justification=\u9023\u7d61\u5148\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u306b\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f +ContactArtifactViewer_persona_account_justification=\u9023\u7d61\u5148\u30ea\u30b9\u30c8\u306b\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f ContactArtifactViewer_persona_button_new=\u4f5c\u6210 ContactArtifactViewer_persona_button_view=\u8868\u793a ContactArtifactViewer_persona_header=\u30da\u30eb\u30bd\u30ca ContactArtifactViewer_persona_label=\u30da\u30eb\u30bd\u30ca ContactArtifactViewer_persona_match_num=\u4e00\u81f4 -ContactArtifactViewer_persona_no_match=\u4e00\u81f4\u3059\u308b\u3082\u306e\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 -ContactArtifactViewer_persona_searching=\u691c\u7d22\u4e2d... +ContactArtifactViewer_persona_no_match=\u4e00\u81f4\u3059\u308b\u3082\u306e\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +ContactArtifactViewer_persona_searching=\u691c\u7d22... ContactArtifactViewer_persona_unknown=\u4e0d\u660e ContactArtifactViewer_phones_header=\u96fb\u8a71 -DataContentViewerArtifact.failedToGetAttributes.message=\u30b1\u30fc\u30b9\u30fb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u5c5e\u6027\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -DataContentViewerArtifact.failedToGetSourcePath.message=\u30b1\u30fc\u30b9\u30fb\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u306e\u30bd\u30fc\u30b9\u30fb\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u306e\u53d6\u5f97\u306b\u5931\u6557\u3057\u307e\u3057\u305f +DataContentViewerArtifact.failedToGetAttributes.message=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u5168\u3066\u306e\u60c5\u5831\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +DataContentViewerArtifact.failedToGetSourcePath.message=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u304b\u3089\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f DefaultArtifactContentViewer.attrsTableHeader.sources=\u30bd\u30fc\u30b9 DefaultArtifactContentViewer.attrsTableHeader.type=\u30bf\u30a4\u30d7 DefaultArtifactContentViewer.attrsTableHeader.value=\u5024 +DefaultTableArtifactContentViewer.attrsTableHeader.sources=\u30bd\u30fc\u30b9 +DefaultTableArtifactContentViewer.attrsTableHeader.type=\u30bf\u30a4\u30d7 +DefaultTableArtifactContentViewer.attrsTableHeader.value=\u5024 +DefaultTableArtifactContentViewer.copyMenuItem.text=\u30b3\u30d4\u30fc +DefaultTableArtifactContentViewer.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629e +GeneralPurposeArtifactViewer.dates.created=\u4f5c\u6210 +GeneralPurposeArtifactViewer.dates.end=\u7d42\u4e86 +GeneralPurposeArtifactViewer.dates.start=\u30b9\u30bf\u30fc\u30c8 +GeneralPurposeArtifactViewer.dates.time=\u6642\u9593 +GeneralPurposeArtifactViewer.details.attrHeader=\u8a73\u7d30 +GeneralPurposeArtifactViewer.details.bookmarkHeader=\u30d6\u30c3\u30af\u30de\u30fc\u30af\u306e\u8a73\u7d30 +GeneralPurposeArtifactViewer.details.cachedHeader=\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb +GeneralPurposeArtifactViewer.details.cookieHeader=\u30af\u30c3\u30ad\u30fc\u306e\u8a73\u7d30 +GeneralPurposeArtifactViewer.details.dataSource=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 +GeneralPurposeArtifactViewer.details.datesHeader=\u65e5\u4ed8 +GeneralPurposeArtifactViewer.details.downloadHeader=\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u6e08\u30d5\u30a1\u30a4\u30eb +GeneralPurposeArtifactViewer.details.file=\u30d5\u30a1\u30a4\u30eb +GeneralPurposeArtifactViewer.details.historyHeader=\u8a73\u7d30\u306b\u30a2\u30af\u30bb\u30b9 +GeneralPurposeArtifactViewer.details.otherHeader=\u305d\u306e\u4ed6 +GeneralPurposeArtifactViewer.details.searchHeader=Web\u691c\u7d22 +GeneralPurposeArtifactViewer.details.sourceHeader=\u30bd\u30fc\u30b9 +GeneralPurposeArtifactViewer.noFile.text=\uff08\u3082\u306f\u3084\u5b58\u5728\u3057\u306a\u3044\uff09 +GeneralPurposeArtifactViewer.term.label=\u671f\u9593 +GeneralPurposeArtifactViewer.unknown.text=\u4e0d\u660e +GeneralPurposeArtifactViewer_menuitem_copy=\u30b3\u30d4\u30fc +MessageAccountPanel.account.justification=\u30e1\u30c3\u30bb\u30fc\u30b8\u30ea\u30b9\u30c8\u306b\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f MessageAccountPanel_button_create_label=\u4f5c\u6210 MessageAccountPanel_button_view_label=\u8868\u793a -MessageAccountPanel_no_matches=\u4e00\u81f4\u3059\u308b\u3082\u306e\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +MessageAccountPanel_contact_label=\u9023\u7d61\u5148\uff1a +MessageAccountPanel_copy_label=\u30b3\u30d4\u30fc +MessageAccountPanel_id_not_found_in_cr=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u3067ID{0}\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +MessageAccountPanel_no_matches=\u4e00\u81f4\u3059\u308b\u3082\u306e\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 MessageAccountPanel_persona_label=\u30da\u30eb\u30bd\u30ca\uff1a MessageAccountPanel_unknown_label=\u4e0d\u660e -MessageArtifactViewer.AttachmentPanel.title=\u4ed8\u5c5e\u54c1 +MessageArtifactViewer.AttachmentPanel.title=\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb MessageArtifactViewer.accountsTab.TabConstraints.tabTitle=\u30a2\u30ab\u30a6\u30f3\u30c8 -MessageArtifactViewer.attachmentsPanel.TabConstraints.tabTitle=\u4ed8\u5c5e\u54c1 +MessageArtifactViewer.attachmentsPanel.TabConstraints.tabTitle=\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb MessageArtifactViewer.ccLabel.text=CC\: MessageArtifactViewer.ccText.text=cc\u30ea\u30b9\u30c8\u306f\u3053\u3053\u306b -MessageArtifactViewer.datetimeText.text=\u3053\u3053\u306b\u65e5\u4ed8\u3092\u8a18\u5165 +MessageArtifactViewer.datetimeText.text=\u65e5\u4ed8\u306f\u3053\u3053\u306b MessageArtifactViewer.directionText.text=\u65b9\u5411 MessageArtifactViewer.fromLabel.text=\u5dee\u51fa\u4eba\uff1a -MessageArtifactViewer.fromText.text=\u5dee\u51fa\u4eba\u30a2\u30c9\u30ec\u30b9\u306f\u3053\u3053\u306b +MessageArtifactViewer.fromText.text=\u5dee\u51fa\u4eba\u306f\u3053\u3053\u306b MessageArtifactViewer.headersScrollPane.TabConstraints.tabTitle=\u30d8\u30c3\u30c0\u30fc MessageArtifactViewer.htmlPane.TabConstraints.tabTitle=HTML MessageArtifactViewer.rtfbodyScrollPane.TabConstraints.tabTitle=RTF MessageArtifactViewer.subjectLabel.text=\u4ef6\u540d\uff1a -MessageArtifactViewer.subjectText.text=\u3053\u3053\u306b\u5065\u540d\u3092\u8a18\u5165 +MessageArtifactViewer.subjectText.text=\u4ef6\u540d\u306f\u3053\u3053\u3078 MessageArtifactViewer.textbodyScrollPane.TabConstraints.tabTitle=\u30c6\u30ad\u30b9\u30c8 MessageArtifactViewer.toLabel.text=\u5b9b\u5148\uff1a -MessageArtifactViewer.toText.text=\u3053\u3053\u306b\u5b9b\u5148\u30ea\u30b9\u30c8\u3092\u8a18\u5165 +MessageArtifactViewer.toText.text=\u5b9b\u5148\u30ea\u30b9\u30c8\u306f\u3053\u3053\u306b MessageArtifactViewer.viewInNewWindowButton.text=\u65b0\u3057\u3044\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u8868\u793a -PersonaDisplayTask_persona_count_suffix=\uff081/{0}\uff09 -DefaultTableArtifactContentViewer.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629e -DefaultTableArtifactContentViewer.copyMenuItem.text=\u30b3\u30d4\u30fc +PersonaAccountFetcher.account.justification=\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u901a\u8a71\u5c65\u6b74\u306b\u898b\u3064\u304b\u308a\u307e\u3057\u305f +PersonaAccountFetcher_not_account_in_cr=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u3067ID{0}\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +PersonaDisplayTask_persona_count_suffix=\uff08{0}\u306e1\uff09 diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/contextviewer/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/contentviewers/contextviewer/Bundle_ja.properties index 34adecd413..81d782a00e 100644 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/contextviewer/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/contextviewer/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:20 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 ContextSourcePanel.jSourceGoToResultButton.text=\u7d50\u679c\u306b\u79fb\u52d5 ContextSourcePanel.jSourceNameLabel.text=jSourceNameLabel ContextSourcePanel.jSourceTextLabel.text=\u30e9\u30d9\u30eb2 @@ -18,10 +18,10 @@ ContextViewer.messageFrom=\u5dee\u51fa\u4eba ContextViewer.messageOn=\u30aa\u30f3 ContextViewer.messageTo=\u5b9b\u5148 ContextViewer.on=\u958b\u3044\u305f\u306e\u306f -ContextViewer.programExecution=\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u5b9f\u884c\uff1a +ContextViewer.programExecution=\u30d7\u30ed\u30b0\u30e9\u30e0\u5b9f\u884c\uff1a ContextViewer.recentDocs=\u6700\u8fd1\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\uff1a ContextViewer.runOn=\u30d7\u30ed\u30b0\u30e9\u30e0\u5b9f\u884c -ContextViewer.runUnknown=\u4e0d\u7279\u5b9a\u6642\u9593\u306b\u5b9f\u884c\u3055\u308c\u308b\u30d7\u30ed\u30b0\u30e9\u30e0 +ContextViewer.runUnknown=\u4e0d\u660e\u306a\u6642\u9593\u306b\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u5b9f\u884c ContextViewer.title=\u74b0\u5883 ContextViewer.toolTip=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002 ContextViewer.unknown=\u4e0d\u7279\u5b9a\u6642\u9593\u306b\u958b\u304d\u307e\u3057\u305f diff --git a/Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties index 3bda55e29c..d611fd6338 100644 --- a/Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties @@ -1,33 +1,27 @@ +#Fri Feb 12 16:56:28 UTC 2021 Installer.closing.confirmationDialog.message=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u5b9f\u884c\u4e2d\u3067\u3059\u3002\u7d42\u4e86\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b? Installer.closing.confirmationDialog.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u5b9f\u884c\u4e2d\u3067\u3059 -# {0} - \u4f8b\u5916\u30e1\u30c3\u30bb\u30fc\u30b8 -Installer.closing.messageBox.caseCloseExceptionMessage=\u6b21\u306e\u30b1\u30fc\u30b9\u3092\u9589\u3058\u3066\u3044\u308b\u9593\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} +Installer.closing.messageBox.caseCloseExceptionMessage=\u6b21\u306e\u30b1\u30fc\u30b9\u3092\u9589\u3058\u3066\u3044\u308b\u9593\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\: {0} +Installer.errorInitJavafx.details=\ \u4e00\u90e8\u306e\u6a5f\u80fd\u304c\u5229\u7528\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002 \u9069\u5207\u306aJRE\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u304f\u3060\u3055\u3044(Oracle JRE 1.7.10\u4ee5\u964d)\u3002 +Installer.errorInitJavafx.msg=JavaFX\u306e\u521d\u671f\u5316\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 OpenIDE-Module-Display-Category=\u30a4\u30f3\u30d5\u30e9\u30b9\u30c8\u30e9\u30af\u30c1\u30e3\u30fc -OpenIDE-Module-Long-Description=\ - \u3053\u308c\u306fAutopsy\u306e\u30b3\u30a2\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002\n\n\ - \u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u306f\u3001RCP\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3001\u30a6\u30a3\u30f3\u30c9\u30a6\u4f5c\u6210GUI\u3001sleuthkit\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3001\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb / \u30b9\u30c8\u30ec\u30fc\u30b8\u3001\u30a8\u30af\u30b9\u30d7\u30ed\u30fc\u30e9\u30fc\u3001\u7d50\u679c\u30d3\u30e5\u30fc\u30ef\u30fc\u3001\u30b3\u30f3\u30c6\u30f3\u30c4\u30d3\u30e5\u30fc\u30ef\u30fc\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3001\u30ec\u30dd\u30fc\u30c6\u30a3\u30f3\u30b0\u3001\u30d5\u30a1\u30a4\u30eb\u691c\u7d22\u306a\u3069\u306e\u30b3\u30a2\u30c4\u30fc\u30eb\u3068\u3044\u3063\u305f\u3001\u30d9\u30a2\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u884c\u306b\u5fc5\u8981\u306a\u30b3\u30a2\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\n\n\ - \u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u542b\u307e\u308c\u308b\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u306f\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3001\u30d3\u30e5\u30fc\u30ef\u30fc\u3001\u30ec\u30dd\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u4f5c\u6210\u7528API\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 \ - \u30e2\u30b8\u30e5\u30fc\u30eb\u306fAutopsy\u30d7\u30e9\u30b0\u30a4\u30f3\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092\u7528\u3044\u308b\u30d7\u30e9\u30b0\u30a4\u30f3\u3068\u3057\u3066\u5c55\u958b\u3067\u304d\u307e\u3059\u3002\n\ - \u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30a2\u30f3\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044 - \u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u306a\u3044\u3068Autopsy\u304c\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3002\n\n\ - \u8a73\u7d30\u306f\u3001http://www.sleuthkit.org/autopsy/ \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044 +OpenIDE-Module-Long-Description=\u3053\u308c\u306fAutopsy\u306e\u30b3\u30a2\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002\n\n\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u306f\u3001RCP\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3001\u30a6\u30a3\u30f3\u30c9\u30a6\u4f5c\u6210GUI\u3001sleuthkit\u30d0\u30a4\u30f3\u30c7\u30a3\u30f3\u30b0\u3001\u30c7\u30fc\u30bf\u30e2\u30c7\u30eb / \u30b9\u30c8\u30ec\u30fc\u30b8\u3001\u30a8\u30af\u30b9\u30d7\u30ed\u30fc\u30e9\u30fc\u3001\u7d50\u679c\u30d3\u30e5\u30fc\u30ef\u30fc\u3001\u30b3\u30f3\u30c6\u30f3\u30c4\u30d3\u30e5\u30fc\u30ef\u30fc\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u3001\u30ec\u30dd\u30fc\u30c6\u30a3\u30f3\u30b0\u3001\u30d5\u30a1\u30a4\u30eb\u691c\u7d22\u306a\u3069\u306e\u30b3\u30a2\u30c4\u30fc\u30eb\u3068\u3044\u3063\u305f\u3001\u30d9\u30a2\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u5b9f\u884c\u306b\u5fc5\u8981\u306a\u30b3\u30a2\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002\n\n\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u542b\u307e\u308c\u308b\u30d5\u30ec\u30fc\u30e0\u30ef\u30fc\u30af\u306b\u306f\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3001\u30d3\u30e5\u30fc\u30ef\u30fc\u3001\u30ec\u30dd\u30fc\u30c6\u30a3\u30f3\u30b0\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u4f5c\u6210\u7528API\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 \u30e2\u30b8\u30e5\u30fc\u30eb\u306fAutopsy\u30d7\u30e9\u30b0\u30a4\u30f3\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u30fc\u3092\u7528\u3044\u308b\u30d7\u30e9\u30b0\u30a4\u30f3\u3068\u3057\u3066\u5c55\u958b\u3067\u304d\u307e\u3059\u3002\n\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30a2\u30f3\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044 - \u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u306a\u3044\u3068Autopsy\u304c\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3002\n\n\u8a73\u7d30\u306f\u3001http\://www.sleuthkit.org/autopsy/ \u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044 OpenIDE-Module-Name=Autopsy-Core 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\u306e\u521d\u671f\u5316\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -Installer.errorInitJavafx.details=\ \u4e00\u90e8\u306e\u6a5f\u80fd\u304c\u5229\u7528\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\u3002 \u9069\u5207\u306aJRE\u304c\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u3066\u3044\u308b\u304b\u78ba\u8a8d\u304f\u3060\u3055\u3044(Oracle JRE 1.7.10\u4ee5\u964d)\u3002 -ServicesMonitor.failedService.notify.title=\u30b5\u30fc\u30d3\u30b9\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059 -ServicesMonitor.failedService.notify.msg={0} \u3078\u306e\u63a5\u7d9a\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059 -ServicesMonitor.restoredService.notify.title=\u30b5\u30fc\u30d3\u30b9\u304c\u5b9f\u884c\u4e2d\u3067\u3059 -ServicesMonitor.restoredService.notify.msg={0} \u3078\u306e\u63a5\u7d9a\u304c\u5b9f\u884c\u4e2d\u3067\u3059 -ServicesMonitor.statusChange.notify.title=\u30b5\u30fc\u30d3\u30b9\u30b9\u30c6\u30fc\u30bf\u30b9\u66f4\u65b0 -ServicesMonitor.statusChange.notify.msg={0} \u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u306f {1} \u3067\u3059 -ServicesMonitor.nullServiceName.excepton.txt=\u30ea\u30af\u30a8\u30b9\u30c8\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u540d\u306fnull\u3067\u3059 -ServicesMonitor.unknownServiceName.excepton.txt=\u30ea\u30af\u30a8\u30b9\u30c8\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u540d {0} \u306f\u4e0d\u660e\u3067\u3059 +ServicesMonitor.InvalidPortNumber=Solr8\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u304c\u7121\u52b9\u3067\u3059\u3002 ServicesMonitor.KeywordSearchNull=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d3\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 -ServicesMonitor.InvalidPortNumber=\u7121\u52b9\u306a\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u3059\u3002 +ServicesMonitor.databaseConnectionInfo.error.msg=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u60c5\u5831\u306b\u30a2\u30af\u30bb\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ServicesMonitor.failedService.notify.msg={0} \u3078\u306e\u63a5\u7d9a\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059 +ServicesMonitor.failedService.notify.title=\u30b5\u30fc\u30d3\u30b9\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059 +ServicesMonitor.messaging.displayName.text=\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0\u30b5\u30fc\u30d3\u30b9 +ServicesMonitor.messagingService.connErr.text=\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0\u30b5\u30fc\u30d3\u30b9\u63a5\u7d9a\u60c5\u5831\u306b\u30a2\u30af\u30bb\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ServicesMonitor.nullServiceName.excepton.txt=\u30ea\u30af\u30a8\u30b9\u30c8\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u540d\u306fnull\u3067\u3059 ServicesMonitor.remoteCaseDatabase.displayName.text=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d3\u30b9 ServicesMonitor.remoteKeywordSearch.displayName.text=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d3\u30b9 -ServicesMonitor.messaging.displayName.text=\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0\u30b5\u30fc\u30d3\u30b9 -ServicesMonitor.databaseConnectionInfo.error.msg=\u30b1\u30fc\u30b9\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u63a5\u7d9a\u60c5\u5831\u306b\u30a2\u30af\u30bb\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -ServicesMonitor.messagingService.connErr.text=\u30e1\u30c3\u30bb\u30fc\u30b8\u30f3\u30b0\u30b5\u30fc\u30d3\u30b9\u63a5\u7d9a\u60c5\u5831\u306b\u30a2\u30af\u30bb\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ServicesMonitor.restoredService.notify.msg={0} \u3078\u306e\u63a5\u7d9a\u304c\u5b9f\u884c\u4e2d\u3067\u3059 +ServicesMonitor.restoredService.notify.title=\u30b5\u30fc\u30d3\u30b9\u304c\u5b9f\u884c\u4e2d\u3067\u3059 +ServicesMonitor.statusChange.notify.msg={0} \u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u306f {1} \u3067\u3059 +ServicesMonitor.statusChange.notify.title=\u30b5\u30fc\u30d3\u30b9\u30b9\u30c6\u30fc\u30bf\u30b9\u66f4\u65b0 +ServicesMonitor.unknownServiceName.excepton.txt=\u30ea\u30af\u30a8\u30b9\u30c8\u3055\u308c\u305f\u30b5\u30fc\u30d3\u30b9\u540d {0} \u306f\u4e0d\u660e\u3067\u3059 +org_sleuthkit_autopsy_core_update_center=http\://sleuthkit.org/autopsy/updates.xml diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties index e8c7bdcf13..9717d32fbb 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 AboutWindowPanel.actVerboseLogging.text=\u8a73\u7d30\u30ed\u30ae\u30f3\u30b0\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u5316 AddExternalViewerRulePanel.browseButton.text=\u53c2\u7167 AddExternalViewerRulePanel.exePathLabel.text=\u3053\u306e\u30bf\u30a4\u30d7\u307e\u305f\u306f\u62e1\u5f35\u5b50\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u4f7f\u7528\u3059\u308b\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u30d1\u30b9 @@ -9,14 +9,21 @@ AddExternalViewerRulePanel.nameLabel.text=MIME\u30bf\u30a4\u30d7\u307e\u305f\u30 AddExternalViewerRulePanel.nameTextField.text= AdvancedConfigurationDialog.applyButton.text=OK AdvancedConfigurationDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 +AutopsyOptionsPanel.a.AccessibleContext.accessibleName=\u4e00\u6642\u30d5\u30a9\u30eb\u30c0 AutopsyOptionsPanel.agencyLogoImageLabel.toolTipText= +AutopsyOptionsPanel.agencyLogoPathField.text= AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.invalidImageSpecified.text=\u7121\u52b9\u306e\u30a4\u30e1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002 AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.invalidPath.text=\u30d1\u30b9\u306f\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.pathNotSet.text=\u30a8\u30fc\u30b8\u30a7\u30f3\u30b7\u30fc\u30ed\u30b4\u30d1\u30b9\u3092\u8a2d\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.text= +AutopsyOptionsPanel.agencyLogoPreview.text=
\u30ed\u30b4\u304c\u3042\u308a\u307e\u305b\u3093
selected
+AutopsyOptionsPanel.browseLogosButton.text=\u53c2\u7167 +AutopsyOptionsPanel.defaultLogoRB.text=\u30c7\u30d5\u30a9\u30eb\u30c8\u3092\u4f7f\u7528 AutopsyOptionsPanel.invalidImageFile.msg=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u30a8\u30fc\u30b8\u30a7\u30f3\u30b7\u30fc\u30ed\u30b4\u3068\u3057\u3066\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 AutopsyOptionsPanel.invalidImageFile.title=\u7121\u52b9\u306a\u30a4\u30e1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u3067\u3059 AutopsyOptionsPanel.logNumAlert.invalidInput.text=\u3053\u3053\u3067\u306f\u6b63\u306e\u6574\u6570\u304c\u5fc5\u8981\u3067\u3059\u3002 AutopsyOptionsPanel.logNumAlert.text= +AutopsyOptionsPanel.logoPanel.border.title=\u30ed\u30b4 AutopsyOptionsPanel.maxLogFileCount.text=\u6700\u5927\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u6570\: AutopsyOptionsPanel.maxMemoryLabel.text=\u6700\u5927JVM\u30e1\u30e2\u30ea\u30fc\: AutopsyOptionsPanel.maxMemoryUnitsLabel.text=GB @@ -28,10 +35,22 @@ AutopsyOptionsPanel.memFieldValidationLabel.noValueEntered.text=\u5024\u304c\u51 AutopsyOptionsPanel.memFieldValidationLabel.not64BitInstall.text=JVM\u30e1\u30e2\u30ea\u30fc\u8a2d\u5b9a\u306f64\u30d3\u30c3\u30c8\u7248\u306b\u306e\u307f\u6709\u52b9\u3067\u3059 AutopsyOptionsPanel.memFieldValidationLabel.overMaxMemory.text=\u5024\u306f\u5408\u8a08\u30b7\u30b9\u30c6\u30e0\u30e1\u30e2\u30ea\u30fc\u306e {0}GB\u4ee5\u4e0b\u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093 AutopsyOptionsPanel.memFieldValidationLabel.underMinMemory.text=\u5024\u306f\u5c11\u306a\u304f\u3068\u3082 {0}GB\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 +AutopsyOptionsPanel.rdpPanel.border.title=Windows\u306e\u9ad8DPI\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0 AutopsyOptionsPanel.restartNecessaryWarning.text=\u30e1\u30e2\u30ea\u30fc\u5909\u66f4\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u518d\u8d77\u52d5\u304c\u5fc5\u8981\u3067\u3059\u3002 AutopsyOptionsPanel.runtimePanel.border.title=\u30e9\u30f3\u30bf\u30a4\u30e0 +AutopsyOptionsPanel.sizingTextPane.text=\u9ad8DPI\u30b7\u30b9\u30c6\u30e0\u3067\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30ca\u30d3\u30b2\u30fc\u30c8\u304c\u96e3\u3057\u3044\u5834\u5408\u306f\u3001\u6b21\u306e\u5909\u66f4\u3092\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002\n\n1.\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u3001\u30b9\u30bf\u30fc\u30c8\u30e1\u30cb\u30e5\u30fc\u306a\u3069\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30a2\u30a4\u30b3\u30f3\u3092\u53f3\u30af\u30ea\u30c3\u30af\n2.\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u9078\u629e\n3. [\u4e92\u63db\u6027]\u30bf\u30d6\u306b\u79fb\u52d5\n4. [\u9ad8DPI\u8a2d\u5b9a\u306e\u5909\u66f4]\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\n5. [\u9ad8DPI\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u52d5\u4f5c\u3092\u5909\u66f4]\u3092\u9078\u629e\n6.\u300c\u30b9\u30b1\u30fc\u30ea\u30f3\u30b0\u306e\u5b9f\u884c\uff1a\u300d\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\u30dc\u30c3\u30af\u30b9\u3092\u300c\u30b7\u30b9\u30c6\u30e0\u300d\u306b\u5909\u66f4\u3057\u307e\u3059\u3002\n7.Autopsy\u3092\u518d\u5b9f\u884c AutopsyOptionsPanel.solrJVMHeapWarning.text=\u6ce8\: \u3053\u308c\u3092\u3042\u307e\u308a\u306b\u3082\u5927\u304d\u304f\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u5168\u4f53\u306b\u5f71\u97ff\u3059\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 +AutopsyOptionsPanel.specifyLogoRB.text=\u30ed\u30b4\u3092\u6307\u5b9a +AutopsyOptionsPanel.tempDirectoryBrowseButton.text=\u30d6\u30e9\u30a6\u30ba +AutopsyOptionsPanel.tempDirectoryPanel.AccessibleContext.accessibleName=\u4e00\u6642\u30d5\u30a9\u30eb\u30c0 +AutopsyOptionsPanel.tempDirectoryPanel.border.title=\u4e00\u6642\u30d5\u30a9\u30eb\u30c0 +AutopsyOptionsPanel.tempDirectoryPanel.name=\u4e00\u6642\u30d5\u30a9\u30eb\u30c0 +AutopsyOptionsPanel.tempDirectoryWarningLabel.text=\u4e00\u6642\u30d5\u30a9\u30eb\u30c0\u3092\u5909\u66f4\u3059\u308b\u306b\u306f\u30b1\u30fc\u30b9\u3092\u9589\u3058\u3066\u4e0b\u3055\u3044\u3002 AutopsyOptionsPanel.totalMemoryLabel.text=\u5408\u8a08\u30b7\u30b9\u30c6\u30e0\u30e1\u30e2\u30ea\u30fc\: +AutopsyOptionsPanel_storeTempDir_onError_description=\u30b7\u30b9\u30c6\u30e0\u4e00\u6642\u30d5\u30a9\u30eb\u30c0{0}\u3092\u4f5c\u6210\u3059\u308b\u3068\u304d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +AutopsyOptionsPanel_storeTempDir_onError_title=\u4e00\u6642\u30d5\u30a9\u30eb\u30c0\u4fdd\u5b58\u306b\u5931\u6557\u3057\u307e\u3057\u305f +AutopsyOptionsPanel_tempDirectoryBrowseButtonActionPerformed_onInvalidPath_description=\u6307\u5b9a\u3055\u308c\u305f\u30d1\u30b9\u5185\u306b\u4e00\u6642\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\uff1a{0} +AutopsyOptionsPanel_tempDirectoryBrowseButtonActionPerformed_onInvalidPath_title=\u30d1\u30b9\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093 CTL_CustomAboutAction=\u6982\u8981 CTL_DataContentAction=DataContent CTL_DataContentTopComponent=\u30c7\u30fc\u30bf\u30b3\u30f3\u30c6\u30f3\u30c4 @@ -163,76 +182,33 @@ HINT_DataContentTopComponent=\u3053\u308c\u306fDataContent\u30a6\u30a3\u30f3\u30 HINT_NodeTableTopComponent=\u3053\u308c\u306fDataResult\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u3059 INDEX_FOR_LOCAL_HELP=/docs/index.html LBL_Close=\u9589\u3058\u308b -DataContentViewerHex.copyMenuItem.text=\u30b3\u30d4\u30fc -DataContentViewerHex.selectAllMenuItem.text=\u3059\u3079\u3066\u3092\u9078\u629e -DataContentViewerArtifact.totalPageLabel.text=100 -DataContentViewerArtifact.prevPageButton.text= -DataContentViewerArtifact.pageLabel2.text=\u7d50\u679c -DataContentViewerArtifact.nextPageButton.text= -DataContentViewerArtifact.currentPageLabel.text=1 -DataContentViewerArtifact.ofLabel.text=/ -DataContentViewerArtifact.pageLabel.text=\u7d50\u679c: -AdvancedConfigurationDialog.applyButton.text=OK -DataContentViewerHex.goToPageTextField.text= -DataContentViewerHex.goToPageLabel.text=\u30da\u30fc\u30b8\u306b\u79fb\u52d5: -DataResultViewerThumbnail.pageLabel.text=\u30da\u30fc\u30b8: -DataResultViewerThumbnail.pagesLabel.text=\u30da\u30fc\u30b8: -DataResultViewerThumbnail.pagePrevButton.text= -DataResultViewerThumbnail.pageNextButton.text= -DataResultViewerThumbnail.imagesLabel.text=\u30a4\u30e1\u30fc\u30b8: -DataResultViewerThumbnail.imagesRangeLabel.text=- -DataResultViewerThumbnail.pageNumLabel.text=- -DataResultViewerThumbnail.filePathLabel.text=\ \ \ -DataResultViewerThumbnail.goToPageLabel.text=\u30da\u30fc\u30b8\u306b\u79fb\u52d5: -DataResultViewerThumbnail.goToPageField.text= -AdvancedConfigurationDialog.cancelButton.text=\u53d6\u308a\u6d88\u3057 -DataContentViewerArtifact.waitText=\u30c7\u30fc\u30bf\u3092\u691c\u7d22\u3057\u3066\u6e96\u5099\u4e2d\u3067\u3059\u3002\u304a\u5f85\u3061\u304f\u3060\u3055\u3044... -DataContentViewerArtifact.errorText=\u7d50\u679c\u306e\u691c\u7d22\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -DataContentViewerArtifact.title=\u7d50\u679c -DataContentViewerArtifact.toolTip=\u30d5\u30a1\u30a4\u30eb\u3068\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u308b\u7d50\u679c\u3092\u8868\u793a -DataContentViewerHex.goToPageTextField.msgDlg=1 \u304b\u3089 {0} \u307e\u3067\u306e\u6709\u52b9\u306a\u30da\u30fc\u30b8\u756a\u53f7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -DataContentViewerHex.goToPageTextField.err=\u7121\u52b9\u306a\u30da\u30fc\u30b8\u756a\u53f7\u3067\u3059 -DataContentViewerHex.setDataView.errorText=(\u30aa\u30d5\u30bb\u30c3\u30c8 {0}-{1} \u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f) -DataContentViewerHex.title=16\u9032\u6570 -DataContentViewerHex.toolTip=\u30d5\u30a1\u30a4\u30eb\u306e\u30d0\u30a4\u30ca\u30ea\u30fc\u30b3\u30f3\u30c6\u30f3\u30c4\u309216\u9032\u6570\u3068\u3057\u3066\u8868\u793a\u3057\u307e\u3059\u3002\u53f3\u5074\u306bASCII\u6587\u5b57\u3068\u3057\u3066\u8868\u793a\u53ef\u80fd\u306a\u30d0\u30a4\u30c8\u304c\u793a\u3055\u308c\u307e\u3059\u3002 -DataResultPanel.pleasewaitNodeDisplayName=\u304a\u5f85\u3061\u304f\u3060\u3055\u3044... -DataResultViewerTable.illegalArgExc.noChildFromParent=\u6307\u5b9a\u3057\u305f\u89aa\u304b\u3089\u5b50\u30ce\u30fc\u30c9\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -DataResultViewerTable.illegalArgExc.childWithoutPropertySet=\u5b50\u30ce\u30fc\u30c9\u306b\u306f\u6b63\u898f\u306ePropertySet\u304c\u3042\u308a\u307e\u305b\u3093\u3002 -DataResultViewerThumbnail.title=\u30b5\u30e0\u30cd\u30a4\u30eb -DataResultViewerThumbnail.goToPageTextField.msgDlg=1 \u304b\u3089 {0} \u307e\u3067\u306e\u6709\u52b9\u306a\u30da\u30fc\u30b8\u756a\u53f7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044 -DataResultViewerThumbnail.goToPageTextField.err=\u7121\u52b9\u306a\u30da\u30fc\u30b8\u756a\u53f7\u3067\u3059 -DataResultViewerThumbnail.genThumbs=\u30b5\u30e0\u30cd\u30a4\u30eb\u3092\u4f5c\u6210\u4e2d\u3067\u3059... -DataResultViewerThumbnail.pageNumbers.curOfTotal={0} / {1} -GeneralOptionsPanelController.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -GeneralOptionsPanelController.moduleErr.msg=GeneralOptionsPanelController\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 -ProductInformationPanel.verbLoggingEnabled.text=\u8a73\u7d30\u30ed\u30ae\u30f3\u30b0\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059 -ProductInformationPanel.propertyUnknown.text=\u4e0d\u660e -ProductInformationPanel.getVMValue.text={0} {1} -TableFilterNode.displayName.text=\u540d\u524d -DataResultViewerThumbnail.comboBox.smallThumbnails=\u5c0f\u30b5\u30a4\u30ba\u306e\u30b5\u30e0\u30cd\u30a4\u30eb -DataResultViewerThumbnail.comboBox.mediumThumbnails=\u4e2d\u30b5\u30a4\u30ba\u306e\u30b5\u30e0\u30cd\u30a4\u30eb -DataResultViewerThumbnail.comboBox.largeThumbnails=\u5927\u30b5\u30a4\u30ba\u306e\u30b5\u30e0\u30cd\u30a4\u30eb -DataResultViewerThumbnail.switchPage.done.errMsg=\u6b21\u306e\u30b5\u30e0\u30cd\u30a4\u30eb\u3092\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0} -AboutWindowPanel.actVerboseLogging.text=\u8a73\u7d30\u30ed\u30ae\u30f3\u30b0\u3092\u30a2\u30af\u30c6\u30a3\u30d6\u5316 -OptionsCategory_Name_Multi_User_Settings=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc -OptionsCategory_Keywords_Multi_User_Options=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u8a2d\u5b9a -LBL_Copyright=
Autopsy™ \u306f The Sleuth Kit™ \u304a\u3088\u3073\u305d\u306e\u4ed6\u306e\u30c4\u30fc\u30eb\u306b\u57fa\u3065\u304f\u30c7\u30b8\u30bf\u30eb\u79d1\u5b66\u635c\u67fb\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3002
Copyright © 2003-2020.
+LBL_Copyright=
Autopsy™ \u306fThe Sleuth Kit™ \u3068\u4ed6\u306e\u30c4\u30fc\u30eb\u306b\u57fa\u3065\u3044\u305f\u30c7\u30b8\u30bf\u30eb\u30d5\u30a9\u30ec\u30f3\u30b8\u30c3\u30af\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3067\u3059\u3002
Copyright © 2003-2020.
LBL_Description=
\n \u88fd\u54c1\u30d0\u30fc\u30b8\u30e7\u30f3\: {0} ({9})
Sleuth Kit\u30d0\u30fc\u30b8\u30e7\u30f3\: {7}
Netbeans RCP\u30d3\u30eb\u30c9\: {8}
Java\: {1}; {2}
\u30b7\u30b9\u30c6\u30e0\: {3}; {4}; {5}
Userdir\: {6}
MultiUserSettingsPanel.InvalidPortNumber=\u7121\u52b9\u306a\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u3059 MultiUserSettingsPanel.KeywordSearchNull=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d3\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 -MultiUserSettingsPanel.bnTestDatabase.text=\u30c6\u30b9\u30c8 -MultiUserSettingsPanel.bnTestMessageService.text=\u30c6\u30b9\u30c8 -MultiUserSettingsPanel.bnTestSolr.text=\u30c6\u30b9\u30c8 +MultiUserSettingsPanel.MustRestart=\u65b0\u305f\u306a\u8a2d\u5b9a\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306fAutopsy\u3092\u518d\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044 +MultiUserSettingsPanel.Solr4ConnectionInfoMissing.error=Solr4\u63a5\u7d9a\u60c5\u5831\u304c\u306a\u3044\u304b\u4e0d\u5b8c\u5168\u3067\u3059 +MultiUserSettingsPanel.Solr8ConnectionInfoMissing.error=Solr8\u63a5\u7d9a\u60c5\u5831\u304c\u7121\u3044\u304b\u4e0d\u5b8c\u5168\u3067\u3059 +MultiUserSettingsPanel.UnableToConnectToZK=ZooKeeper\u30b5\u30fc\u30d3\u30b9\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093 +MultiUserSettingsPanel.bnTestDatabase.text=\u63a5\u7d9a\u30c6\u30b9\u30c8 +MultiUserSettingsPanel.bnTestMessageService.text=\u63a5\u7d9a\u30c6\u30b9\u30c8 +MultiUserSettingsPanel.bnTestSolr4.text=\u63a5\u7d9a\u30c6\u30b9\u30c8 +MultiUserSettingsPanel.bnTestSolr8.text=\u63a5\u7d9a\u30c6\u30b9\u30c8 +MultiUserSettingsPanel.bnTestZK.text=\u63a5\u7d9a\u30c6\u30b9\u30c8 MultiUserSettingsPanel.cbEnableMultiUser.text=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u3092\u6709\u52b9\u5316 -MultiUserSettingsPanel.lbDatabaseSettings.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30fb\u30b5\u30fc\u30d0\u30fc\u8a2d\u5b9a +MultiUserSettingsPanel.lbDatabaseSettings.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u30b5\u30fc\u30d0\u30fc\u306e\u8a2d\u5b9a MultiUserSettingsPanel.lbMessageServiceSettings.text=ActiveMQ\u30e1\u30c3\u30bb\u30fc\u30b8\u30b5\u30fc\u30d0\u30fc\u306e\u8a2d\u5b9a -MultiUserSettingsPanel.lbSolrSettings.text=Solr\u30b5\u30fc\u30d0\u30fc\u8a2d\u5b9a +MultiUserSettingsPanel.lbSolr4Settings.text=Solr4\u30b5\u30fc\u30d0\u30fc\u8a2d\u5b9a +MultiUserSettingsPanel.lbSolr8Settings.text=Solr8\u30b5\u30fc\u30d0\u30fc\u8a2d\u5b9a +MultiUserSettingsPanel.lbSolrNote1.text=Solr8\u307e\u305f\u306fSolr4\u30b5\u30fc\u30d0\u30fc\u8a2d\u5b9a\u3092\u5165\u529b\u3002 +MultiUserSettingsPanel.lbSolrNote2.text=\u65b0\u30c6\u30ad\u30b9\u30c8\u30fb\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u4f5c\u6210\u306f\u3001Solr8\u304c\u5fc5\u8981\u3067\u3059\u3002 MultiUserSettingsPanel.lbTestDatabase.text= MultiUserSettingsPanel.lbTestDbWarning.text= MultiUserSettingsPanel.lbTestMessageService.text= MultiUserSettingsPanel.lbTestMessageWarning.text= -MultiUserSettingsPanel.lbTestSolr.text= +MultiUserSettingsPanel.lbZkSettings.text=ZooKeeper\u30b5\u30fc\u30d0\u30fc\u8a2d\u5b9a MultiUserSettingsPanel.nonWindowsOs.msg=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u30b1\u30fc\u30b9\u306fWindows\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u4e0a\u3067\u306e\u307f\u5229\u7528\u3067\u304d\u307e\u3059 +MultiUserSettingsPanel.restartRequiredLabel.text=\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u518d\u8d77\u52d5\u304c\u5fc5\u8981\u3067\u3059\u3002 MultiUserSettingsPanel.tbDbHostname.text= MultiUserSettingsPanel.tbDbHostname.toolTipText=\u30db\u30b9\u30c8\u540d\u307e\u305f\u306fIP\u30a2\u30c9\u30ec\u30b9 MultiUserSettingsPanel.tbDbPassword.text= @@ -240,12 +216,6 @@ MultiUserSettingsPanel.tbDbPassword.toolTipText=\u30d1\u30b9\u30ef\u30fc\u30c9 MultiUserSettingsPanel.tbDbPort.text= MultiUserSettingsPanel.tbDbPort.toolTipText=\u30dd\u30fc\u30c8\u756a\u53f7 MultiUserSettingsPanel.tbDbUsername.text= -MultiUserSettingsPanel.tbDbPassword.toolTipText=\u30d1\u30b9\u30ef\u30fc\u30c9 -MultiUserSettingsPanel.tbDbPassword.text= -MultiUserSettingsPanel.lbTestMessageService.text= -MultiUserSettingsPanel.bnTestMessageService.text=\u30c6\u30b9\u30c8 -MultiUserSettingsPanel.lbMessageServiceSettings.text=ActiveMQ\u30e1\u30c3\u30bb\u30fc\u30b8\u30b5\u30fc\u30d3\u30b9\u8a2d\u5b9a -MultiUserSettingsPanel.tbMsgPort.toolTipText=\u30dd\u30fc\u30c8\u756a\u53f7 MultiUserSettingsPanel.tbDbUsername.toolTipText=\u30e6\u30fc\u30b6\u30fc\u540d MultiUserSettingsPanel.tbMsgHostname.text= MultiUserSettingsPanel.tbMsgHostname.toolTipText=\u30db\u30b9\u30c8\u540d\u307e\u305f\u306fIP\u30a2\u30c9\u30ec\u30b9 @@ -256,13 +226,21 @@ MultiUserSettingsPanel.tbMsgPort.toolTipText=\u30dd\u30fc\u30c8\u756a\u53f7 MultiUserSettingsPanel.tbMsgUsername.text= MultiUserSettingsPanel.tbMsgUsername.toolTipText=\u30e6\u30fc\u30b6\u30fc\u540d(\u4efb\u610f) MultiUserSettingsPanel.tbOops.text= -MultiUserSettingsPanel.tbSolrHostname.toolTipText=\u30db\u30b9\u30c8\u540d\u307e\u305f\u306fIP\u30a2\u30c9\u30ec\u30b9 -MultiUserSettingsPanel.tbSolrPort.toolTipText=\u30dd\u30fc\u30c8\u756a\u53f7 +MultiUserSettingsPanel.tbSolr4Hostname.toolTipText=Solr4\u306e\u30db\u30b9\u30c8\u540d\u307e\u305f\u306fIP\u30a2\u30c9\u30ec\u30b9 +MultiUserSettingsPanel.tbSolr4Port.toolTipText=Solr4\u30dd\u30fc\u30c8\u756a\u53f7 +MultiUserSettingsPanel.tbSolr8Hostname.toolTipText=Solr8\u306e\u30db\u30b9\u30c8\u540d\u307e\u305f\u306fIP\u30a2\u30c9\u30ec\u30b9 +MultiUserSettingsPanel.tbSolr8Port.toolTipText=Solr8\u30dd\u30fc\u30c8\u756a\u53f7 +MultiUserSettingsPanel.tbZkHostname.toolTipText=ZooKeeper\u306e\u30db\u30b9\u30c8\u540d\u307e\u305f\u306fIP\u30a2\u30c9\u30ec\u30b9\u3002 Embedded ZooKeeper\u306f\u901a\u5e38\u3001Solr\u30b5\u30fc\u30d0\u30fc\u3068\u540c\u3058\u30db\u30b9\u30c8\u3067\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002 +MultiUserSettingsPanel.tbZkPort.toolTipText=ZooKeeper\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u3002 Embedded ZooKeeper\u306fSolr\u30b5\u30fc\u30d3\u30b9\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u3088\u308a1,000\u5927\u304d\u3044\u30dd\u30fc\u30c8\u756a\u53f7\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002 \u305f\u3068\u3048\u3070\u3001Solr\u30b5\u30fc\u30d3\u30b9\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u304c8983\u306e\u5834\u5408\u3001Embedded ZooKeeper\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u306f9983\u3067\u3059\u3002 MultiUserSettingsPanel.validationErrMsg.incomplete=\u3059\u3079\u3066\u306e\u5024\u3092\u5165\u529b MultiUserSettingsPanel.validationErrMsg.invalidDatabasePort=\u7121\u52b9\u306a\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u3059 -MultiUserSettingsPanel.validationErrMsg.invalidIndexingServerPort=\u7121\u52b9\u306aSolr \u30b5\u30fc\u30d0\u30fc\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u3059 +MultiUserSettingsPanel.validationErrMsg.invalidIndexingServerPort=Solr8\u30b5\u30fc\u30d0\u30fc\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u304c\u7121\u52b9\u3067\u3059 MultiUserSettingsPanel.validationErrMsg.invalidMessageServicePort=\u7121\u52b9\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u30b5\u30fc\u30d3\u30b9\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u3067\u3059 MultiUserSettingsPanel.validationErrMsg.invalidMessgeServiceURI=\u6709\u52b9\u3067\u306f\u306a\u3044\u30e1\u30c3\u30bb\u30fc\u30b8\u30b5\u30fc\u30d3\u30b9\u30db\u30b9\u30c8\u304a\u3088\u3073/\u307e\u305f\u306f\u30dd\u30fc\u30c8\u3067\u3059 +MultiUserSettingsPanel.validationErrMsg.invalidSolr4ServerPort=Solr4\u30b5\u30fc\u30d0\u30fc\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u304c\u7121\u52b9\u3067\u3059 +MultiUserSettingsPanel.validationErrMsg.invalidZkServerHostName=ZooKeeper\u30b5\u30fc\u30d0\u30fc\u306e\u30db\u30b9\u30c8\u540d\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +MultiUserSettingsPanel.validationErrMsg.invalidZkServerPort=ZooKeeper\u30b5\u30fc\u30d0\u30fc\u306e\u30dd\u30fc\u30c8\u756a\u53f7\u304c\u7121\u52b9\u3067\u3059 +MultiUserSettingsPanel.validationErrMsg.solrNotConfigured=Solr8\u3068Solr4\u30b5\u30fc\u30d0\u30fc\u306e\u3044\u305a\u308c\u304b\u3092\u69cb\u6210\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 OpenIDE-Module-Name=CoreComponents OptionsCategory_Keywords_General=Autopsy\u30aa\u30d7\u30b7\u30e7\u30f3 OptionsCategory_Keywords_Multi_User_Options=\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u8a2d\u5b9a @@ -284,55 +262,29 @@ ViewOptionsController.moduleErr=\u5024\u306e\u5909\u66f4\u3092\u51e6\u7406\u4e2d ViewOptionsController.moduleErr.msg=\u5024\u306e\u5909\u66f4\u306e\u51e6\u7406\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 ViewPreferencesPanel.currentCaseSettingsPanel.border.title=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u8a2d\u5b9a ViewPreferencesPanel.currentSessionSettingsPanel.border.title=\u73fe\u5728\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u8a2d\u5b9a -ViewPreferencesPanel.groupByDataSourceCheckbox.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5225\u306b\u30b0\u30eb\u30fc\u30d7\u5316 -ViewPreferencesPanel.hideRejectedResultsCheckbox.text=\u62d2\u5426\u3055\u308c\u305f\u7d50\u679c\u3092\u975e\u8868\u793a\u306b\u3059\u308b -ViewPreferencesPanel.maxResultsLabel.toolTipText=\n\u3053\u306e\u5024\u30920 \u306b\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u3059\u3079\u3066\u306e\u7d50\u679c\u304c\u7d50\u679c\u30c6\u30fc\u30d6\u30eb\u306b\u8868\u793a\u3055\u308c\u307e\u3059\u3002\n
\u3053\u306e\u5024\u30920 \u306b\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u7d50\u679c\u6570\u304c\u591a\u3044\u5834\u5408UI\u306e\u5fdc\u7b54\u6027\u304c\u60aa\u304f\u306a\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059 \u3002\n -ViewPreferencesPanel.maxResultsLabel.text=\u30c6\u30fc\u30d6\u30eb\u3067\u8868\u793a\u3059\u308b\u6700\u5927\u7d50\u679c\u6570: +ViewPreferencesPanel.dataSourcesHideKnownCheckbox.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u9818\u57df(\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u968e\u5c64) +ViewPreferencesPanel.dataSourcesHideSlackCheckbox.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u9818\u57df(\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u968e\u5c64) +ViewPreferencesPanel.displayTimeLabel.text=\u6642\u523b\u8868\u793a\u6642\: ViewPreferencesPanel.fileNameTranslationColumnCheckbox.text=\u7d50\u679c\u30d3\u30e5\u30fc\u30ef\u30fc\u306b\u30d5\u30a1\u30a4\u30eb\u540d\u7ffb\u8a33\u7528\u5217\u3092\u8ffd\u52a0 +ViewPreferencesPanel.globalSettingsPanel.border.title=\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a +ViewPreferencesPanel.groupByDataSourceCheckbox.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5225\u306b\u30b0\u30eb\u30fc\u30d7\u5316 +ViewPreferencesPanel.hideKnownFilesLabel.text=\u6b21\u306e\u65e2\u77e5\u306e\u30d5\u30a1\u30a4\u30eb(NIST NSRL\u5185\u306e\u30d5\u30a1\u30a4\u30eb)\u3092\u975e\u8868\u793a\u306b\u3059\u308b\: +ViewPreferencesPanel.hideOtherUsersTagsCheckbox.text=\u30c4\u30ea\u30fc\u5185\u306e\u30bf\u30b0\u9818\u57df +ViewPreferencesPanel.hideOtherUsersTagsLabel.text=\u6b21\u306e\u305d\u306e\u4ed6\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u30bf\u30b0\u3092\u975e\u8868\u793a\u306b\u3059\u308b\: +ViewPreferencesPanel.hideRejectedResultsCheckbox.text=\u62d2\u5426\u3055\u308c\u305f\u7d50\u679c\u3092\u975e\u8868\u793a\u306b\u3059\u308b +ViewPreferencesPanel.hideSlackFilesLabel.text=\u6b21\u306e\u30b9\u30e9\u30c3\u30af\u30d5\u30a1\u30a4\u30eb\u3092\u975e\u8868\u793a\u306b\u3059\u308b\: +ViewPreferencesPanel.keepCurrentViewerRadioButton.text=\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u306e\u307e\u307e\u306b\u3059\u308b +ViewPreferencesPanel.keepCurrentViewerRadioButton.toolTipText=\u305f\u3068\u3048\u3070\u3001JPEG\u9078\u629e\u6642\u306f16\u9032\u30d3\u30e5\u30fc\u306e\u307e\u307e\u306b\u3057\u307e\u3059\u3002 +ViewPreferencesPanel.maxResultsLabel.text=\u30c6\u30fc\u30d6\u30eb\u3067\u8868\u793a\u3059\u308b\u6700\u5927\u7d50\u679c\u6570\: +ViewPreferencesPanel.maxResultsLabel.toolTipText=\n\u3053\u306e\u5024\u30920 \u306b\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u3059\u3079\u3066\u306e\u7d50\u679c\u304c\u7d50\u679c\u30c6\u30fc\u30d6\u30eb\u306b\u8868\u793a\u3055\u308c\u307e\u3059\u3002\n
\u3053\u306e\u5024\u30920 \u306b\u8a2d\u5b9a\u3059\u308b\u3068\u3001\u7d50\u679c\u6570\u304c\u591a\u3044\u5834\u5408UI\u306e\u5fdc\u7b54\u6027\u304c\u60aa\u304f\u306a\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059 \u3002\n +ViewPreferencesPanel.scoColumnsCheckbox.text=S(\u30b9\u30b3\u30a2)\u3001C(\u30b3\u30e1\u30f3\u30c8)\u3001O(\u767a\u751f) +ViewPreferencesPanel.scoColumnsLabel.text=\u6b21\u306e\u305f\u3081\u306e\u5217\u3092\u8ffd\u52a0\u3057\u306a\u3044\: ViewPreferencesPanel.scoColumnsWrapAroundText.text=\u975e\u8868\u793a\u306b\u3059\u308b\u3068\u8aad\u8fbc\u307f\u304c\u65e9\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 -ViewPreferencesPanel.scoColumnsLabel.text=\u6b21\u306e\u305f\u3081\u306e\u5217\u3092\u8ffd\u52a0\u3057\u306a\u3044: -MultiUserSettingsPanel.tbSolr4Port.toolTipText=\u30dd\u30fc\u30c8\u756a\u53f7 -MultiUserSettingsPanel.lbZkSettings.text=Solr\u8a2d\u5b9a -MultiUserSettingsPanel.lbSolr4Settings.text=Solr\u8a2d\u5b9a -MultiUserSettingsPanel.lbSolr8Settings.text=Solr\u8a2d\u5b9a -MultiUserSettingsPanel.tbZkPort.toolTipText=\u30dd\u30fc\u30c8\u756a\u53f7 -MultiUserSettingsPanel.tbSolr8Hostname.toolTipText=\u30db\u30b9\u30c8\u540d\u307e\u305f\u306fIP\u30a2\u30c9\u30ec\u30b9 -MultiUserSettingsPanel.tbSolr8Port.toolTipText=\u30dd\u30fc\u30c8\u756a\u53f7 -MultiUserSettingsPanel.lbSolrNote1.text=Solr\u8a2d\u5b9a -MultiUserSettingsPanel.lbSolrNote2.text=Solr\u8a2d\u5b9a ViewPreferencesPanel.selectFileLabel.text=\u30d5\u30a1\u30a4\u30eb\u9078\u629e\u6642\: ViewPreferencesPanel.translateTextLabel.text=\u30c6\u30ad\u30b9\u30c8\u3092\u7ffb\u8a33\: -ViewPreferencesPanel.translateTextLabel.text=\u30c6\u30ad\u30b9\u30c8\u3092\u7ffb\u8a33: -ViewPreferencesPanel.scoColumnsCheckbox.text=S(\u30b9\u30b3\u30a2)\u3001C(\u30b3\u30e1\u30f3\u30c8)\u3001O(\u767a\u751f) -ViewPreferencesPanel.scoColumnsLabel.text=\u6b21\u306e\u305f\u3081\u306e\u5217\u3092\u8ffd\u52a0\u3057\u306a\u3044: -ViewPreferencesPanel.hideOtherUsersTagsLabel.text=\u6b21\u306e\u305d\u306e\u4ed6\u306e\u30e6\u30fc\u30b6\u30fc\u306e\u30bf\u30b0\u3092\u975e\u8868\u793a\u306b\u3059\u308b: -ViewPreferencesPanel.hideOtherUsersTagsCheckbox.text=\u30c4\u30ea\u30fc\u5185\u306e\u30bf\u30b0\u9818\u57df ViewPreferencesPanel.useAnotherTimeRadioButton.text=\u5225\u306e\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u4f7f\u7528 -ViewPreferencesPanel.useLocalTimeRadioButton.text=\u30ed\u30fc\u30ab\u30eb\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u4f7f\u7528 -ViewPreferencesPanel.displayTimeLabel.text=\u6642\u523b\u8868\u793a\u6642: -ViewPreferencesPanel.viewsHideSlackCheckbox.text=\u30d3\u30e5\u30fc\u9818\u57df -ViewPreferencesPanel.dataSourcesHideSlackCheckbox.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u9818\u57df(\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u968e\u5c64) -ViewPreferencesPanel.hideSlackFilesLabel.text=\u6b21\u306e\u30b9\u30e9\u30c3\u30af\u30d5\u30a1\u30a4\u30eb\u3092\u975e\u8868\u793a\u306b\u3059\u308b: -ViewPreferencesPanel.viewsHideKnownCheckbox.text=\u30d3\u30e5\u30fc\u9818\u57df -ViewPreferencesPanel.dataSourcesHideKnownCheckbox.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u9818\u57df(\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u968e\u5c64) -ViewPreferencesPanel.hideKnownFilesLabel.text=\u6b21\u306e\u65e2\u77e5\u306e\u30d5\u30a1\u30a4\u30eb(NIST NSRL\u5185\u306e\u30d5\u30a1\u30a4\u30eb)\u3092\u975e\u8868\u793a\u306b\u3059\u308b: -ViewPreferencesPanel.keepCurrentViewerRadioButton.toolTipText=\u305f\u3068\u3048\u3070\u3001JPEG\u9078\u629e\u6642\u306f16\u9032\u30d3\u30e5\u30fc\u306e\u307e\u307e\u306b\u3057\u307e\u3059\u3002 -ViewPreferencesPanel.keepCurrentViewerRadioButton.text=\u540c\u3058\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u306e\u307e\u307e\u306b\u3059\u308b -ViewPreferencesPanel.useBestViewerRadioButton.toolTipText=\u305f\u3068\u3048\u3070\u3001JPEG\u9078\u629e\u6642\u306f16\u9032\u304b\u3089\u30e1\u30c7\u30a3\u30a2\u306b\u5207\u308a\u66ff\u3048\u307e\u3059\u3002 ViewPreferencesPanel.useBestViewerRadioButton.text=\u6700\u3082\u56fa\u6709\u306e\u30d5\u30a1\u30a4\u30eb\u30d3\u30e5\u30fc\u306b\u5207\u308a\u66ff\u3048\u308b -ViewPreferencesPanel.selectFileLabel.text=\u30d5\u30a1\u30a4\u30eb\u9078\u629e\u6642: -ViewPreferencesPanel.globalSettingsPanel.border.title=\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a -MultiUserSettingsPanel.bnTestSolr8.text=\u30c6\u30b9\u30c8 -MultiUserSettingsPanel.lbTestSolr8.text= -MultiUserSettingsPanel.bnTestSolr4.text=\u30c6\u30b9\u30c8 -MultiUserSettingsPanel.lbTestSolr4.text= -MultiUserSettingsPanel.bnTestZK.text=\u30c6\u30b9\u30c8 -MultiUserSettingsPanel.lbTestZK.text= -MultiUserSettingsPanel.lbWarning.text= -AutopsyOptionsPanel.agencyLogoPathFieldValidationLabel.text= -AutopsyOptionsPanel.specifyLogoRB.text=\u30ed\u30b4\u3092\u6307\u5b9a -AutopsyOptionsPanel.defaultLogoRB.text=\u30c7\u30d5\u30a9\u30eb\u30c8\u3092\u4f7f\u7528 -AutopsyOptionsPanel.agencyLogoPreview.text=
\u30ed\u30b4\u304c\u3042\u308a\u307e\u305b\u3093
selected
-AutopsyOptionsPanel.browseLogosButton.text=\u53c2\u7167 -AutopsyOptionsPanel.agencyLogoPathField.text= -AutopsyOptionsPanel.logoPanel.border.title=\u30ed\u30b4 +ViewPreferencesPanel.useBestViewerRadioButton.toolTipText=\u305f\u3068\u3048\u3070\u3001JPEG\u9078\u629e\u6642\u306f16\u9032\u304b\u3089\u30e1\u30c7\u30a3\u30a2\u306b\u5207\u308a\u66ff\u3048\u307e\u3059\u3002 +ViewPreferencesPanel.useLocalTimeRadioButton.text=\u30ed\u30fc\u30ab\u30eb\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\u3092\u4f7f\u7528 +ViewPreferencesPanel.viewsHideKnownCheckbox.text=\u30d3\u30e5\u30fc\u9818\u57df +ViewPreferencesPanel.viewsHideSlackCheckbox.text=\u30d3\u30e5\u30fc\u9818\u57df diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle_ja.properties index 150c7fecdc..761b704f2d 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:20 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 AbstractAbstractFileNode.accessTimeColLbl=\u30a2\u30af\u30bb\u30b9\u65e5\u6642 AbstractAbstractFileNode.attrAddrColLbl=\u5c5e\u6027\u30a2\u30c9\u30ec\u30b9 AbstractAbstractFileNode.changeTimeColLbl=\u30a8\u30f3\u30c8\u30ea\u66f4\u65b0\u65e5\u6642 @@ -30,6 +30,7 @@ AbstractAbstractFileNode.modifiedTimeColLbl=\u66f4\u65b0\u65e5\u6642 AbstractAbstractFileNode.nameColLbl=\u540d\u524d AbstractAbstractFileNode.objectId=\u30aa\u30d6\u30b8\u30a7\u30af\u30c8ID AbstractAbstractFileNode.originalName=\u30aa\u30ea\u30b8\u30ca\u30eb\u540d +AbstractAbstractFileNode.sha256HashColLbl=SHA-256 Hash AbstractAbstractFileNode.sizeColLbl=\u30b5\u30a4\u30ba AbstractAbstractFileNode.tagsProperty.displayName=\u30bf\u30b0 AbstractAbstractFileNode.typeDirColLbl=\u30bf\u30a4\u30d7(\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc) diff --git a/Core/src/org/sleuthkit/autopsy/datasourcesummary/ui/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/datasourcesummary/ui/Bundle_ja.properties index 3e5e377b85..2b4d2c7dc2 100644 --- a/Core/src/org/sleuthkit/autopsy/datasourcesummary/ui/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/datasourcesummary/ui/Bundle_ja.properties @@ -1,4 +1,36 @@ -CTL_DataSourceSummaryAction=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30b5\u30de\u30ea\u30fc +#Fri Feb 12 16:56:28 UTC 2021 +AnalysisPanel.hashsetHitsLabel.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d2\u30c3\u30c8 +AnalysisPanel.interestingItemLabel.text=\u8208\u5473\u6df1\u3044\u30a2\u30a4\u30c6\u30e0\u306e\u30d2\u30c3\u30c8 +AnalysisPanel.keywordHitsLabel.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30d2\u30c3\u30c8 +AnalysisPanel_countColumn_title=\u30ab\u30a6\u30f3\u30c8 +AnalysisPanel_keyColumn_title=\u540d\u524d +AnalysisPanel_keywordSearchModuleName=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22 +BaseDataSourceSummaryPanel_defaultNotIngestMessage={0}\u53d6\u8fbc\u307f\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3053\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3067\u306f\u5b9f\u884c\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +BaseDataSourceSummaryPanel_goToArtifact=\u30bd\u30fc\u30b9\u7d50\u679c\u306e\u8868\u793a +BaseDataSourceSummaryPanel_goToFile=\u30d5\u30a9\u30eb\u30c0\u30fc\u5185\u306e\u30bd\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a +CTL_DataSourceSummaryAction=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u6982\u8981 +ContainerPanel.acquisitionDetailsLabel.text=\u53d6\u5f97\u306e\u8a73\u7d30\uff1a +ContainerPanel.deviceIdLabel.text=\u30c7\u30d0\u30a4\u30b9ID\uff1a +ContainerPanel.displayNameLabel.text=\u8868\u793a\u540d\uff1a +ContainerPanel.filePathsLabel.text=\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9\uff1a +ContainerPanel.getDataSources.error.text=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30ea\u30b9\u30c8\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ContainerPanel.getDataSources.error.title=\u8aad\u307f\u8fbc\u307f\u5931\u6557 +ContainerPanel.imageTypeLabel.text=\u753b\u50cf\u30bf\u30a4\u30d7\uff1a +ContainerPanel.md5HashLabel.text=MD5\: +ContainerPanel.originalNameLabel.text=\u540d\u524d\uff1a +ContainerPanel.sectorSizeLabel.text=\u30bb\u30af\u30bf\u30fc\u30b5\u30a4\u30ba\uff1a +ContainerPanel.sha1HashLabel.text=SHA1\: +ContainerPanel.sha256HashLabel.text=SHA256\: +ContainerPanel.sizeLabel.text=\u30b5\u30a4\u30ba\uff1a +ContainerPanel.timeZoneLabel.text=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\uff1a +ContainerPanel.unallocatedSizeLabel.text=\u672a\u5272\u5f53\u9818\u57df\uff1a +ContainerPanel.units.bytes=\ \u30d0\u30a4\u30c8 +ContainerPanel.units.gigabytes=\ GB +ContainerPanel.units.kilobytes=\ kB +ContainerPanel.units.megabytes=\ MB +ContainerPanel.units.petabytes=\ PB +ContainerPanel.units.terabytes=\ TB +ContainerPanel_setFieldsForNonImageDataSource_na=\u8a72\u5f53\u306a\u3057 DataSourceSummaryCountsPanel.FilesByCategoryTableModel.all.row=\u3059\u3079\u3066 DataSourceSummaryCountsPanel.FilesByCategoryTableModel.allocated.row=\u5272\u308a\u5f53\u3066\u6e08\u307f DataSourceSummaryCountsPanel.FilesByCategoryTableModel.count.header=\u30ab\u30a6\u30f3\u30c8 @@ -13,56 +45,113 @@ DataSourceSummaryCountsPanel.FilesByMimeTypeTableModel.executables.row=\u5b9f\u8 DataSourceSummaryCountsPanel.FilesByMimeTypeTableModel.images.row=\u30a4\u30e1\u30fc\u30b8 DataSourceSummaryCountsPanel.FilesByMimeTypeTableModel.type.header=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7 DataSourceSummaryCountsPanel.FilesByMimeTypeTableModel.videos.row=\u52d5\u753b -ContainerPanel.getDataSources.error.text=\u73fe\u5728\u306e\u30b1\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30ea\u30b9\u30c8\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -ContainerPanel.getDataSources.error.title=\u8aad\u307f\u8fbc\u307f\u5931\u6557 -ContainerPanel.units.bytes=\ \u30d0\u30a4\u30c8 -ContainerPanel.units.gigabytes=\ GB -ContainerPanel.units.kilobytes=\ kB -ContainerPanel.units.megabytes=\ MB -ContainerPanel.units.petabytes=\ PB -ContainerPanel.units.terabytes=\ TB -DataSourceSummaryDialog.closeButton.text=\u9589\u3058\u308b -ContainerPanel.displayNameLabel.text=\u8868\u793a\u540d: -ContainerPanel.originalNameLabel.text=\u540d\u524d: -ContainerPanel.deviceIdLabel.text=\u30c7\u30d0\u30a4\u30b9ID: -ContainerPanel.timeZoneLabel.text=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3: -ContainerPanel.imageTypeLabel.text=\u30a4\u30e1\u30fc\u30b8\u30bf\u30a4\u30d7: -ContainerPanel.sizeLabel.text=\u30b5\u30a4\u30ba: -ContainerPanel.sectorSizeLabel.text=\u30bb\u30af\u30bf\u30fc\u30b5\u30a4\u30ba: -ContainerPanel.md5HashLabel.text=MD5: -ContainerPanel.sha1HashLabel.text=SHA1: -ContainerPanel.sha256HashLabel.text=SHA256: -ContainerPanel.filePathsLabel.text=\u30d5\u30a1\u30a4\u30eb\u30d1\u30b9: -ContainerPanel.displayNameValue.text= -ContainerPanel.originalNameValue.text= -ContainerPanel.deviceIdValue.toolTipText= -ContainerPanel.deviceIdValue.text= -ContainerPanel.timeZoneValue.text= -ContainerPanel.imageTypeValue.toolTipText= -ContainerPanel.imageTypeValue.text= -ContainerPanel.sizeValue.text= -ContainerPanel.sectorSizeValue.text= -ContainerPanel.md5HashValue.toolTipText= -ContainerPanel.md5HashValue.text= -ContainerPanel.sha1HashValue.text= -ContainerPanel.sha256HashValue.text= -ContainerPanel.filePathsTable.columnModel.title0= -ContainerPanel.acquisitionDetailsTextArea.text= -ContainerPanel.acquisitionDetailsLabel.text=\u53d6\u5f97\u306e\u8a73\u7d30: -ContainerPanel.unallocatedSizeLabel.text=\u672a\u4f7f\u7528\u9818\u57df: -ContainerPanel.unallocatedSizeValue.text= -DataSourceSummaryCountsPanel.byMimeTypeLabel.text=MIME\u30bf\u30a4\u30d7\u5225\u30d5\u30a1\u30a4\u30eb DataSourceSummaryCountsPanel.byCategoryLabel.text=\u30ab\u30c6\u30b4\u30ea\u30fc\u5225\u30d5\u30a1\u30a4\u30eb +DataSourceSummaryCountsPanel.byMimeTypeLabel.text=MIME\u30bf\u30a4\u30d7\u5225\u30d5\u30a1\u30a4\u30eb DataSourceSummaryCountsPanel.jLabel1.text=\u30bf\u30a4\u30d7\u5225\u7d50\u679c +DataSourceSummaryDialog.closeButton.text=\u9589\u3058\u308b DataSourceSummaryDialog.countsTab.title=\u30ab\u30a6\u30f3\u30c8 DataSourceSummaryDialog.detailsTab.title=\u8a73\u7d30 DataSourceSummaryDialog.ingestHistoryTab.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5c65\u6b74 -DataSourceSummaryDialog.window.title=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30b5\u30de\u30ea\u30fc +DataSourceSummaryDialog.window.title=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u6982\u8981 DataSourceSummaryNode.column.dataSourceName.header=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u540d DataSourceSummaryNode.column.files.header=\u30d5\u30a1\u30a4\u30eb DataSourceSummaryNode.column.results.header=\u7d50\u679c -DataSourceSummaryNode.column.status.header=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b9\u30c6\u30fc\u30bf\u30b9 +DataSourceSummaryNode.column.status.header=\u53d6\u8fbc\u30b9\u30c6\u30fc\u30bf\u30b9 DataSourceSummaryNode.column.tags.header=\u30bf\u30b0 DataSourceSummaryNode.column.type.header=\u30bf\u30a4\u30d7 DataSourceSummaryNode.viewDataSourceAction.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306b\u79fb\u52d5 -ViewSummaryInformationAction.name.text=\u30b5\u30de\u30ea\u30fc\u60c5\u5831\u3092\u8868\u793a +DataSourceSummaryTabbedPane.noDataSourceLabel.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +DataSourceSummaryTabbedPane_analysisTab_title=\u5206\u6790 +DataSourceSummaryTabbedPane_detailsTab_title=\u30b3\u30f3\u30c6\u30ca +DataSourceSummaryTabbedPane_geolocationTab_title=\u30b8\u30aa\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3 +DataSourceSummaryTabbedPane_ingestHistoryTab_title=\u53d6\u8fbc\u5c65\u6b74 +DataSourceSummaryTabbedPane_pastCasesTab_title=\u904e\u53bb\u306e\u30b1\u30fc\u30b9 +DataSourceSummaryTabbedPane_recentFileTab_title=\u6700\u8fd1\u4f7f\u7528\u3057\u305f\u30d5\u30a1\u30a4\u30eb +DataSourceSummaryTabbedPane_timelineTab_title=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3 +DataSourceSummaryTabbedPane_typesTab_title=\u30bf\u30a4\u30d7 +DataSourceSummaryTabbedPane_userActivityTab_title=\u30e6\u30fc\u30b6\u30fc\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +GeolocationPanel.commonViewInGeolocationBtn.text=\u5730\u56f3\u3067\u898b\u308b +GeolocationPanel.mostCommonLabel.text=\u30b8\u30aa\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u304b\u3089\u306e\u6700\u3082\u4e00\u822c\u7684\u306a\u90fd\u5e02 +GeolocationPanel.mostRecentLabel.text=\u30b8\u30aa\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u304b\u3089\u306e\u6700\u8fd1\u306e\u90fd\u5e02 +GeolocationPanel.recentViewInGeolocationBtn.text=\u5730\u56f3\u3067\u898b\u308b +GeolocationPanel.withinDistanceLabel.text=\u90fd\u5e02\u304b\u3089150km\u4ee5\u4e0a\u96e2\u308c\u305f\u5834\u6240\u306f\u3001\u300c\u4e0d\u660e\u300d\u3068\u3057\u3066\u8868\u793a\u3055\u308c\u307e\u3059 +GeolocationPanel.withinDistanceLabel1.text=\u90fd\u5e02\u304b\u3089150km\u4ee5\u4e0a\u96e2\u308c\u305f\u5834\u6240\u306f\u3001\u300c\u4e0d\u660e\u300d\u3068\u3057\u3066\u8868\u793a\u3055\u308c\u307e\u3059 +GeolocationPanel_cityColumn_title=\u6700\u3082\u8fd1\u3044\u90fd\u5e02 +GeolocationPanel_countColumn_title=\u30ab\u30a6\u30f3\u30c8 +GeolocationPanel_onNoCrIngest_message=GPX\u30d1\u30fc\u30b5\u30fc\u304c\u5b9f\u884c\u3055\u308c\u306a\u304b\u3063\u305f\u305f\u3081\u3001\u7d50\u679c\u306f\u8868\u793a\u3055\u308c\u307e\u305b\u3093\u3002 +GeolocationPanel_unknownRow_title=\u4e0d\u660e +PastCasesPanel.notableFileLabel.text=\u300c\u6ce8\u76ee\u300d\u3068\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u4e00\u822c\u7684\u306a\u30b1\u30fc\u30b9 +PastCasesPanel.sameIdLabel.text=\u540c\u3058\u30c7\u30d0\u30a4\u30b9ID\u3092\u6301\u3064\u904e\u53bb\u306e\u30b1\u30fc\u30b9 +PastCasesPanel_caseColumn_title=\u30b1\u30fc\u30b9 +PastCasesPanel_countColumn_title=\u30ab\u30a6\u30f3\u30c8 +PastCasesPanel_onNoCrIngest_message=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5b9f\u884c\u3055\u308c\u306a\u304b\u3063\u305f\u305f\u3081\u3001\u7d50\u679c\u306f\u8868\u793a\u3055\u308c\u307e\u305b\u3093\u3002 +RecentFilePanel_col_header_domain=\u30c9\u30e1\u30a4\u30f3 +RecentFilePanel_col_header_path=\u30d1\u30b9 +RecentFilePanel_col_header_sender=\u9001\u4fe1\u8005 +RecentFilePanel_emailParserModuleName=\u30e1\u30fc\u30eb\u30d1\u30fc\u30b5\u30fc +RecentFilePanel_no_open_documents=\u6700\u8fd1\u958b\u3044\u3066\u3044\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306f\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +RecentFilesPanel.attachmentLabel.text=\u6700\u8fd1\u306e\u6dfb\u4ed8\u30d5\u30a1\u30a4\u30eb +RecentFilesPanel.downloadLabel.text=\u6700\u8fd1\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 +RecentFilesPanel.openDocsLabel.text=\u6700\u8fd1\u958b\u3044\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8 +RecentFilesPanel.rightClickForMoreOptions1.text=\u305d\u306e\u4ed6\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u306f\u3001\u884c\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044 +RecentFilesPanel.rightClickForMoreOptions2.text=\u305d\u306e\u4ed6\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u306f\u3001\u884c\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044 +RecentFilesPanel.rightClickForMoreOptions3.text=\u305d\u306e\u4ed6\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u306f\u3001\u884c\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044 +RecentFilesPanel_col_head_date=\u65e5\u4ed8 +SizeRepresentationUtil_units_bytes=\u30d0\u30a4\u30c8 +SizeRepresentationUtil_units_gigabytes=\ GB +SizeRepresentationUtil_units_kilobytes=\ kB +SizeRepresentationUtil_units_megabytes=\ MB +SizeRepresentationUtil_units_petabytes=\ PB +SizeRepresentationUtil_units_terabytes=\ TB +TimelinePanel.activityRangeLabel.text=\u6d3b\u52d5\u7bc4\u56f2 +TimelinePanel.viewInTimelineBtn.text=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u3067\u8868\u793a +TimelinePanel_earliestLabel_title=\u6700\u53e4 +TimelinePanel_latestLabel_title=\u6700\u65b0 +TimlinePanel_last30DaysChart_artifactEvts_title=\u7d50\u679c\u30a4\u30d9\u30f3\u30c8 +TimlinePanel_last30DaysChart_fileEvts_title=\u30d5\u30a1\u30a4\u30eb\u30a4\u30d9\u30f3\u30c8 +TimlinePanel_last30DaysChart_title=\u904e\u53bb30\u65e5\u9593 +TypesPanel_artifactsTypesPieChart_title=\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30bf\u30a4\u30d7 +TypesPanel_fileMimeTypesChart_audio_title=\u30aa\u30fc\u30c7\u30a3\u30aa +TypesPanel_fileMimeTypesChart_documents_title=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8 +TypesPanel_fileMimeTypesChart_executables_title=\u5b9f\u884c\u53ef\u80fd\u30d5\u30a1\u30a4\u30eb +TypesPanel_fileMimeTypesChart_images_title=\u753b\u50cf +TypesPanel_fileMimeTypesChart_notAnalyzed_title=\u5206\u6790\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +TypesPanel_fileMimeTypesChart_other_title=\u305d\u306e\u4ed6 +TypesPanel_fileMimeTypesChart_title=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7 +TypesPanel_fileMimeTypesChart_unknown_title=\u4e0d\u660e +TypesPanel_fileMimeTypesChart_videos_title=\u30d3\u30c7\u30aa +TypesPanel_filesByCategoryTable_allocatedRow_title=\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u30d5\u30a1\u30a4\u30eb +TypesPanel_filesByCategoryTable_directoryRow_title=\u30d5\u30a9\u30eb\u30c0 +TypesPanel_filesByCategoryTable_slackRow_title=Slack\u30d5\u30a1\u30a4\u30eb +TypesPanel_filesByCategoryTable_unallocatedRow_title=\u672a\u5272\u5f53\u30d5\u30a1\u30a4\u30eb +TypesPanel_osLabel_title=OS +TypesPanel_sizeLabel_title=\u30b5\u30a4\u30ba +TypesPanel_usageLabel_title=\u4f7f\u7528\u6cd5 +UserActivityPanel.programsRunLabel.text=\u6700\u8fd1\u306e\u30d7\u30ed\u30b0\u30e9\u30e0 +UserActivityPanel.recentAccountsLabel.text=\u6700\u8fd1\u4f7f\u7528\u3055\u308c\u305f\u30a2\u30ab\u30a6\u30f3\u30c8\u30bf\u30a4\u30d7 +UserActivityPanel.recentDomainsLabel.text=\u6700\u8fd1\u306e\u30c9\u30e1\u30a4\u30f3 +UserActivityPanel.rightClickForMoreOptions1.text=\u305d\u306e\u4ed6\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u306f\u3001\u884c\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044 +UserActivityPanel.rightClickForMoreOptions2.text=\u305d\u306e\u4ed6\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u306f\u3001\u884c\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044 +UserActivityPanel.rightClickForMoreOptions3.text=\u305d\u306e\u4ed6\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u306f\u3001\u884c\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044 +UserActivityPanel.rightClickForMoreOptions4.text=\u305d\u306e\u4ed6\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u306f\u3001\u884c\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044 +UserActivityPanel.rightClickForMoreOptions5.text=\u305d\u306e\u4ed6\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u3064\u3044\u3066\u306f\u3001\u884c\u3092\u53f3\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044 +UserActivityPanel.topDevicesAttachedLabel.text=\u6700\u8fd1\u63a5\u7d9a\u3055\u308c\u305f\u30c7\u30d0\u30a4\u30b9 +UserActivityPanel.topWebSearchLabel.text=\u6700\u8fd1\u306eWeb\u691c\u7d22 +UserActivityPanel_TopAccountTableModel_accountType_header=\u30a2\u30ab\u30f3\u30c8\u30bf\u30a4\u30d7 +UserActivityPanel_TopAccountTableModel_lastAccess_header=\u6700\u7d42\u30a2\u30af\u30bb\u30b9\u65e5 +UserActivityPanel_TopDeviceAttachedTableModel_dateAccessed_header=\u6700\u7d42\u30a2\u30af\u30bb\u30b9\u65e5 +UserActivityPanel_TopDeviceAttachedTableModel_deviceId_header=\u30c7\u30d0\u30a4\u30b9ID +UserActivityPanel_TopDeviceAttachedTableModel_makeModel_header=\u30e1\u30fc\u30ab\u30fc\u3068\u30e2\u30c7\u30eb +UserActivityPanel_TopDomainsTableModel_count_header=\u53c2\u89b3 +UserActivityPanel_TopDomainsTableModel_domain_header=\u30c9\u30e1\u30a4\u30f3 +UserActivityPanel_TopDomainsTableModel_lastAccess_header=\u6700\u7d42\u30a2\u30af\u30bb\u30b9\u65e5 +UserActivityPanel_TopProgramsTableModel_count_header=\u5b9f\u884c\u6642\u9593 +UserActivityPanel_TopProgramsTableModel_folder_header=\u30d5\u30a9\u30eb\u30c0 +UserActivityPanel_TopProgramsTableModel_lastrun_header=\u524d\u56de\u5b9f\u884c +UserActivityPanel_TopProgramsTableModel_name_header=\u30d7\u30ed\u30b0\u30e9\u30e0 +UserActivityPanel_TopWebSearchTableModel_dateAccessed_header=\u30a2\u30af\u30bb\u30b9\u65e5 +UserActivityPanel_TopWebSearchTableModel_searchString_header=\u691c\u7d22\u6587\u5b57\u5217 +UserActivityPanel_TopWebSearchTableModel_translatedResult_header=\u7ffb\u8a33\u6e08\u307f +UserActivityPanel_noDataExists=\u901a\u4fe1\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093 +UserActivityPanel_tab_title=\u30e6\u30fc\u30b6\u30fc\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +ViewSummaryInformationAction.name.text=\u6982\u8981\u60c5\u5831\u3092\u8868\u793a diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/directorytree/Bundle_ja.properties index cf6128e8ed..d9ae2561f4 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/directorytree/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 AddExternalViewerRuleDialog.cancelButton.title=\u53d6\u308a\u6d88\u3057 AddExternalViewerRuleDialog.saveButton.title=\u4fdd\u5b58 AddExternalViewerRuleDialog.title=\u5916\u90e8\u30d3\u30e5\u30fc\u30ef\u30fc\u30eb\u30fc\u30eb @@ -157,7 +157,7 @@ VolumeDetailsPanel.descLabel.text=\u8a18\u8ff0\: VolumeDetailsPanel.descValue.text=... VolumeDetailsPanel.flagsLabel.text=\u30d5\u30e9\u30b0\: VolumeDetailsPanel.flagsValue.text=... -VolumeDetailsPanel.generalVolumeLabel.text=\u6a19\u6e96\u30dc\u30ea\u30e5\u30fc\u30e0\u60c5\u5831 +VolumeDetailsPanel.generalVolumeLabel.text=\u4e00\u822c\u7684\u306a\u30dc\u30ea\u30e5\u30fc\u30e0\u60c5\u5831 VolumeDetailsPanel.lengthLabel.text=\u30bb\u30af\u30bf\u30fc\u306e\u9577\u3055\: VolumeDetailsPanel.lengthValue.text=... VolumeDetailsPanel.startLabel.text=\u30bb\u30af\u30bf\u30fc\u3092\u958b\u59cb\u4e2d\u3067\u3059\: diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/actionhelpers/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/directorytree/actionhelpers/Bundle_ja.properties index e59e05a228..3d4329c552 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/actionhelpers/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/directorytree/actionhelpers/Bundle_ja.properties @@ -1,3 +1,3 @@ -#Tue Aug 18 18:09:21 UTC 2020 -ExtractActionHelper.progress.extracting={0}\u306b\u62bd\u51fa\u3057\u3066\u3044\u307e\u3059 -ExtractActionHelper.progress.fileExtracting=\u30d5\u30a1\u30a4\u30eb\u3092\u62bd\u51fa\u4e2d\uff1a{0} +#Fri Feb 12 16:56:28 UTC 2021 +ExtractActionHelper.progress.extracting={0}\u3078\u306e\u62bd\u51fa +ExtractActionHelper.progress.fileExtracting=\u30d5\u30a1\u30a4\u30eb\u306e\u62bd\u51fa\uff1a{0} diff --git a/Core/src/org/sleuthkit/autopsy/filesearch/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/filesearch/Bundle_ja.properties index a4ad1d256f..fdcdd76516 100644 --- a/Core/src/org/sleuthkit/autopsy/filesearch/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/filesearch/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 DataSourceFilter.errorMessage.emptyDataSource=\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u30c7\u30fc\u30bf\u30bf\u30a4\u30d7\u306e\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u3092\u9078\u629e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 DataSourcePanel.dataSourceCheckBox.actionCommand=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\: DataSourcePanel.dataSourceCheckBox.label=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\: @@ -12,7 +12,7 @@ DateSearchPanel.copyMenuItem.text=\u30b3\u30d4\u30fc DateSearchPanel.createdCheckBox.text=\u4f5c\u6210\u6e08\u307f DateSearchPanel.cutMenuItem.text=\u5207\u308a\u53d6\u308a DateSearchPanel.dateCheckBox.text=\u65e5\u4ed8\: -DateSearchPanel.dateFormatLabel.text=*\u65e5\u4ed8\u306e\u5f62\u5f0f\u306fmm/dd/yyyy\u3067\u3059 +DateSearchPanel.dateFormatLabel.text=*\u65e5\u4ed8\u5f62\u5f0f\u306fmm / dd / yyyy\u3067\u3059 DateSearchPanel.jLabel1.text=\u5b9b\u5148 DateSearchPanel.jLabel4.text=\u30bf\u30a4\u30e0\u30be\u30fc\u30f3\: DateSearchPanel.modifiedCheckBox.text=\u4fee\u6b63\u6e08\u307f @@ -38,9 +38,11 @@ FileSearchPanel.search.validationErr.msg=\u691c\u8a3c\u30a8\u30e9\u30fc\: {0} FileSearchPanel.searchButton.text=\u691c\u7d22 HashSearchFilter.errorMessage.emptyHash=\u30cf\u30c3\u30b7\u30e5\u30c7\u30fc\u30bf\u304c\u7a7a(\u672a\u5165\u529b)\u3067\u3059\u3002 HashSearchFilter.errorMessage.wrongCharacter=MD5\u306b\u7121\u52b9\u306a16\u9032\u6570\u6587\u5b57\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002 -HashSearchFilter.errorMessage.wrongLength=\u5165\u529b\u306e\u9577\u3055({0}) \u304cMD5\u306e\u9577\u3055(32)\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002 +HashSearchFilter.errorMessage.wrongLengthMd5=\u5165\u529b\u9577\u3055\uff08{0}\uff09\u306fMD5\u9577\u3055\uff0832\uff09\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002 +HashSearchFilter.errorMessage.wrongLengthSha256=\u5165\u529b\u9577\u3055\uff08{0}\uff09\u306fSHA-256 l\u9577\u3055\uff0864\uff09\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002 HashSearchPanel.emptyHashMsg.text=\u30cf\u30c3\u30b7\u30e5\u691c\u7d22\u306b\u4f55\u304b\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 HashSearchPanel.md5CheckBox.text=MD5\: +HashSearchPanel.sha256CheckBox.text=SHA-256\: KnownStatusSearchFilter.errorMessage.noKnownStatusCheckboxSelected=\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u65e2\u77e5\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u3092\u9078\u629e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 KnownStatusSearchFilter.noneSelectedMsg.text=\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u65e2\u77e5\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u3092\u9078\u629e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\! KnownStatusSearchPanel.knownBadOptionCheckBox.text=\u9855\u8457 @@ -49,7 +51,7 @@ KnownStatusSearchPanel.knownOptionCheckBox.text=\u65e2\u77e5(NSRL\u307e\u305f\u3 KnownStatusSearchPanel.unknownOptionCheckBox.text=\u4e0d\u660e MimeTypeFilter.errorMessage.emptyMimeType=\u5c11\u306a\u304f\u3068\u30821\u3064\u306eMIME\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093\u3002 MimeTypePanel.mimeTypeCheckBox.text=MIME\u30bf\u30a4\u30d7\: -MimeTypePanel.noteLabel.text=*\u8907\u6570\u306eMIME\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3067\u304d\u307e\u3059 +MimeTypePanel.noteLabel.text=*\u6ce8\uff1a\u8907\u6570\u306eMIME\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3067\u304d\u307e\u3059 NameSearchFilter.emptyNameMsg.text=\u540d\u524d\u691c\u7d22\u306b\u4f55\u304b\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 NameSearchFilter.errorMessage.emtpyName=\u691c\u7d22\u3059\u308b\u540d\u524d\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002 NameSearchPanel.copyMenuItem.text=\u30b3\u30d4\u30fc @@ -61,6 +63,7 @@ NameSearchPanel.searchTextField.text= NameSearchPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629e OpenIDE-Module-Name=FileSearch SearchNode.getName.text=\u691c\u7d22\u7d50\u679c +Sha256HashSearchPanel.sha256CheckBox.text=SHA-256\: SizeSearchFilter.errorMessage.nonNegativeNumber=\u5165\u529b\u30b5\u30a4\u30ba\u30c7\u30fc\u30bf\u306f\u8ca0\u306e\u6570\u3067\u3059\u3002 SizeSearchFilter.errorMessage.notANumber=\u5165\u529b\u30b5\u30a4\u30ba\u30c7\u30fc\u30bf\u306f\u6570\u5b57\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 SizeSearchPanel.copyMenuItem.text=\u30b3\u30d4\u30fc diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/geolocation/Bundle_ja.properties index ab993ea889..9dd5146a27 100644 --- a/Core/src/org/sleuthkit/autopsy/geolocation/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/geolocation/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 GLTopComponent_No_dataSource_Title=\u30b8\u30aa\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u30fb\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u306f\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f GLTopComponent_No_dataSource_message=\u30b8\u30aa\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u542b\u3080\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306f\u3042\u308a\u307e\u305b\u3093\u3002 GLTopComponent_initilzation_error=\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u306e\u521d\u671f\u5316\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 \u4f4d\u7f6e\u60c5\u5831\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 @@ -34,6 +34,6 @@ GeolocationSettings_path_not_valid_title=\u30d5\u30a1\u30a4\u30eb\u304c\u7121\u5 GeolocationTC_KML_report_title=KML\u30ec\u30dd\u30fc\u30c8 GeolocationTC_empty_waypoint_message=\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u304c\u306a\u3044\u305f\u3081\u3001KML\u30ec\u30dd\u30fc\u30c8\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093\u3002\nKML\u30ec\u30dd\u30fc\u30c8\u3092\u751f\u6210\u3059\u308b\u524d\u306b\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8\u304c\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044 GeolocationTC_report_progress_title=KML\u30ec\u30dd\u30fc\u30c8\u306e\u9032\u884c\u72b6\u6cc1 -GeolocationTopComponent.WaypointFetcher.onErrorDescription=GPS\u30c8\u30e9\u30c3\u30af\u30c7\u30fc\u30bf\u306e\u53ce\u96c6\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 \u4e00\u90e8\u306e\u7d50\u679c\u306f\u9664\u5916\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +GeolocationTopComponent.WaypointFetcher.onErrorDescription=\u4e00\u90e8\u306eGPS\u30c8\u30e9\u30c3\u30af\u30c7\u30fc\u30bf\u306e\u53ce\u96c6\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u306e\u3067\u305d\u306e\u7d50\u679c\u306f\u9664\u5916\u3055\u308c\u307e\u3057\u305f\u3002 GeolocationTopComponent.WaypointFetcher.onErrorTitle=GPS\u30c8\u30e9\u30c3\u30af\u30c7\u30fc\u30bf\u306e\u53ce\u96c6\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f GeolocationTopComponent.reportButton.text=KML\u30ec\u30dd\u30fc\u30c8 diff --git a/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/Bundle_ja.properties index 984eeeda78..8e7c6dfdc5 100644 --- a/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/geolocation/datamodel/Bundle_ja.properties @@ -1,4 +1,5 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 +GEOArea_point_label_header=\u30a8\u30ea\u30a2{0}\u306e\u30a2\u30a6\u30c8\u30e9\u30a4\u30f3\u30dd\u30a4\u30f3\u30c8 GEOTrack_point_label_header=\u30c8\u30e9\u30c3\u30af\u306e\u30c8\u30e9\u30c3\u30af\u30dd\u30a4\u30f3\u30c8\uff1a{0} Route_point_label=\u30eb\u30fc\u30c8\u306e\u30a6\u30a7\u30a4\u30dd\u30a4\u30f3\u30c8 Track_distanceFromHome_displayName=\u539f\u70b9\u304b\u3089\u306e\u8ddd\u96e2 diff --git a/Core/src/org/sleuthkit/autopsy/guiutils/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/guiutils/Bundle_ja.properties index 21eec7e42d..614069b69e 100644 --- a/Core/src/org/sleuthkit/autopsy/guiutils/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/guiutils/Bundle_ja.properties @@ -1,6 +1,6 @@ -#Tue Aug 18 18:09:21 UTC 2020 -CheckBoxListPanel.checkButton.text=\u3059\u3079\u3066\u9078\u629e -CheckBoxListPanel.uncheckButton.text=\u3059\u3079\u3066\u306e\u9078\u629e\u3092\u89e3\u9664 +#Fri Feb 12 16:56:28 UTC 2021 +CheckBoxListPanel.checkButton.text=\u3059\u3079\u3066\u3092\u30c1\u30a7\u30c3\u30af +CheckBoxListPanel.uncheckButton.text=\u3059\u3079\u3066\u306e\u30c1\u30a7\u30c3\u30af\u3092\u5916\u3057\u307e\u3059 StatusIconCellRenderer.tooltiptext.error=\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f StatusIconCellRenderer.tooltiptext.ok=OK StatusIconCellRenderer.tooltiptext.warning=\u8b66\u544a\u304c\u767a\u751f\u3057\u307e\u3057\u305f diff --git a/Core/src/org/sleuthkit/autopsy/healthmonitor/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/healthmonitor/Bundle_ja.properties index ec245205c5..3d4b8de948 100644 --- a/Core/src/org/sleuthkit/autopsy/healthmonitor/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/healthmonitor/Bundle_ja.properties @@ -1,3 +1,8 @@ +#Fri Feb 12 16:56:28 UTC 2021 +HealthMonitorDashboard.DateRange.oneDay=1\u65e5 +HealthMonitorDashboard.DateRange.oneMonth=1\u30f5\u6708 +HealthMonitorDashboard.DateRange.oneWeek=1\u9031\u9593 +HealthMonitorDashboard.DateRange.twoWeeks=2\u9031\u9593 HealthMonitorDashboard.createAdminPanel.disableButton=\u30e2\u30cb\u30bf\u30fc\u3092\u7121\u52b9\u5316 HealthMonitorDashboard.createAdminPanel.enableButton=\u30e2\u30cb\u30bf\u30fc\u3092\u6709\u52b9\u5316 HealthMonitorDashboard.createTimingControlPanel.filterByHost=\u30db\u30b9\u30c8\u5225\u306b\u30d5\u30a3\u30eb\u30bf\u30fc @@ -7,17 +12,16 @@ HealthMonitorDashboard.createTimingControlPanel.skipOutliers=\u5916\u308c\u5024\ HealthMonitorDashboard.createTimingPanel.noData=\u8868\u793a\u3059\u308b\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093 - \u30e2\u30cb\u30bf\u30fc\u304c\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093 HealthMonitorDashboard.createTimingPanel.timingMetricsTitle=\u30bf\u30a4\u30df\u30f3\u30b0\u6307\u6a19 HealthMonitorDashboard.createUserControlPanel.maxDays=\u6700\u5927\u8868\u793a\u65e5\u6570 +HealthMonitorDashboard.createUserControlPanel.reportDone=\u30ec\u30dd\u30fc\u30c8\u306e\u4fdd\u5b58\u5148\uff1a{0} +HealthMonitorDashboard.createUserControlPanel.reportError=\u30ec\u30dd\u30fc\u30c8\u306e\u751f\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +HealthMonitorDashboard.createUserControlPanel.userReportButton=\u30ec\u30dd\u30fc\u30c8\u306e\u751f\u6210 HealthMonitorDashboard.createUserPanel.noData=\u8868\u793a\u3059\u308b\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093 - \u30e2\u30cb\u30bf\u30fc\u304c\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093 HealthMonitorDashboard.createUserPanel.userMetricsTitle=\u30e6\u30fc\u30b6\u30fc\u6307\u6a19 -HealthMonitorDashboard.DateRange.oneDay=1\u65e5 -HealthMonitorDashboard.DateRange.oneMonth=1\u30f5\u6708 -HealthMonitorDashboard.DateRange.oneWeek=1\u9031\u9593 -HealthMonitorDashboard.DateRange.twoWeeks=2\u9031\u9593 HealthMonitorDashboard.display.dashboardTitle=\u6b63\u5e38\u6027\u30e2\u30cb\u30bf\u30fc HealthMonitorDashboard.display.errorCreatingDashboard=\u6b63\u5e38\u6027\u30e2\u30cb\u30bf\u30fc\u30c0\u30c3\u30b7\u30e5\u30dc\u30fc\u30c9\u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f HealthMonitorDashboard.updateTimingMetricGraphs.noData=\u8868\u793a\u3059\u308b\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093 HealthMonitorDashboard.updateUserMetricGraphs.noData=\u8868\u793a\u3059\u308b\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093 -TimeZonePanel.title=\u6b21\u306e\u5358\u4f4d\u3067\u6642\u523b\u3092\u8868\u793a: +TimeZonePanel.title=\u6b21\u306e\u5358\u4f4d\u3067\u6642\u523b\u3092\u8868\u793a\: TimingMetricGraphPanel.paintComponent.hours=\u6642 TimingMetricGraphPanel.paintComponent.microseconds=\u30de\u30a4\u30af\u30ed\u79d2 TimingMetricGraphPanel.paintComponent.milliseconds=\u30df\u30ea\u79d2 diff --git a/Core/src/org/sleuthkit/autopsy/ingest/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/ingest/Bundle_ja.properties index 215b536e3d..57e96f90d4 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/ingest/Bundle_ja.properties @@ -1,157 +1,156 @@ +#Fri Feb 12 16:56:28 UTC 2021 +CTL_IngestMessageTopComponent=\u30e1\u30c3\u30bb\u30fc\u30b8 CTL_RunIngestAction=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c +DataSourceIngestCancellationPanel.cancelAllModulesRadioButton.text=\u3059\u3079\u3066\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u53d6\u308a\u6d88\u3059 +DataSourceIngestCancellationPanel.cancelCurrentModuleRadioButton.text=\u73fe\u5728\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u307f\u3092\u53d6\u308a\u6d88\u3059 +DataSourceIngestPipeline.moduleError.title.text={0} \u30a8\u30e9\u30fc +FileIngestCancellationPanel.cancelFileIngestRadioButton.text=\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u307f\u3092\u53d6\u308a\u6d88\u3059 +FileIngestCancellationPanel.cancelIngestJobRadioButton.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3068\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u53d6\u308a\u6d88\u3059 +FileIngestPipeline.moduleError.title.text={0} \u30a8\u30e9\u30fc +HINT_IngestMessageTopComponent=\u30e1\u30c3\u30bb\u30fc\u30b8\u30a6\u30a3\u30f3\u30c9\u30a6 +IngestDialog.closeButton.title=\u7d42\u4e86 +IngestDialog.startButton.title=\u958b\u59cb +IngestJob.cancelReason.cancelledByUser.text=\u30e6\u30fc\u30b6\u30fc\u306b\u3088\u3063\u3066\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f +IngestJob.cancelReason.caseClosed.text=\u30b1\u30fc\u30b9\u3092\u9589\u3058\u307e\u3057\u305f +IngestJob.cancelReason.ingestModStartFail.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +IngestJob.cancelReason.notCancelled.text=\u53d6\u308a\u6d88\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +IngestJob.cancelReason.outOfDiskSpace.text=\u30c7\u30a3\u30b9\u30af\u9818\u57df\u304c\u3042\u308a\u307e\u305b\u3093 +IngestJob.cancelReason.servicesDown.text=\u30b5\u30fc\u30d3\u30b9\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059 +IngestJob.cancellationDialog.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u53d6\u308a\u6d88\u3059 +IngestJob.progress.cancelling=\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059... +IngestJob.progress.dataSourceIngest.displayName={1} \u306e {0} +IngestJob.progress.dataSourceIngest.initialDisplayName={0} \u3092\u89e3\u6790\u4e2d\u3067\u3059 +IngestJob.progress.fileIngest.displayName={0} \u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u6790\u4e2d\u3067\u3059 +IngestJobSettings.createModuleSettingsFolder.warning=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u8a2d\u5b9a\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3002 +IngestJobSettings.missingModule.warning=\u4ee5\u524d\u306b\u8aad\u307f\u8fbc\u3093\u3060 {0} \u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +IngestJobSettings.moduleSettingsLoad.warning=\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u3067\u3001{1} \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e {0} \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u8a2d\u5b9a\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +IngestJobSettings.moduleSettingsSave.warning={1} \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e {0} \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u8a2d\u5b9a\u3092\u4fdd\u5b58\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +IngestJobSettings.save.warning={0} \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 IngestJobSettingsPanel.IngestModulesTableRenderer.info.message=\u4ee5\u524d\u306b\u3053\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u4e0a\u3067\u3053\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u65e7\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u5b9f\u884c\u3055\u308c\u307e\u3057\u305f\u3002 IngestJobSettingsPanel.IngestModulesTableRenderer.warning.message=\u4ee5\u524d\u306b\u3053\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u4e0a\u3067\u3053\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5b9f\u884c\u3055\u308c\u307e\u3057\u305f\u3002 +IngestJobSettingsPanel.fileIngestFilterLabel.text=\u6b21\u3067\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c\: +IngestJobSettingsPanel.globalSettingsButton.actionCommand=\u9ad8\u5ea6 +IngestJobSettingsPanel.globalSettingsButton.text=\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a +IngestJobSettingsPanel.jButtonDeselectAll.text=\u3059\u3079\u3066\u306e\u9078\u629e\u3092\u89e3\u9664 +IngestJobSettingsPanel.jButtonSelectAll.text=\u3059\u3079\u3066\u3092\u9078\u629e IngestJobSettingsPanel.noPerRunSettings=\u9078\u629e\u3055\u308c\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u306f\u5b9f\u884c\u3054\u3068\u306e\u8a2d\u5b9a\u304c\u3042\u308a\u307e\u305b\u3093\u3002 IngestJobSettingsPanel.pastJobsButton.action.frame.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5c65\u6b74 -IngestManager.startupErr.dlgErrorList=\u30a8\u30e9\u30fc: +IngestJobSettingsPanel.pastJobsButton.text=\u5c65\u6b74 +IngestJobTableModel.colName.dataSource=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 +IngestJobTableModel.colName.dirQueued=\u30ad\u30e5\u30fc\u6e08\u307f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc +IngestJobTableModel.colName.dsQueued=\u30ad\u30e5\u30fc\u6e08\u307f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 +IngestJobTableModel.colName.filesPerSec=\u30d5\u30a1\u30a4\u30eb/\u79d2 +IngestJobTableModel.colName.filesQueued=\u30ad\u30e5\u30fc\u6e08\u307f\u30d5\u30a1\u30a4\u30eb +IngestJobTableModel.colName.inProgress=\u9032\u884c\u4e2d +IngestJobTableModel.colName.jobID=\u30b8\u30e7\u30d6ID +IngestJobTableModel.colName.numProcessed=\u51e6\u7406\u3057\u305f\u6570 +IngestJobTableModel.colName.rootQueued=\u30ad\u30e5\u30fc\u6e08\u307f\u30eb\u30fc\u30c8 +IngestJobTableModel.colName.start=\u958b\u59cb +IngestJobTableModel.colName.streamingQueued=\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u30ad\u30e5\u30fc +IngestManager.IngestMessage.ErrorMessageLimitReached.msg=\u63d0\u793a\u3055\u308c\u305f\u30a8\u30e9\u30fc\u304a\u3088\u3073/\u307e\u305f\u306f\u8b66\u544a\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5927\u6570 ({0}) \u3067\u3059\u3002\u305d\u306e\u4ed6\u306e\u30a8\u30e9\u30fc/\u8b66\u544a\u306f\u3001\u30ed\u30b0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044([\u30d8\u30eb\u30d7] -> [\u30ed\u30b0\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u304f])\u3002 +IngestManager.IngestMessage.ErrorMessageLimitReached.subject=\u63d0\u793a\u3055\u308c\u305f\u6700\u5927\u30a8\u30e9\u30fc\u6570 +IngestManager.IngestMessage.ErrorMessageLimitReached.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc +IngestManager.IngestThreadActivitySnapshot.idleThread=\u30a2\u30a4\u30c9\u30eb\u4e2d +IngestManager.OpenEventChannel.Fail.ErrMsg=\u30b1\u30fc\u30b9\u3067\u9023\u643a\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u305d\u306e\u4ed6\u306e\u30ce\u30fc\u30c9\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +IngestManager.OpenEventChannel.Fail.Title=\u63a5\u7d9a\u5931\u6557 +IngestManager.StartIngestJobsTask.run.cancelling={0} (\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059...) +IngestManager.StartIngestJobsTask.run.displayName=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u8d77\u52d5\u4e2d\u3067\u3059 +IngestManager.cancellingIngest.msgDlg.text=\u73fe\u5728\u5b9f\u884c\u4e2d\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u3092\u3059\u3079\u3066\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059 +IngestManager.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc +IngestManager.moduleErr.errListenToUpdates.msg=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +IngestManager.serviceIsDown.msgDlg.text={0} \u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059 +IngestManager.startupErr.dlgErrorList=\u30a8\u30e9\u30fc\: IngestManager.startupErr.dlgMsg=1\u3064\u4ee5\u4e0a\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f\u3002 IngestManager.startupErr.dlgSolution=\u5931\u6557\u3057\u305f\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u7121\u52b9\u306b\u3059\u308b\u304b\u3001\u30a8\u30e9\u30fc\u3092\u4fee\u6b63\u3057\u3066\u304b\u3089\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u518d\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002 IngestManager.startupErr.dlgTitle=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u8d77\u52d5\u5931\u6557 +IngestMessage.exception.srcSubjDetailsDataNotNull.msg=\u30bd\u30fc\u30b9\u3001\u4ef6\u540d\u3001\u8a73\u7d30\u304a\u3088\u3073\u30c7\u30fc\u30bf\u3092null\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093 +IngestMessage.exception.srcSubjNotNull.msg=\u30bd\u30fc\u30b9\u3068\u4ef6\u540d\u3092null\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093 +IngestMessage.exception.typeSrcSubjNotNull.msg=\u30e1\u30c3\u30bb\u30fc\u30b8\u30bf\u30a4\u30d7\u3001\u30bd\u30fc\u30b9\u304a\u3088\u3073\u4ef6\u540d\u3092null\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093 +IngestMessage.toString.date.text=\ \u30c7\u30fc\u30bf\: {0} +IngestMessage.toString.details.text=\ \u8a73\u7d30\: {0} +IngestMessage.toString.subject.text=\ \u4ef6\u540d\: {0} +IngestMessage.toString.type.text=\u30bf\u30a4\u30d7\: {0} +IngestMessageDetailsPanel.backButton.text= +IngestMessageDetailsPanel.copyMenuItem.text=\u30b3\u30d4\u30fc +IngestMessageDetailsPanel.messageDetailsPane.contentType=\u30c6\u30ad\u30b9\u30c8/html +IngestMessageDetailsPanel.messageDetailsPane.toolTipText= +IngestMessageDetailsPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u3092\u9078\u629e +IngestMessageDetailsPanel.viewArtifactButton.text=\u7d50\u679c\u306b\u79fb\u52d5 +IngestMessageDetailsPanel.viewContentButton.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u306b\u79fb\u52d5 +IngestMessagePanel.BooleanRenderer.exception.nonBoolVal.msg=\u30d6\u30fc\u30eb\u5024\u4ee5\u5916\u306e\u5024\u3067BooleanRenderer\u3092\u4f7f\u7528\u3057\u3088\u3046\u3068\u8a66\u307f\u307e\u3057\u305f\u3002 +IngestMessagePanel.DateRenderer.exception.nonDateVal.text=\u65e5\u4ed8\u5024\u4ee5\u5916\u306e\u5024\u3067DateRenderer\u3092\u4f7f\u7528\u3057\u3088\u3046\u3068\u8a66\u307f\u307e\u3057\u305f\u3002 +IngestMessagePanel.MsgTableMod.colNames.module=\u30e2\u30b8\u30e5\u30fc\u30eb +IngestMessagePanel.MsgTableMod.colNames.new=\u65b0\u898f? +IngestMessagePanel.MsgTableMod.colNames.num=\u6570\u5b57 +IngestMessagePanel.MsgTableMod.colNames.subject=\u4ef6\u540d +IngestMessagePanel.MsgTableMod.colNames.timestamp=\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7 +IngestMessagePanel.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc +IngestMessagePanel.moduleErr.errListenUpdates.text=IngestMessagePanel\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 +IngestMessagePanel.sortByComboBox.model.priority=\u512a\u5148\u5ea6 +IngestMessagePanel.sortByComboBox.model.time=\u6642\u523b +IngestMessagePanel.sortByComboBox.toolTipText=\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u6642\u9593(\u6642\u7cfb\u5217\u9806)\u307e\u305f\u306f\u30e1\u30c3\u30bb\u30fc\u30b8\u512a\u5148\u5ea6\u3067\u30bd\u30fc\u30c8 +IngestMessagePanel.sortByLabel.text=\u6b21\u3067\u30bd\u30fc\u30c8\: +IngestMessagePanel.totalMessagesNameLabel.text=\u5408\u8a08\: +IngestMessagePanel.totalMessagesNameVal.text=- +IngestMessagePanel.totalUniqueMessagesNameLabel.text=\u4e00\u610f\: +IngestMessagePanel.totalUniqueMessagesNameVal.text=- +IngestMessageTopComponent.displayName=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30dc\u30c3\u30af\u30b9 +IngestMessageTopComponent.displayReport.option.GenRpt=\u30ec\u30dd\u30fc\u30c8\u751f\u6210 +IngestMessageTopComponent.displayReport.option.OK=OK +IngestMessageTopComponent.initComponents.name=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30dc\u30c3\u30af\u30b9 +IngestMessageTopComponent.msgDlg.ingestRpt.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30ec\u30dd\u30fc\u30c8 +IngestMessagesToolbar.customizeButton.toolTipText=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8 +IngestMessagesToolbar.toolTipText= +IngestModuleFactoryLoader.errorMessages.duplicateDisplayName={0} \u306e\u540d\u524d\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002\u5225\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u540d\u3068\u91cd\u8907\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002 +IngestMonitor.mgrErrMsg.lowDiskSpace.msg=\u30c7\u30a3\u30b9\u30af {0} \u306e\u30c7\u30a3\u30b9\u30af\u9818\u57df\u304c\u5c11\u306a\u304f\u306a\u3063\u3066\u3044\u308b\u305f\u3081\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u4e2d\u6b62\u3057\u307e\u3057\u305f\u3002\n\u30b1\u30fc\u30b9\u306e\u30c9\u30e9\u30a4\u30d6\u306e\u7a7a\u304d\u9818\u57df\u304c\u5c11\u306a\u304f\u30681GB\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u518d\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +IngestMonitor.mgrErrMsg.lowDiskSpace.title=Ingest stopped - {0} \u306e\u30c7\u30a3\u30b9\u30af\u9818\u57df\u304c\u5c11\u306a\u304f\u306a\u3063\u3066\u3044\u307e\u3059 IngestOptionsPanel.fileFiltersTab.text=\u30d5\u30a1\u30a4\u30eb\u30d5\u30a3\u30eb\u30bf\u30fc IngestOptionsPanel.fileFiltersTab.toolTipText=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u4f5c\u6210\u304a\u3088\u3073\u7de8\u96c6\u3059\u308b\u305f\u3081\u306e\u8a2d\u5b9a\u3067\u3059\u3002 IngestOptionsPanel.profilesTab.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb IngestOptionsPanel.profilesTab.toolTipText=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u304a\u3088\u3073\u7de8\u96c6\u3059\u308b\u305f\u3081\u306e\u8a2d\u5b9a\u3067\u3059\u3002 IngestOptionsPanel.settingsTab.text=\u8a2d\u5b9a IngestOptionsPanel.settingsTab.toolTipText=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306b\u63d0\u4f9b\u53ef\u80fd\u306a\u30ea\u30bd\u30fc\u30b9\u306b\u95a2\u3059\u308b\u8a2d\u5b9a\u3067\u3059\u3002 -OpenIDE-Module-Name=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 -Menu/Tools/RunIngestModules=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c -CTL_IngestMessageTopComponent=\u30e1\u30c3\u30bb\u30fc\u30b8 -HINT_IngestMessageTopComponent=\u30e1\u30c3\u30bb\u30fc\u30b8\u30a6\u30a3\u30f3\u30c9\u30a6 -IngestMessageDetailsPanel.backButton.text= -IngestMessageDetailsPanel.viewArtifactButton.text=\u7d50\u679c\u306b\u79fb\u52d5 -IngestMessageDetailsPanel.viewContentButton.text=\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u306b\u79fb\u52d5 -IngestMessagePanel.sortByLabel.text=\u6b21\u3067\u30bd\u30fc\u30c8: -IngestMessagePanel.sortByComboBox.toolTipText=\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u6642\u9593(\u6642\u7cfb\u5217\u9806)\u307e\u305f\u306f\u30e1\u30c3\u30bb\u30fc\u30b8\u512a\u5148\u5ea6\u3067\u30bd\u30fc\u30c8 -IngestMessageDetailsPanel.messageDetailsPane.contentType=\u30c6\u30ad\u30b9\u30c8/html -IngestMessageDetailsPanel.messageDetailsPane.toolTipText= -IngestMessagesToolbar.toolTipText= -IngestMessageDetailsPanel.copyMenuItem.text=\u30b3\u30d4\u30fc -IngestMessageDetailsPanel.selectAllMenuItem.text=\u3059\u3079\u3066\u3092\u9078\u629e -IngestMessageTopComponent.displayName=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30dc\u30c3\u30af\u30b9 -IngestMessagePanel.totalMessagesNameLabel.text=\u5408\u8a08: -IngestMessagePanel.totalMessagesNameVal.text=- -IngestMessagePanel.totalUniqueMessagesNameLabel.text=\u4e00\u610f: -IngestMessagePanel.totalUniqueMessagesNameVal.text=- -IngestJob.progress.dataSourceIngest.initialDisplayName={0} \u3092\u89e3\u6790\u4e2d\u3067\u3059 -IngestJob.progress.dataSourceIngest.displayName={1} \u306e {0} -IngestJob.progress.fileIngest.displayName={0} \u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u6790\u4e2d\u3067\u3059 -IngestJob.progress.cancelling=\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059... -IngestJob.cancellationDialog.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u53d6\u308a\u6d88\u3059 -IngestDialog.startButton.title=\u958b\u59cb -IngestDialog.closeButton.title=\u7d42\u4e86 -IngestManager.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -IngestManager.moduleErr.errListenToUpdates.msg=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 -IngestMessage.toString.type.text=\u30bf\u30a4\u30d7: {0} -IngestMessage.toString.date.text=\ \u65e5\u4ed8: {0} -IngestMessage.toString.subject.text=\ \u4ef6\u540d: {0} -IngestMessage.toString.details.text=\ \u8a73\u7d30: {0} -IngestMessage.toString.date.text=\ \u30c7\u30fc\u30bf: {0} -IngestMessage.exception.typeSrcSubjNotNull.msg=\u30e1\u30c3\u30bb\u30fc\u30b8\u30bf\u30a4\u30d7\u3001\u30bd\u30fc\u30b9\u304a\u3088\u3073\u4ef6\u540d\u3092null\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093 -IngestMessage.exception.srcSubjNotNull.msg=\u30bd\u30fc\u30b9\u3068\u4ef6\u540d\u3092null\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093 -IngestMessage.exception.srcSubjDetailsDataNotNull.msg=\u30bd\u30fc\u30b9\u3001\u4ef6\u540d\u3001\u8a73\u7d30\u304a\u3088\u3073\u30c7\u30fc\u30bf\u3092null\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093 -IngestMessagePanel.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -IngestMessagePanel.moduleErr.errListenUpdates.text=IngestMessagePanel\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 -IngestMessagePanel.MsgTableMod.colNames.module=\u30e2\u30b8\u30e5\u30fc\u30eb -IngestMessagePanel.MsgTableMod.colNames.num=\u6570\u5b57 -IngestMessagePanel.MsgTableMod.colNames.new=\u65b0\u898f? -IngestMessagePanel.MsgTableMod.colNames.subject=\u4ef6\u540d -IngestMessagePanel.MsgTableMod.colNames.timestamp=\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7 -IngestMessagePanel.BooleanRenderer.exception.nonBoolVal.msg=\u30d6\u30fc\u30eb\u5024\u4ee5\u5916\u306e\u5024\u3067BooleanRenderer\u3092\u4f7f\u7528\u3057\u3088\u3046\u3068\u8a66\u307f\u307e\u3057\u305f\u3002 -IngestMessagePanel.DateRenderer.exception.nonDateVal.text=\u65e5\u4ed8\u5024\u4ee5\u5916\u306e\u5024\u3067DateRenderer\u3092\u4f7f\u7528\u3057\u3088\u3046\u3068\u8a66\u307f\u307e\u3057\u305f\u3002 -IngestMessageTopComponent.displayReport.option.OK=OK -IngestMessageTopComponent.displayReport.option.GenRpt=\u30ec\u30dd\u30fc\u30c8\u751f\u6210 -IngestMessageTopComponent.msgDlg.ingestRpt.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30ec\u30dd\u30fc\u30c8 -IngestMonitor.mgrErrMsg.lowDiskSpace.title=Ingest stopped - {0} \u306e\u30c7\u30a3\u30b9\u30af\u9818\u57df\u304c\u5c11\u306a\u304f\u306a\u3063\u3066\u3044\u307e\u3059 -IngestMonitor.mgrErrMsg.lowDiskSpace.msg=\u30c7\u30a3\u30b9\u30af {0} \u306e\u30c7\u30a3\u30b9\u30af\u9818\u57df\u304c\u5c11\u306a\u304f\u306a\u3063\u3066\u3044\u308b\u305f\u3081\u3001\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u4e2d\u6b62\u3057\u307e\u3057\u305f\u3002\n\u30b1\u30fc\u30b9\u306e\u30c9\u30e9\u30a4\u30d6\u306e\u7a7a\u304d\u9818\u57df\u304c\u5c11\u306a\u304f\u30681GB\u3042\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u518d\u8d77\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -IngestManager.StartIngestJobsTask.run.displayName=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u8d77\u52d5\u4e2d\u3067\u3059 -IngestManager.StartIngestJobsTask.run.cancelling={0} (\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059...) -IngestMessagePanel.sortByComboBox.model.time=\u6642\u523b -IngestMessagePanel.sortByComboBox.model.priority=\u512a\u5148\u5ea6 -IngestMessagesToolbar.customizeButton.toolTipText=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e1\u30c3\u30bb\u30fc\u30b8 -IngestMessageTopComponent.initComponents.name=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30dc\u30c3\u30af\u30b9 -IngestManager.OpenEventChannel.Fail.ErrMsg=\u30b1\u30fc\u30b9\u3067\u9023\u643a\u3057\u3066\u3044\u308b\u53ef\u80fd\u6027\u306e\u3042\u308b\u305d\u306e\u4ed6\u306e\u30ce\u30fc\u30c9\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -IngestManager.OpenEventChannel.Fail.Title=\u63a5\u7d9a\u5931\u6557 -IngestJobSettings.createModuleSettingsFolder.warning=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u8a2d\u5b9a\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3002 -IngestJobSettings.missingModule.warning=\u4ee5\u524d\u306b\u8aad\u307f\u8fbc\u3093\u3060 {0} \u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -IngestJobSettings.save.warning={0} \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -IngestJobSettings.moduleSettingsLoad.warning=\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\u3067\u3001{1} \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e {0} \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u8a2d\u5b9a\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -IngestJobSettings.moduleSettingsSave.warning={1} \u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e {0} \u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u8a2d\u5b9a\u3092\u4fdd\u5b58\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 IngestProgressSnapshotDialog.title.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u9032\u6357\u72b6\u6cc1\u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8 -IngestProgressSnapshotPanel.refreshButton.text=\u66f4\u65b0 -IngestProgressSnapshotPanel.closeButton.text=\u7d42\u4e86 -IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.threadID=\u30b9\u30ec\u30c3\u30c9ID -IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.dataSource=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.activity=\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.dataSource=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.elapsedTime=\u7d4c\u904e\u6642\u9593(H\:M\:S) IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.file=\u30d5\u30a1\u30a4\u30eb -IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.startTime=\u958b\u59cb\u6642\u523b -IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.elapsedTime=\u7d4c\u904e\u6642\u9593(H:M:S) -IngestManager.IngestThreadActivitySnapshot.idleThread=\u30a2\u30a4\u30c9\u30eb\u4e2d -IngestManager.IngestMessage.ErrorMessageLimitReached.subject=\u63d0\u793a\u3055\u308c\u305f\u6700\u5927\u30a8\u30e9\u30fc\u6570 -IngestManager.IngestMessage.ErrorMessageLimitReached.msg=\u63d0\u793a\u3055\u308c\u305f\u30a8\u30e9\u30fc\u304a\u3088\u3073/\u307e\u305f\u306f\u8b66\u544a\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u6700\u5927\u6570 ({0}) \u3067\u3059\u3002\u305d\u306e\u4ed6\u306e\u30a8\u30e9\u30fc/\u8b66\u544a\u306f\u3001\u30ed\u30b0\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044([\u30d8\u30eb\u30d7] -> [\u30ed\u30b0\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u958b\u304f])\u3002 -IngestManager.IngestMessage.ErrorMessageLimitReached.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30de\u30cd\u30fc\u30b8\u30e3\u30fc -IngestModuleFactoryLoader.errorMessages.duplicateDisplayName={0} \u306e\u540d\u524d\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002\u5225\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u540d\u3068\u91cd\u8907\u3057\u3066\u3044\u308b\u5834\u5408\u3001\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u4f7f\u7528\u3055\u308c\u307e\u305b\u3093\u3002 -DataSourceIngestCancellationPanel.cancelCurrentModuleRadioButton.text=\u73fe\u5728\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u307f\u3092\u53d6\u308a\u6d88\u3059 -FileIngestCancellationPanel.cancelIngestJobRadioButton.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3068\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u53d6\u308a\u6d88\u3059 -FileIngestCancellationPanel.cancelFileIngestRadioButton.text=\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306e\u307f\u3092\u53d6\u308a\u6d88\u3059 -DataSourceIngestCancellationPanel.cancelAllModulesRadioButton.text=\u3059\u3079\u3066\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u53d6\u308a\u6d88\u3059 IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.jobID=\u30b8\u30e7\u30d6ID -IngestJobTableModel.colName.jobID=\u30b8\u30e7\u30d6ID -IngestJobTableModel.colName.dataSource=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 -IngestJobTableModel.colName.start=\u958b\u59cb -IngestJobTableModel.colName.numProcessed=\u51e6\u7406\u3057\u305f\u6570 -IngestJobTableModel.colName.filesPerSec=\u30d5\u30a1\u30a4\u30eb/\u79d2 -IngestJobTableModel.colName.inProgress=\u9032\u884c\u4e2d -IngestJobTableModel.colName.filesQueued=\u30ad\u30e5\u30fc\u6e08\u307f\u30d5\u30a1\u30a4\u30eb -IngestJobTableModel.colName.dirQueued=\u30ad\u30e5\u30fc\u6e08\u307f\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc -IngestJobTableModel.colName.rootQueued=\u30ad\u30e5\u30fc\u6e08\u307f\u30eb\u30fc\u30c8 -IngestJobTableModel.colName.dsQueued=\u30ad\u30e5\u30fc\u6e08\u307f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9 -ModuleTableModel.colName.module=\u30e2\u30b8\u30e5\u30fc\u30eb +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.startTime=\u958b\u59cb\u6642\u523b +IngestProgressSnapshotPanel.SnapshotsTableModel.colNames.threadID=\u30b9\u30ec\u30c3\u30c9ID +IngestProgressSnapshotPanel.closeButton.text=\u7d42\u4e86 +IngestProgressSnapshotPanel.refreshButton.text=\u66f4\u65b0 +IngestSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +IngestSettingsPanel.jCheckBoxEnableProcTimeout.text= +IngestSettingsPanel.jFormattedTextFieldProcTimeOutHrs.text=60 +IngestSettingsPanel.jLabelNumThreads.text=\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306b\u4f7f\u7528\u3067\u304d\u308b\u30b9\u30ec\u30c3\u30c9\u6570\: +IngestSettingsPanel.jLabelProcessTimeOutUnits.text=\u6642\u9593 +IngestSettingsPanel.jLabelSetProcessTimeOut.text=\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b\u3068\u3001\u8a2d\u5b9a\u3057\u305f\u6642\u9593\u306e\u7d4c\u904e\u5f8c\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u81ea\u52d5\u7684\u306b\u7d42\u4e86\u3067\u304d\u307e\u3059\u3002 +IngestSettingsPanel.restartRequiredLabel.text=\u3053\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u306e\u5834\u5408\u3001\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b9\u30ec\u30c3\u30c9 {0} \u306e\u6700\u5927\u6570\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u518d\u8d77\u52d5\u304c\u5fc5\u8981\u3067\u3059\u3002 +Menu/Tools/RunIngestModules=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c ModuleTableModel.colName.duration=\u671f\u9593 -IngestJobSettingsPanel.jButtonSelectAll.text=\u3059\u3079\u3066\u3092\u9078\u629e -IngestJobSettingsPanel.jButtonDeselectAll.text=\u3059\u3079\u3066\u306e\u9078\u629e\u3092\u89e3\u9664 -IngestManager.cancellingIngest.msgDlg.text=\u73fe\u5728\u5b9f\u884c\u4e2d\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b8\u30e7\u30d6\u3092\u3059\u3079\u3066\u53d6\u308a\u6d88\u3057\u4e2d\u3067\u3059 -IngestManager.serviceIsDown.msgDlg.text={0} \u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059 +ModuleTableModel.colName.module=\u30e2\u30b8\u30e5\u30fc\u30eb +OpenIDE-Module-Name=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 +OptionsCategory_Keywords_IngestOptions=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 +OptionsCategory_Name_IngestOptions=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 ProfilePanel.messages.profileNameContainsIllegalCharacter=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u540d\u306b\u4e0d\u6b63\u306a\u6587\u5b57\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059 ProfilePanel.messages.profilesMustBeNamed=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306b\u540d\u524d\u3092\u4ed8\u3051\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 ProfilePanel.newProfileText=NewEmptyProfile -ProfilePanel.profileDescLabel.text=\u8aac\u660e: -ProfilePanel.profileNameLabel.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u540d: +ProfilePanel.profileDescLabel.text=\u8aac\u660e\: +ProfilePanel.profileNameLabel.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u540d\: ProfilePanel.title.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb ProfileSettingsPanel.deleteProfileButton.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664 -# {0} - \u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u540d ProfileSettingsPanel.doFileSetsDialog.duplicateProfile.text={0} \u306e\u540d\u524d\u306e\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 ProfileSettingsPanel.editProfileButton.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u7de8\u96c6 -ProfileSettingsPanel.filterNameLabel.text=\u30d5\u30a3\u30eb\u30bf\u30fc: +ProfileSettingsPanel.filterNameLabel.text=\u30d5\u30a3\u30eb\u30bf\u30fc\: ProfileSettingsPanel.infoTextArea.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u304c\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5185\u306e\u4e00\u90e8\u307e\u305f\u306f\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u4e0a\u3067\u4e8b\u524d\u69cb\u6210\u6e08\u307f\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30bb\u30c3\u30c8\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002\u30d5\u30a1\u30a4\u30eb\u306e\u30b5\u30d6\u30bb\u30c3\u30c8\u4e0a\u3067\u540c\u3058\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u30bb\u30c3\u30c8\u3092\u983b\u7e41\u306b\u5b9f\u884c\u3059\u308b\u5834\u5408\u306f\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +ProfileSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 ProfileSettingsPanel.messages.filterLoadFailed=\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f ProfileSettingsPanel.newProfileButton.text=\u65b0\u898f\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb -ProfileSettingsPanel.profileDescLabel.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306e\u8aac\u660e: -ProfileSettingsPanel.profileListLabel.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb: -ProfileSettingsPanel.selectedModulesLabel.text=\u9078\u629e\u3057\u305f\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb: +ProfileSettingsPanel.profileDescLabel.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306e\u8aac\u660e\: +ProfileSettingsPanel.profileListLabel.text=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\: +ProfileSettingsPanel.selectedModulesLabel.text=\u9078\u629e\u3057\u305f\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\: ProfileSettingsPanel.title=\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u8a2d\u5b9a -RunIngestSubMenu.menuItem.empty=-\u7a7a(\u672a\u5165\u529b)- RunIngestModulesMenu.getName.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c -DataSourceIngestPipeline.moduleError.title.text={0} \u30a8\u30e9\u30fc -FileIngestPipeline.moduleError.title.text={0} \u30a8\u30e9\u30fc -IngestJob.cancelReason.notCancelled.text=\u53d6\u308a\u6d88\u3055\u308c\u3066\u3044\u307e\u305b\u3093 -IngestJob.cancelReason.cancelledByUser.text=\u30e6\u30fc\u30b6\u30fc\u306b\u3088\u3063\u3066\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f -IngestJob.cancelReason.ingestModStartFail.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -IngestJob.cancelReason.outOfDiskSpace.text=\u30c7\u30a3\u30b9\u30af\u9818\u57df\u304c\u3042\u308a\u307e\u305b\u3093 -IngestJob.cancelReason.servicesDown.text=\u30b5\u30fc\u30d3\u30b9\u304c\u30c0\u30a6\u30f3\u3057\u3066\u3044\u307e\u3059 -IngestJob.cancelReason.caseClosed.text=\u30b1\u30fc\u30b9\u3092\u9589\u3058\u307e\u3057\u305f -IngestJobSettingsPanel.globalSettingsButton.text=\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a -\u30b2\u30b9\u30c8 -IngestJobSettingsPanel.globalSettingsButton.actionCommand=\u9ad8\u5ea6 -IngestJobSettingsPanel.globalSettingsButton.text=\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a -IngestJobSettingsPanel.pastJobsButton.text=\u5c65\u6b74 -IngestJobSettingsPanel.fileIngestFilterLabel.text=\u6b21\u3067\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c: -OptionsCategory_Name_IngestOptions=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 -OptionsCategory_Keywords_IngestOptions=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8 -IngestSettingsPanel.jLabelProcessTimeOutUnits.text=\u6642\u9593 -IngestSettingsPanel.jFormattedTextFieldProcTimeOutHrs.text=60 -IngestSettingsPanel.jCheckBoxEnableProcTimeout.text= -IngestSettingsPanel.jLabelSetProcessTimeOut.text=\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b\u3068\u3001\u8a2d\u5b9a\u3057\u305f\u6642\u9593\u306e\u7d4c\u904e\u5f8c\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u81ea\u52d5\u7684\u306b\u7d42\u4e86\u3067\u304d\u307e\u3059\u3002 -IngestSettingsPanel.restartRequiredLabel.text=\u3053\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u306e\u5834\u5408\u3001\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30b9\u30ec\u30c3\u30c9 {0} \u306e\u6700\u5927\u6570\u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u518d\u8d77\u52d5\u304c\u5fc5\u8981\u3067\u3059\u3002 -IngestSettingsPanel.jLabelNumThreads.text=\u30d5\u30a1\u30a4\u30eb\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u306b\u4f7f\u7528\u3067\u304d\u308b\u30b9\u30ec\u30c3\u30c9\u6570: -IngestSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -ProfileSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +RunIngestSubMenu.menuItem.empty=-\u7a7a(\u672a\u5165\u529b)- +\u30b2\u30b9\u30c8= diff --git a/Core/src/org/sleuthkit/autopsy/livetriage/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/livetriage/Bundle_ja.properties index fc1fa62271..7697652315 100644 --- a/Core/src/org/sleuthkit/autopsy/livetriage/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/livetriage/Bundle_ja.properties @@ -1,3 +1,3 @@ -#Tue Aug 18 18:09:21 UTC 2020 -SelectDriveDialog.descriptionTextArea.text=\u3053\u306e\u6a5f\u80fd\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u30d0\u30c3\u30c1\u30d5\u30a1\u30a4\u30eb\u3092\u30ea\u30e0\u30fc\u30d0\u30d6\u30eb\u30c9\u30e9\u30a4\u30d6\u306b\u30b3\u30d4\u30fc\u3057\u3066\u3001\n\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u307e\u305f\u306f\u30c9\u30e9\u30a4\u30d6\u306e\u30a4\u30e1\u30fc\u30b8\u30f3\u30b0\u3092\u305b\u305a\u306b\u5206\u6790\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\n\n\u30b7\u30b9\u30c6\u30e0\u3092\u5206\u6790\u3059\u308b\u306b\u306f\u3001\u30c9\u30e9\u30a4\u30d6\u3092\u633f\u5165\u3057\u3001\u300cRunFromUSB.bat\u300d\u3092\u7ba1\u7406\u8005\u3068\u3057\u3066\u5b9f\u884c\u5f8c\u306b\u3001[\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u8ffd\u52a0]\u30d1\u30cd\u30eb\u3067[\u30ed\u30fc\u30ab\u30eb\u30c7\u30a3\u30b9\u30af]\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044\u3002 -SelectDriveDialog.selectDriveLabel.text=\u30e9\u30a4\u30d6\u30fb\u30c8\u30ea\u30a2\u30fc\u30b8\u306b\u4f7f\u7528\u3059\u308b\u30c9\u30e9\u30a4\u30d6\u3092\u9078\u629e\uff08\u30ed\u30fc\u30c9\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\uff09\uff1a +#Fri Feb 12 16:56:28 UTC 2021 +SelectDriveDialog.descriptionTextArea.text=\u3053\u306e\u6a5f\u80fd\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3068\u30d0\u30c3\u30c1\u30d5\u30a1\u30a4\u30eb\u3092\u30ea\u30e0\u30fc\u30d0\u30d6\u30eb\u30c9\u30e9\u30a4\u30d6\u306b\u30b3\u30d4\u30fc\u3057\u307e\u3059\u3002\n\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u305b\u305a\u306b\u30b7\u30b9\u30c6\u30e0\u3092\u5206\u6790\u304b\u30c9\u30e9\u30a4\u30d6\u306e\u30a4\u30e1\u30fc\u30b8\u30f3\u30b0\u3092\u4f5c\u6210\u3057\u307e\u3059\u3002\n\n\u30b7\u30b9\u30c6\u30e0\u3092\u5206\u6790\u3059\u308b\u306b\u306f\u3001\u30c9\u30e9\u30a4\u30d6\u3092\u633f\u5165\u3057\u3001\u300cRunFromUSB.bat\u300d\u3092\u7ba1\u7406\u8005\u3067\u5b9f\u884c\u3057\u3066\u3001\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u8ffd\u52a0\u30d1\u30cd\u30eb\u3067\u300c\u30ed\u30fc\u30ab\u30eb\u30c7\u30a3\u30b9\u30af\u300d\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +SelectDriveDialog.selectDriveLabel.text=\u30e9\u30a4\u30d6\u30c8\u30ea\u30a2\u30fc\u30b8\u306b\u4f7f\u7528\u3059\u308b\u30c9\u30e9\u30a4\u30d6\u3092\u9078\u629e\u3057\u307e\u3059\uff08\u8aad\u8fbc\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\uff09\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/Bundle_ja.properties index f6a274578a..477e2b12a4 100644 --- a/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/logicalimager/dsp/Bundle_ja.properties @@ -1,2 +1,2 @@ -#Tue Aug 18 18:09:21 UTC 2020 -AddMultipleImagesTask.imageError=\u753b\u50cf{0}\u3092\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306b\u8ffd\u52a0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +#Fri Feb 12 16:56:28 UTC 2021 +AddMultipleImagesTask.imageError=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u3078\u753b\u50cf{0}\u306e\u8ffd\u52a0\u306b\u5931\u6557\u3057\u307e\u3057\u305f diff --git a/Core/src/org/sleuthkit/autopsy/modules/dataSourceIntegrity/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/dataSourceIntegrity/Bundle_ja.properties index b8020d9a20..20907bfe0c 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/dataSourceIntegrity/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/dataSourceIntegrity/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 DataSourceIntegrityIngestModule.process.calcHashWithType=
  • \u8a08\u7b97\u6e08\u307f {0} \u30cf\u30c3\u30b7\u30e5\: {1}
  • DataSourceIntegrityIngestModule.process.calculateHashDone=

    {0} \u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30cf\u30c3\u30b7\u30e5\u8a08\u7b97\u7d50\u679c

    DataSourceIntegrityIngestModule.process.errProcImg={0} \u306e\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f @@ -26,8 +26,8 @@ DataSourceIntegrityIngestModule.shutDown.verified=\ \u691c\u8a3c\u6e08\u307f DataSourceIntegrityIngestModule.shutDown.verifyResultsHeader=

    {0} \u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u691c\u8a3c\u7d50\u679c

    DataSourceIntegrityIngestModule.startup.noCheckboxesSelected=\u5c11\u306a\u304f\u3068\u30821\u3064\u306e\u30c1\u30a7\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u3092\u9078\u629e\u3057\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093 DataSourceIntegrityIngestSettingsPanel.computeHashesCheckbox.text=\u4f55\u3082\u306a\u3044\u5834\u5408\u306f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30cf\u30c3\u30b7\u30e5\u3092\u8a08\u7b97 -DataSourceIntegrityIngestSettingsPanel.ingestSettingsLabel.text=\u53d6\u308a\u8fbc\u307f\u8a2d\u5b9a -DataSourceIntegrityIngestSettingsPanel.noteLabel.text=\u6ce8\u610f\uff1a\u3000\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u8ad6\u7406\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093 +DataSourceIntegrityIngestSettingsPanel.ingestSettingsLabel.text=\u53d6\u8fbc\u307f\u8a2d\u5b9a +DataSourceIntegrityIngestSettingsPanel.noteLabel.text=\u6ce8\uff1a\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30ed\u30b8\u30ab\u30eb\u30d5\u30a1\u30a4\u30eb\u3067\u306f\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093 DataSourceIntegrityIngestSettingsPanel.verifyHashesCheckbox.text=\u65e2\u5b58\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u30cf\u30c3\u30b7\u30e5\u3092\u691c\u8a3c DataSourceIntegrityModuleFactory.moduleDesc.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u30cf\u30c3\u30b7\u30e5\u3092\u8a08\u7b97\u304a\u3088\u3073\u691c\u8a3c\u3057\u307e\u3059\u3002 DataSourceIntegrityModuleFactory.moduleName.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5b8c\u5168\u6027 diff --git a/Core/src/org/sleuthkit/autopsy/modules/drones/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/drones/Bundle_ja.properties index 5a4bbf3a56..9befb36b89 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/drones/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/drones/Bundle_ja.properties @@ -1,6 +1,6 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 DATExtractor_process_message=DJI DAT\u30d5\u30a1\u30a4\u30eb\u3092\u51e6\u7406\u3057\u3066\u3044\u307e\u3059\uff1a%s DATFileExtractor_Extractor_Name=DAT\u30d5\u30a1\u30a4\u30eb\u62bd\u51fa\u30e2\u30b8\u30e5\u30fc\u30eb -DroneIngestModule_Description=\u30c9\u30ed\u30fc\u30f3\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u5206\u6790\u3057\u307e\u3059\u3002 -DroneIngestModule_Name=\u30c9\u30ed\u30fc\u30f3\u30fb\u30a2\u30ca\u30e9\u30a4\u30b6\u30fc +DroneIngestModule_Description=\u4e00\u90e8\u306eDJI\u30c9\u30ed\u30fc\u30f3\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u5206\u6790\u3057\u307e\u3059\u3002 +DroneIngestModule_Name=DJI\u30c9\u30ed\u30fc\u30f3\u30a2\u30ca\u30e9\u30a4\u30b6\u30fc DroneIngestModule_process_start={0}\u3092\u958b\u59cb\u3057\u307e\u3057\u305f diff --git a/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/Bundle_ja.properties index d92e558fb8..73e0d094b1 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/embeddedfileextractor/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:05:03 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 CannotCreateOutputFolder=\u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002 CannotRunFileTypeDetection=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u691c\u51fa\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 EmbeddedFileExtractorIngestModule.ArchiveExtractor.UnpackStream.write.exception.msg=\u30d5\u30a1\u30a4\u30eb\u3092\u6b21\u306b\u958b\u5c01\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\: {0} @@ -30,6 +30,7 @@ EmbeddedFileExtractorIngestModule.NoOpenCase.errMsg=\u958b\u3044\u3066\u3044\u30 EmbeddedFileExtractorIngestModule.SevenZipContentReadStream.read.exception.errReadStream=\u30b3\u30f3\u30c6\u30f3\u30c4\u30b9\u30c8\u30ea\u30fc\u30e0\u306e\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 EmbeddedFileExtractorIngestModule.SevenZipContentReadStream.seek.exception.invalidOrigin=\u7121\u52b9\u306a\u30b7\u30fc\u30af\u30aa\u30ea\u30b8\u30f3\: {0} EmbeddedFileExtractorIngestModule.UnableToGetMSOfficeExtractor.errMsg=MSOfficeEmbeddedContentExtractor\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002 +EmbeddedFileExtractor_make_output_dir_err=Embedded FileExtractor\u30e2\u30b8\u30e5\u30fc\u30eb\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f ExtractArchiveWithPasswordAction.extractFailed.title=\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u30d5\u30a1\u30a4\u30eb\u3092\u958b\u5c01\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f ExtractArchiveWithPasswordAction.name.text=\u30d1\u30b9\u30ef\u30fc\u30c9\u3067\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u89e3\u51cd ExtractArchiveWithPasswordAction.progress.text=\u6b21\u306e\u30a2\u30fc\u30ab\u30a4\u30d6\u306e\u30b3\u30f3\u30c6\u30f3\u30c4\u3092\u958b\u5c01\u4e2d\u3067\u3059\: {0} diff --git a/Core/src/org/sleuthkit/autopsy/modules/exif/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/exif/Bundle_ja.properties index 7c91fb9e90..b538437f09 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/exif/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/exif/Bundle_ja.properties @@ -1,10 +1 @@ -#Tue Aug 18 18:09:21 UTC 2020 -CannotRunFileTypeDetection=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u691c\u51fa\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 -ExifParserFileIngestModule.getDesc.text=Ingests JPEG\u30d5\u30a1\u30a4\u30eb\u3092\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3057\u3001EXIF\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u56de\u53ce\u3057\u307e\u3059\u3002 -ExifParserFileIngestModule.indexError.message=\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u691c\u7d22\u3059\u308b\u305f\u3081\u306e\u3001EXIF\u30e1\u30bf\u30c7\u30fc\u30bf\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 -ExifParserFileIngestModule.moduleName.text=Exif\u89e3\u6790\u30c4\u30fc\u30eb -ExifParserFileIngestModule.userContent.description=\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u306fEXIF\u30e1\u30bf\u30c7\u30fc\u30bf\u304c\u5b58\u5728\u3057\u307e\u3059\u3002 -OpenIDE-Module-Display-Category=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb -OpenIDE-Module-Long-Description=EXIF\u30e1\u30bf\u30c7\u30fc\u30bf\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002 \n\n\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a4\u30e1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u6790\u3057\u3001Exif\u60c5\u5831\u3092\u62bd\u51fa\u3057\u3001Exif\u30c7\u30fc\u30bf\u3092\u7d50\u679c\u3068\u3057\u3066\u6295\u7a3f\u3057\u307e\u3059\u3002 -OpenIDE-Module-Name=ExifParser -OpenIDE-Module-Short-Description=Exif\u30e1\u30bf\u30c7\u30fc\u30bf\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002 +#Fri Feb 12 16:56:29 UTC 2021 diff --git a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/Bundle_ja.properties index 54ac431e90..2ea0f64de7 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/filetypeid/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/filetypeid/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:28 UTC 2021 AddFileTypePanel.addSigButton.text=\u7f72\u540d\u3092\u8ffd\u52a0 AddFileTypePanel.containsIllegalCharacter.message=\u4ee3\u308f\u308a\u306bMIME\u30bf\u30a4\u30d7\u306e\u7121\u52b9\u306a\u6587\u5b57 {0} \u304c\u63d0\u6848\u3055\u308c\u307e\u3057\u305f AddFileTypePanel.containsIllegalCharacter.title=MIME\u30bf\u30a4\u30d7\u306e\u7121\u52b9\u306a\u6587\u5b57 @@ -48,7 +48,7 @@ FileTypeIdGlobalSettingsPanel.JOptionPane.storeFailed.title=\u4fdd\u5b58\u5931\u FileTypeIdGlobalSettingsPanel.Title=\u30b0\u30ed\u30fc\u30d0\u30eb\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u8b58\u5225\u8a2d\u5b9a FileTypeIdGlobalSettingsPanel.customTypesLabel.text=\u30ab\u30b9\u30bf\u30e0MIME\u30bf\u30a4\u30d7\uff1a FileTypeIdGlobalSettingsPanel.deleteTypeButton.text=\u30bf\u30a4\u30d7\u3092\u524a\u9664 -FileTypeIdGlobalSettingsPanel.descriptionLabel.text=Autopsy\u306f\u3001\u591a\u304f\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3092\u81ea\u52d5\u7684\u306b\u691c\u51fa\u3067\u304d\u307e\u3059\u3002 \u3053\u3053\u306b\u30ab\u30b9\u30bf\u30e0\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3092\u8ffd\u52a0\u51fa\u6765\u307e\u3059\u3002 +FileTypeIdGlobalSettingsPanel.descriptionLabel.text=Autopsy\u306f\u591a\u304f\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3092\u81ea\u52d5\u7684\u306b\u691c\u51fa\u3067\u304d\u307e\u3059\u3002 \u3053\u3053\u306b\u30ab\u30b9\u30bf\u30e0\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3092\u8ffd\u52a0\u51fa\u6765\u307e\u3059\u3002 FileTypeIdGlobalSettingsPanel.editTypeButton.text=\u30bf\u30a4\u30d7\u3092\u7de8\u96c6 FileTypeIdGlobalSettingsPanel.ingestRunningWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u5b9f\u884c\u4e2d\u306f\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u5b9a\u7fa9\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\! FileTypeIdGlobalSettingsPanel.loadFileTypes.errorMessage=\u65e2\u5b58\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u5b9a\u7fa9\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/Bundle_ja.properties index 3dda1dad7d..057e60b7ef 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/hashdatabase/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:29 UTC 2021 AddContentToHashDbAction.ContentMenu.createDbItem=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u4f5c\u6210... AddContentToHashDbAction.ContentMenu.noHashDbsConfigd=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u304c\u69cb\u6210\u3055\u308c\u3066\u3044\u307e\u305b\u3093 AddContentToHashDbAction.addFilesToHashSet.addToHashDbErr1.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30a8\u30e9\u30fc\u306b\u8ffd\u52a0 @@ -125,7 +125,7 @@ HashDbIngestModule.calcHashValueErr={0} ({1}) \u306e\u30cf\u30c3\u30b7\u30e5\u50 HashDbIngestModule.complete.databasesUsed=\u4f7f\u7528\u3057\u305f\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\: HashDbIngestModule.complete.hashLookupResults=\u30cf\u30c3\u30b7\u30e5\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u7d50\u679c HashDbIngestModule.complete.knownBadsFound=\u898b\u3064\u304b\u3063\u305f\u9855\u8457\u6027\: -HashDbIngestModule.complete.noChangesFound=\u5909\u66f4\u30a2\u30a4\u30c6\u30e0\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\uff1a +HashDbIngestModule.complete.noChangesFound=\u5909\u66f4\u9805\u76ee\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\uff1a HashDbIngestModule.complete.totalCalcTime=\u5408\u8a08\u8a08\u7b97\u6642\u9593 HashDbIngestModule.complete.totalLookupTime=\u5408\u8a08\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u6642\u9593 HashDbIngestModule.dialogTitle.errorFindingArtifacts=\u6b21\u306e\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u306e\u691c\u7d22\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\: {0} @@ -137,7 +137,7 @@ HashDbIngestModule.knownBadFileSearchWillNotExecuteWarn=\u9855\u8457\u306a\u30d5 HashDbIngestModule.knownFileSearchWillNotExecuteWarn=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb\u306e\u691c\u7d22\u306f\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3002 HashDbIngestModule.lookingUpKnownBadHashValueErr={0} \u306e\u9855\u8457\u306a\u30cf\u30c3\u30b7\u30e5\u5024\u306e\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 HashDbIngestModule.lookingUpKnownHashValueErr={0} \u306e\u65e2\u77e5\u30cf\u30c3\u30b7\u30e5\u5024\u306e\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -HashDbIngestModule.lookingUpNoChangeHashValueErr={0}\u306e\u5909\u66f4\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u691c\u7d22\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +HashDbIngestModule.lookingUpNoChangeHashValueErr={0}\u306e\u7121\u5909\u5316\u30cf\u30c3\u30b7\u30e5\u5024\u3092\u691c\u7d22\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 HashDbIngestModule.noKnownBadHashDbSetMsg=\u9855\u8457\u306a\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306f\u3042\u308a\u307e\u305b\u3093\u3002 HashDbIngestModule.noKnownHashDbSetMsg=\u65e2\u77e5\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306f\u3042\u308a\u307e\u305b\u3093\u3002 HashDbIngestModule.postToBB.fileName=\u30d5\u30a1\u30a4\u30eb\u540d @@ -209,7 +209,7 @@ HashLookupModuleFactory.moduleDescription.text=\u6a19\u6e96\u306eNSRL\u30cf\u30c HashLookupModuleFactory.moduleName.text=\u30cf\u30c3\u30b7\u30e5\u30eb\u30c3\u30af\u30a2\u30c3\u30d7 HashLookupModuleSettingsPanel.alwaysCalcHashesCheckbox.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3067\u3082MD5\u3092\u8a08\u7b97 HashLookupModuleSettingsPanel.alwaysCalcHashesCheckbox.toolTipText=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u306a\u3044\u5834\u5408\u3067\u3082MD5\u3092\u8a08\u7b97 -HashLookupModuleSettingsPanel.hashDbsLabel.text=\u4f7f\u7528\u3059\u308b\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u9078\u629e\uff1a +HashLookupModuleSettingsPanel.hashDbsLabel.text=\u4f7f\u7528\u3059\u308b\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\uff1a HashLookupSettingsPanel.Title=\u30b0\u30ed\u30fc\u30d0\u30eb\u30cf\u30c3\u30b7\u30e5\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u8a2d\u5b9a HashLookupSettingsPanel.addHashesToDatabaseButton.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u306b\u30cf\u30c3\u30b7\u30e5\u3092\u8ffd\u52a0 HashLookupSettingsPanel.centralRepo=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u30b8\u30c8\u30ea\u30fc diff --git a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle_ja.properties index f1379958cd..1496bd4c1f 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/interestingitems/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:29 UTC 2021 FilesIdentifierIngestJobSettingsPanel.border.title=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306b\u6709\u52b9\u5316\u3059\u308b\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u3092\u9078\u629e\: FilesIdentifierIngestJobSettingsPanel.getError=\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 FilesIdentifierIngestJobSettingsPanel.updateError=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3092\u66f4\u65b0\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 @@ -28,7 +28,7 @@ FilesSetDefsPanel.fileTypeLabel.text=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\ FilesSetDefsPanel.filesRadioButton.text=\u30d5\u30a1\u30a4\u30eb FilesSetDefsPanel.gigaBytes=\u30ae\u30ac\u30d0\u30a4\u30c8 FilesSetDefsPanel.ignoreKnownFilesCheckbox.text=\u65e2\u77e5\u30d5\u30a1\u30a4\u30eb\u3092\u7121\u8996 -FilesSetDefsPanel.importSetButtonActionPerformed.importError="\u30eb\u30fc\u30eb\u30d5\u30a1\u30a4\u30eb" "{0}" "\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\uff1a\n{1} +FilesSetDefsPanel.importSetButtonActionPerformed.importError=\u30eb\u30fc\u30eb\u30d5\u30a1\u30a4\u30eb" "{0}" "\u3092\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\uff1a\n{1}\u3002 FilesSetDefsPanel.importSetButtonActionPerformed.noFiles=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306b\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 FilesSetDefsPanel.importSetButtonActionPerformed.noFilesSelected=\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 FilesSetDefsPanel.ingest.deleteSetButton.text=\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u524a\u9664 @@ -57,9 +57,9 @@ FilesSetDefsPanel.interesting.jLabel6.text=\u8a73\u7d30\u3092\u8a2d\u5b9a FilesSetDefsPanel.interesting.jTextArea1.text=\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u4f7f\u7528\u3059\u308b\u3068\u3001\u6307\u5b9a\u3057\u305f\u6761\u4ef6\u3068\u4e00\u81f4\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u3067\u304d\u307e\u3059\u3002\u5404\u30bb\u30c3\u30c8\u306b\u3001\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306e\u7279\u5fb4\u3068\u4e00\u81f4\u3059\u308b\u30eb\u30fc\u30eb\u30ea\u30b9\u30c8\u304c\u7528\u610f\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u30d5\u30a1\u30a4\u30eb\u306f\u691c\u7d22\u5bfe\u8c61\u3068\u306a\u308b1\u3064\u306e\u30eb\u30fc\u30eb\u3068\u4e00\u81f4\u3059\u308b\u3060\u3051\u3067\u5341\u5206\u3067\u3059\u3002 FilesSetDefsPanel.interesting.newOwConflict=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u7af6\u5408 FilesSetDefsPanel.interesting.newSetButton.text=\u65b0\u898f\u30bb\u30c3\u30c8 -FilesSetDefsPanel.interesting.overwriteSetPrompt=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8 "{0}"\u306f\u65e2\u306b\u30ed\u30fc\u30ab\u30eb\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\u3002\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b\uff1f +FilesSetDefsPanel.interesting.overwriteSetPrompt=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8 "{0}"\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3001\u4e0a\u66f8\u304d\u3057\u307e\u3059\u304b\uff1f FilesSetDefsPanel.interesting.setsListLabel.text=\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\: -FilesSetDefsPanel.interesting.standardFileConflict=\u300c{0}\u300d\u3068\u3044\u3046\u540d\u524d\u306e\u6a19\u6e96\u306e\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u3066\u3044\u307e\u3059\u3002 \u30bb\u30c3\u30c8\u306e\u540d\u524d\u3092\u300c{1}\u300d\u306b\u5909\u66f4\u3057\u307e\u3059\u304b\uff1f +FilesSetDefsPanel.interesting.standardFileConflict=\u300c{0}\u300d\u3068\u3044\u3046\u540d\u524d\u306e\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002 \u30bb\u30c3\u30c8\u306e\u540d\u524d\u3092\u300c{1}\u300d\u306b\u5909\u66f4\u3057\u307e\u3059\u304b\uff1f FilesSetDefsPanel.kiloBytes=\u30ad\u30ed\u30d0\u30a4\u30c8 FilesSetDefsPanel.loadError=\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 FilesSetDefsPanel.megaBytes=\u30e1\u30ac\u30d0\u30a4\u30c8 @@ -68,7 +68,7 @@ FilesSetDefsPanel.modifiedDateLabel.text=\u6b21\u306e\u4e2d\u3067\u4fee\u6b63\u6 FilesSetDefsPanel.nameLabel.text=\u540d\u524d\uff1a FilesSetDefsPanel.newRuleButton.text=\u65b0\u898f\u30eb\u30fc\u30eb FilesSetDefsPanel.noSkipMsg=\u3044\u3044\u3048\u3001\u30b9\u30ad\u30c3\u30d7\u3057\u307e\u3059 -FilesSetDefsPanel.pathLabel.text=\u30d1\u30b9\u30fb\u30b5\u30d6\u30b9\u30c8\u30ea\u30f3\u30b0\uff1a +FilesSetDefsPanel.pathLabel.text=\u30d1\u30b9\u90e8\u5206\u6587\u5b57\u5217\uff1a FilesSetDefsPanel.ruleLabel.text=\u30eb\u30fc\u30eb\u306e\u8a73\u7d30 FilesSetDefsPanel.rulePathConditionRegexCheckBox.text=\u6b63\u898f\u8868\u73fe FilesSetDefsPanel.rulePathConditionTextField.text= @@ -132,18 +132,18 @@ FilesSetRulePanel.ruleNameTextField.text= FilesSetRulePanel.title=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u30eb\u30fc\u30eb FilesSetsManager.allFilesAndDirectories=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u3068\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc(\u672a\u4f7f\u7528\u9818\u57df\u4ee5\u5916) FilesSetsManager.allFilesDirectoriesAndUnallocated=\u3059\u3079\u3066\u306e\u30d5\u30a1\u30a4\u30eb\u3001\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3001\u672a\u4f7f\u7528\u9818\u57df -InterestingItemsFilesSetSettings.readDateCondition.failedCompiledRegex=' {0} ''\u756a\u53f7\u306e\u5224\u5225\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -InterestingItemsFilesSetSettings.readMetaTypeCondition.malformedXml=\u30eb\u30fc\u30eb '' {1} ''\u306e\u30e1\u30bf\u30bf\u30a4\u30d7\u6761\u4ef6 '' {0} ''\u306e\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093 -InterestingItemsFilesSetSettings.readNameCondition.errorCompilingRegex=\u30eb\u30fc\u30eb '' {1} ''\u306e '' {0} ''\u6b63\u898f\u8868\u73fe\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -InterestingItemsFilesSetSettings.readNameCondition.illegalChar=\u30eb\u30fc\u30eb '' {1} ''\u306e\u30d5\u30a1\u30a4\u30eb\u540d\u306b\u7121\u52b9\u306a\u6587\u5b57 '' {0} ''\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059 -InterestingItemsFilesSetSettings.readNameCondition.invalidTag=\u540d\u524d\u6761\u4ef6\u306b\u3001\u30eb\u30fc\u30eb '' {1} ''\u306b\u306f\u7121\u52b9\u306a\u30bf\u30b0\u540d '' {0} ''\u304c\u3042\u308a\u307e\u3059 -InterestingItemsFilesSetSettings.readPathCondition.failedCompiledRegex=' {0} ''\u6b63\u898f\u8868\u73fe\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +InterestingItemsFilesSetSettings.readDateCondition.failedCompiledRegex=\u201d {0} \u201d\u756a\u53f7\u306e\u5224\u5225\u306b\u5931\u6557\u3057\u307e\u3057\u305f +InterestingItemsFilesSetSettings.readMetaTypeCondition.malformedXml=\u30eb\u30fc\u30eb '' {1} ''\u306e\u30e1\u30bf\u30bf\u30a4\u30d7\u6761\u4ef6 '' {0} ''\u306b\u7121\u52b9\u306a\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u5f62\u5f0f\u304c\u3042\u308a\u307e\u3059\u3002 +InterestingItemsFilesSetSettings.readNameCondition.errorCompilingRegex=\u30eb\u30fc\u30eb '' {1} ''\u3067 \u6b63\u898f\u8868\u73fe'' {0} ''\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +InterestingItemsFilesSetSettings.readNameCondition.illegalChar=\u30d5\u30a1\u30a4\u30eb\u540d\u306e\u30eb\u30fc\u30eb '' {1} ''\u306b \u4e0d\u6b63\u306a\u6587\u5b57'' {0} ''\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059 +InterestingItemsFilesSetSettings.readNameCondition.invalidTag=\u540d\u524d\u6761\u4ef6\u306e\u30eb\u30fc\u30eb '' {1} ''\u306b\u7121\u52b9\u306a\u30bf\u30b0\u540d'' {0} ''\u304c\u3042\u308a\u307e\u3059 +InterestingItemsFilesSetSettings.readPathCondition.failedCompiledRegex=\u6b63\u898f\u8868\u73fe'' {0} ''\u306e\u30b3\u30f3\u30d1\u30a4\u30eb\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f InterestingItemsFilesSetSettings.readPathCondition.pathConditionCreationError=\u30eb\u30fc\u30eb '' {0} ''\u306e\u30d1\u30b9\u6761\u4ef6\u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f -InterestingItemsFilesSetSettings.readRule.missingNecessary=\ '' {0} ''\u306b\u5fc5\u8981\u306a\u6761\u4ef6\u304c\u3042\u308a\u307e\u305b\u3093\u3001\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306b\u7121\u52b9\u306a\u30eb\u30fc\u30eb\u304c\u3042\u308a\u307e\u3059 +InterestingItemsFilesSetSettings.readRule.missingNecessary=\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u30eb\u30fc\u30eb\u304c\u7121\u52b9\u3067\u3059\u3002 '' {0} ''\u306b\u5fc5\u8981\u306a\u6761\u4ef6\u304c\u3042\u308a\u307e\u305b\u3093 InterestingItemsFilesSetSettings.readSerializedDefinitions.failedReadSettings=' {0} ''\u304b\u3089\u8a2d\u5b9a\u3092\u8aad\u307f\u53d6\u308c\u307e\u305b\u3093\u3067\u3057\u305f -InterestingItemsFilesSetSettings.readSizeCondition.invalidComparator=\u30eb\u30fc\u30eb '' {0} ''\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u30b5\u30a4\u30ba\u5358\u4f4d\u307e\u305f\u306f\u30b3\u30f3\u30d1\u30ec\u30fc\u30bf\u30fc\u307e\u305f\u306f\u6bd4\u8f03\u6a5f\u80fd\u304c\u7121\u52b9\u3067\u3059\u3002 -InterestingItemsFilesSetSettings.readSizeCondition.malformedXml=\u30eb\u30fc\u30eb '' {0} '\u306e\u5f62\u5f0f\u304c\u4e0d\u6b63\u3067\u3059\u3001\u5c11\u306a\u304f\u3068\u30821\u3064\u306e 'fileSize'\u304c\u6b20\u843d\u3057\u3066\u3044\u307e\u3059\u3002 -InterestingItemsFilesSetSettings.readSizeCondition.notIntegerValue=\u30eb\u30fc\u30eb '' {0} ''\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\u304c\u6574\u6570\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +InterestingItemsFilesSetSettings.readSizeCondition.invalidComparator=\u30eb\u30fc\u30eb '' {0} ''\u306b\u8a2d\u5b9a\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u6bd4\u8f03\u307e\u305f\u306f\u30b5\u30a4\u30ba\u5358\u4f4d\u304c\u7121\u52b9\u3067\u3059 +InterestingItemsFilesSetSettings.readSizeCondition.malformedXml=\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u5f62\u5f0f\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3001\u30eb\u30fc\u30eb '' {0} ''\u306b1\u3064\u4ee5\u4e0a\u306e 'fileSize'\u5c5e\u6027\u304c\u6b20\u843d\u3057\u3066\u3044\u307e\u3059\u3002 +InterestingItemsFilesSetSettings.readSizeCondition.notIntegerValue=\u30eb\u30fc\u30eb '' {0} ''\u306e\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306b\u6574\u6570\u4ee5\u5916\u306e\u30b5\u30a4\u30ba\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u307e\u3059 InterestingItemsIdentifierIngestModule.moduleDescription=\u8208\u5473\u6df1\u3044\u9805\u76ee\u306e\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u3067\u5b9a\u3081\u308b\u3068\u304a\u308a\u306b\u8208\u5473\u6df1\u3044\u9805\u76ee\u3092\u8b58\u5225\u3057\u307e\u3059\u3002 InterestingItemsIdentifierIngestModule.moduleName=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u8b58\u5225\u5b50 InterestingItemsIngestModuleFactory.defaultSettingsError=\u30d5\u30a1\u30a4\u30eb\u304b\u3089\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 @@ -154,6 +154,6 @@ OpenIDE-Module-Short-Description=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30e OptionsCategory_Keywords_InterestingItemDefinitions=InterestingItemDefinitions OptionsCategory_Name_InterestingItemDefinitions=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb StandardInterestingFileSetsLoader.customSuffixed={0}\uff08\u30ab\u30b9\u30bf\u30e0\uff09 -StandardInterestingFilesSetsLoader_cannotLoadStandard=\u6a19\u6e96\u306e\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u3092\u9069\u5207\u306b\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 +StandardInterestingFilesSetsLoader_cannotLoadStandard=\u6a19\u6e96\u306e\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u3092\u6b63\u3057\u304f\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 StandardInterestingFilesSetsLoader_cannotLoadUserConfigured=\u30e6\u30fc\u30b6\u30fc\u304c\u8a2d\u5b9a\u3057\u305f\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u3092\u6b63\u3057\u304f\u8aad\u307f\u53d6\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 -StandardInterestingFilesSetsLoader_cannotUpdateInterestingFilesSets=\u66f4\u65b0\u3055\u308c\u305f\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u69cb\u6210\u3092\u69cb\u6210\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u66f8\u304d\u8fbc\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002 +StandardInterestingFilesSetsLoader_cannotUpdateInterestingFilesSets=\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u306e\u66f4\u65b0\u8a2d\u5b9a\u3092\u8a2d\u5b9a\u30d5\u30a9\u30eb\u30c0\u30fc\u306b\u66f8\u8fbc\u3081\u307e\u305b\u3093\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/Bundle_ja.properties index 864c9c27f4..f2e80e4f0a 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/Bundle_ja.properties @@ -1,30 +1,38 @@ -# {0} - \u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u540d -cannotCreateOutputDir.message=\u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093: {0}\u3002 -cannotRunExecutable.message=PhotoRec\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 -missingExecutable.message=\u5b9f\u884c\u53ef\u80fd\u306aPhotoRec\u3092\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\u3002 -OpenIDE-Module-Name=PhotoRec Carver\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb +#Fri Feb 12 16:56:29 UTC 2021 OpenIDE-Module-Display-Category=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb OpenIDE-Module-Long-Description=PhotoRec Carver\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u3059\u3002\n\n \u672a\u4f7f\u7528\u9818\u57df\u3092\u30ab\u30fc\u30d3\u30f3\u30b0\u3057\u3001\u7d50\u679c\u3068\u3057\u3066\u30ab\u30fc\u30d3\u30f3\u30b0\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u30b7\u30b9\u30c6\u30e0\u306b\u623b\u3057\u3066\u51e6\u7406\u3057\u307e\u3059\u3002 +OpenIDE-Module-Name=PhotoRec Carver\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb OpenIDE-Module-Short-Description=\u672a\u4f7f\u7528\u9818\u57df\u3092\u30ab\u30fc\u30d3\u30f3\u30b0\u3057\u3068\u3057\u3066\u30ab\u30fc\u30d3\u30f3\u30b0\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u30b7\u30b9\u30c6\u30e0\u306b\u623b\u3057\u3066\u51e6\u7406\u3057\u307e\u3059\u3002 -moduleDisplayName.text=PhotoRec Carver -moduleDescription.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5185\u306e\u672a\u4f7f\u7528\u9818\u57df\u306b\u5bfe\u3057\u3066PhotoRec Carver\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 -PhotoRecIngestModule.nonHostnameUNCPathUsed=PhotoRec\u306f\u3001IP\u30a2\u30c9\u30ec\u30b9\u3092\u542b\u3080UNC\u30d1\u30b9\u3092\u4f7f\u3063\u3066\u64cd\u4f5c\u3067\u304d\u307e\u305b\u3093\u3002 +PhotoRecCarverFileIngestModule_startUp_invalidExtensions_description=\u6b21\u306e\u62e1\u5f35\u5b50\u306f\u7121\u52b9\u3067\u3059\uff1a{0} +PhotoRecCarverFileIngestModule_startUp_noExtensionsProvided_description=PhotoRec\u30ab\u30fc\u30d3\u30f3\u30b0\u7528\u306e\u62e1\u5f35\u5b50\u306f\u63d0\u4f9b\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +PhotoRecCarverIngestJobSettingsPanel.detectionSettingsLabel.text=PhotoRec\u8a2d\u5b9a +PhotoRecCarverIngestJobSettingsPanel.exampleLabel.text=\u4f8b\uff1ajpg\u3001png\u3001zip +PhotoRecCarverIngestJobSettingsPanel.excludeRadioButton.text=\u6307\u5b9a\u3055\u308c\u305f\u30bf\u30a4\u30d7\u3092\u9664\u5916\u3057\u307e\u3059 +PhotoRecCarverIngestJobSettingsPanel.extensionListLabel.text=\u30bf\u30a4\u30d7\uff08\u62e1\u5f35\u5b50\u306e\u30b3\u30f3\u30de\u533a\u5207\u308a\u30ea\u30b9\u30c8\uff09 +PhotoRecCarverIngestJobSettingsPanel.fullListOfTypesLabel.text=\u30bf\u30a4\u30d7\u306e\u5b8c\u5168\u30ea\u30b9\u30c8\uff1a +PhotoRecCarverIngestJobSettingsPanel.includeExcludeCheckbox.text=\u7279\u5b9a\u306e\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306b\u7126\u70b9\u3092\u5f53\u3066\u308b +PhotoRecCarverIngestJobSettingsPanel.includeRadioButton.text=\u6307\u5b9a\u3055\u308c\u305f\u30bf\u30a4\u30d7\u306e\u307f\u3092\u542b\u3081\u308b +PhotoRecCarverIngestJobSettingsPanel.keepCorruptedFilesCheckbox.text=\u7834\u640d\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u7dad\u6301 +PhotoRecIngestModule.NotEnoughDiskSpace=\u672a\u4f7f\u7528\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306e\u5341\u5206\u306a\u30c7\u30a3\u30b9\u30af\u9818\u57df\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u30ab\u30fc\u30d3\u30f3\u30b0\u304c\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u307e\u3057\u305f\u3002 +PhotoRecIngestModule.NotEnoughDiskSpace.detail.msg={1} \u3092\u4f7f\u3063\u3066 {0} \u3092\u51e6\u7406\u4e2d\u306bPhotoRec\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u30021\u6b21\u30c7\u30a3\u30b9\u30af\u306b\u672a\u4f7f\u7528\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306e\u5341\u5206\u306a\u9818\u57df\u304c\u3042\u308a\u307e\u305b\u3093\u3002 PhotoRecIngestModule.PermissionsNotSufficient=\u30a2\u30af\u30bb\u30b9\u3059\u308b\u305f\u3081\u306b\u5341\u5206\u306a\u6a29\u9650\u304c\u3042\u308a\u307e\u305b\u3093 PhotoRecIngestModule.PermissionsNotSufficientSeeReference=Autopsy\u30d8\u30eb\u30d7\u306e\u300c\u5171\u6709\u30c9\u30e9\u30a4\u30d6\u8a8d\u8a3c\u300d\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 -PhotoRecIngestModule.processTerminated=\u30b9\u30ad\u30e3\u30f3\u6642\u306e\u6700\u5927\u8a31\u5bb9\u5b9f\u884c\u56de\u6570\u3092\u8d85\u3048\u305f\u305f\u3081\u3001PhotoRec Carver\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u7d42\u4e86\u3057\u307e\u3057\u305f -PhotoRecIngestModule.moduleError=PhotoRec Carver\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc -PhotoRecIngestModule.UnableToCarve=\u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30ab\u30fc\u30d3\u30f3\u30b0\u3067\u304d\u307e\u305b\u3093: {0} -PhotoRecIngestModule.NotEnoughDiskSpace=\u672a\u4f7f\u7528\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306e\u5341\u5206\u306a\u30c7\u30a3\u30b9\u30af\u9818\u57df\u304c\u3042\u308a\u307e\u305b\u3093\u3002\u30ab\u30fc\u30d3\u30f3\u30b0\u304c\u30b9\u30ad\u30c3\u30d7\u3055\u308c\u307e\u3057\u305f\u3002 -PhotoRecIngestModule.complete.numberOfCarved=\u30ab\u30fc\u30d3\u30f3\u30b0\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u6570: -PhotoRecIngestModule.complete.totalWritetime=\u30c7\u30a3\u30b9\u30af\u3078\u306e\u66f8\u304d\u8fbc\u307f\u306b\u8981\u3059\u308b\u5408\u8a08\u6642\u9593: -PhotoRecIngestModule.complete.totalParsetime=\u5408\u8a08\u89e3\u6790\u6642\u9593: -PhotoRecIngestModule.complete.photoRecResults=PhotoRec\u7d50\u679c -PhotoRecIngestModule.NotEnoughDiskSpace.detail.msg={1} \u3092\u4f7f\u3063\u3066 {0} \u3092\u51e6\u7406\u4e2d\u306bPhotoRec\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u30021\u6b21\u30c7\u30a3\u30b9\u30af\u306b\u672a\u4f7f\u7528\u30d5\u30a1\u30a4\u30eb\u3092\u4fdd\u5b58\u3059\u308b\u305f\u3081\u306e\u5341\u5206\u306a\u9818\u57df\u304c\u3042\u308a\u307e\u305b\u3093\u3002 +PhotoRecIngestModule.UnableToCarve=\u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30ab\u30fc\u30d3\u30f3\u30b0\u3067\u304d\u307e\u305b\u3093\: {0} PhotoRecIngestModule.cancelledByUser=PhotoRec\u304c\u30e6\u30fc\u30b6\u30fc\u306b\u3088\u3063\u3066\u53d6\u308a\u6d88\u3055\u308c\u307e\u3057\u305f\u3002 +PhotoRecIngestModule.complete.numberOfCarved=\u30ab\u30fc\u30d3\u30f3\u30b0\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u6570\: +PhotoRecIngestModule.complete.numberOfErrors=\u30ab\u30fc\u30d3\u30f3\u30b0\u4e2d\u306e\u30a8\u30e9\u30fc\u6570\: +PhotoRecIngestModule.complete.photoRecResults=PhotoRec\u7d50\u679c +PhotoRecIngestModule.complete.totalParsetime=\u5408\u8a08\u89e3\u6790\u6642\u9593\: +PhotoRecIngestModule.complete.totalWritetime=\u30c7\u30a3\u30b9\u30af\u3078\u306e\u66f8\u304d\u8fbc\u307f\u306b\u8981\u3059\u308b\u5408\u8a08\u6642\u9593\: PhotoRecIngestModule.error.exitValue={1} \u3092\u30b9\u30ad\u30e3\u30f3\u4e2d\u306bPhotoRec Carver\u304c \u9593\u9055\u3063\u305f\u7d42\u4e86\u5024 \= {0} \u3092\u8fd4\u3057\u307e\u3057\u305f PhotoRecIngestModule.error.msg=PhotoRec Carver\u3067 {0} \u3092\u51e6\u7406\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -PhotoRecIngestModule.complete.numberOfErrors=\u30ab\u30fc\u30d3\u30f3\u30b0\u4e2d\u306e\u30a8\u30e9\u30fc\u6570: -PhotoRecCarverIngestJobSettingsPanel.detectionSettingsLabel.text=PhotoRec\u8a2d\u5b9a -PhotoRecCarverIngestJobSettingsPanel.keepCorruptedFilesCheckbox.text=\u7834\u640d\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u7dad\u6301 +PhotoRecIngestModule.moduleError=PhotoRec Carver\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc +PhotoRecIngestModule.nonHostnameUNCPathUsed=PhotoRec\u306f\u3001IP\u30a2\u30c9\u30ec\u30b9\u3092\u542b\u3080UNC\u30d1\u30b9\u3092\u4f7f\u3063\u3066\u64cd\u4f5c\u3067\u304d\u307e\u305b\u3093\u3002 +PhotoRecIngestModule.processTerminated=\u30b9\u30ad\u30e3\u30f3\u6642\u306e\u6700\u5927\u8a31\u5bb9\u5b9f\u884c\u56de\u6570\u3092\u8d85\u3048\u305f\u305f\u3081\u3001PhotoRec Carver\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u7d42\u4e86\u3057\u307e\u3057\u305f +cannotCreateOutputDir.message=\u51fa\u529b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\: {0}\u3002 +cannotRunExecutable.message=PhotoRec\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 +missingExecutable.message=\u5b9f\u884c\u53ef\u80fd\u306aPhotoRec\u3092\u898b\u3064\u3051\u3089\u308c\u307e\u305b\u3093\u3002 +moduleDescription.text=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u5185\u306e\u672a\u4f7f\u7528\u9818\u57df\u306b\u5bfe\u3057\u3066PhotoRec Carver\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 +moduleDisplayName.text=PhotoRec Carver unallocatedSpaceProcessingSettingsError.message=\u9078\u629e\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306e\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30d5\u30a3\u30eb\u30bf\u30fc\u304c\u672a\u4f7f\u7528\u9818\u57df\u3092\u7121\u8996\u3057\u307e\u3059\u3002\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u672a\u4f7f\u7528\u9818\u57df\u3092\u30ab\u30fc\u30d3\u30f3\u30b0\u3057\u307e\u3059\u3002\u672a\u4f7f\u7528\u9818\u57df\u3092\u7121\u8996\u3057\u306a\u3044\u304b\u3001\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u7121\u52b9\u5316\u3057\u306a\u3044\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 unsupportedOS.message=PhotoRec\u30e2\u30b8\u30e5\u30fc\u30eb\u306fWindows\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u306e\u307f\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/Bundle_ja.properties index 0a785a163b..9fae46599d 100755 --- a/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/Bundle_ja.properties @@ -1 +1,4 @@ -PictureAnalyzerIngestModule.cannot_run_file_type=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u306e\u691c\u51fa\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 +#Fri Feb 12 16:56:29 UTC 2021 +PictureAnalyzerIngestModule.cannot_run_file_type=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u691c\u51fa\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002 +PictureAnalyzerIngestModuleFactory.module_description=EXIF\u30e1\u30bf\u30c7\u30fc\u30bf\u306e\u62bd\u51fa\u3084\u5f62\u5f0f\u306e\u5909\u63db\u306a\u3069\u3001\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\u306e\u4e00\u6a19\u6e96\u7684\u306a\u5206\u6790\u3092\u5b9f\u884c\u3057\u307e\u3059\u3002 +PictureAnalyzerIngestModuleFactory.module_name=\u753b\u50cf\u30a2\u30ca\u30e9\u30a4\u30b6\u30fc diff --git a/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/impls/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/impls/Bundle_ja.properties index 4594945014..32238e23dc 100755 --- a/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/impls/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/modules/pictureanalyzer/impls/Bundle_ja.properties @@ -1,2 +1,4 @@ +#Fri Feb 12 16:56:29 UTC 2021 +ExifProcessor.indexError.message=EXIF\u30e1\u30bf\u30c7\u30fc\u30bf\u306e\u6295\u7a3f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 ExifProcessor.module_name=Exif\u89e3\u6790\u30c4\u30fc\u30eb -ExifProcessor.indexError.message=\u30ad\u30fc\u30ef\u30fc\u30c9\u3092\u691c\u7d22\u3059\u308b\u305f\u3081\u306e\u3001EXIF\u30e1\u30bf\u30c7\u30fc\u30bf\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +ExifProcessor.userContent.description=\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u306fEXIF\u30e1\u30bf\u30c7\u30fc\u30bf\u30c7\u30fc\u30bf\u304c\u5b58\u5728\u3057\u307e\u3059\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/report/infrastructure/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/report/infrastructure/Bundle_ja.properties index 48742dc04b..e501eff39e 100644 --- a/Core/src/org/sleuthkit/autopsy/report/infrastructure/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/report/infrastructure/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:29 UTC 2021 ArtifactSelectionDialog.deselectAllButton.text=\u5168\u3066\u9078\u629e\u89e3\u9664 ArtifactSelectionDialog.dlgTitle.text=\u30a2\u30c9\u30d0\u30f3\u30b9\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u9078\u629e ArtifactSelectionDialog.okButton.text=OK @@ -167,7 +167,7 @@ ReportProgressPanel.start.progress.text=\u30ec\u30dd\u30fc\u30c8\u958b\u59cb\u4e ReportVisualPanel1.getName.text=\u30ec\u30dd\u30fc\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u9078\u629e\u304a\u3088\u3073\u8a2d\u5b9a ReportVisualPanel1.invalidModuleWarning=\u7121\u52b9\u306a\u30ec\u30dd\u30fc\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb({0})\u306b\u906d\u9047\u3057\u307e\u3057\u305f ReportVisualPanel1.reportModulesLabel.text=\u30ec\u30dd\u30fc\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\uff1a -ReportVisualPanel2.advancedButton.text=\u7d50\u679c\u30bf\u30a4\u30d7\u3092\u9078\u629e\u2026 +ReportVisualPanel2.advancedButton.text=\u7d50\u679c\u30bf\u30a4\u30d7\u306e\u9078\u629e... ReportVisualPanel2.allResultsRadioButton.text=\u5168\u3066\u306e\u7d50\u679c ReportVisualPanel2.dataLabel.text=\u3069\u306e\u30c7\u30fc\u30bf\u306b\u3064\u3044\u3066\u30ec\u30dd\u30fc\u30c8\u3059\u308b\u304b\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044\uff1a ReportVisualPanel2.deselectAllButton.text=\u5168\u3066\u9078\u629e\u89e3\u9664 @@ -179,7 +179,7 @@ ReportWizardAction.toolBarButton.text=\u30ec\u30dd\u30fc\u30c8\u3092\u751f\u6210 ReportWizardDataSourceSelectionPanel.confirmEmptySelection=\u9078\u629e\u305b\u305a\u306b\u7d9a\u884c\u3057\u3066\u3082\u3088\u308d\u3057\u3044\u3067\u3059\u304b\uff1f ReportWizardDataSourceSelectionPanel.finishButton.text=\u7d42\u4e86 ReportWizardDataSourceSelectionPanel.nextButton.text=\u6b21 -ReportWizardDataSourceSelectionPanel.title=\u542b\u3081\u308b\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044 +ReportWizardDataSourceSelectionPanel.title=\u542b\u3081\u308b\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044 ReportWizardFileOptionsPanel.finishButton.text=\u7d42\u4e86 ReportWizardFileOptionsVisualPanel.deselectAllButton.text=\u5168\u3066\u9078\u629e\u89e3\u9664 ReportWizardFileOptionsVisualPanel.getName.text=\u30d5\u30a1\u30a4\u30eb\u30ec\u30dd\u30fc\u30c8\u3092\u8a2d\u5b9a @@ -189,3 +189,4 @@ ReportWizardPanel1.finishButton.text=\u7d42\u4e86 ReportWizardPanel1.nextButton.text=\u6b21 > ReportWizardPanel2.finishButton.text=\u7d42\u4e86 ReportWizardPanel2.nextButton.text=\u6b21 > +ReportWizardPortableCaseOptionsVisualPanel.includeAppCheckbox.text=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u30d5\u30a9\u30eb\u30c0\u30fc\u306b\u542b\u3081\u307e\u3059\uff08\u7dcf\u54081GB\u307e\u3067\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u8ffd\u52a0\u304c\u53ef\u80fd\u3067\u3059\uff09 diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/excel/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/report/modules/excel/Bundle_ja.properties index 6d014b6647..c709b35d02 100644 --- a/Core/src/org/sleuthkit/autopsy/report/modules/excel/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/report/modules/excel/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:29 UTC 2021 ReportExcel.cellVal.caseName=\u30b1\u30fc\u30b9\u540d\uff1a ReportExcel.cellVal.caseNum=\u30b1\u30fc\u30b9\u756a\u53f7\uff1a ReportExcel.cellVal.examiner=\u8abf\u67fb\u62c5\u5f53\u8005\uff1a @@ -9,4 +9,4 @@ ReportExcel.getDesc.text=\u7d50\u679c\u306b\u95a2\u3059\u308b\u30ec\u30dd\u30fc\ ReportExcel.getName.text=\u7d50\u679c - Excel ReportExcel.numAartifacts.text=\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u6570\uff1a ReportExcel.sheetName.text=\u30b5\u30de\u30ea\u30fc -ReportExcel.writeSummary.numImages=\u30b1\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u6570\uff1a +ReportExcel.writeSummary.numImages=\u30b1\u30fc\u30b9\u5185\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u6570\uff1a diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/html/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/report/modules/html/Bundle_ja.properties index 2d587dafab..8ca83a242d 100644 --- a/Core/src/org/sleuthkit/autopsy/report/modules/html/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/report/modules/html/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:29 UTC 2021 ReportHTML.addThumbRows.dataType.msg=\u30a4\u30e1\u30fc\u30b8\u3092\u542b\u3080\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u7d50\u679c\u304a\u3088\u3073\u30b3\u30f3\u30c6\u30f3\u30c4\u3002 ReportHTML.addThumbRows.dataType.title=\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u30a4\u30e1\u30fc\u30b8 - {0} ReportHTML.getDesc.text=HTML\u5f62\u5f0f\u306e\u7d50\u679c\u304a\u3088\u3073\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u305f\u30a2\u30a4\u30c6\u30e0\u306e\u30ec\u30dd\u30fc\u30c8 @@ -14,7 +14,7 @@ ReportHTML.writeNav.summary=\u30b1\u30fc\u30b9\u30b5\u30de\u30ea\u30fc ReportHTML.writeNav.title=\u30ec\u30dd\u30fc\u30c8\u30ca\u30d3\u30b2\u30fc\u30b7\u30e7\u30f3 ReportHTML.writeSum.caseName=\u30b1\u30fc\u30b9\uff1a ReportHTML.writeSum.caseNum=\u30b1\u30fc\u30b9\u756a\u53f7\uff1a -ReportHTML.writeSum.caseNumImages=\u30b1\u30fc\u30b9\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u6570\uff1a +ReportHTML.writeSum.caseNumImages=\u30b1\u30fc\u30b9\u5185\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306e\u6570\uff1a ReportHTML.writeSum.examiner=\u8abf\u67fb\u62c5\u5f53\u8005\uff1a ReportHTML.writeSum.imageInfoHeading=

    \u30a4\u30e1\u30fc\u30b8\u60c5\u5831\uff1a

    ReportHTML.writeSum.noCaseNum=\u30b1\u30fc\u30b9\u756a\u53f7\u304c\u3042\u308a\u307e\u305b\u3093 diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/kml/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/report/modules/kml/Bundle_ja.properties index 1ecb353a02..ed22795edb 100644 --- a/Core/src/org/sleuthkit/autopsy/report/modules/kml/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/report/modules/kml/Bundle_ja.properties @@ -1,5 +1,5 @@ -#Tue Aug 18 18:09:21 UTC 2020 -KMLReport.failedToCompleteReport=\u30ec\u30dd\u30fc\u30c8\u3092\u5b8c\u4e86\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +#Fri Feb 12 16:56:29 UTC 2021 +KMLReport.failedToCompleteReport=\u30ec\u30dd\u30fc\u30c8\u3092\u5b8c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 KMLReport.partialFailure=\u30ec\u30dd\u30fc\u30c8\u306e\u4f5c\u6210\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 \u4e00\u90e8\u306e\u30a2\u30a4\u30c6\u30e0\u306f\u51fa\u529b\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002 ReportBodyFile.ingestWarning.text=\u8aad\u8fbc\u8b66\u544a\u30e1\u30c3\u30bb\u30fc\u30b8 ReportKML.genReport.reportName=KML\u30ec\u30dd\u30fc\u30c8 @@ -8,5 +8,6 @@ ReportKML.getFilePath.text=\u30ec\u30dd\u30fc\u30c8KML.kml ReportKML.getName.text=Google Earth/KML ReportKML.progress.loading=\u30d5\u30a1\u30a4\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u4e2d\u2026 ReportKML.progress.querying=\u30d5\u30a1\u30a4\u30eb\u306e\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u4e2d\u2026 +Waypoint_Area_Point_Display_String=GPS\u7bc4\u56f2\u5916\u6bbb\u30dd\u30a4\u30f3\u30c8 Waypoint_Track_Display_String=GPS\u30c8\u30e9\u30c3\u30af Waypoint_Track_Point_Display_String=GPS\u500b\u5225\u30c8\u30e9\u30c3\u30af\u30dd\u30a4\u30f3\u30c8 diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/Bundle_ja.properties index f935a447ae..a51568f861 100644 --- a/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/Bundle_ja.properties @@ -1,5 +1,7 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:29 UTC 2021 PortableCaseReportModule.generateCaseUcoReport.errorCreatingReportFolder=\u30ec\u30dd\u30fc\u30c8\u30d5\u30a9\u30eb\u30c0\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f PortableCaseReportModule.generateCaseUcoReport.errorGeneratingCaseUcoReport=CASE-UCO\u30ec\u30dd\u30fc\u30c8\u306e\u751f\u6210\u4e2d\u306e\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f PortableCaseReportModule.generateCaseUcoReport.startCaseUcoReportGeneration=\u643a\u5e2f\u7528\u30b1\u30fc\u30b9\u306eCASE-UCO\u30ec\u30dd\u30fc\u30c8\u306e\u4f5c\u6210\u4e2d PortableCaseReportModule.generateCaseUcoReport.successCaseUcoReportGeneration=\u30dd\u30fc\u30bf\u30d6\u30eb\u30b1\u30fc\u30b9\u306eCASE-UCO\u30ec\u30dd\u30fc\u30c8\u3092\u4f5c\u6210\u3057\u307e\u3057\u305f +PortableCaseReportModule.generateReport.errorCopyingAutopsy=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30d4\u30fc\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +PortableCaseReportModule_generateReport_copyingAutopsy=\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u30b3\u30d4\u30fc... diff --git a/Core/src/org/sleuthkit/autopsy/texttranslation/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/texttranslation/Bundle_ja.properties index f09a84b18c..940f9aaa48 100644 --- a/Core/src/org/sleuthkit/autopsy/texttranslation/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/texttranslation/Bundle_ja.properties @@ -1,12 +1,13 @@ -OptionsCategory_Name_Machine_Translation=\u6a5f\u68b0\u7ffb\u8a33 +#Fri Feb 12 16:56:29 UTC 2021 OptionsCategory_Keywords_Machine_Translation_Settings=\u6a5f\u68b0\u7ffb\u8a33\u8a2d\u5b9a -TranslationContentPanel.ocrLabel.text=OCR: -TranslationOptionsPanel.noTextTranslators.text=\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u30c4\u30fc\u30eb\u304c\u5b58\u5728\u3057\u307e\u305b\u3093\u3002\u7ffb\u8a33\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 +OptionsCategory_Name_Machine_Translation=\u6a5f\u68b0\u7ffb\u8a33 +TranslationContentPanel.ocrLabel.text=OCR\: +TranslationContentPanel.showLabel.text=\u8868\u793a\: +TranslationOptionsPanel.enableOcrCheckBox.text=\u7ffb\u8a33\u30b3\u30f3\u30c6\u30f3\u30c4\u30d3\u30e5\u30fc\u30a2\u3067OCR\u6587\u5b57\u8a8d\u8b58\u3092\u6709\u52b9\u306b\u3059\u308b TranslationOptionsPanel.noTextTranslators.text=\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u30c4\u30fc\u30eb\u304c\u9078\u629e\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u7ffb\u8a33\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 TranslationOptionsPanel.textTranslatorsUnavailable.text=\u9078\u629e\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u30c4\u30fc\u30eb\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002\u7ffb\u8a33\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002 TranslationOptionsPanel.translationDisabled.text=\u7ffb\u8a33\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059 +TranslationOptionsPanel.translationOptionsDescription.text=\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u88fd\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u30b5\u30fc\u30d3\u30b9\u3092\u69cb\u6210\u3057\u3001\u30c6\u30ad\u30b9\u30c8\u3068\u30d5\u30a1\u30a4\u30eb\u540d\u306e\u7ffb\u8a33\u3092\u6709\u52b9\u5316\u3057\u307e\u3059\u3002 +TranslationOptionsPanel.translationServiceLabel.text=\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u30c4\u30fc\u30eb\: TranslationOptionsPanelController.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc TranslationOptionsPanelController.moduleErr.msg=TranslationSettingsPanelController\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 -TranslationContentPanel.showLabel.text=\u8868\u793a: -TranslationOptionsPanel.translationServiceLabel.text=\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u30c4\u30fc\u30eb: -TranslationOptionsPanel.translationOptionsDescription.text=\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u88fd\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u30b5\u30fc\u30d3\u30b9\u3092\u69cb\u6210\u3057\u3001\u30c6\u30ad\u30b9\u30c8\u3068\u30d5\u30a1\u30a4\u30eb\u540d\u306e\u7ffb\u8a33\u3092\u6709\u52b9\u5316\u3057\u307e\u3059\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/texttranslation/translators/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/texttranslation/translators/Bundle_ja.properties index 3a2cd47a80..b5ba183a6f 100644 --- a/Core/src/org/sleuthkit/autopsy/texttranslation/translators/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/texttranslation/translators/Bundle_ja.properties @@ -1,8 +1,8 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:29 UTC 2021 BingTranslator.name.text=Bing\u3067\u7ffb\u8a33\u8005\u3092\u691c\u7d22 BingTranslatorSettingsPanel.authenticationKeyField.toolTipText=\u6b21\u306e\u30cf\u30c3\u30b7\u30e5\u3092\u5165\u529b\u3059\u308b BingTranslatorSettingsPanel.authenticationKeyLabel.text=\u8a8d\u8a3c\u30ad\u30fc\: -BingTranslatorSettingsPanel.instructionsTextArea.text_1=
    Microsoft Translator\u30a2\u30ab\u30a6\u30f3\u30c8\u306bMicrosoft Translator\u8a8d\u8a3c\u30ad\u30fc\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u5165\u624b\u65b9\u6cd5\u306e\u8aac\u660e\u306f\u6b21\u306e\u5834\u6240\u306b\u3042\u308a\u307e\u3059\uff1a https\://docs.microsoft.com/en-us/ azure / cognitive-services / translator / translator-text-how-to-signup \u3002 +BingTranslatorSettingsPanel.instructionsTextArea.text_1=
    MicrosoftTranslator\u30a2\u30ab\u30a6\u30f3\u30c8\u306bMicrosoftTranslator\u8a8d\u8a3c\u30ad\u30fc\u3092\u63d0\u4f9b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 \u5165\u624b\u65b9\u6cd5\u306e\u8aac\u660e\u306f\u3053\u3061\u3089\u304b\u3089\uff1ahttps\://docs.microsoft.com/en-us/azure/cognitive-services/translator/translator-text-how-to-signup.
    BingTranslatorSettingsPanel.resultLabel.text=\u7d50\u679c\: BingTranslatorSettingsPanel.targetLanguageLabel.text=\u5bfe\u8c61\u8a00\u8a9e\: BingTranslatorSettingsPanel.testButton.text=\u30c6\u30b9\u30c8 @@ -21,7 +21,7 @@ GoogleTranslatorSettingsPanel.errorMessage.unableToReadCredentials=\u8cc7\u683c\ GoogleTranslatorSettingsPanel.errorMessage.unknownFailureGetting=\u73fe\u5728\u306e\u8cc7\u683c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u8a00\u8a9e\u306e\u30ea\u30b9\u30c8\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002 GoogleTranslatorSettingsPanel.errorMessage.unknownFailurePopulating=\u73fe\u5728\u306e\u8cc7\u683c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u308b\u8a00\u8a9e\u306e\u30ea\u30b9\u30c8\u3092\u5165\u529b\u3067\u304d\u307e\u305b\u3093\u3002 GoogleTranslatorSettingsPanel.fileChooser.confirmButton=\u9078\u629e -GoogleTranslatorSettingsPanel.instructionsTextArea.text=
    Google\u7ffb\u8a33\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30b5\u30fc\u30d3\u30b9\u30fb\u30a2\u30ab\u30a6\u30f3\u30c8\u30ad\u30fc\u3092\u542b\u3080JSON\u8a8d\u8a3c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002 \u30b5\u30fc\u30d3\u30b9\u30a2\u30fb\u30ab\u30a6\u30f3\u30c8\u30ad\u30fc\u306e\u4f5c\u6210\u65b9\u6cd5\u306b\u3064\u3044\u3066\u306f\u3001\u3053\u3061\u3089\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002 https\://cloud.google.com/iam/docs/creating-managing-service-account-keys\u3002 +GoogleTranslatorSettingsPanel.instructionsTextArea.text=
    Google\u7ffb\u8a33\u30a2\u30ab\u30a6\u30f3\u30c8\u306e\u30b5\u30fc\u30d3\u30b9\u30a2\u30ab\u30a6\u30f3\u30c8\u30ad\u30fc\u3092\u542b\u3080JSON\u8a8d\u8a3c\u60c5\u5831\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u306b\u306a\u308a\u307e\u3059\u3002 \u30b5\u30fc\u30d3\u30b9\u30a2\u30ab\u30a6\u30f3\u30c8\u30ad\u30fc\u306e\u53d6\u5f97\u65b9\u6cd5\u306b\u95a2\u3059\u308b\u60c5\u5831\u306f\u3001\u6b21\u306e\u5834\u6240\u306b\u3042\u308a\u307e\u3059\uff1a https\://cloud.google.com/iam/docs/creating-managing-service-account-keys.
    GoogleTranslatorSettingsPanel.json.description=JSON\u30d5\u30a1\u30a4\u30eb GoogleTranslatorSettingsPanel.resultLabel.text=\u7d50\u679c\: GoogleTranslatorSettingsPanel.targetLanguageLabel.text=\u5bfe\u8c61\u8a00\u8a9e\: diff --git a/Core/src/org/sleuthkit/autopsy/texttranslation/ui/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/texttranslation/ui/Bundle_ja.properties index b9442d6a12..9dcea73218 100644 --- a/Core/src/org/sleuthkit/autopsy/texttranslation/ui/Bundle_ja.properties +++ b/Core/src/org/sleuthkit/autopsy/texttranslation/ui/Bundle_ja.properties @@ -1,5 +1,6 @@ -OptionsCategory_Name_Machine_Translation=\u6a5f\u68b0\u7ffb\u8a33 +#Fri Feb 12 16:56:29 UTC 2021 OptionsCategory_Keywords_Machine_Translation_Settings=\u6a5f\u68b0\u7ffb\u8a33\u8a2d\u5b9a +OptionsCategory_Name_Machine_Translation=\u6a5f\u68b0\u7ffb\u8a33 TranslatedContentPanel.comboBoxOption.originalText=\u30aa\u30ea\u30b8\u30ca\u30eb\u30c6\u30ad\u30b9\u30c8(\u6700\u592725KB) TranslatedContentPanel.comboBoxOption.translatedText=\u7ffb\u8a33\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8 TranslatedContentViewer.emptyTranslation=\u751f\u6210\u3055\u308c\u305f\u7ffb\u8a33\u7d50\u679c\u306f\u7a7a(\u672a\u5165\u529b)\u3067\u3057\u305f\u3002 @@ -9,6 +10,7 @@ TranslatedContentViewer.extractingFileText=\u30d5\u30a1\u30a4\u30eb\u304b\u3089\ TranslatedContentViewer.extractingImageText=\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u30c6\u30ad\u30b9\u30c8\u3092\u62bd\u51fa\u4e2d\u3067\u3059\u3002\u304a\u5f85\u3061\u304f\u3060\u3055\u3044... TranslatedContentViewer.noIndexedTextMsg=\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5b9f\u884c\u3057\u3001\u7ffb\u8a33\u30c6\u30ad\u30b9\u30c8\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002 TranslatedContentViewer.noServiceProvider=\u6a5f\u68b0\u7ffb\u8a33\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +TranslatedContentViewer.ocrNotEnabled=OCR\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u305b\u3093\u3002 \u5909\u66f4\u3059\u308b\u306b\u306f\u3001[\u30c4\u30fc\u30eb]-> [\u30aa\u30d7\u30b7\u30e7\u30f3]-> [\u6a5f\u68b0\u7ffb\u8a33]\u3092\u9078\u3093\u3067\u4e0b\u3055\u3044 TranslatedContentViewer.textAlreadyIndexed=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30c6\u30ad\u30b9\u30c8\u306e\u30d3\u30e5\u30fc\u30ef\u30fc\u3067\u30aa\u30ea\u30b8\u30ca\u30eb\u30c6\u30ad\u30b9\u30c8\u3092\u8868\u793a\u3057\u3066\u304f\u3060\u3055\u3044\u3002 TranslatedContentViewer.translatingText=\u30c6\u30ad\u30b9\u30c8\u3092\u7ffb\u8a33\u4e2d\u3067\u3059\u3002T\u304a\u5f85\u3061\u304f\u3060\u3055\u3044... TranslatedContentViewer.translationException=\u7ffb\u8a33\u3092\u8a66\u307f\u3066\u3044\u308b\u9593\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 @@ -16,7 +18,7 @@ TranslatedTextViewer.maxPayloadSize=\u30c6\u30ad\u30b9\u30c8\u306e\u6700\u521d\u TranslatedTextViewer.title=\u7ffb\u8a33 TranslatedTextViewer.toolTip=\u7ffb\u8a33\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u306e\u30c6\u30ad\u30b9\u30c8\u3092\u8868\u793a\u3057\u307e\u3059\u3002 TranslationContentPanel.autoDetectOCR=\u81ea\u52d5\u691c\u51fa\u3055\u308c\u305f\u8a00\u8a9e -TranslationContentPanel.ocrLabel.text=OCR: +TranslationContentPanel.ocrLabel.text=OCR\: +TranslationContentPanel.showLabel.text=\u8868\u793a\: TranslationOptionsPanelController.moduleErr=\u30e2\u30b8\u30e5\u30fc\u30eb\u30a8\u30e9\u30fc TranslationOptionsPanelController.moduleErr.msg=TranslationSettingsPanelController\u66f4\u65b0\u306e\u30ea\u30c3\u30b9\u30f3\u4e2d\u306b\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30a8\u30e9\u30fc\u3092\u767a\u751f\u3055\u305b\u307e\u3057\u305f\u3002\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u3069\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u5224\u65ad\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30c7\u30fc\u30bf\u304c\u4e0d\u5b8c\u5168\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 -TranslationContentPanel.showLabel.text=\u8868\u793a: diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/Bundle_ja.properties b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/Bundle_ja.properties index ab5f7917c2..d751c3ed40 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/Bundle_ja.properties +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/Bundle_ja.properties @@ -1,7 +1,7 @@ -#Tue Aug 18 18:09:21 UTC 2020 -DeleteOrphanCaseNodesDialog.additionalInit.lblNodeCount.text=Znodes found\: {0} -DeleteOrphanCaseNodesDialog.additionalInit.znodesTextArea.countMessage=ZNODES FOUND\: {0} +#Fri Feb 12 16:56:29 UTC 2021 +DeleteOrphanCaseNodesDialog.additionalInit.lblNodeCount.text=\u898b\u3064\u304b\u3063\u305fZnodes\uff1a{0} +DeleteOrphanCaseNodesDialog.additionalInit.znodesTextArea.countMessage=\u898b\u3064\u304b\u3063\u305fZNODES\uff1a{0} DeleteOrphanCaseNodesDialog.cancelButton.text=\u30ad\u30e3\u30f3\u30bb\u30eb -DeleteOrphanCaseNodesDialog.descriptionText.text=\u4ee5\u4e0b\u306e\u30b1\u30fc\u30b9\u306b\u306f\u3001\u5b64\u7acb\u3057\u305fznode\u304c\u3042\u308a\u307e\u3059\u3002 \u524a\u9664\u3057\u307e\u3059\u304b\uff1f +DeleteOrphanCaseNodesDialog.descriptionText.text=\u6b21\u306e\u30b1\u30fc\u30b9\u3067\u306f\u3001\u5b64\u7acb\u3057\u305fznode\u304c\u3042\u308a\u307e\u3059\u3002 \u305d\u308c\u3089\u3092\u524a\u9664\u3057\u307e\u3059\u304b\uff1f DeleteOrphanCaseNodesDialog.okButton.text=OK -DeleteOrphanCaseNodesDialog.titleText.text=\u6b21\u306eZnodes\u3092\u524a\u9664\u3057\u307e\u3059\u304b\uff1f +DeleteOrphanCaseNodesDialog.titleText.text=\u6b21\u306eZnode\u3092\u524a\u9664\u3057\u307e\u3059\u304b\uff1f diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/Bundle_ja.properties b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/Bundle_ja.properties index d053a583e1..db8d0dcd71 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/Bundle_ja.properties +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/configuration/Bundle_ja.properties @@ -1,2 +1,4 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:29 UTC 2021 +AutoIngestSettingsPanel.MustRestart=\u65b0\u3057\u3044\u8a2d\u5b9a\u3092\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u3092\u518d\u8d77\u52d5\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059 +AutoIngestSettingsPanel.restartRequiredLabel.text=\u6709\u52b9\u306b\u3059\u308b\u306b\u306f\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u518d\u8d77\u52d5\u304c\u5fc5\u8981\u3067\u3059\u3002 MultiUserTestTool.unableToInitializeFilTypeDetector=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u691c\u51fa\u6a5f\u80fd\u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093 diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties index 2f50e62095..d43448a582 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:29 UTC 2021 AbstractFileStringContentStream.getSize.exception.msg=\u6587\u5b57\u5217\u5168\u4f53\u304c\u5909\u63db\u3055\u308c\u308b\u307e\u3067\u3001\u5909\u63db\u3055\u308c\u305f\u6587\u5b57\u5217\u306e\u6587\u5b57\u6570\u306f\u308f\u304b\u308a\u307e\u305b\u3093 AbstractFileStringContentStream.getSrcInfo.text=\u30d5\u30a1\u30a4\u30eb\:{0} AbstractFileTikaTextExtract.index.exception.tikaParse.msg=\u4f8b\u5916\: \u6b21\u306e\u30d5\u30a1\u30a4\u30eb\u306eTika\u89e3\u6790\u30bf\u30b9\u30af\u5b9f\u884c\u6642\u306e\u4e88\u671f\u305b\u306c\u4f8b\u5916\: {0}\u3001{1} @@ -194,11 +194,13 @@ KeywordSearchGlobalLanguageSettingsPanel.languagesLabel.text=\u6709\u52b9\u5316\ KeywordSearchGlobalListSettingsPanel.component.featureName.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u3092\u4fdd\u5b58 KeywordSearchGlobalSearchSettingsPanel.chunksLabel.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u7d22\u5f15\u5185\u306e\u30c1\u30e3\u30f3\u30af\: KeywordSearchGlobalSearchSettingsPanel.chunksValLabel.text=0 +KeywordSearchGlobalSearchSettingsPanel.customizeComponents.windowsOCR=OCR\u6587\u5b57\u8a8d\u8b58\u3092\u6709\u52b9\u306b\u3059\u308b\uff08Windows 64\u30d3\u30c3\u30c8\u304c\u5fc5\u8981\uff09 KeywordSearchGlobalSearchSettingsPanel.filesIndexedLabel.text=\u30ad\u30fc\u30ef\u30fc\u30c9\u7d22\u5f15\u5185\u306e\u30d5\u30a1\u30a4\u30eb\: KeywordSearchGlobalSearchSettingsPanel.filesIndexedValue.text=0 KeywordSearchGlobalSearchSettingsPanel.frequencyLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306e\u7d50\u679c\u66f4\u65b0\u983b\u5ea6\: KeywordSearchGlobalSearchSettingsPanel.informationLabel.text=\u60c5\u5831 KeywordSearchGlobalSearchSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 +KeywordSearchGlobalSearchSettingsPanel.ocrCheckBox.text=OCR\u6587\u5b57\u8a8d\u8b58\u3092\u6709\u52b9\u306b\u3059\u308b KeywordSearchGlobalSearchSettingsPanel.settingsLabel.text=\u8a2d\u5b9a KeywordSearchGlobalSearchSettingsPanel.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(\u691c\u7d22\u6642\u9593\u304c\u9577\u304f\u306a\u308a\u307e\u3059) KeywordSearchGlobalSearchSettingsPanel.skipNSRLCheckBox.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306bNSRL(\u65e2\u77e5\u306e\u30d5\u30a1\u30a4\u30eb)\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30ad\u30fc\u30ef\u30fc\u30c9\u306b\u8ffd\u52a0\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044 @@ -322,11 +324,15 @@ SearchRunner.query.exception.msg=\u6b21\u306e\u30af\u30a8\u30ea\u3092\u5b9f\u884 SearchRunner.updateTimer.title.text=SearchRunner\u66f4\u65b0\u30bf\u30a4\u30de\u30fc Server.addDoc.exception.msg=\u66f4\u65b0\u30cf\u30f3\u30c9\u30e9\u30fc\u7d4c\u7531\u3067\u6b21\u306e\u6587\u66f8\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\: {0} Server.addDoc.exception.msg2=\u66f4\u65b0\u30cf\u30f3\u30c9\u30e9\u30fc\u7d4c\u7531\u3067\u6b21\u306e\u6587\u66f8\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\: {0} +Server.addDocBatch.exception.msg=\u30d0\u30c3\u30c1\u51e6\u7406\u3055\u308c\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f Server.close.exception.msg=\u30b3\u30a2\u3092\u9589\u3058\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093 -Server.close.exception.msg2=\u30b3\u30a2\u3092\u9589\u3058\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093 Server.commit.exception.msg=\u7d22\u5f15\u3092\u78ba\u5b9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -Server.connect.exception.msg=\u6b21\u306eSolr\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\: {0} -Server.deleteCore.exception.msg=Solr \u30b3\u30a2 {0} \u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f +Server.connect.exception.msg=Solr\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093{0} +Server.connectionInfoMissing.exception.msg=Solr\u30d0\u30fc\u30b8\u30e7\u30f3{0}\u30de\u30eb\u30c1\u30e6\u30fc\u30b6\u30fc\u63a5\u7d9a\u60c5\u5831\u304c\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093 +Server.deleteCore.exception.msg=Solr\u30b3\u30ec\u30af\u30b7\u30e7\u30f3{0}\u306e\u524a\u9664\u306b\u5931\u6557\u3057\u307e\u3057\u305f +Server.exceptionMessage.unableToBackupCollection=Solr\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3067\u304d\u307e\u305b\u3093 +Server.exceptionMessage.unableToCreateCollection=Solr\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093 +Server.exceptionMessage.unableToRestoreCollection=Solr\u30b3\u30ec\u30af\u30b7\u30e7\u30f3\u3092\u5fa9\u5143\u3067\u304d\u307e\u305b\u3093 Server.isRunning.exception.errCheckSolrRunning.msg=Solr\u30b5\u30fc\u30d0\u30fc\u304c\u5b9f\u884c\u4e2d\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f Server.isRunning.exception.errCheckSolrRunning.msg2=Solr\u30b5\u30fc\u30d0\u30fc\u304c\u5b9f\u884c\u4e2d\u304b\u3069\u3046\u304b\u3092\u78ba\u8a8d\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f Server.openCore.exception.alreadyOpen.msg=\u958b\u3044\u3066\u3044\u308bSolr\u306e\u30b3\u30a2\u304c\u3059\u3067\u306b\u3042\u308a\u307e\u3059\u3002\u6700\u521d\u306b\u30b3\u30a2\u3092\u660e\u793a\u7684\u306b\u9589\u3058\u3066\u304f\u3060\u3055\u3044\u3002 @@ -342,9 +348,7 @@ Server.queryNumIdxDocs.exception.msg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\ Server.queryNumIdxFiles.exception.msg=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\u6570\u3092\u30af\u30a8\u30ea\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 Server.queryTerms.exception.msg=\u6b21\u306eterms(\u6574\u6570/\u6587\u5b57\u5217/\u914d\u5217)\u30af\u30a8\u30ea\u306e\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\: {0} 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=\u7d22\u5f15\u3092\u78ba\u5b9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -Server.addDoc.exception.msg=\u66f4\u65b0\u30cf\u30f3\u30c9\u30e9\u30fc\u7d4c\u7531\u3067\u6b21\u306e\u6587\u66f8\u3092\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} -Server.close.exception.msg=\u30b3\u30a2\u3092\u9589\u3058\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093 +Server.serverList.exception.msg=\u30b5\u30fc\u30d0\u30fc{0}\u304b\u3089Solr\u30b5\u30fc\u30d0\u30fc\u306e\u30ea\u30b9\u30c8\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093 Server.solrServerNoPortException.msg=\u7d22\u5f15\u751f\u6210\u30b5\u30fc\u30d0\u30fc\u306f\u30dd\u30fc\u30c8 {0} \u306b\u30d0\u30a4\u30f3\u30c9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u306e {1} \u30dd\u30fc\u30c8\u306b\u5909\u66f4\u3059\u308b\u3053\u3068\u3092\u691c\u8a0e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 Server.start.exception.cantStartSolr.msg=Solr\u30b5\u30fc\u30d0\u30fc\u30d7\u30ed\u30bb\u30b9\u3092\u958b\u59cb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f Server.start.exception.cantStartSolr.msg2=Solr\u30b5\u30fc\u30d0\u30fc\u30d7\u30ed\u30bb\u30b9\u3092\u958b\u59cb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f @@ -358,44 +362,11 @@ SolrSearch.creatingNewIndex.msg=\u65b0\u898f\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15 SolrSearch.findingIndexes.msg=\u65e2\u5b58\u306e\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u3092\u691c\u7d22\u4e2d\u3067\u3059 SolrSearch.indentifyingIndex.msg=\u4f7f\u7528\u3059\u308b\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u3092\u7279\u5b9a\u4e2d\u3067\u3059 SolrSearch.lookingForMetadata.msg=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u4e2d\u3067\u3059 -SolrSearch.openCore.msg=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u3092\u8d77\u52d5\u4e2d\u3067\u3059 -SolrSearch.openGiantCore.msg=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u3092\u8d77\u52d5\u4e2d\u3067\u3059\u3002\u3053\u306e\u30b1\u30fc\u30b9\u306e\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u306f\u975e\u5e38\u306b\u5927\u304d\u3044\u305f\u3081\u3001\u8d77\u52d5\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 -SolrSearch.openLargeCore.msg=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u3092\u8d77\u52d5\u4e2d\u3067\u3059\u3002\u3053\u308c\u306b\u306f\u6570\u5206\u304b\u304b\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002 +SolrSearch.openCore.msg=\u30c6\u30ad\u30b9\u30c8\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u958b\u304d\u307e\u3059\u3002 \u3053\u308c\u306b\u306f\u6570\u5206\u304b\u304b\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002 SolrSearch.readingIndexes.msg=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u307f\u4e2d\u3067\u3059 -SolrSearchService.IndexReadOnlyDialog.msg=\u3053\u306e\u30b1\u30fc\u30b9\u306e\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u306f\u8aad\u307f\u53d6\u308a\u5c02\u7528\u3067\u3059\u3002
    \u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u7d50\u679c\u3092\u78ba\u8a8d\u3057\u3001\u5b8c\u5168\u4e00\u81f4\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u3068\u90e8\u5206\u4e00\u81f4\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u3092\u5b9f\u884c\u3067\u304d\u307e\u3059
    \u304c\u3001\u7d22\u5f15\u306b\u65b0\u898f\u30c6\u30ad\u30b9\u30c8\u3092\u8ffd\u52a0\u307e\u305f\u306f\u6b63\u898f\u8868\u73fe\u691c\u7d22\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002\u305d\u306e\u4ee3\u308f\u308a\u306b\u3001\u3053\u306e\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306e\u4ee5\u524d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067
    \u30b1\u30fc\u30b9\u3092\u958b\u3051\u307e\u3059\u3002 -SolrSearchService.IndexReadOnlyDialog.title=\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u306f\u8aad\u307f\u53d6\u308a\u5c02\u7528\u3067\u3059 SolrSearchService.ServiceName=Solr\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d3\u30b9 SolrSearchService.exceptionMessage.failedToDeleteIndexFiles={0} \u306e\u30c6\u30ad\u30b9\u30c8\u7d22\u5f15\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f SolrSearchService.exceptionMessage.noCurrentSolrCore=IndexMetadata\u306b\u306f\u73fe\u5728\u306eSolr\u306e\u30b3\u30a2\u304c\u542b\u307e\u308c\u3066\u3044\u306a\u304b\u3063\u305f\u305f\u3081\u3001\u30b1\u30fc\u30b9\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f -# {0} - \u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc -SolrSearchService.exceptionMessage.noIndexMetadata=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u304b\u3089\u6b21\u306eIndexMetaData\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0} -SolrSearchService.ServiceName=Solr\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u30b5\u30fc\u30d3\u30b9 -DropdownSingleTermSearchPanel.dataSourceCheckBox.text=\u9078\u629e\u3057\u305f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306b\u691c\u7d22\u3092\u5236\u9650: -DropdownListSearchPanel.dataSourceCheckBox.text=\u9078\u629e\u3057\u305f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u306b\u691c\u7d22\u3092\u5236\u9650: -DropdownSingleTermSearchPanel.ingestIndexLabel.text=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb: -DropdownSingleTermSearchPanel.jSaveSearchResults.toolTipText=\u30ad\u30fc\u30ef\u30fc\u30c9\u30d2\u30c3\u30c8\u306b\u3088\u308b\u904e\u53bb\u306e\u691c\u7d22\u7d50\u679c\u306e\u5f62\u3067\u7d50\u679c\u3092\u4fdd\u5b58\u305b\u305a\u306b\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u3092\u5b9f\u884c -DropdownSingleTermSearchPanel.jSaveSearchResults.text=\u691c\u7d22\u7d50\u679c\u3092\u4fdd\u5b58 -DropdownListSearchPanel.jSaveSearchResults.toolTipText=\u30ad\u30fc\u30ef\u30fc\u30c9\u30d2\u30c3\u30c8\u306b\u3088\u308b\u904e\u53bb\u306e\u691c\u7d22\u7d50\u679c\u306e\u5f62\u3067\u7d50\u679c\u3092\u4fdd\u5b58\u305b\u305a\u306b\u30ad\u30fc\u30ef\u30fc\u30c9\u691c\u7d22\u3092\u5b9f\u884c -DropdownListSearchPanel.jSaveSearchResults.text=\u691c\u7d22\u7d50\u679c\u3092\u4fdd\u5b58 -GlobalEditListPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -KeywordSearchGlobalLanguageSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -KeywordSearchGlobalSearchSettingsPanel.ingestWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u9032\u884c\u4e2d\u3067\u3059\u3002\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u304c\u5b8c\u4e86\u3059\u308b\u307e\u3067\u4e00\u90e8\u306e\u8a2d\u5b9a\u3092\u5229\u7528\u3067\u304d\u307e\u305b\u3093\u3002 -ExtractedContentPanel.jLabel1.text=\u30c6\u30ad\u30b9\u30c8\u30bd\u30fc\u30b9: -ExtractedContentPanel.hitNextButton.text= -ExtractedContentPanel.hitPreviousButton.text= -ExtractedContentPanel.hitButtonsLabel.text=\u4e00\u81f4\u3059\u308b\u7d50\u679c -ExtractedContentPanel.hitTotalLabel.text=- -ExtractedContentPanel.hitOfLabel.text=/ -ExtractedContentPanel.hitCountLabel.text=- -ExtractedContentPanel.hitLabel.toolTipText= -ExtractedContentPanel.hitLabel.text=\u30da\u30fc\u30b8\u4e0a\u306e\u4e00\u81f4\u3059\u308b\u7d50\u679c: -ExtractedContentPanel.pageNextButton.text= -ExtractedContentPanel.pagePreviousButton.actionCommand=pagePreviousButton -ExtractedContentPanel.pagePreviousButton.text= -ExtractedContentPanel.pageButtonsLabel.text=\u30da\u30fc\u30b8 -ExtractedContentPanel.pageTotalLabel.text=- -ExtractedContentPanel.pageOfLabel.text=/ -ExtractedContentPanel.pageCurLabel.text=- -ExtractedContentPanel.pagesLabel.text=\u30da\u30fc\u30b8: +SolrSearchService.exceptionMessage.noIndexMetadata=\u30b1\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u30fc\u304b\u3089\u6b21\u306eIndexMetaData\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\: {0} +SolrSearchService.exceptionMessage.unableToDeleteCollection=\u30b3\u30ec\u30af\u30b7\u30e7\u30f3{0}\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093 TextZoomPanel.zoomResetButton.text=\u30ea\u30bb\u30c3\u30c8 - diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle_ja.properties b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle_ja.properties index c088d66978..e1ea4fb368 100644 --- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle_ja.properties +++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Bundle_ja.properties @@ -1,4 +1,4 @@ -#Tue Aug 18 18:09:21 UTC 2020 +#Fri Feb 12 16:56:29 UTC 2021 Chrome.getBookmark.errMsg.errAnalyzeFile={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f Chrome.getBookmark.errMsg.errAnalyzingFile={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f Chrome.getBookmark.errMsg.errAnalyzingFile3={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f @@ -13,12 +13,15 @@ Chrome.getHistory.errMsg.errAnalyzingFile={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u30 Chrome.getHistory.errMsg.errGettingFiles=Chrome\u5c65\u6b74\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 Chrome.getLogin.errMsg.errAnalyzingFiles={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f Chrome.getLogin.errMsg.errGettingFiles=Chrome\u5c65\u6b74\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 -Chrome.moduleName=Chrome +Chrome.moduleName=Chromium Chrome.parentModuleName=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 ChromeCacheExtract_adding_artifacts_msg=Chrome\u30ad\u30e3\u30c3\u30b7\u30e5\uff1a\u5206\u6790\u306e\u305f\u3081\u306b%d\u500b\u306e\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u3092\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059\u3002 ChromeCacheExtract_adding_extracted_files_msg=Chrome\u30ad\u30e3\u30c3\u30b7\u30e5\uff1a\u5206\u6790\u306e\u305f\u3081\u306b%d\u500b\u306e\u62bd\u51fa\u30d5\u30a1\u30a4\u30eb\u3092\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059\u3002 ChromeCacheExtract_loading_files_msg=Chrome\u30ad\u30e3\u30c3\u30b7\u30e5\uff1a %s\u304b\u3089\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059\u3002 DataSourceUsage_DJU_Drone_DAT=DJI\u5185\u8535SD\u30ab\u30fc\u30c9 +DomainCategoryRunner_Progress_Message_Domain_Types=\u30c9\u30e1\u30a4\u30f3\u30bf\u30a4\u30d7\u306e\u691c\u7d22 +DomainCategoryRunner_moduleName_text=DomainCategoryRunner +DomainCategoryRunner_parentModuleName=\u6700\u8fd1\u306e\u6d3b\u52d5 Extract.dbConn.errMsg.failedToQueryDb={0}\:\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30af\u30a8\u30ea\u5b9f\u884c\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 ExtractIE.getBookmark.errMsg.errGettingBookmarks={0}\: Internet Explorer\u30d6\u30c3\u30af\u30de\u30fc\u30af\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 ExtractIE.getCookie.errMsg.errGettingFile={0}\:Internet Explorer\u306ecookie\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 @@ -36,22 +39,30 @@ ExtractIE.parentModuleName.noSpace=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u3 ExtractIE.parsePascoOutput.errMsg.errParsing={0}\:Internet Explorer\u5c65\u6b74\u30a8\u30f3\u30c8\u30ea{1}\u3092\u30d1\u30fc\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f ExtractIE.parsePascoOutput.errMsg.errParsingEntry={0}\: Internet Explorer\u5c65\u6b74\u30a8\u30f3\u30c8\u30ea\u3092\u30d1\u30fc\u30b9\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 ExtractIE.parsePascoOutput.errMsg.notFound={0}\:Pasco\u30a2\u30a6\u30c8\u30d7\u30c3\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\uff1a{1} +ExtractIE_executePasco_errMsg_errorRunningPasco={0}\uff1aInternet Explorer\u306eWeb\u5c65\u6b74\u306e\u5206\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ExtractPrefetch_errMsg_prefetchParsingFailed={0}\uff1a\u30d7\u30ea\u30d5\u30a7\u30c3\u30c1\u30fb\u30d5\u30a1\u30a4\u30eb\u306e\u5206\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f ExtractPrefetch_module_name=Windows Prefetch Extractor +ExtractRecycleBin_Recyle_Bin_Display_Name=\u3054\u307f\u7bb1 ExtractRegistry.analyzeRegFiles.errMsg.errReadingRegFile={0}\:\u30ec\u30b8\u30b9\u30c8\u30ea\u30d5\u30a1\u30a4\u30eb - {1}\u3092\u8aad\u307f\u53d6\u308a\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f ExtractRegistry.analyzeRegFiles.errMsg.errWritingTemp={0}\:\u30ec\u30b8\u30b9\u30c8\u30ea\u30d5\u30a1\u30a4\u30eb{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f ExtractRegistry.analyzeRegFiles.failedParsingResults={0}\:\u30ec\u30b8\u30b9\u30c8\u30ea\u30d5\u30a1\u30a4\u30eb\u7d50\u679c\u306e\u30d1\u30fc\u30b9\u306b\u5931\u6557\u3057\u307e\u3057\u305f{1} -ExtractRegistry.execRegRip.errMsg.failedAnalyzeRegFile={0}\:\u30ec\u30b8\u30b9\u30c8\u30ea\u30d5\u30a1\u30a4\u30eb\u306e\u89e3\u6790\u306b\u5931\u6557\u3057\u307e\u3057\u305f {1} +ExtractRegistry.execRegRip.errMsg.failedAnalyzeRegFile={0}\uff1a\u30ec\u30b8\u30b9\u30c8\u30ea\u30d5\u30a1\u30a4\u30eb{1}\u306e\u5206\u6790\u306b\u5931\u6557\u3057\u307e\u3057\u305f ExtractRegistry.findRegFiles.errMsg.errReadingFile=\u30ec\u30b8\u30b9\u30c8\u30ea\u30d5\u30a1\u30a4\u30eb\uff1a{0}\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f ExtractRegistry.moduleName.text=\u30ec\u30b8\u30b9\u30c8\u30ea ExtractRegistry.parentModuleName.noSpace=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 ExtractRegistry.programName=\u30ec\u30b8\u30b9\u30c8\u30ea\u30ea\u30c3\u30d1\u30fc -ExtractSru_error_finding_export_srudb_program=export_srudb\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u691c\u7d22\u306b\u5931\u6557\u3057\u307e\u3057\u305f -ExtractSru_module_name=\u30b7\u30b9\u30c6\u30e0\u30ea\u30bd\u30fc\u30b9\u4f7f\u7528\u91cf\u62bd\u51fa -ExtractSru_process_error_executing_export_srudb_program=export_srudb\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u5b9f\u884c\u30a8\u30e9\u30fc +ExtractSru_error_finding_export_srudb_program=export_srudb\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u691c\u7d22\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +ExtractSru_module_name=\u30b7\u30b9\u30c6\u30e0\u30fb\u30ea\u30bd\u30fc\u30b9\u4f7f\u7528\u91cf\u62bd\u51fa\u6a5f\u80fd +ExtractSru_process_error_executing_export_srudb_program=export_srudb\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f ExtractSru_process_errormsg_find_software_hive=SOFTWARE HIVE\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 ExtractSru_process_errormsg_find_srudb_dat=srudb.dat\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 ExtractSru_process_errormsg_write_software_hive=SOFTWARE HIVE\u30d5\u30a1\u30a4\u30eb\u3092\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093 -ExtractSru_process_errormsg_write_srudb_dat=srudb.dat\u30d5\u30a1\u30a4\u30eb\u306b\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093 +ExtractSru_process_errormsg_write_srudb_dat=srudb.dat\u30d5\u30a1\u30a4\u30eb\u3092\u66f8\u304d\u8fbc\u3081\u307e\u305b\u3093 +ExtractWebAccountType.moduleName.text=Web\u30a2\u30ab\u30a6\u30f3\u30c8\u30bf\u30a4\u30d7 +ExtractWebAccountType.parentModuleName=\u6700\u8fd1\u306e\u6d3b\u52d5 +ExtractWebAccountType.role.admin=\u7ba1\u7406\u8005\u306e\u5f79\u5272 +ExtractWebAccountType.role.moderator=\u30e2\u30c7\u30ec\u30fc\u30bf\u30fc\u306e\u5f79\u5272 +ExtractWebAccountType.role.user=\u30e6\u30fc\u30b6\u30fc\u306e\u5f79\u5272 Firefox.getBookmark.errMsg.errAnalyzeFile={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u306e\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f Firefox.getBookmark.errMsg.errFetchFiles=Firefox\u306e\u30d6\u30c3\u30af\u30de\u30fc\u30af\u30d5\u30a1\u30a4\u30eb\u3092\u53d6\u5f97\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 Firefox.getCookie.errMsg.errAnalyzeFile={0}\:\u30d5\u30a1\u30a4\u30eb\:{1}\u3092\u89e3\u6790\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f @@ -72,6 +83,12 @@ OpenIDE-Module-Display-Category=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8 OpenIDE-Module-Long-Description=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb\u3002\n\n\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u4e2d\u306e\u30c7\u30a3\u30b9\u30af\u30a4\u30e1\u30fc\u30b8\u304b\u3089\u6709\u7528\u306a\u6700\u8fd1\u306e\u30e6\u30fc\u30b6\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u3092\u62bd\u51fa\u3057\u307e\u3059\u3002\u4f8b\u3048\u3070\uff1a\n\n-\u6700\u8fd1\u958b\u3044\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3001\n-\u30a6\u30a7\u30d6\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\uff08\u8a2a\u308c\u305f\u30b5\u30a4\u30c8\u3001\u4fdd\u5b58\u3055\u308c\u305fCookie\u3001\u30d6\u30c3\u30af\u30de\u30fc\u30af\u3055\u308c\u305f\u30b5\u30a4\u30c8\u3001\u30b5\u30fc\u30c1\u30a8\u30f3\u30b8\u30f3\u30af\u30a8\u30ea\u3001\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb\uff09\u3001\n-\u6700\u8fd1\u63a5\u7d9a\u3057\u305f\u30c7\u30d0\u30a4\u30b9\u3001\n-\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3055\u308c\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u3002\n\n\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u73fe\u5728Windows\u306e\u30c7\u30a3\u30b9\u30af\u30a4\u30e1\u30fc\u30b8\u3057\u304b\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u305b\u3093\u3002\n\u30d7\u30e9\u30b0\u30a4\u30f3\u306fWindows\u7248\u306eAutopsy\u3092\u5229\u7528\u3059\u308b\u3068\u5168\u3066\u306e\u6a5f\u80fd\u304c\u4f7f\u3048\u307e\u3059\u3002 OpenIDE-Module-Name=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 OpenIDE-Module-Short-Description=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u30d5\u30a1\u30a4\u30f3\u30c0\u30fc\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u30e2\u30b8\u30e5\u30fc\u30eb +Progress_Message_Chrome_AutoFill=Chrome\u81ea\u52d5\u5165\u529b\u30d6\u30e9\u30a6\u30b6{0} +Progress_Message_Chrome_Bookmarks=Chrome\u30d6\u30c3\u30af\u30de\u30fc\u30af\u30d6\u30e9\u30a6\u30b6{0} +Progress_Message_Chrome_Cookies=Chrome\u30af\u30c3\u30ad\u30fc\u30d6\u30e9\u30a6\u30b6{0} +Progress_Message_Chrome_Downloads=Chrome\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u30d6\u30e9\u30a6\u30b6{0} +Progress_Message_Chrome_History=Chrome\u5c65\u6b74\u30d6\u30e9\u30a6\u30b6{0} +Progress_Message_Chrome_Logins=Chrome\u30ed\u30b0\u30a4\u30f3\u30d6\u30e9\u30a6\u30b6{0} RAImageIngestModule.complete.errMsg.failed={0} \u5b8c\u4e86\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f - \u8a73\u7d30\u306f\u30ed\u30b0\u3092\u78ba\u8a8d\u3057\u3066\u4e0b\u3055\u3044
    RAImageIngestModule.getDesc=\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b8\u30f3\u30b0\u3001\u6700\u8fd1\u958b\u3044\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3001\u6700\u8fd1\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u7b49\u306e\u6700\u8fd1\u306e\u30e6\u30fc\u30b6\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u3092\u62bd\u51fa\u3057\u307e\u3059\u3002 RAImageIngestModule.getName=\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3 @@ -100,7 +117,7 @@ Recently_Used_Artifacts_Mmc=Windows\u7ba1\u7406\u30b3\u30f3\u30bd\u30fc\u30ebMRU Recently_Used_Artifacts_Office_Trustrecords=Office\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u4f8b\u5916\u304c\u8a31\u53ef\u3055\u308c\u305f\u305f\u3081\u3001TrustRecords\u306b\u4fdd\u5b58\u3055\u308c\u307e\u3057\u305f Recently_Used_Artifacts_Officedocs=Office MRU\u306b\u3088\u308b\u3068\u6700\u8fd1\u958b\u3044\u3066\u307e\u3059 Recently_Used_Artifacts_Winrar=WinRAR MRU\u306b\u3088\u308b\u3068\u6700\u8fd1\u958b\u3044\u3066\u307e\u3059 -Registry_System_Bam=\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30fb\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u30fb\u30e2\u30c7\u30ec\u30fc\u30bf\u30fc\uff08BAM\uff09\u306b\u3088\u3046\u3068\u6700\u8fd1\u5b9f\u884c\u3055\u308c\u3066\u307e\u3059 +Registry_System_Bam=\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30fb\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u30fb\u30e2\u30c7\u30ec\u30fc\u30bf\u30fc\uff08BAM\uff09\u306b\u3088\u308b\u3068\u6700\u8fd1\u5b9f\u884c\u3055\u308c\u307e\u3057\u305f SearchEngineURLQueryAnalyzer.domainSubStr.none=\u7121\u3057 SearchEngineURLQueryAnalyzer.engineName.none=\u7121\u3057 SearchEngineURLQueryAnalyzer.init.exception.msg={0}\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f diff --git a/release_scripts/localization_scripts/lastupdated.properties b/release_scripts/localization_scripts/lastupdated.properties index db7e961472..c31c7c9180 100644 --- a/release_scripts/localization_scripts/lastupdated.properties +++ b/release_scripts/localization_scripts/lastupdated.properties @@ -1,2 +1,2 @@ -# in format of bundles..lastupdated= -bundles.ja.lastupdated=d9a37c48f4bd0dff014eead73a0eb730c875ed9f \ No newline at end of file +#Fri Feb 12 16:56:29 UTC 2021 +bundles.ja.lastupdated=c2a4ececfba59d230d1a263f7124e67f88e8d3e6 From ebef1c148dd365100fabcfba3c5a5651ab92f790 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Fri, 12 Feb 2021 11:59:28 -0500 Subject: [PATCH 06/69] Japanese translations for release-4.18 --- .../datamodel/Bundle_ja.properties | 4 + .../uiutils/Bundle_ja.properties | 6 + .../discovery/search/Bundle_ja.properties | 123 +++++++++++++++ .../autopsy/discovery/ui/Bundle_ja.properties | 144 ++++++++++++++++++ .../machinesettings/Bundle_ja.properties | 3 + .../leappanalyzers/Bundle_ja.properties | 48 ++++++ .../autopsy/modules/yara/Bundle_ja.properties | 6 + .../modules/yara/ui/Bundle_ja.properties | 26 ++++ 8 files changed, 360 insertions(+) create mode 100644 Core/src/org/sleuthkit/autopsy/datasourcesummary/datamodel/Bundle_ja.properties create mode 100644 Core/src/org/sleuthkit/autopsy/datasourcesummary/uiutils/Bundle_ja.properties create mode 100644 Core/src/org/sleuthkit/autopsy/discovery/search/Bundle_ja.properties create mode 100644 Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle_ja.properties create mode 100644 Core/src/org/sleuthkit/autopsy/machinesettings/Bundle_ja.properties create mode 100644 Core/src/org/sleuthkit/autopsy/modules/leappanalyzers/Bundle_ja.properties create mode 100644 Core/src/org/sleuthkit/autopsy/modules/yara/Bundle_ja.properties create mode 100644 Core/src/org/sleuthkit/autopsy/modules/yara/ui/Bundle_ja.properties diff --git a/Core/src/org/sleuthkit/autopsy/datasourcesummary/datamodel/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/datasourcesummary/datamodel/Bundle_ja.properties new file mode 100644 index 0000000000..5873c044cc --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datasourcesummary/datamodel/Bundle_ja.properties @@ -0,0 +1,4 @@ +#Fri Feb 12 16:56:28 UTC 2021 +DataSourceUserActivitySummary_getRecentAccounts_calllogMessage=\u901a\u8a71\u8a18\u9332 +DataSourceUserActivitySummary_getRecentAccounts_emailMessage=\u30e1\u30fc\u30eb\u30e1\u30c3\u30bb\u30fc\u30b8 +IngestModuleCheckUtil_recentActivityModuleName=\u6700\u8fd1\u306e\u6d3b\u52d5 diff --git a/Core/src/org/sleuthkit/autopsy/datasourcesummary/uiutils/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/datasourcesummary/uiutils/Bundle_ja.properties new file mode 100644 index 0000000000..25a7ef2e76 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datasourcesummary/uiutils/Bundle_ja.properties @@ -0,0 +1,6 @@ +#Fri Feb 12 16:56:28 UTC 2021 +AbstractLoadableComponent_errorMessage_defaultText=\u7d50\u679c\u306e\u8aad\u8fbc\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 +AbstractLoadableComponent_loadingMessage_defaultText=\u7d50\u679c\u3092\u8aad\u8fbc\u4e2d... +AbstractLoadableComponent_noDataExists_defaultText=\u30c7\u30fc\u30bf\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +IngestRunningLabel_defaultMessage=\u53d6\u8fbc\u307f\u5b9f\u884c\u4e2d\u3067\u3059\u3002 +PieChartPanel_noDataLabel=\u30c7\u30fc\u30bf\u7121\u3057 diff --git a/Core/src/org/sleuthkit/autopsy/discovery/search/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/discovery/search/Bundle_ja.properties new file mode 100644 index 0000000000..13b93f98f2 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/discovery/search/Bundle_ja.properties @@ -0,0 +1,123 @@ +#Fri Feb 12 16:56:28 UTC 2021 +DiscoveryAttributes.ActivityDateGroupKey.getDisplayNameTemplate={0}{1}\u3001{2}\u306e\u9031 +DiscoveryAttributes.GroupingAttributeType.datasource.displayName=\u30c7\u30fc\u30bf\u5143 +DiscoveryAttributes.GroupingAttributeType.fileType.displayName=\u30d5\u30a1\u30a4\u30eb\u306e\u7a2e\u985e +DiscoveryAttributes.GroupingAttributeType.firstDate.displayName=\u6700\u521d\u306e\u6d3b\u52d5\u65e5 +DiscoveryAttributes.GroupingAttributeType.frequency.displayName=\u904e\u53bb\u306e\u51fa\u6765\u4e8b +DiscoveryAttributes.GroupingAttributeType.hash.displayName=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8 +DiscoveryAttributes.GroupingAttributeType.interestingItem.displayName=\u8208\u5473\u6df1\u3044\u30a2\u30a4\u30bf\u30e0 +DiscoveryAttributes.GroupingAttributeType.keywordList.displayName=\u30ad\u30fc\u30ef\u30fc\u30c9 +DiscoveryAttributes.GroupingAttributeType.lastDate.displayName=\u6700\u7d42\u6d3b\u52d5\u65e5 +DiscoveryAttributes.GroupingAttributeType.none.displayName=\u7121\u3057 +DiscoveryAttributes.GroupingAttributeType.object.displayName=\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f +DiscoveryAttributes.GroupingAttributeType.pageViews.displayName=\u30da\u30fc\u30b8\u30d3\u30e5\u30fc +DiscoveryAttributes.GroupingAttributeType.parent.displayName=\u89aa\u30d5\u30a9\u30eb\u30c0 +DiscoveryAttributes.GroupingAttributeType.previouslyNotable.displayName=\u4ee5\u524d\u306e\u6ce8\u76ee\u5ea6 +DiscoveryAttributes.GroupingAttributeType.size.displayName=\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba +DiscoveryAttributes.GroupingAttributeType.tag.displayName=\u30bf\u30b0 +DiscoveryAttributes.GroupingAttributeType.webCategory.displayName=\u30c9\u30e1\u30a4\u30f3\u30ab\u30c6\u30b4\u30ea +DiscoveryKeyUtils.DataSourceGroupKey.datasourceAndID={0}(ID\: {1}) +DiscoveryKeyUtils.DataSourceGroupKey.idOnly=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\uff08ID\uff1a{0}\uff09 +DiscoveryKeyUtils.FileTagGroupKey.noSets=\u7121\u3057 +DiscoveryKeyUtils.HashHitsGroupKey.noHashHits=\u7121\u3057 +DiscoveryKeyUtils.InterestingItemGroupKey.noSets=\u7121\u3057 +DiscoveryKeyUtils.KeywordListGroupKey.noKeywords=\u7121\u3057 +DiscoveryKeyUtils.NoGroupingGroupKey.allFiles=\u5168\u30d5\u30a1\u30a4\u30eb +DiscoveryKeyUtils.ObjectDetectedGroupKey.noSets=\u7121\u3057 +DomainSearchArtifactsRequest.toString.text=\u30c9\u30e1\u30a4\u30f3\uff1a{0}\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30bf\u30a4\u30d7\uff1a{1} +FileGroup.groupSortingAlgorithm.groupName.text=\u30b0\u30eb\u30fc\u30d7\u540d +FileGroup.groupSortingAlgorithm.groupSize.text=\u30b0\u30eb\u30fc\u30d7\u30b5\u30a4\u30ba +FileSearch.documentSummary.noBytes=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u304c\u8aad\u307f\u53d6\u3089\u308c\u305a\u3001\u30d7\u30ec\u30d3\u30e5\u30fc\u3092\u8868\u793a\u3067\u304d\u307e\u305b\u3093\u3002 +FileSearch.documentSummary.noPreview=\u30d7\u30ec\u30d3\u30e5\u30fc\u306f\u4e0d\u53ef\u3002 +FileSearchFiltering.HashSetFilter.desc=\u30bb\u30c3\u30c8\u5185\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u30d2\u30c3\u30c8\uff1a{0} +FileSearchFiltering.KnownFilter.desc=\u77e5\u3089\u308c\u3066\u3044\u306a\u3044 +FileSearchFiltering.PreviouslyNotableFilter.desc=\u4ee5\u524d\u306b\u6ce8\u76ee\u3059\u3079\u304d\u3068\u3057\u3066\u30de\u30fc\u30af\u3055\u308c\u305f\u3082\u306e +FileSearchFiltering.TagsFilter.desc=\u30bf\u30b0\u4ed8\u304d{0} +FileSearchFiltering.TagsFilter.or=\u3001 +FileSearchFiltering.UserCreatedFilter.desc=EXIF\u30c7\u30fc\u30bf\u3092\u542b\u3080 +FileSearchFiltering.concatenateSetNamesForDisplay.comma=\u3001 +FileSorter.SortingMethod.activity.displayName=\u6700\u7d42\u6d3b\u52d5\u65e5 +FileSorter.SortingMethod.datasource.displayName=\u30c7\u30fc\u30bf\u5143 +FileSorter.SortingMethod.domain.displayName=\u30c9\u30e1\u30a4\u30f3\u540d +FileSorter.SortingMethod.downloads.displayName=\u30d5\u30a1\u30a4\u30eb\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 +FileSorter.SortingMethod.filename.displayName=\u30d5\u30a1\u30a4\u30eb\u540d +FileSorter.SortingMethod.filesize.displayName=\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba +FileSorter.SortingMethod.filetype.displayName=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7 +FileSorter.SortingMethod.frequency.displayName=\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ec\u30dd\u983b\u5ea6 +FileSorter.SortingMethod.fullPath.displayName=\u30d5\u30eb\u30d1\u30b9 +FileSorter.SortingMethod.keywordlist.displayName=\u30ad\u30fc\u30ef\u30fc\u30c9\u30ea\u30b9\u30c8\u540d +FileSorter.SortingMethod.pageViews.displayName=\u30da\u30fc\u30b8\u30d3\u30e5\u30fc +ResultDomain_getDefaultCategory=\u672a\u5206\u985e +ResultFile.score.interestingResult.description=1\u3064\u4ee5\u4e0a\u306e\u30d5\u30a1\u30a4\u30eb\u306b\u8208\u5473\u6df1\u3044\u7d50\u679c\u304c\u95a2\u9023\u4ed8\u3051\u3089\u308c\u3066\u3044\u307e\u3059\u3002 +ResultFile.score.notableFile.description=1\u3064\u4ee5\u4e0a\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u6ce8\u76ee\u3059\u3079\u304d\u3082\u306e\u3068\u3057\u3066\u8a8d\u8b58\u3055\u308c\u307e\u3057\u305f\u3002 +ResultFile.score.notableTaggedFile.description=1\u3064\u4ee5\u4e0a\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u6ce8\u76ee\u3059\u3079\u304d\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +ResultFile.score.taggedFile.description=1\u3064\u4ee5\u4e0a\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u30bf\u30b0\u4ed8\u3051\u3055\u308c\u3066\u3044\u307e\u3059\u3002 +SearchData.AttributeType.Domain.displayName=\u30c9\u30e1\u30a4\u30f3 +SearchData.FileSize.100kbto1mb=\: 100KB-1MB +SearchData.FileSize.100mbto1gb=\: 100MB-1GB +SearchData.FileSize.10PlusGb=\: 10GB+ +SearchData.FileSize.16kbto100kb=\: 16-100KB +SearchData.FileSize.1gbto5gb=\: 1-5GB +SearchData.FileSize.1mbto50mb=\: 1-50MB +SearchData.FileSize.200PlusMb=\: 200MB+ +SearchData.FileSize.500kbto100mb=\: 500KB-100MB +SearchData.FileSize.50mbto200mb=\: 50-200MB +SearchData.FileSize.5gbto10gb=\: 5-10GB +SearchData.FileSize.LARGE.displayName=\u5927 +SearchData.FileSize.MEDIUM.displayName=\u4e2d +SearchData.FileSize.SMALL.displayName=\u5c0f +SearchData.FileSize.XLARGE.displayName=XLarge +SearchData.FileSize.XSMALL.displayName=XSmall +SearchData.FileSize.XXLARGE.displayName=XXLarge +SearchData.FileSize.upTo16kb=\: 0-16KB +SearchData.FileSize.upTo500kb=\: 0-500KB +SearchData.FileType.Audio.displayName=\u30aa\u30fc\u30c7\u30a3\u30aa +SearchData.FileType.Documents.displayName=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8 +SearchData.FileType.Executables.displayName=\u5b9f\u884c\u53ef\u80fd\u30d5\u30a1\u30a4\u30eb +SearchData.FileType.Image.displayName=\u753b\u50cf +SearchData.FileType.Other.displayName=\u4e0d\u660e +SearchData.FileType.Video.displayName=\u30d3\u30c7\u30aa +SearchData.Frequency.common.displayName=\u5171\u901a\uff0811-100\uff09 +SearchData.Frequency.known.displayName=\u65e2\u77e5\uff08NSRL\uff09 +SearchData.Frequency.rare.displayName=\u30ec\u30a2\uff082-10\uff09 +SearchData.Frequency.unique.displayName=\u30e6\u30cb\u30fc\u30af\uff081\uff09 +SearchData.Frequency.unknown.displayName=\u4e0d\u660e +SearchData.Frequency.verycommon.displayName=\u975e\u5e38\u306b\u4e00\u822c\u7684\uff08100+\uff09 +SearchData.PageViews.over1000=1000\u4ee5\u4e0a\u306e\u30da\u30fc\u30b8\u30d3\u30e5\u30fc +SearchData.PageViews.rangeTemplate={0}-{1}\u30da\u30fc\u30b8\u30d3\u30e5\u30fc +SearchData.Score.interesting.displayName=\u8208\u5473\u6df1\u3044 +SearchData.Score.notable.displayName=\u6ce8\u76ee\u3059\u3079\u304d +SearchData.Score.unknown.displayName=\u4e0d\u660e +SearchData.notPrevNotable.displayName=\u4ee5\u524d\u306f\u6ce8\u76ee\u306b\u5024\u3057\u306a\u3044 +SearchData.prevNotable.displayName=\u4ee5\u524d\u6ce8\u76ee\u3059\u3079\u304d\u3067\u3042\u3063\u305f +SearchFiltering.DataSourceFilter.datasource={0}({1}) +SearchFiltering.DataSourceFilter.desc=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\uff1a{0} +SearchFiltering.DataSourceFilter.or=\u3001 +SearchFiltering.FileTypeFilter.desc=\u30bf\u30a4\u30d7\uff1a{0} +SearchFiltering.FileTypeFilter.or=\u3001 +SearchFiltering.FrequencyFilter.desc=\u904e\u53bb\u306e\u51fa\u6765\u4e8b\uff1a{0} +SearchFiltering.FrequencyFilter.or=\u3001 +SearchFiltering.InterestingItemSetFilter.desc=\u8208\u5473\u6df1\u3044\u30a2\u30a4\u30c6\u30e0\u304c\u30d2\u30c3\u30c8\u3057\u305f\u30bb\u30c3\u30c8\uff1a{0} +SearchFiltering.KeywordListFilter.desc=\u30ea\u30b9\u30c8\u5185\u306e\u30ad\u30fc\u30ef\u30fc\u30c9\uff1a{0} +SearchFiltering.KnownAccountTypeFilter.desc=\u30a2\u30ab\u30a6\u30f3\u30c8\u30bf\u30a4\u30d7\u304c\u308f\u304b\u3063\u3066\u3044\u308b\u30c9\u30e1\u30a4\u30f3\u306e\u307f +SearchFiltering.ObjectDetectionFilter.desc=\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u691c\u51fa\u3055\u308c\u305f\u30bb\u30c3\u30c8\uff1a{0} +SearchFiltering.ParentFilter.desc=\u4e00\u81f4\u3059\u308b\u30d1\u30b9\uff1a{0} +SearchFiltering.ParentFilter.exact=\uff08\u5b8c\u5168\u4e00\u81f4\uff09 +SearchFiltering.ParentFilter.excluded=\uff08\u9664\u5916\uff09 +SearchFiltering.ParentFilter.included=\uff08\u542b\u3080\uff09 +SearchFiltering.ParentFilter.or=\u3001 +SearchFiltering.ParentFilter.substring=\uff08\u90e8\u5206\u6587\u5b57\u5217\uff09 +SearchFiltering.ParentSearchTerm.excludeString=\uff08\u9664\u5916\uff09 +SearchFiltering.ParentSearchTerm.fullString=\uff08\u6b63\u78ba\uff09 +SearchFiltering.ParentSearchTerm.includeString=\uff08\u542b\u3080\uff09 +SearchFiltering.ParentSearchTerm.subString=\uff08\u90e8\u5206\u6587\u5b57\u5217\uff09 +SearchFiltering.PreviouslyNotableFilter.desc=\u4ee5\u524d\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u3067\u6ce8\u76ee\u3059\u3079\u304d\u3082\u306e\u3068\u3057\u3066\u30de\u30fc\u30af\u3055\u308c\u3066\u3044\u308b +SearchFiltering.ScoreFilter.desc=\u30b9\u30b3\u30a2\uff1a{0} +SearchFiltering.SizeFilter.desc=\u30b5\u30a4\u30ba\uff1a{0} +SearchFiltering.SizeFilter.or=\u3001 +SearchFiltering.artifactTypeFilter.desc=\u7d50\u679c\u30bf\u30a4\u30d7\uff1a{0} +SearchFiltering.artifactTypeFilter.or=\u3001 +SearchFiltering.dateRangeFilter.after=\u5f8c\uff1a{0} +SearchFiltering.dateRangeFilter.and=\u3068 +SearchFiltering.dateRangeFilter.before=\u524d\uff1a{0} +SearchFiltering.dateRangeFilter.lable=\u6d3b\u52d5\u65e5 diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle_ja.properties new file mode 100644 index 0000000000..f8235ab6e3 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle_ja.properties @@ -0,0 +1,144 @@ +#Fri Feb 12 16:56:28 UTC 2021 +ArtifactMenuMouseAdapter_ExternalViewer_label=\u5916\u90e8\u30d3\u30e5\u30fc\u30a2\u3067\u958b\u304f +ArtifactMenuMouseAdapter_label=\u30d5\u30a1\u30a4\u30eb\u306e\u62bd\u51fa +ArtifactTypeFilterPanel.artifactTypeCheckbox.text=\u7d50\u679c\u30bf\u30a4\u30d7\uff1a +ArtifactTypeFilterPanel.selectionNeeded.text=1\u3064\u4ee5\u4e0a\u306e\u7d50\u679c\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +ArtifactsListPanel.dateColumn.name=\u65e5\u4ed8\u6642\u523b +ArtifactsListPanel.fileNameColumn.name=\u540d\u524d +ArtifactsListPanel.mimeTypeColumn.name=MIME\u30bf\u30a4\u30d7 +ArtifactsListPanel.noResultsFound.text=\u7d50\u679c\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +ArtifactsListPanel.termColumn.name=\u671f\u9593 +ArtifactsListPanel.titleColumn.name=\u30bf\u30a4\u30c8\u30eb +ArtifactsListPanel.urlColumn.name=URL +ArtifactsListPanel.value.noValue=\u5229\u7528\u53ef\u80fd\u306a\u5024\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +CTL_OpenDiscoveryAction=\u767a\u898b +CookieDetailsPanel.jLabel1.text=\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\uff1a +DataSourceFilterPanel.dataSourceCheckbox.text=\u30c7\u30fc\u30bf\u5143\uff1a +DataSourceFilterPanel.error.text=1\u3064\u4ee5\u4e0a\u306e\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +DataSourceModuleWrapper.exifModule.text=\u753b\u50cf\u30a2\u30ca\u30e9\u30a4\u30b6\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3067\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\uff1a{0}\n +DataSourceModuleWrapper.fileTypeModule.text=\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u8b58\u5225\u30e2\u30b8\u30e5\u30fc\u30eb\u304c\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3067\u5b9f\u884c\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\uff1a{0}\n +DataSourceModuleWrapper.hashModule.text=\u30cf\u30c3\u30b7\u30e5\u30fb\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u30fb\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3067\u5b9f\u884c\u3055\u308c\u3066\u307e\u305b\u3093\uff1a{0} +DateFilterPanel.dateFilterCheckBox.text=\u65e5\u4ed8\u30d5\u30a3\u30eb\u30bf\u30fc\uff1a +DateFilterPanel.dateRange.text=\u65e5\u4ed8\u7bc4\u56f2\uff08{0}\uff09\uff1a +DateFilterPanel.daysLabel.text=\u6d3b\u52d5\u65e5 +DateFilterPanel.endCheckBox.text=\u7d42\u4e86\uff1a +DateFilterPanel.invalidRange.text=\u7bc4\u56f2\u307e\u305f\u306f\u6700\u5f8c\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +DateFilterPanel.mostRecentRadioButton.text=\u6700\u5f8c\u306e\u307f\uff1a +DateFilterPanel.startAfterEnd.text=\u4e21\u65b9\u304c\u6709\u52b9\u306a\u5834\u5408\u3001\u958b\u59cb\u65e5\u306f\u7d42\u4e86\u65e5\u3088\u308a\u524d\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +DateFilterPanel.startCheckBox.text=\u30b9\u30bf\u30fc\u30c8\uff1a +DateFilterPanel.startOrEndNeeded.text=\u7bc4\u56f2\u30d5\u30a3\u30eb\u30bf\u30fc\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001\u958b\u59cb\u65e5\u307e\u305f\u306f\u7d42\u4e86\u65e5\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +DiscoveryDialog.documentsButton.text=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8 +DiscoveryDialog.domainsButton.text=\u30c9\u30e1\u30a4\u30f3 +DiscoveryDialog.groupByLabel.text=\u30b0\u30eb\u30fc\u30d7\u5316\uff1a +DiscoveryDialog.imagesButton.text=\u753b\u50cf +DiscoveryDialog.name.text=\u767a\u898b +DiscoveryDialog.orderByLabel.text=\u30b0\u30eb\u30fc\u30d7\u5185\u3067\u306e\u4e26\u3073\u66ff\u3048\uff1a +DiscoveryDialog.orderGroupsByLabel.text=\u30b0\u30eb\u30fc\u30d7\u4e26\u3073\u66ff\u3048\uff1a +DiscoveryDialog.searchButton.text=\u691c\u7d22 +DiscoveryDialog.sortingPanel.border.title=\u30b9\u30c6\u30c3\u30d73\uff1a\u8868\u793a\u8a2d\u5b9a\u3092\u9078\u629e +DiscoveryDialog.step1Label.text=\u30b9\u30c6\u30c3\u30d71\uff1a\u7d50\u679c\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3059\u308b +DiscoveryDialog.videosButton.text=\u30d3\u30c7\u30aa +DiscoveryTopComponent.additionalFilters.text=; +DiscoveryTopComponent.cancelButton.text=\u691c\u7d22\u3092\u30ad\u30e3\u30f3\u30bb\u30eb +DiscoveryTopComponent.domainSearch.text=\u30bf\u30a4\u30d7\uff1a\u30c9\u30e1\u30a4\u30f3 +DiscoveryTopComponent.name=\u767a\u898b +DiscoveryTopComponent.newSearch.text=\u65b0\u3057\u3044\u691c\u7d22 +DiscoveryTopComponent.searchCancelled.text=\u691c\u7d22\u306f\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u307e\u3057\u305f\u3002 +DiscoveryTopComponent.searchComplete.text={0}\u306e\u7d50\u679c +DiscoveryTopComponent.searchError.text=\u30a8\u30e9\u30fc\uff1a\u691c\u7d22\u306b\u30bf\u30a4\u30d7\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +DiscoveryTopComponent.searchInProgress.text=\u30bf\u30a4\u30d7{0}\u306e\u7d50\u679c\u306e\u691c\u7d22\u3092\u5b9f\u884c\u3057\u3066\u3044\u307e\u3059\u3002 \u304a\u5f85\u3061\u304f\u3060\u3055\u3044\u3002 +DiscoveryUiUtility.bytes.text=\u30d0\u30a4\u30c8 +DiscoveryUiUtility.gigaBytes.text=GB +DiscoveryUiUtility.kiloBytes.text=KB +DiscoveryUiUtility.megaBytes.text=MB +DiscoveryUiUtility.sizeLabel.text=\u30b5\u30a4\u30ba\uff1a{0} {1} +DiscoveryUiUtility.terraBytes.text=TB +DiscoveryUiUtils.genVideoThumb.progress.text=\u4e00\u6642\u30d5\u30a1\u30a4\u30eb{0}\u306e\u62bd\u51fa +DiscoveryUiUtils.isDeleted.text=\u30d5\u30a1\u30a4\u30eb\u306e\u5168\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u524a\u9664\u3055\u308c\u307e\u3059\u3002 +DiscoveryUiUtils.resultsIncomplete.text=\u767a\u898b\u7d50\u679c\u304c\u4e0d\u5b8c\u5168\u306a\u5834\u5408\u304c\u3042\u308a\u307e\u3059 +DocumentFilterPanel.documentsFiltersSplitPane.border.title=\u30b9\u30c6\u30c3\u30d72\uff1a\u8868\u793a\u3059\u308b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0 +DocumentPanel.nameLabel.more.text=\u3068\u3082\u3046{0}\u500b +DocumentPanel.noImageExtraction.text=0\u306e\uff1f \u753b\u50cf +DocumentPanel.numberOfImages.noImages=\u753b\u50cf\u306a\u3057 +DocumentPanel.numberOfImages.text={0}\u753b\u50cf\u306e1\u3064 +DocumentWrapper.previewInitialValue=\u30d7\u30ec\u30d3\u30e5\u30fc\u306f\u307e\u3060\u751f\u6210\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002 +DomainDetailsPanel.miniTimelineTitle.text=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3 +DomainFilterPanel.domainFiltersSplitPane.border.title=\u30b9\u30c6\u30c3\u30d72\uff1a\u8868\u793a\u3059\u308b\u30c9\u30e1\u30a4\u30f3\u306e\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0 +DomainSummaryPanel.activity.text=\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\uff1a{0}\u304b\u3089{1} +DomainSummaryPanel.downloads.text=\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u305f\u30d5\u30a1\u30a4\u30eb\uff1a +DomainSummaryPanel.loadingImages.text=\u30b5\u30e0\u30cd\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059... +DomainSummaryPanel.pages.text=\u904e\u53bb60\u65e5\u9593\u306e\u30da\u30fc\u30b8\u30d3\u30e5\u30fc\uff1a +DomainSummaryPanel.totalPages.text=\u5168\u30da\u30fc\u30b8\u30d3\u30e5\u30fc\uff1a +FileDetailsPanel.instancesList.border.title=\u4f8b +GroupListPanel.groupKeyList.border.title=\u30b0\u30eb\u30fc\u30d7 +GroupsListPanel.noDomainResults.message.text=\u9078\u629e\u3057\u305f\u30d5\u30a3\u30eb\u30bf\u30fc\u3067\u306e\u30c9\u30e1\u30a4\u30f3\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002\n\n\u30ea\u30de\u30a4\u30f3\u30c0\u30fc\uff1a\n -\u6700\u8fd1\u306e\u30a2\u30af\u30c6\u30a3\u30d3\u30c6\u30a3\u30e2\u30b8\u30e5\u30fc\u30eb\u3067\u7d50\u679c\u3092\u691c\u7d22\u3059\u308b\u306b\u306f\u5404\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3067\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n -\u904e\u53bb\u306e\u767a\u751f\u3067\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u307e\u305f\u306f\u30bd\u30fc\u30c8\u3059\u308b\u5834\u5408\u306f\u3001\u30bb\u30f3\u30c8\u30e9\u30eb\u30fb\u30ea\u30dd\u30b8\u30c8\u30ea\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5404\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3067\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n -iOS\u30a2\u30ca\u30e9\u30a4\u30b6\u30fc\uff08iLEAPP\uff09\u30e2\u30b8\u30e5\u30fc\u30eb\u3092iOS\u30c7\u30d0\u30a4\u30b9\u306e\u30c7\u30fc\u30bf\u3092\u542b\u3080\u5404\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3067\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +GroupsListPanel.noFileResults.message.text=\u9078\u629e\u3057\u305f\u30d5\u30a3\u30eb\u30bf\u30fc\u306e\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002\n\n\u30ea\u30de\u30a4\u30f3\u30c0\u30fc\uff1a\n -\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u8b58\u5225\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u3001\u7d50\u679c\u3092\u5f97\u308b\u5404\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3067\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n -\u904e\u53bb\u306e\u767a\u751f\u3067\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3059\u308b\u5834\u5408\u306f\u3001\u30cf\u30c3\u30b7\u30e5\u30fb\u30eb\u30c3\u30af\u30a2\u30c3\u30d7\u30fb\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5404\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3067\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\n -\u30e6\u30fc\u30b6\u30fc\u4f5c\u6210\u30b3\u30f3\u30c6\u30f3\u30c4\u3067\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3059\u308b\u5834\u5408\u306f\u3001PictureAnalyzer\u30e2\u30b8\u30e5\u30fc\u30eb\u3092\u5404\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3067\u5b9f\u884c\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +GroupsListPanel.noResults.title.text=\u7d50\u679c\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093 +HashSetFilterPanel.error.text=1\u3064\u4ee5\u4e0a\u306e\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\u540d\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +HashSetFilterPanel.hashSetCheckbox.text=\u30cf\u30c3\u30b7\u30e5\u30bb\u30c3\u30c8\uff1a +ImageFilterPanel.imageFiltersSplitPane.border.title=\u30b9\u30c6\u30c3\u30d72\uff1a\u8868\u793a\u3059\u308b\u753b\u50cf\u306e\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0 +ImageThumbnailPanel.isDeleted.text=\u30d5\u30a1\u30a4\u30eb\u306e\u3059\u3079\u3066\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u524a\u9664\u3055\u308c\u307e\u3057\u305f\u3002 +ImageThumbnailPanel.nameLabel.more.text=\u3068\u3082\u3046{0}\u500b +InterestingItemsFilterPanel.error.text=1\u3064\u4ee5\u4e0a\u306e\u8208\u5473\u6df1\u3044\u30d5\u30a1\u30a4\u30eb\u30bb\u30c3\u30c8\u540d\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +InterestingItemsFilterPanel.interestingItemsCheckbox.text=\u8208\u5473\u6df1\u3044\u30a2\u30a4\u30c6\u30e0\uff1a +KnownAccountTypeFilterPanel.text_1=\u65e2\u77e5\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u30bf\u30a4\u30d7\u306e\u30c9\u30e1\u30a4\u30f3\u306e\u307f\u3092\u542b\u3081\u308b +LoadingPanel.detailsLabel.AccessibleContext.accessibleName=\u8a73\u7d30\u30e9\u30d9\u30eb +LoadingPanel.loading.text=\u8aad\u307f\u8fbc\u307f\u4e2d\u3002\u3002\u3002\u304a\u5f85\u3061\u4e0b\u3055\u3044\u3002 +LoadingPanel.retrieving.text={0}\u306e\u7d50\u679c\u3092\u53d6\u5f97\u3057\u3066\u3044\u307e\u3059\u3002 +MiniTimelineArtifactListPanel.descriptionColumn.name=\u8aac\u660e +MiniTimelineArtifactListPanel.typeColumn.name=\u7d50\u679c\u30bf\u30a4\u30d7 +MiniTimelineArtifactListPanel.value.noValue=\u5229\u7528\u53ef\u80fd\u306a\u5024\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +MiniTimelineDateListPanel.countColumn.name=\u30ab\u30a6\u30f3\u30c8 +MiniTimelineDateListPanel.dateColumn.name=\u65e5\u4ed8 +MiniTimelineDateListPanel.value.noValue=\u5229\u7528\u53ef\u80fd\u306a\u5024\u306f\u3042\u308a\u307e\u305b\u3093\u3002 +MiniTimelinePanel.loadingPanel.details=\u30bf\u30a4\u30e0\u30e9\u30a4\u30f3\u30d3\u30e5\u30fc +MonthAbbreviation.aprilAbbrev=4\u6708 +MonthAbbreviation.augustAbbrev=8\u6708 +MonthAbbreviation.decemberAbbrev=12\u6708 +MonthAbbreviation.feburaryAbbrev=\uff12\u6708 +MonthAbbreviation.januraryAbbrev=1\u6708 +MonthAbbreviation.julyAbbrev=7\u6708 +MonthAbbreviation.juneAbbrev=\uff16\u6708 +MonthAbbreviation.marchAbbrev=3\u6708 +MonthAbbreviation.mayAbbrev=5\u6708 +MonthAbbreviation.novemberAbbrev=11\u6708 +MonthAbbreviation.octoberAbbrev=10\u6708 +MonthAbbreviation.septemberAbbrev=9\u6708 +ObjectDetectedFilterPanel.error.text=1\u3064\u4ee5\u4e0a\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30bf\u30a4\u30d7\u540d\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +ObjectDetectedFilterPanel.text=\u691c\u51fa\u3055\u308c\u305f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff1a +ParentFolderFilterPanel.addButton.text_1=\u8ffd\u52a0 +ParentFolderFilterPanel.deleteButton.text_1=\u524a\u9664 +ParentFolderFilterPanel.error.text=1\u3064\u4ee5\u4e0a\u306e\u89aa\u30d1\u30b9\u3092\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +ParentFolderFilterPanel.excludeRadioButton.text_1=\u9664\u5916 +ParentFolderFilterPanel.fullRadioButton.text_1=\u6e80\u676f +ParentFolderFilterPanel.includeRadioButton.text_1=\u542b\u3080 +ParentFolderFilterPanel.parentCheckbox.text_1=\u89aa\u30d5\u30a9\u30eb\u30c0\u30fc\uff1a +ParentFolderFilterPanel.parentLabel.text_1=\uff08\u3059\u3079\u3066\u4f7f\u7528\u3055\u308c\u307e\u3059\uff09 +ParentFolderFilterPanel.substringRadioButton.text_1=\u90e8\u5206\u6587\u5b57\u5217 +PastOccurrencesFilterPanel.error.text=\uff11\u3064\u4ee5\u4e0a\u306e\u904e\u53bb\u306e\u51fa\u6765\u4e8b\u30d5\u30a3\u30eb\u30bf\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +PastOccurrencesFilterPanel.pastOccurrencesCheckbox.text=\u904e\u53bb\u306e\u51fa\u6765\u4e8b\uff1a +PreviouslyNotableFilterPanel.text_1=\u4ee5\u524d\u306b\u6ce8\u76ee\u3059\u3079\u304d\u30c9\u30e1\u30a4\u30f3\u306e\u307f\u3092\u542b\u3081\u308b +ResultsPanel.currentPage.displayValue=\u30da\u30fc\u30b8\uff1a{1}\u306e{0} +ResultsPanel.currentPageLabel.text=\u30da\u30fc\u30b8\uff1a- +ResultsPanel.documentPreview.text=\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30d7\u30ec\u30d3\u30e5\u30fc\u306e\u4f5c\u6210\u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u307e\u3057\u305f\u3002 +ResultsPanel.gotoPageLabel.text=\u30da\u30fc\u30b8\u306b\u79fb\u52d5\uff1a +ResultsPanel.invalidPageNumber.message=\u9078\u629e\u3057\u305f\u30da\u30fc\u30b8\u756a\u53f7{0}\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 1\u304b\u3089{1}\u307e\u3067\u306e\u5024\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +ResultsPanel.invalidPageNumber.title=\u7121\u52b9\u306a\u30da\u30fc\u30b8\u756a\u53f7 +ResultsPanel.openInExternalViewer.name=\u5916\u90e8\u30d3\u30e5\u30fc\u30a2\u3067\u958b\u304f +ResultsPanel.pageControlsLabel.text=\u30da\u30fc\u30b8\uff1a +ResultsPanel.pageSizeLabel.text=\u30da\u30fc\u30b8\u30b5\u30a4\u30ba\uff1a +ResultsPanel.unableToCreate.text=\u6982\u8981\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3002 +ResultsPanel.viewFileInDir.name=\u30d5\u30a9\u30eb\u30c0\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u8868\u793a +ResultsSplitPaneDivider.detailsLabel.text=\u8a73\u7d30\u30a8\u30ea\u30a2 +SizeFilterPanel.error.text=1\u3064\u4ee5\u4e0a\u306e\u30b5\u30a4\u30ba\u3092\u9078\u629e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +SizeFilterPanel.sizeCheckbox.text=\u30d5\u30a1\u30a4\u30eb\u30b5\u30a4\u30ba\uff1a +UserCreatedFilterPanel.userCreatedCheckbox.text_1=\u304a\u305d\u3089\u304f\u30e6\u30fc\u30b6\u30fc\u4f5c\u6210 +VideoFilterPanel.videoFiltersSplitPane.border.title=\u30b9\u30c6\u30c3\u30d72\uff1a\u8868\u793a\u3059\u308b\u52d5\u753b\u306e\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0 +VideoThumbnailPanel.bytes.text=\u30d0\u30a4\u30c8 +VideoThumbnailPanel.deleted.text=\u30d5\u30a1\u30a4\u30eb\u306e\u5168\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u304c\u524a\u9664\u3055\u308c\u307e\u3059\u3002 +VideoThumbnailPanel.gigaBytes.text=GB +VideoThumbnailPanel.kiloBytes.text=KB +VideoThumbnailPanel.megaBytes.text=MB +VideoThumbnailPanel.nameLabel.more.text=\u3068\u3082\u3046{0}\u500b +VideoThumbnailPanel.sizeLabel.text=\u30b5\u30a4\u30ba\uff1a{0} {1} +VideoThumbnailPanel.terraBytes.text=TB diff --git a/Core/src/org/sleuthkit/autopsy/machinesettings/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/machinesettings/Bundle_ja.properties new file mode 100644 index 0000000000..9d0d7128f9 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/machinesettings/Bundle_ja.properties @@ -0,0 +1,3 @@ +#Fri Feb 12 16:56:28 UTC 2021 +UserMachinePreferences_validateTempDirectory_errorOnCreate_text=\u30d1\u30b9{0}\u306b\u4e00\u6642\u30d5\u30a9\u30eb\u30c0\u30fc\u3092\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +UserMachinePreferences_validateTempDirectory_errorOnReadWrite_text=\u4e00\u6642\u30d5\u30a9\u30eb\u30c0\u30fc\u30d1\u30b9{0}\u3067\u8aad\u307f\u53d6\u308a\u307e\u305f\u306f\u66f8\u304d\u8fbc\u307f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/modules/leappanalyzers/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/leappanalyzers/Bundle_ja.properties new file mode 100644 index 0000000000..984ae6bb6f --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/leappanalyzers/Bundle_ja.properties @@ -0,0 +1,48 @@ +#Fri Feb 12 16:56:29 UTC 2021 +ALeappAnalyzerIngestModule.aLeapp.cancelled=aLeapp\u5b9f\u884c\u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u307e\u3057\u305f +ALeappAnalyzerIngestModule.completed=aLeapp\u51e6\u7406\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f +ALeappAnalyzerIngestModule.error.creating.output.dir=aLeapp\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +ALeappAnalyzerIngestModule.error.ileapp.file.processor.init=aLeappProcessFile\u306e\u521d\u671f\u5316\u306b\u5931\u6557\u3057\u307e\u3057\u305f +ALeappAnalyzerIngestModule.error.running.aLeapp=aLeapp\u306e\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +ALeappAnalyzerIngestModule.executable.not.found=aLeapp\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +ALeappAnalyzerIngestModule.has.run=aLeapp +ALeappAnalyzerIngestModule.init.exception.msg={0}\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +ALeappAnalyzerIngestModule.parsing.file=\u30d5\u30a1\u30a4\u30eb{0}\u306e\u89e3\u6790\u4e2d +ALeappAnalyzerIngestModule.processing.file=\u30d5\u30a1\u30a4\u30eb{0}\u3092\u51e6\u7406\u4e2d +ALeappAnalyzerIngestModule.processing.filesystem=\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u51e6\u7406\u4e2d +ALeappAnalyzerIngestModule.report.name=aLeapp\u306eHtml\u30ec\u30dd\u30fc\u30c8 +ALeappAnalyzerIngestModule.requires.windows=aLeapp\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u306f\u30a6\u30a3\u30f3\u30c9\u30a6\u304c\u5fc5\u8981\u3067\u3059\u3002 +ALeappAnalyzerIngestModule.running.aLeapp=aLeapp\u5b9f\u884c\u4e2d +ALeappAnalyzerIngestModule.starting.aLeapp=aLeapp\u306e\u958b\u59cb +ALeappAnalyzerModuleFactory_moduleDesc=aLEAPP\u3092\u4f7f\u7528\u3057\u3066\u3001Android\u30c7\u30d0\u30a4\u30b9\u306e\u8ad6\u7406\u7684\u306a\u53d6\u5f97\u3092\u5206\u6790\u3057\u307e\u3059\u3002 +ALeappAnalyzerModuleFactory_moduleName=Android\u30a2\u30ca\u30e9\u30a4\u30b6\u30fc\uff08aLEAPP\uff09 +ILeappAnalyzerIngestModule.completed=iLeapp\u51e6\u7406\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f +ILeappAnalyzerIngestModule.error.creating.output.dir=iLeapp\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +ILeappAnalyzerIngestModule.error.ileapp.file.processor.init=ILeappProcessFile\u306e\u521d\u671f\u5316\u306b\u5931\u6557\u3057\u307e\u3057\u305f +ILeappAnalyzerIngestModule.error.running.iLeapp=iLeapp\u306e\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +ILeappAnalyzerIngestModule.executable.not.found=iLeapp\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +ILeappAnalyzerIngestModule.has.run=iLeapp +ILeappAnalyzerIngestModule.iLeapp.cancelled=iLeapp\u5b9f\u884c\u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u307e\u3057\u305f +ILeappAnalyzerIngestModule.init.exception.msg={0}\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +ILeappAnalyzerIngestModule.parsing.file=\u30d5\u30a1\u30a4\u30eb{0}\u306e\u89e3\u6790\u4e2d +ILeappAnalyzerIngestModule.processing.file=\u30d5\u30a1\u30a4\u30eb{0}\u3092\u51e6\u7406\u4e2d +ILeappAnalyzerIngestModule.processing.filesystem=\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u306e\u51e6\u7406\u4e2d +ILeappAnalyzerIngestModule.report.name=iLeapp\u306eHtml\u30ec\u30dd\u30fc\u30c8 +ILeappAnalyzerIngestModule.requires.windows=iLeapp\u30e2\u30b8\u30e5\u30fc\u30eb\u306b\u306f\u30a6\u30a3\u30f3\u30c9\u30a6\u304c\u5fc5\u8981\u3067\u3059\u3002 +ILeappAnalyzerIngestModule.running.iLeapp=iLeapp\u5b9f\u884c\u4e2d +ILeappAnalyzerIngestModule.starting.iLeapp=iLeapp\u306e\u958b\u59cb +ILeappAnalyzerModuleFactory_moduleDesc=iLEAPP\u3092\u4f7f\u7528\u3057\u3066\u3001iOS\u30c7\u30d0\u30a4\u30b9\u306e\u8ad6\u7406\u7684\u306a\u53d6\u5f97\u3092\u5206\u6790\u3057\u307e\u3059\u3002 +ILeappAnalyzerModuleFactory_moduleName=iOS\u30a2\u30ca\u30e9\u30a4\u30b6\u30fc\uff08iLEAPP\uff09 +LeappFileProcessor.Leapp.cancelled=Leapp\u5b9f\u884c\u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u307e\u3057\u305f +LeappFileProcessor.cannot.load.artifact.xml=xml\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3002 +LeappFileProcessor.cannotBuildXmlParser=XML\u30d1\u30fc\u30b5\u30fc\u3092\u69cb\u7bc9\u3067\u304d\u307e\u305b\u3093\u3002 +LeappFileProcessor.completed=Leapp\u51e6\u7406\u304c\u5b8c\u4e86\u3057\u307e\u3057\u305f +LeappFileProcessor.error.creating.new.artifacts=\u65b0\u3057\u3044\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +LeappFileProcessor.error.creating.output.dir=Leapp\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002 +LeappFileProcessor.error.reading.Leapp.directory=Leapp\u51fa\u529b\u30d5\u30a9\u30eb\u30c0\u30fc\u306e\u8aad\u307f\u53d6\u308a\u30a8\u30e9\u30fc +LeappFileProcessor.error.running.Leapp=Leapp\u306e\u5b9f\u884c\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044\u3002 +LeappFileProcessor.has.run=Leapp +LeappFileProcessor.postartifacts_error=BlackboardArtifact\u306e\u6295\u7a3f\u4e2d\u306b\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f +LeappFileProcessor.running.Leapp=Leapp\u5b9f\u884c\u4e2d +LeappFileProcessor.starting.Leapp=Leapp\u306e\u958b\u59cb +LeappFileProcessor_cannotParseXml=XML\u30d5\u30a1\u30a4\u30eb\u3092\u89e3\u6790\u3067\u304d\u307e\u305b\u3093\u3002 diff --git a/Core/src/org/sleuthkit/autopsy/modules/yara/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/yara/Bundle_ja.properties new file mode 100644 index 0000000000..5faf7444fa --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/yara/Bundle_ja.properties @@ -0,0 +1,6 @@ +#Fri Feb 12 16:56:29 UTC 2021 +YaraIngestModule_no_ruleSets=YARA\u53d6\u8fbc\u307f\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093\u3002YARA\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u304c\u7a7a\u3067\u3057\u305f\u3002 +YaraIngestModule_windows_error_msg=YARA\u53d6\u8fbc\u307f\u30e2\u30b8\u30e5\u30fc\u30eb\u306f\u300164\u30d3\u30c3\u30c8Windows\u306e\u307f\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002 +YaraIngestModule_yarac_not_found=YARA\u30eb\u30fc\u30eb\u30d5\u30a1\u30a4\u30eb\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3067\u304d\u307e\u305b\u3093\u3002 \u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002 +Yara_Module_Description=YARA\u30a2\u30ca\u30e9\u30a4\u30b6\u30fc\u306f\u3001YARA\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c6\u30ad\u30b9\u30c8\u307e\u305f\u306f\u30d0\u30a4\u30ca\u30ea\u30d1\u30bf\u30fc\u30f3\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u691c\u7d22\u3057\u307e\u3059\u3002 +Yara_Module_Name=YARA\u30a2\u30ca\u30e9\u30a4\u30b6\u30fc diff --git a/Core/src/org/sleuthkit/autopsy/modules/yara/ui/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/modules/yara/ui/Bundle_ja.properties new file mode 100644 index 0000000000..3468d1e72e --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/modules/yara/ui/Bundle_ja.properties @@ -0,0 +1,26 @@ +#Fri Feb 12 16:56:29 UTC 2021 +OptionCategory_Keywords_YaraRuleSetOption=YaraRuleSets +OptionCategory_Name_YaraRuleSetOption=Yara\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8 +RuleSetDetailsPanel.openFolderButton.text=\u30d5\u30a9\u30eb\u30c0\u3092\u958b\u304f +RuleSetDetailsPanel.openLabel.text=\u30bb\u30c3\u30c8\u306e\u30d5\u30a9\u30eb\u30c0\u306b\u30eb\u30fc\u30eb\u30d5\u30a1\u30a4\u30eb\u3092\u914d\u7f6e\u3057\u3066\u4e0b\u3055\u3044\u3002 \u305d\u308c\u3089\u306f\u4f7f\u7528\u524d\u306b\u30b3\u30f3\u30d1\u30a4\u30eb\u3055\u308c\u307e\u3059\u3002 +RuleSetDetailsPanel.refreshButton.text=\u30d5\u30a1\u30a4\u30eb\u30ea\u30b9\u30c8\u306e\u66f4\u65b0 +RuleSetDetailsPanel.ruleSetListLabel.text=\u3053\u306e\u30d5\u30a9\u30eb\u30c0\u30fc\u306b\u306f\u6b21\u306e\u30eb\u30fc\u30eb\u30d5\u30a1\u30a4\u30eb\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059\uff1a +RuleSetDetailsPanel.setDetailsLabel.text=\u8a73\u7d30\u3092\u8a2d\u5b9a +RuleSetDetailsPanel_failed_to_open_folder_msg=\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u30d5\u30a1\u30a4\u30eb\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u958b\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002 +RuleSetDetailsPanel_failed_to_open_folder_title=\u958b\u901a\u30a8\u30e9\u30fc +RuleSetPanel.deleteButton.text=\u30bb\u30c3\u30c8\u3092\u524a\u9664 +RuleSetPanel.descriptionField.text=\u3053\u306e\u30e2\u30b8\u30e5\u30fc\u30eb\u306fYara\u306e\u30eb\u30fc\u30eb\u306b\u4e00\u81f4\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u3092\u63a2\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002 \u5404\u30bb\u30c3\u30c8\u306bYara\u30eb\u30fc\u30eb\u30d5\u30a1\u30a4\u30eb\u306e\u30ea\u30b9\u30c8\u304c\u3042\u308a\u307e\u3059\u3002 \u30bb\u30c3\u30c8\u5185\u306e\u30eb\u30fc\u30eb\uff11\u3064\u306b\u4e00\u81f4\u308c\u3070\u898b\u3064\u304b\u308a\u307e\u3059\u3002 +RuleSetPanel.newButton.text=\u65b0\u3057\u3044\u30bb\u30c3\u30c8 +RuleSetPanel.ruleSetListLabel.text=\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\uff1a +YARA_Global_Settings_Panel_Title=YARA\u30aa\u30d7\u30b7\u30e7\u30f3 +YaraIngestSettingsPanel.allFilesButton.text=\u5168\u30d5\u30a1\u30a4\u30eb +YaraIngestSettingsPanel.border.title=\u53d6\u8fbc\u4e2d\u306b\u6709\u52b9\u306b\u3059\u308bYARA\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u3092\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044\uff1a +YaraIngestSettingsPanel.executableFilesButton.text=\u5b9f\u884c\u53ef\u80fd\u30d5\u30a1\u30a4\u30eb\u306e\u307f +YaraRuleSetOptionPanel_RuleSet_Missing=\u9078\u629e\u3057\u305fYARA\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u306e\u30d5\u30a9\u30eb\u30c0\u30fc{0}\u306f\u5b58\u5728\u3057\u307e\u305b\u3093\u3002 +YaraRuleSetOptionPanel_RuleSet_Missing_title=\u30d5\u30a9\u30eb\u30c0\u30fc\u304c\u524a\u9664\u3055\u308c\u307e\u3057\u305f +YaraRuleSetOptionPanel_badName2_msg=\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u304c\u7121\u52b9\u3067\u3059\u3002\n\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u540d\u306f\u3001\u7a7a\u767d\u3067\u7121\u3044\u4e00\u610f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +YaraRuleSetOptionPanel_badName_msg=\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u540d{0}\u306f\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059\u3002\n\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u540d\u306f\u4e00\u610f\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 +YaraRuleSetOptionPanel_badName_title=\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u306e\u4f5c\u6210 +YaraRuleSetOptionPanel_new_rule_set_name_msg=\u65b0\u3057\u3044\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u540d\u3092\u63d0\u4f9b\u3057\u3066\u4e0b\u3055\u3044\uff1a +YaraRuleSetOptionPanel_new_rule_set_name_title=\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8\u540d +YaraRuleSetOptionPanel_rule_set_delete=\u9078\u629e\u3057\u305fYARA\u30eb\u30fc\u30eb\u30bb\u30c3\u30c8{0}\u3092\u524a\u9664\u3067\u304d\u307e\u305b\u3093\u3002\n\u3059\u3067\u306b\u524a\u9664\u3055\u308c\u3066\u3044\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002 From 398b30741a67385218b9679f4656af001652965a Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Fri, 12 Feb 2021 15:41:43 -0500 Subject: [PATCH 07/69] First cut at UI --- .../autopsy/keywordsearch/Bundle.properties | 3 +- .../keywordsearch/Bundle.properties-MERGED | 6 +- .../keywordsearch/Bundle_ja.properties | 2 +- .../keywordsearch/ExtractAllTermsAction.java | 14 +- .../keywordsearch/TermsExtractionDialog.form | 101 +++++ .../keywordsearch/TermsExtractionDialog.java | 377 ++++++++++++++++++ 6 files changed, 487 insertions(+), 16 deletions(-) create mode 100755 KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.form create mode 100755 KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.java diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties index d2ab5f76c7..9ad114de47 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties @@ -23,7 +23,7 @@ KeywordSearchEditListPanel.emptyKeyword.text=Empty keyword KeywordSearchEditListPanel.errorAddingKeywords.text=Error adding keyword(s) KeywordSearchListsManagementPanel.newListButton.text=New List KeywordSearchListsManagementPanel.importButton.text=Import List -KeywordSearchListsViewerPanel.searchAddButton.text=Search +KeywordSearchListsViewerPanel.searchAddButton.text=Extract KeywordSearchListsViewerPanel.manageListsButton.text=Manage Lists KeywordSearchListsViewerPanel.ingestIndexLabel.text=Files Indexed: KeywordSearchEditListPanel.ingestMessagesCheckbox.text=Send ingest inbox messages for each hit @@ -320,3 +320,4 @@ ExtractedContentPanel.pageOfLabel.text=of ExtractedContentPanel.pageCurLabel.text=- ExtractedContentPanel.pagesLabel.text=Page: KeywordSearchGlobalSearchSettingsPanel.ocrCheckBox.text=Enable Optical Character Recognition (OCR) +TermsExtractionDialog.selectDataSourceLabel.text=Select Data Source: diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED index 25a07a1bbb..aef0bc570a 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED @@ -62,7 +62,7 @@ KeywordSearchEditListPanel.emptyKeyword.text=Empty keyword KeywordSearchEditListPanel.errorAddingKeywords.text=Error adding keyword(s) KeywordSearchListsManagementPanel.newListButton.text=New List KeywordSearchListsManagementPanel.importButton.text=Import List -KeywordSearchListsViewerPanel.searchAddButton.text=Search +KeywordSearchListsViewerPanel.searchAddButton.text=Extract KeywordSearchListsViewerPanel.manageListsButton.text=Manage Lists KeywordSearchListsViewerPanel.ingestIndexLabel.text=Files Indexed: KeywordSearchEditListPanel.ingestMessagesCheckbox.text=Send ingest inbox messages for each hit @@ -234,7 +234,7 @@ 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.connect.exception.msg=Failed to connect to Solr server: {0} -Server.openCore.exception.msg=Keyword search service not yet running +Server.openCore.exception.msg=Local keyword search service not yet running Server.openCore.exception.cantOpen.msg=Could not create or open index Server.openCore.exception.noIndexDir.msg=Index directory could not be created or is missing Server.request.exception.exception.msg=Could not issue Solr request @@ -389,6 +389,8 @@ ExtractedContentPanel.pageOfLabel.text=of ExtractedContentPanel.pageCurLabel.text=- ExtractedContentPanel.pagesLabel.text=Page: KeywordSearchGlobalSearchSettingsPanel.ocrCheckBox.text=Enable Optical Character Recognition (OCR) +TermsExtractionDialog.selectDataSourceLabel.text=Select Data Source: +TermsExtractionPanel.selected=Ad Hoc Search data source filter is selected TextZoomPanel.zoomInButton.text= TextZoomPanel.zoomOutButton.text= TextZoomPanel.zoomResetButton.text=Reset diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties index 2f50e62095..06ee12edc7 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties @@ -398,4 +398,4 @@ ExtractedContentPanel.pageOfLabel.text=/ ExtractedContentPanel.pageCurLabel.text=- ExtractedContentPanel.pagesLabel.text=\u30da\u30fc\u30b8: TextZoomPanel.zoomResetButton.text=\u30ea\u30bb\u30c3\u30c8 - +TermsExtractionDialog.selectDataSourceLabel.text=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb: diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java index b7bc000d58..c68061f8d5 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java @@ -19,12 +19,9 @@ package org.sleuthkit.autopsy.keywordsearch; import java.awt.event.ActionEvent; -import java.io.IOException; -import org.apache.solr.client.solrj.SolrServerException; import org.openide.awt.ActionID; import org.openide.awt.ActionReference; import org.openide.awt.ActionRegistration; -import org.openide.util.Exceptions; import org.openide.util.HelpCtx; import org.openide.util.NbBundle; import org.openide.util.actions.CallableSystemAction; @@ -51,15 +48,8 @@ public class ExtractAllTermsAction extends CallableSystemAction { @Override public void performAction() { - // ELTODO AllCasesSearchDialog dialog = new AllCasesSearchDialog(); - // ELTODO dialog.display(); - final Server server = KeywordSearch.getServer(); - Long dsID = Long.valueOf(4); - try { - server.extractAllTermsForDataSource(dsID); - } catch (Exception ex) { - Exceptions.printStackTrace(ex); - } + TermsExtractionDialog listsPanel = TermsExtractionDialog.getDefault(); + listsPanel.display(); } @NbBundle.Messages({ diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.form b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.form new file mode 100755 index 0000000000..302f985718 --- /dev/null +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.form @@ -0,0 +1,101 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.java new file mode 100755 index 0000000000..36f5c44d91 --- /dev/null +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.java @@ -0,0 +1,377 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.keywordsearch; + +import java.awt.Cursor; +import java.awt.EventQueue; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.File; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.logging.Level; +import javax.swing.DefaultListModel; +import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionEvent; +import org.openide.util.Exceptions; +import org.openide.util.NbBundle; +import org.openide.windows.WindowManager; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.ingest.IngestManager; +import org.sleuthkit.datamodel.DataSource; +import org.sleuthkit.datamodel.TskCoreException; + +/** + * Viewer panel widget for keyword lists that is used in the ingest config and + * options area. + */ +@SuppressWarnings("PMD.SingularField") // UI widgets cause lots of false positives +class TermsExtractionDialog extends javax.swing.JDialog { + + private static final Logger logger = Logger.getLogger(TermsExtractionDialog.class.getName()); + + // ELTODO + private final String keywordSearchErrorDialogHeader = org.openide.util.NbBundle.getMessage(this.getClass(), "AbstractKeywordSearchPerformer.search.dialogErrorHeader"); + private static TermsExtractionDialog instance; + private ActionListener searchAddListener; + private boolean ingestRunning; + private final Map dataSourceMap = new HashMap<>(); + private List dataSources = new ArrayList<>(); + private final DefaultListModel dataSourceListModel = new DefaultListModel<>(); + + /** + * Creates new form TermsExtractionPanel + */ + private TermsExtractionDialog() { + initComponents(); + customizeComponents(); + dataSourceList.setModel(getDataSourceListModel()); + + dataSourceList.addListSelectionListener((ListSelectionEvent evt) -> { + firePropertyChange(Bundle.DropdownSingleTermSearchPanel_selected(), null, null); // ELTODO + }); + } + + static synchronized TermsExtractionDialog getDefault() { + if (instance == null) { + instance = new TermsExtractionDialog(); + } + return instance; + } + + /** + * Display the Search Other Cases dialog. + */ + void display() { + updateComponents(); + this.setLocationRelativeTo(WindowManager.getDefault().getMainWindow()); + setVisible(true); + } + + private void customizeComponents() { + + ingestRunning = IngestManager.getInstance().isIngestRunning(); + updateComponents(); + + IngestManager.getInstance().addIngestJobEventListener(new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + Object source = evt.getSource(); + if (source instanceof String && ((String) source).equals("LOCAL")) { //NON-NLS + EventQueue.invokeLater(() -> { + ingestRunning = IngestManager.getInstance().isIngestRunning(); + updateComponents(); + }); + } + } + }); + + searchAddListener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (ingestRunning) { +// ELTODO IngestSearchRunner.getInstance().addKeywordListsToAllJobs(listsTableModel.getSelectedLists()); + logger.log(Level.INFO, "Ingest is running"); //NON-NLS + } else { + searchAction(e); + } + } + }; + + extractTermsButton.addActionListener(searchAddListener); + } + + private void updateComponents() { + ingestRunning = IngestManager.getInstance().isIngestRunning(); + if (ingestRunning) { // ELTODO + extractTermsButton.setText(NbBundle.getMessage(this.getClass(), "KeywordSearchListsViewerPanel.initIngest.addIngestTitle")); + extractTermsButton.setToolTipText(NbBundle.getMessage(this.getClass(), "KeywordSearchListsViewerPanel.initIngest.addIngestMsg")); + + } else { + extractTermsButton.setText(NbBundle.getMessage(this.getClass(), "KeywordSearchListsViewerPanel.initIngest.searchIngestTitle")); + extractTermsButton.setToolTipText(NbBundle.getMessage(this.getClass(), "KeywordSearchListsViewerPanel.initIngest.addIdxSearchMsg")); + } + + try { + updateDataSourceListModel(); + } catch (Exception ex) { + // ELTODO + logger.log(Level.SEVERE, "Unable to populate list of data sources", ex); //NON-NLS + } + } + + /** + * Get a list of data source display names. + * + * @return The list of data source name + */ + synchronized List getDataSourceArray() { + List dsList = new ArrayList<>(); + Collections.sort(this.dataSources, (DataSource ds1, DataSource ds2) -> ds1.getName().compareTo(ds2.getName())); + for (DataSource ds : dataSources) { + String dsName = ds.getName(); + File dataSourceFullName = new File(dsName); + String displayName = dataSourceFullName.getName(); + dataSourceMap.put(ds.getId(), displayName); + dsList.add(displayName); + } + return dsList; + } + + /** + * Set dataSources + * @param dataSources A list of DataSource + */ + synchronized void setDataSources(List dataSources) { + this.dataSources = dataSources; + } + + /** + * Get dataSourceMap with object id and data source display name. + * + * @return The list of data source name + */ + Map getDataSourceMap() { + return dataSourceMap; + } + + /** + * Get a list of DataSourceListModel + * @return A list of DataSourceListModel + */ + final DefaultListModel getDataSourceListModel() { + return dataSourceListModel; + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + extractTermsButton = new javax.swing.JButton(); + jScrollPane1 = new javax.swing.JScrollPane(); + dataSourceList = new javax.swing.JList<>(); + selectDataSourceLabel = new javax.swing.JLabel(); + + setSize(new java.awt.Dimension(500, 200)); + + extractTermsButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/keywordsearch/search-icon.png"))); // NOI18N + extractTermsButton.setText(org.openide.util.NbBundle.getMessage(TermsExtractionDialog.class, "KeywordSearchListsViewerPanel.searchAddButton.text")); // NOI18N + extractTermsButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + extractTermsButtonActionPerformed(evt); + } + }); + + dataSourceList.setMinimumSize(new java.awt.Dimension(0, 200)); + jScrollPane1.setViewportView(dataSourceList); + + selectDataSourceLabel.setFont(selectDataSourceLabel.getFont().deriveFont(selectDataSourceLabel.getFont().getSize()-1f)); + selectDataSourceLabel.setText(org.openide.util.NbBundle.getMessage(TermsExtractionDialog.class, "TermsExtractionDialog.selectDataSourceLabel.text")); // NOI18N + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(extractTermsButton) + .addComponent(selectDataSourceLabel)) + .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(layout.createSequentialGroup() + .addComponent(jScrollPane1) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(15, 15, 15) + .addComponent(selectDataSourceLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 13, javax.swing.GroupLayout.PREFERRED_SIZE) + .addGap(18, 18, 18) + .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(extractTermsButton) + .addContainerGap(20, Short.MAX_VALUE)) + ); + }// //GEN-END:initComponents + + private void extractTermsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_extractTermsButtonActionPerformed + }//GEN-LAST:event_extractTermsButtonActionPerformed + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JList dataSourceList; + private javax.swing.JButton extractTermsButton; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JLabel selectDataSourceLabel; + // End of variables declaration//GEN-END:variables + + private void searchAction(ActionEvent e) { + setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + + try { + search(); + } finally { + setCursor(null); + } + } + + /** + * Performs the search using the selected keywords. Creates a + * DataResultTopComponent with the results. + * + * @param saveResults Flag whether to save search results as KWS artifacts. + */ + void search() { + boolean isIngestRunning = IngestManager.getInstance().isIngestRunning(); + + int filesIndexed = 0; + try { // see if another node added any indexed files + filesIndexed = KeywordSearch.getServer().queryNumIndexedFiles(); + } catch (KeywordSearchModuleException | NoOpenCoreException ignored) { + } + + if (filesIndexed == 0) { + // ELTODO + if (isIngestRunning) { + KeywordSearchUtil.displayDialog(keywordSearchErrorDialogHeader, NbBundle.getMessage(this.getClass(), + "AbstractKeywordSearchPerformer.search.noFilesInIdxMsg", + KeywordSearchSettings.getUpdateFrequency().getTime()), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.ERROR); + } else { + KeywordSearchUtil.displayDialog(keywordSearchErrorDialogHeader, NbBundle.getMessage(this.getClass(), + "AbstractKeywordSearchPerformer.search.noFilesIdxdMsg"), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.ERROR); + } + return; + } + + //check if keyword search module ingest is running (indexing, etc) + if (isIngestRunning) { + if (KeywordSearchUtil.displayConfirmDialog(org.openide.util.NbBundle.getMessage(this.getClass(), "AbstractKeywordSearchPerformer.search.searchIngestInProgressTitle"), + NbBundle.getMessage(this.getClass(), "AbstractKeywordSearchPerformer.search.ingestInProgressBody"), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.WARN) == false) { + return; + } + } + + final Server server = KeywordSearch.getServer(); + Long dsID = Long.valueOf(4); + Set selectedDs = getDataSourcesSelected(); + try { + server.extractAllTermsForDataSource(selectedDs.iterator().next()); //ELTODO check if not empty + } catch (Exception ex) { + Exceptions.printStackTrace(ex); + } + } + + void addSearchButtonActionListener(ActionListener al) { + extractTermsButton.addActionListener(al); + } + + /** + * Get a set of data source object ids that are selected. + * @return A set of selected object ids. + */ + Set getDataSourcesSelected() { + Set dataSourceObjIdSet = new HashSet<>(); + for (Long key : getDataSourceMap().keySet()) { + String value = getDataSourceMap().get(key); + for (String dataSource : this.dataSourceList.getSelectedValuesList()) { + if (value.equals(dataSource)) { + dataSourceObjIdSet.add(key); + } + } + } + return dataSourceObjIdSet; + } + + /** + * Update the dataSourceListModel + */ + @NbBundle.Messages({"TermsExtractionPanel.selected=Ad Hoc Search data source filter is selected"}) + void updateDataSourceListModel() throws NoCurrentCaseException, TskCoreException { + dataSources = getDataSourceList(); + getDataSourceListModel().removeAllElements(); + for (String dsName : getDataSourceArray()) { + getDataSourceListModel().addElement(dsName); + } + setComponentsEnabled(); + firePropertyChange(Bundle.TermsExtractionPanel_selected(), null, null); // ELTODO + } + + /** + * Get a list of DataSource from case database + * @return A list of DataSource + * @throws NoCurrentCaseException + * @throws TskCoreException + */ + private synchronized List getDataSourceList() throws NoCurrentCaseException, TskCoreException { + Case openCase = Case.getCurrentCaseThrows(); + return openCase.getSleuthkitCase().getDataSources(); + } + + /** + * Set the dataSourceList enabled if there are data sources to select + */ + private void setComponentsEnabled() { + + this.dataSourceList.setEnabled(false); + extractTermsButton.setEnabled(false); + if (getDataSourceListModel().size() > 1) { + this.dataSourceList.setEnabled(true); + this.dataSourceList.setSelectionInterval(0, this.dataSourceList.getModel().getSize()-1); + dataSourceList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // do not allow multiselect + extractTermsButton.setEnabled(true); + } else if (getDataSourceListModel().size() == 1) { + this.dataSourceList.setEnabled(false); + this.dataSourceList.setSelectionInterval(0, 0); + extractTermsButton.setEnabled(true); + } + } +} From 7de5f19e832ff0d57d03fc33b9ca7eee5cf7a52e Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Fri, 12 Feb 2021 17:05:25 -0500 Subject: [PATCH 08/69] More UI work --- .../autopsy/keywordsearch/Bundle.properties | 1 + .../keywordsearch/Bundle.properties-MERGED | 12 +--- .../keywordsearch/Bundle_ja.properties | 1 + .../keywordsearch/TermsExtractionDialog.form | 25 ++++++- .../keywordsearch/TermsExtractionDialog.java | 66 ++++++++++++------- 5 files changed, 66 insertions(+), 39 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties index 9ad114de47..8a0054c80d 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties @@ -321,3 +321,4 @@ ExtractedContentPanel.pageCurLabel.text=- ExtractedContentPanel.pagesLabel.text=Page: KeywordSearchGlobalSearchSettingsPanel.ocrCheckBox.text=Enable Optical Character Recognition (OCR) TermsExtractionDialog.selectDataSourceLabel.text=Select Data Source: +TermsExtractionDialog.statusLabel.text= diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED index aef0bc570a..f4c0be0948 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED @@ -12,7 +12,6 @@ DropdownSingleTermSearchPanel.warning.text=Boundary characters ^ and $ do not ma DropdownSingleTermSearchPanel.warning.title=Warning ExtractAllTermsAction.getName.text=Extract Unique Words ExtractedContentPanel.setMarkup.panelTxt=Loading text... Please wait -# {0} - Content name ExtractedContentPanel.SetMarkup.progress.loading=Loading text for {0} GlobalEditListPanel.editKeyword.title=Edit Keyword GlobalEditListPanel.warning.text=Boundary characters ^ and $ do not match word boundaries. Consider\nreplacing with an explicit list of boundary characters, such as [ \\.,] @@ -23,16 +22,12 @@ IndexedText.warningMessage.noTextAvailable=No in KeywordSearchGlobalSearchSettingsPanel.customizeComponents.windowsOCR=Enable Optical Character Recognition (OCR) (Requires Windows 64-bit) KeywordSearchGlobalSettingsPanel.Title=Global Keyword Search Settings KeywordSearchIngestModule.init.badInitMsg=Keyword search server was not properly initialized, cannot run keyword search ingest. -# {0} - Reason for not connecting to Solr KeywordSearchIngestModule.init.exception.errConnToSolr.msg=Error connecting to SOLR server: {0}. -# {0} - Reason for not starting Solr KeywordSearchIngestModule.init.tryStopSolrMsg={0}
    Please try stopping Java Solr processes if any exist and restart the application. KeywordSearchIngestModule.metadataTitle=METADATA KeywordSearchIngestModule.noOpenCase.errMsg=No open case available. KeywordSearchIngestModule.startUp.noOpenCore.msg=The index could not be opened or does not exist. -# {0} - schema version number KeywordSearchIngestModule.startupException.indexSchemaNotSupported=Adding text no longer supported for schema version {0} of the text index. -# {0} - Solr version number KeywordSearchIngestModule.startupException.indexSolrVersionNotSupported=Adding text no longer supported for Solr version {0} of the text index. KeywordSearchIngestModule.startupMessage.failedToGetIndexSchema=Failed to get schema version for text index. KeywordSearchResultFactory.createNodeForKey.noResultsFound.text=No results found. @@ -215,7 +210,6 @@ KeywordSearchSettings.propertiesNSRL.text={0}_NSRL KeywordSearchSettings.propertiesScripts.text={0}_Scripts NoOpenCoreException.err.noOpenSorlCore.msg=No currently open Solr core. SearchRunner.query.exception.msg=Error performing query: -# {0} - colelction name Server.deleteCore.exception.msg=Failed to delete Solr colelction {0} Server.exceptionMessage.unableToBackupCollection=Unable to backup Solr collection Server.exceptionMessage.unableToCreateCollection=Unable to create Solr collection @@ -342,20 +336,15 @@ SolrSearch.checkingForLatestIndex.msg=Looking for text index with latest Solr an SolrSearch.complete.msg=Text index successfully opened SolrSearch.creatingNewIndex.msg=Creating new text index SolrSearch.findingIndexes.msg=Looking for existing text index directories -# {0} - futureVersion -# {1} - currentVersion SolrSearch.futureIndexVersion.msg=The text index for the case is for Solr {0}. This version of Autopsy is compatible with Solr {1}. SolrSearch.indentifyingIndex.msg=Identifying text index to use SolrSearch.lookingForMetadata.msg=Looking for text index metadata file SolrSearch.openCore.msg=Opening text index. For large cases this may take several minutes. SolrSearch.readingIndexes.msg=Reading text index metadata file SolrSearch.unableToFindIndex.msg=Unable to find index that can be used for this case -# {0} - index folder path SolrSearchService.exceptionMessage.failedToDeleteIndexFiles=Failed to delete text index files at {0} SolrSearchService.exceptionMessage.noCurrentSolrCore=IndexMetadata did not contain a current Solr core so could not delete the case -# {0} - case directory SolrSearchService.exceptionMessage.noIndexMetadata=Unable to create IndexMetaData from case directory: {0} -# {0} - collection name SolrSearchService.exceptionMessage.unableToDeleteCollection=Unable to delete collection {0} SolrSearchService.indexingError=Unable to index blackboard artifact. SolrSearchService.ServiceName=Solr Keyword Search Service @@ -390,6 +379,7 @@ ExtractedContentPanel.pageCurLabel.text=- ExtractedContentPanel.pagesLabel.text=Page: KeywordSearchGlobalSearchSettingsPanel.ocrCheckBox.text=Enable Optical Character Recognition (OCR) TermsExtractionDialog.selectDataSourceLabel.text=Select Data Source: +TermsExtractionDialog.statusLabel.text= TermsExtractionPanel.selected=Ad Hoc Search data source filter is selected TextZoomPanel.zoomInButton.text= TextZoomPanel.zoomOutButton.text= diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties index 06ee12edc7..cf7f6f92cb 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties @@ -399,3 +399,4 @@ ExtractedContentPanel.pageCurLabel.text=- ExtractedContentPanel.pagesLabel.text=\u30da\u30fc\u30b8: TextZoomPanel.zoomResetButton.text=\u30ea\u30bb\u30c3\u30c8 TermsExtractionDialog.selectDataSourceLabel.text=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb: +TermsExtractionDialog.statusLabel.text=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb: diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.form b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.form index 302f985718..c398b11e0a 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.form +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.form @@ -26,13 +26,17 @@ - + + + + + - + @@ -45,7 +49,10 @@ - + + + + @@ -97,5 +104,17 @@ + + + + + + + + + + + + diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.java index 36f5c44d91..52908682cc 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.java @@ -51,12 +51,14 @@ import org.sleuthkit.datamodel.TskCoreException; * options area. */ @SuppressWarnings("PMD.SingularField") // UI widgets cause lots of false positives +@NbBundle.Messages({ + "TermsExtractionDialog.dialogErrorHeader=Error Extracting Unique Words"}) class TermsExtractionDialog extends javax.swing.JDialog { private static final Logger logger = Logger.getLogger(TermsExtractionDialog.class.getName()); // ELTODO - private final String keywordSearchErrorDialogHeader = org.openide.util.NbBundle.getMessage(this.getClass(), "AbstractKeywordSearchPerformer.search.dialogErrorHeader"); + private final String errorDialogHeader = Bundle.TermsExtractionDialog_dialogErrorHeader(); private static TermsExtractionDialog instance; private ActionListener searchAddListener; private boolean ingestRunning; @@ -73,7 +75,7 @@ class TermsExtractionDialog extends javax.swing.JDialog { dataSourceList.setModel(getDataSourceListModel()); dataSourceList.addListSelectionListener((ListSelectionEvent evt) -> { - firePropertyChange(Bundle.DropdownSingleTermSearchPanel_selected(), null, null); // ELTODO + firePropertyChange(Bundle.TermsExtractionPanel_selected(), null, null); // ELTODO }); } @@ -126,21 +128,16 @@ class TermsExtractionDialog extends javax.swing.JDialog { extractTermsButton.addActionListener(searchAddListener); } + @NbBundle.Messages({ + "TermsExtractionDialog.unableToGetDataSources.error=Unable to populate list of data sources"}) private void updateComponents() { + statusLabel.setText(""); ingestRunning = IngestManager.getInstance().isIngestRunning(); - if (ingestRunning) { // ELTODO - extractTermsButton.setText(NbBundle.getMessage(this.getClass(), "KeywordSearchListsViewerPanel.initIngest.addIngestTitle")); - extractTermsButton.setToolTipText(NbBundle.getMessage(this.getClass(), "KeywordSearchListsViewerPanel.initIngest.addIngestMsg")); - - } else { - extractTermsButton.setText(NbBundle.getMessage(this.getClass(), "KeywordSearchListsViewerPanel.initIngest.searchIngestTitle")); - extractTermsButton.setToolTipText(NbBundle.getMessage(this.getClass(), "KeywordSearchListsViewerPanel.initIngest.addIdxSearchMsg")); - } try { updateDataSourceListModel(); - } catch (Exception ex) { - // ELTODO + } catch (NoCurrentCaseException | TskCoreException ex) { + statusLabel.setText(Bundle.TermsExtractionDialog_unableToGetDataSources_error()); logger.log(Level.SEVERE, "Unable to populate list of data sources", ex); //NON-NLS } } @@ -201,6 +198,7 @@ class TermsExtractionDialog extends javax.swing.JDialog { jScrollPane1 = new javax.swing.JScrollPane(); dataSourceList = new javax.swing.JList<>(); selectDataSourceLabel = new javax.swing.JLabel(); + statusLabel = new javax.swing.JLabel(); setSize(new java.awt.Dimension(500, 200)); @@ -218,17 +216,23 @@ class TermsExtractionDialog extends javax.swing.JDialog { selectDataSourceLabel.setFont(selectDataSourceLabel.getFont().deriveFont(selectDataSourceLabel.getFont().getSize()-1f)); selectDataSourceLabel.setText(org.openide.util.NbBundle.getMessage(TermsExtractionDialog.class, "TermsExtractionDialog.selectDataSourceLabel.text")); // NOI18N + statusLabel.setFont(statusLabel.getFont().deriveFont(statusLabel.getFont().getSize()-1f)); + statusLabel.setText(org.openide.util.NbBundle.getMessage(TermsExtractionDialog.class, "TermsExtractionDialog.statusLabel.text")); // NOI18N + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(extractTermsButton) + .addGroup(layout.createSequentialGroup() + .addComponent(extractTermsButton) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(statusLabel)) .addComponent(selectDataSourceLabel)) .addGap(0, 0, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() - .addComponent(jScrollPane1) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 358, Short.MAX_VALUE) .addContainerGap()) ); layout.setVerticalGroup( @@ -239,7 +243,9 @@ class TermsExtractionDialog extends javax.swing.JDialog { .addGap(18, 18, 18) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(extractTermsButton) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(extractTermsButton) + .addComponent(statusLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 13, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(20, Short.MAX_VALUE)) ); }// //GEN-END:initComponents @@ -252,6 +258,7 @@ class TermsExtractionDialog extends javax.swing.JDialog { private javax.swing.JButton extractTermsButton; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JLabel selectDataSourceLabel; + private javax.swing.JLabel statusLabel; // End of variables declaration//GEN-END:variables private void searchAction(ActionEvent e) { @@ -270,6 +277,15 @@ class TermsExtractionDialog extends javax.swing.JDialog { * * @param saveResults Flag whether to save search results as KWS artifacts. */ + @NbBundle.Messages({ + "TermsExtractionDialog.search.noFilesInIdxMsg=No files are in index yet.
    Try again later. Index is updated every {0} minutes.", + "TermsExtractionDialog.search.noFilesInIdxMsg2=No files are in index yet.
    Try again later", + "TermsExtractionDialog.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress", + "TermsExtractionDialog.search.ingestInProgressBody=Keyword Search Ingest is currently running.
    Not all files have been indexed and this search might yield incomplete results.
    Do you want to proceed with this search anyway?", + "TermsExtractionDialog.startExport=Starting Unique Word Export", + "TermsExtractionDialog.export.error=Error During Unique Word Export", + "TermsExtractionDialog.exportComplete=Unique Word Export Complete" + }) void search() { boolean isIngestRunning = IngestManager.getInstance().isIngestRunning(); @@ -280,34 +296,34 @@ class TermsExtractionDialog extends javax.swing.JDialog { } if (filesIndexed == 0) { - // ELTODO if (isIngestRunning) { - KeywordSearchUtil.displayDialog(keywordSearchErrorDialogHeader, NbBundle.getMessage(this.getClass(), - "AbstractKeywordSearchPerformer.search.noFilesInIdxMsg", - KeywordSearchSettings.getUpdateFrequency().getTime()), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.ERROR); + KeywordSearchUtil.displayDialog(errorDialogHeader, + Bundle.TermsExtractionDialog_search_noFilesInIdxMsg(KeywordSearchSettings.getUpdateFrequency().getTime()), + KeywordSearchUtil.DIALOG_MESSAGE_TYPE.ERROR); } else { - KeywordSearchUtil.displayDialog(keywordSearchErrorDialogHeader, NbBundle.getMessage(this.getClass(), - "AbstractKeywordSearchPerformer.search.noFilesIdxdMsg"), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.ERROR); + KeywordSearchUtil.displayDialog(errorDialogHeader, Bundle.TermsExtractionDialog_search_noFilesInIdxMsg2(), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.ERROR); } return; } //check if keyword search module ingest is running (indexing, etc) if (isIngestRunning) { - if (KeywordSearchUtil.displayConfirmDialog(org.openide.util.NbBundle.getMessage(this.getClass(), "AbstractKeywordSearchPerformer.search.searchIngestInProgressTitle"), - NbBundle.getMessage(this.getClass(), "AbstractKeywordSearchPerformer.search.ingestInProgressBody"), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.WARN) == false) { + if (KeywordSearchUtil.displayConfirmDialog(Bundle.TermsExtractionDialog_search_searchIngestInProgressTitle(), + Bundle.TermsExtractionDialog_search_ingestInProgressBody(), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.WARN) == false) { return; } } final Server server = KeywordSearch.getServer(); - Long dsID = Long.valueOf(4); Set selectedDs = getDataSourcesSelected(); try { + statusLabel.setText(Bundle.TermsExtractionDialog_startExport()); server.extractAllTermsForDataSource(selectedDs.iterator().next()); //ELTODO check if not empty } catch (Exception ex) { + statusLabel.setText(Bundle.TermsExtractionDialog_export_error()); Exceptions.printStackTrace(ex); } + statusLabel.setText(Bundle.TermsExtractionDialog_exportComplete()); } void addSearchButtonActionListener(ActionListener al) { @@ -334,7 +350,7 @@ class TermsExtractionDialog extends javax.swing.JDialog { /** * Update the dataSourceListModel */ - @NbBundle.Messages({"TermsExtractionPanel.selected=Ad Hoc Search data source filter is selected"}) + @NbBundle.Messages({"TermsExtractionPanel.selected=Data source filter is selected"}) void updateDataSourceListModel() throws NoCurrentCaseException, TskCoreException { dataSources = getDataSourceList(); getDataSourceListModel().removeAllElements(); From d05f5153abd9dd0738505ffae1bf519c31778fd6 Mon Sep 17 00:00:00 2001 From: Brian Carrier Date: Mon, 15 Feb 2021 12:19:48 -0500 Subject: [PATCH 09/69] Added Solr link. --- NEWS.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.txt b/NEWS.txt index b51c0948de..d437c75034 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -3,6 +3,7 @@ Keyword Search: - A major upgrade from Solr 4 to Solr 8.6.3. Single user cases continue to use the embedded server. Multi-user clusters need to install a new Solr 8 server and can now create a Solr cloud with multiple servers. -- NOTE: Cases created with Autopsy 4.18 cannot be opened by previous versions of Autopsy. Autopsy 4.18 can open older cases though. +-- See http://sleuthkit.org/autopsy/docs/user-docs/4.18.0/upgrade_solr8_page.html for more details. - Improved text indexing speed by not doing language detection on unknown file formats and unallocated space. Domain Discovery: From 04ca6411d9787dcbfc32754fef5fac909fd54b20 Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Tue, 16 Feb 2021 14:33:39 -0500 Subject: [PATCH 10/69] More work --- .../keywordsearch/Bundle.properties-MERGED | 22 ++++++++- .../autopsy/keywordsearch/Server.java | 48 ++++++++++--------- 2 files changed, 46 insertions(+), 24 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED index f4c0be0948..72d49889a5 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED @@ -12,6 +12,7 @@ DropdownSingleTermSearchPanel.warning.text=Boundary characters ^ and $ do not ma DropdownSingleTermSearchPanel.warning.title=Warning ExtractAllTermsAction.getName.text=Extract Unique Words ExtractedContentPanel.setMarkup.panelTxt=Loading text... Please wait +# {0} - Content name ExtractedContentPanel.SetMarkup.progress.loading=Loading text for {0} GlobalEditListPanel.editKeyword.title=Edit Keyword GlobalEditListPanel.warning.text=Boundary characters ^ and $ do not match word boundaries. Consider\nreplacing with an explicit list of boundary characters, such as [ \\.,] @@ -22,12 +23,16 @@ IndexedText.warningMessage.noTextAvailable=No in KeywordSearchGlobalSearchSettingsPanel.customizeComponents.windowsOCR=Enable Optical Character Recognition (OCR) (Requires Windows 64-bit) KeywordSearchGlobalSettingsPanel.Title=Global Keyword Search Settings KeywordSearchIngestModule.init.badInitMsg=Keyword search server was not properly initialized, cannot run keyword search ingest. +# {0} - Reason for not connecting to Solr KeywordSearchIngestModule.init.exception.errConnToSolr.msg=Error connecting to SOLR server: {0}. +# {0} - Reason for not starting Solr KeywordSearchIngestModule.init.tryStopSolrMsg={0}
    Please try stopping Java Solr processes if any exist and restart the application. KeywordSearchIngestModule.metadataTitle=METADATA KeywordSearchIngestModule.noOpenCase.errMsg=No open case available. KeywordSearchIngestModule.startUp.noOpenCore.msg=The index could not be opened or does not exist. +# {0} - schema version number KeywordSearchIngestModule.startupException.indexSchemaNotSupported=Adding text no longer supported for schema version {0} of the text index. +# {0} - Solr version number KeywordSearchIngestModule.startupException.indexSolrVersionNotSupported=Adding text no longer supported for Solr version {0} of the text index. KeywordSearchIngestModule.startupMessage.failedToGetIndexSchema=Failed to get schema version for text index. KeywordSearchResultFactory.createNodeForKey.noResultsFound.text=No results found. @@ -210,6 +215,7 @@ KeywordSearchSettings.propertiesNSRL.text={0}_NSRL KeywordSearchSettings.propertiesScripts.text={0}_Scripts NoOpenCoreException.err.noOpenSorlCore.msg=No currently open Solr core. SearchRunner.query.exception.msg=Error performing query: +# {0} - colelction name Server.deleteCore.exception.msg=Failed to delete Solr colelction {0} Server.exceptionMessage.unableToBackupCollection=Unable to backup Solr collection Server.exceptionMessage.unableToCreateCollection=Unable to create Solr collection @@ -336,15 +342,20 @@ SolrSearch.checkingForLatestIndex.msg=Looking for text index with latest Solr an SolrSearch.complete.msg=Text index successfully opened SolrSearch.creatingNewIndex.msg=Creating new text index SolrSearch.findingIndexes.msg=Looking for existing text index directories +# {0} - futureVersion +# {1} - currentVersion SolrSearch.futureIndexVersion.msg=The text index for the case is for Solr {0}. This version of Autopsy is compatible with Solr {1}. SolrSearch.indentifyingIndex.msg=Identifying text index to use SolrSearch.lookingForMetadata.msg=Looking for text index metadata file SolrSearch.openCore.msg=Opening text index. For large cases this may take several minutes. SolrSearch.readingIndexes.msg=Reading text index metadata file SolrSearch.unableToFindIndex.msg=Unable to find index that can be used for this case +# {0} - index folder path SolrSearchService.exceptionMessage.failedToDeleteIndexFiles=Failed to delete text index files at {0} SolrSearchService.exceptionMessage.noCurrentSolrCore=IndexMetadata did not contain a current Solr core so could not delete the case +# {0} - case directory SolrSearchService.exceptionMessage.noIndexMetadata=Unable to create IndexMetaData from case directory: {0} +# {0} - collection name SolrSearchService.exceptionMessage.unableToDeleteCollection=Unable to delete collection {0} SolrSearchService.indexingError=Unable to index blackboard artifact. SolrSearchService.ServiceName=Solr Keyword Search Service @@ -378,9 +389,18 @@ ExtractedContentPanel.pageOfLabel.text=of ExtractedContentPanel.pageCurLabel.text=- ExtractedContentPanel.pagesLabel.text=Page: KeywordSearchGlobalSearchSettingsPanel.ocrCheckBox.text=Enable Optical Character Recognition (OCR) +TermsExtractionDialog.dialogErrorHeader=Error Extracting Unique Words +TermsExtractionDialog.export.error=Error During Unique Word Export +TermsExtractionDialog.exportComplete=Unique Word Export Complete +TermsExtractionDialog.search.ingestInProgressBody=Keyword Search Ingest is currently running.
    Not all files have been indexed and this search might yield incomplete results.
    Do you want to proceed with this search anyway? +TermsExtractionDialog.search.noFilesInIdxMsg=No files are in index yet.
    Try again later. Index is updated every {0} minutes. +TermsExtractionDialog.search.noFilesInIdxMsg2=No files are in index yet.
    Try again later +TermsExtractionDialog.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress TermsExtractionDialog.selectDataSourceLabel.text=Select Data Source: +TermsExtractionDialog.startExport=Starting Unique Word Export TermsExtractionDialog.statusLabel.text= -TermsExtractionPanel.selected=Ad Hoc Search data source filter is selected +TermsExtractionDialog.unableToGetDataSources.error=Unable to populate list of data sources +TermsExtractionPanel.selected=Data source filter is selected TextZoomPanel.zoomInButton.text= TextZoomPanel.zoomOutButton.text= TextZoomPanel.zoomResetButton.text=Reset diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java index 5135b3cf30..701d783e4b 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java @@ -2209,7 +2209,7 @@ public class Server { private void extractAllTermsForDataSource(Long dsObjId) throws IOException, SolrServerException, NoCurrentCaseException, KeywordSearchModuleException { String dataSourceId = Long.toString(dsObjId); - int numTerms = 400000; + /* ELTODO int numTerms = 400000; int termStep = 1000; SolrQuery query = new SolrQuery(); @@ -2220,7 +2220,7 @@ public class Server { query.addTermsField("text"); query.setTermsMinCount(0); - // ELTODO query.addFilterQuery("image_id:" + dataSourceId); + query.addFilterQuery("image_id:" + dataSourceId); QueryRequest request = new QueryRequest(query); TermsResponse response = request.process(queryClient).getTermsResponse(); @@ -2244,46 +2244,48 @@ public class Server { List listTerms = terms.stream().map(Term::getTerm).collect(Collectors.toList()); OpenOption[] options = new OpenOption[] { java.nio.file.StandardOpenOption.CREATE, java.nio.file.StandardOpenOption.APPEND }; - Files.write(serverFile, listTerms, options); - /*for (Term term : terms) { - try { - Files.write(serverFile, term.getTerm().getBytes(), options); - Files.write(serverFile, "\n".getBytes(), options); - } catch (IOException ex) { - throw new KeywordSearchModuleException(serverFile.toString() + " could not be written", ex); //NON-NLS - } - }*/ + Files.write(serverFile, listTerms, options);*/ - // repeat the same thing but stepping through the terms - String firstTerm = ""; - Path serverFileIterated = Paths.get(caseDirectoryPath.toString(), "terms_"+numTerms+"_iterated.txt"); //NON-NLS + // step through the terms + Case currentCase = Case.getCurrentCaseThrows(); + File caseDirectoryPath = new File(currentCase.getOutputDirectory()); + Path serverFileIterated = Paths.get(caseDirectoryPath.toString(), "Unique Words from Data Source " + dataSourceId + ".txt"); //NON-NLS Files.deleteIfExists(serverFileIterated); - for (int step = 0; step < numTerms; step += termStep) { - query = new SolrQuery(); + OpenOption[] options = new OpenOption[] { java.nio.file.StandardOpenOption.CREATE, java.nio.file.StandardOpenOption.APPEND }; + + int termStep = 1000; + String firstTerm = ""; + while (true) { + SolrQuery query = new SolrQuery(); query.setRequestHandler("/terms"); query.setTerms(true); query.setTermsLimit(termStep); query.setTermsLower(firstTerm); query.setTermsLowerInclusive(false); + + // returned terms sorted by "index" order, which is the fastest way. Per Solr documentation: + // " Retrieving terms in index order is very fast since the implementation directly uses Lucene’s TermEnum to iterate over the term dictionary." + // All other sort criteria return very inconsistent and overlapping resuts. query.setTermsSortString("index"); - query.addTermsField("text"); + + // "text" field is the schema field that we populate with (lowercased) terms + query.addTermsField(Server.Schema.TEXT.toString()); query.setTermsMinCount(0); - // ELTODO query.addFilterQuery("image_id:" + dataSourceId); + query.addFilterQuery(Server.Schema.IMAGE_ID.toString() + ":" + dataSourceId); - request = new QueryRequest(query); - response = request.process(queryClient).getTermsResponse(); - terms = response.getTerms("text"); + QueryRequest request = new QueryRequest(query); + TermsResponse response = request.process(queryClient).getTermsResponse(); + List terms = response.getTerms(Server.Schema.TEXT.toString()); if (terms == null || terms.isEmpty()) { - logger.log(Level.WARNING, "No unique terms/words returned for data source ID: " + dataSourceId); //NON-NLS break; } // set the first term for the next query firstTerm = terms.get(terms.size()-1).getTerm(); - listTerms = terms.stream().map(Term::getTerm).collect(Collectors.toList()); + List listTerms = terms.stream().map(Term::getTerm).collect(Collectors.toList()); Files.write(serverFileIterated, listTerms, options); } } From b2a9675a2c1e04276c20ae372a35027bde3528d9 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 18 Feb 2021 15:43:41 -0500 Subject: [PATCH 11/69] 7178 Get account types and display them in discovery domain results --- .../discovery/search/Bundle.properties-MERGED | 1 + .../search/DomainSearchCacheLoader.java | 55 +++++++++++++------ .../discovery/search/ResultDomain.java | 38 +++++++++---- .../discovery/ui/Bundle.properties-MERGED | 3 +- .../discovery/ui/DomainSummaryPanel.form | 30 ++++++---- .../discovery/ui/DomainSummaryPanel.java | 34 +++++++----- 6 files changed, 108 insertions(+), 53 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/discovery/search/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/discovery/search/Bundle.properties-MERGED index cd823d353b..1f7710d2d4 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/search/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/discovery/search/Bundle.properties-MERGED @@ -57,6 +57,7 @@ FileSorter.SortingMethod.fullPath.displayName=Full Path FileSorter.SortingMethod.keywordlist.displayName=Keyword List Names FileSorter.SortingMethod.pageViews.displayName=Page Views ResultDomain_getDefaultCategory=Uncategorized +ResultDomain_noAccountTypes=Unknown ResultFile.score.interestingResult.description=At least one instance of the file has an interesting result associated with it. ResultFile.score.notableFile.description=At least one instance of the file was recognized as notable. ResultFile.score.notableTaggedFile.description=At least one instance of the file is tagged with a notable tag. diff --git a/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java b/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java index 31006d7e93..6ad2ca7011 100755 --- a/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java @@ -43,12 +43,15 @@ import org.sleuthkit.autopsy.discovery.search.SearchFiltering.DataSourceFilter; import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_DOWNLOAD; import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_HISTORY; import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_ACCOUNT_TYPE; +import org.sleuthkit.datamodel.BlackboardAttribute; import static org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DOMAIN; +import static org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE.TSK_TEXT; import org.sleuthkit.datamodel.CaseDbAccessManager; import org.sleuthkit.datamodel.CaseDbAccessManager.CaseDbAccessQueryCallback; import org.sleuthkit.datamodel.Content; import org.sleuthkit.datamodel.SleuthkitCase; import org.sleuthkit.datamodel.TskCoreException; +import org.sleuthkit.datamodel.TskData; /** * Loads domain search results for cache misses. This loader is a Guava cache @@ -103,11 +106,9 @@ class DomainSearchCacheLoader extends CacheLoader filterClauses = createWhereAndHavingClause(key.getFilters()); - final String whereClause = filterClauses.getLeft(); - final String havingClause = filterClauses.getRight(); - - // You may think of each row of this result as a TSK_DOMAIN attribute, where the parent + final Pair domainsFilterClauses = createWhereAndHavingClause(key.getFilters()); + final String domainsWhereClause = domainsFilterClauses.getLeft(); + final String domainsHavingClause = domainsFilterClauses.getRight(); // artifact type is within the (optional) filter and the parent artifact // had a date time attribute that was within the (optional) filter. With this // table in hand, we can simply group by domain and apply aggregate functions @@ -118,9 +119,29 @@ class DomainSearchCacheLoader extends CacheLoader '' AND (artifact_type_id = " + TSK_WEB_ACCOUNT_TYPE.getTypeID() + "))"; + /* + * As part of getting the known account types for a domain additional + * attribute values are necessary from the blackboard_attributes table + * This sub-query aggregates them and associates them with the artifact + * they correspond to. + */ + final String accountsTable + = "SELECT " + sqlSpecificAccountAggregator + " as value_text," //naming field value_text the same as the field it is aggregating to re-use aggregator + + "artifact_id AS account_artifact_id " + + "FROM blackboard_attributes " + + "WHERE " + accountsWhereClause + " " + + "GROUP BY artifact_id "; // Needed to populate the visitsInLast60 data. final Instant currentTime = Instant.now(); @@ -166,17 +187,18 @@ class DomainSearchCacheLoader extends CacheLoader createWhereAndHavingClause(List filters) { - final StringJoiner whereClause = new StringJoiner(" OR "); - final StringJoiner havingClause = new StringJoiner(" AND "); + final StringJoiner whereClause = new StringJoiner(" OR ", "(", ")"); + final StringJoiner havingClause = new StringJoiner(" AND ", "(", ")"); // Capture all types by default. ArtifactTypeFilter artifactTypeFilter = new ArtifactTypeFilter(SearchData.Type.DOMAIN.getArtifactTypes()); @@ -301,11 +323,12 @@ class DomainSearchCacheLoader extends CacheLoader 0; } + /** + * Get the account types in + * @return + */ + @NbBundle.Messages({ + "ResultDomain_noAccountTypes=Unknown" + }) + public String getAccountTypes() { + if (StringUtils.isBlank(accountTypes)) { + return Bundle.ResultDomain_noAccountTypes(); + } + return accountTypes; + } + @Override public long getDataSourceObjectId() { return this.dataSourceId; diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED index 98deeee12f..2907bfa112 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED @@ -59,13 +59,12 @@ DomainDetailsPanel.miniTimelineTitle.text=Timeline DomainSummaryPanel.activity.text=Activity: {0} to {1} DomainSummaryPanel.category.text=Category: DomainSummaryPanel.downloads.text=Files downloaded: -DomainSummaryPanel.known.text=User role: Known account type(s) DomainSummaryPanel.loadingImages.text=Loading thumbnail... DomainSummaryPanel.no.text=No DomainSummaryPanel.notability.text=Previously tagged as notable: DomainSummaryPanel.pages.text=Page views in past 60 days: DomainSummaryPanel.totalPages.text=Total page views: -DomainSummaryPanel.unknown.text=User role: Unknown +DomainSummaryPanel.userRole.text=User role: DomainSummaryPanel.yes.text=Yes GroupsListPanel.noDomainResults.message.text=No domains were found for the selected filters.\n\nReminder:\n -The Recent Activity module must be run on each data source you want to find results in.\n -The Central Repository module must be run on each data source if you want to filter or sort by past occurrences.\n -The iOS Analyzer (iLEAPP) module must be run on each data source which contains data from an iOS device.\n GroupsListPanel.noFileResults.message.text=No files were found for the selected filters.\n\nReminder:\n -The File Type Identification module must be run on each data source you want to find results in.\n -The Hash Lookup module must be run on each data source if you want to filter by past occurrence.\n -The Picture Analyzer module must be run on each data source if you are filtering by User Created content. diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryPanel.form b/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryPanel.form index 9e7fd5fd3c..68f72f9a78 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryPanel.form +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryPanel.form @@ -27,20 +27,23 @@ - + + - - + + + + + - + - + + - - @@ -58,12 +61,12 @@ - + - + @@ -73,8 +76,11 @@ - - + + + + + @@ -131,5 +137,7 @@ + + diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryPanel.java b/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryPanel.java index bcf004b89b..87c02c6419 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryPanel.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryPanel.java @@ -69,6 +69,7 @@ class DomainSummaryPanel extends javax.swing.JPanel implements ListCellRenderer< totalVisitsLabel = new javax.swing.JLabel(); domainNotabilityLabel = new javax.swing.JLabel(); categoryLabel = new javax.swing.JLabel(); + knownAccountTypesLabel = new javax.swing.JLabel(); setBorder(javax.swing.BorderFactory.createEtchedBorder()); @@ -90,17 +91,19 @@ class DomainSummaryPanel extends javax.swing.JPanel implements ListCellRenderer< .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(domainNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(pagesLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(filesDownloadedLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE) - .addComponent(activityLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(totalVisitsLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(filesDownloadedLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE) + .addComponent(activityLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(domainNotabilityLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 300, Short.MAX_VALUE) - .addComponent(categoryLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGap(4, 4, 4)) - .addComponent(pagesLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(totalVisitsLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(domainNotabilityLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE) + .addComponent(categoryLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(knownAccountTypesLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addGap(4, 4, 4))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(numberOfImagesLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) @@ -117,11 +120,11 @@ class DomainSummaryPanel extends javax.swing.JPanel implements ListCellRenderer< .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(numberOfImagesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 8, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(sampleImageLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGroup(layout.createSequentialGroup() .addComponent(domainNameLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, 15, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(activityLabel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(domainNotabilityLabel, javax.swing.GroupLayout.Alignment.TRAILING)) @@ -129,8 +132,10 @@ class DomainSummaryPanel extends javax.swing.JPanel implements ListCellRenderer< .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(filesDownloadedLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 14, Short.MAX_VALUE) .addComponent(categoryLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(totalVisitsLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 14, Short.MAX_VALUE) + .addGap(9, 9, 9) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(totalVisitsLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 14, Short.MAX_VALUE) + .addComponent(knownAccountTypesLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(pagesLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(1, 1, 1))) @@ -150,6 +155,7 @@ class DomainSummaryPanel extends javax.swing.JPanel implements ListCellRenderer< private javax.swing.JLabel domainNameLabel; private javax.swing.JLabel domainNotabilityLabel; private javax.swing.JLabel filesDownloadedLabel; + private javax.swing.JLabel knownAccountTypesLabel; private javax.swing.JLabel numberOfImagesLabel; private javax.swing.JLabel pagesLabel; private javax.swing.JLabel sampleImageLabel; @@ -164,8 +170,7 @@ class DomainSummaryPanel extends javax.swing.JPanel implements ListCellRenderer< "DomainSummaryPanel.totalPages.text=Total page views: ", "DomainSummaryPanel.downloads.text=Files downloaded: ", "DomainSummaryPanel.notability.text=Previously tagged as notable: ", - "DomainSummaryPanel.unknown.text=User role: Unknown", - "DomainSummaryPanel.known.text=User role: Known account type(s)", + "DomainSummaryPanel.userRole.text=User role: ", "DomainSummaryPanel.category.text=Category: ", "DomainSummaryPanel.loadingImages.text=Loading thumbnail...", "DomainSummaryPanel.no.text=No", @@ -188,6 +193,7 @@ class DomainSummaryPanel extends javax.swing.JPanel implements ListCellRenderer< totalVisitsLabel.setText(Bundle.DomainSummaryPanel_totalPages_text() + value.getResultDomain().getTotalPageViews()); pagesLabel.setText(Bundle.DomainSummaryPanel_pages_text() + value.getResultDomain().getPageViewsInLast60Days()); filesDownloadedLabel.setText(Bundle.DomainSummaryPanel_downloads_text() + value.getResultDomain().getFilesDownloaded()); + knownAccountTypesLabel.setText(Bundle.DomainSummaryPanel_userRole_text() + value.getResultDomain().getAccountTypes()); if (value.getThumbnail() == null) { numberOfImagesLabel.setText(Bundle.DomainSummaryPanel_loadingImages_text()); sampleImageLabel.setIcon(null); From 9950cef38f2fd7925fb250f9114a985891c9a56e Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 18 Feb 2021 15:47:49 -0500 Subject: [PATCH 12/69] 7178 minor clean up --- .../autopsy/discovery/search/DomainSearchCacheLoader.java | 6 ++---- .../sleuthkit/autopsy/discovery/ui/DomainSummaryPanel.java | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java b/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java index 6ad2ca7011..00abc9ce73 100755 --- a/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2020 Basis Technology Corp. + * Copyright 2020-2021 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -43,7 +43,6 @@ import org.sleuthkit.autopsy.discovery.search.SearchFiltering.DataSourceFilter; import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_DOWNLOAD; import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_HISTORY; import static org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE.TSK_WEB_ACCOUNT_TYPE; -import org.sleuthkit.datamodel.BlackboardAttribute; import static org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DOMAIN; import static org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE.TSK_TEXT; import org.sleuthkit.datamodel.CaseDbAccessManager; @@ -197,7 +196,6 @@ class DomainSearchCacheLoader extends CacheLoader sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); From 7941312d92ece893b0bde6cbe8e41e117ceed869 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 18 Feb 2021 15:50:20 -0500 Subject: [PATCH 13/69] 7178 remove unnecessary string --- .../autopsy/discovery/search/DomainSearchCacheLoader.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java b/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java index 00abc9ce73..5fd050e452 100755 --- a/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/search/DomainSearchCacheLoader.java @@ -128,7 +128,6 @@ class DomainSearchCacheLoader extends CacheLoader '' AND (artifact_type_id = " + TSK_WEB_ACCOUNT_TYPE.getTypeID() + "))"; /* * As part of getting the known account types for a domain additional * attribute values are necessary from the blackboard_attributes table @@ -139,7 +138,9 @@ class DomainSearchCacheLoader extends CacheLoader '' " + + " AND (artifact_type_id = " + TSK_WEB_ACCOUNT_TYPE.getTypeID() + ")) " + "GROUP BY artifact_id "; // Needed to populate the visitsInLast60 data. From 838669e22cf119e747f11e577ddb0f87ddb5c5fc Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 18 Feb 2021 15:53:20 -0500 Subject: [PATCH 14/69] 7178 add comment for new getter method --- .../sleuthkit/autopsy/discovery/search/ResultDomain.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/discovery/search/ResultDomain.java b/Core/src/org/sleuthkit/autopsy/discovery/search/ResultDomain.java index 19fec1b865..47fa441678 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/search/ResultDomain.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/search/ResultDomain.java @@ -148,9 +148,12 @@ public class ResultDomain extends Result { && countOfKnownAccountTypes > 0; } - /** - * Get the account types in - * @return + /** + * Get the account types which are associated with this domain. + * + * @return A comma seperated list of account types which are associated with + * this domain, or "Unknown" if no account types were associated + * with it. */ @NbBundle.Messages({ "ResultDomain_noAccountTypes=Unknown" From 9f5698cf4d67bd251df05e5a98723687036d5b84 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Fri, 19 Feb 2021 12:14:10 -0500 Subject: [PATCH 15/69] 7178 fix label to say Account Type instead of User Role --- .../org/sleuthkit/autopsy/discovery/ui/DomainSummaryPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryPanel.java b/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryPanel.java index d108ac31df..d602e3e130 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryPanel.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryPanel.java @@ -170,7 +170,7 @@ class DomainSummaryPanel extends javax.swing.JPanel implements ListCellRenderer< "DomainSummaryPanel.totalPages.text=Total page views: ", "DomainSummaryPanel.downloads.text=Files downloaded: ", "DomainSummaryPanel.notability.text=Previously tagged as notable: ", - "DomainSummaryPanel.userRole.text=User role: ", + "DomainSummaryPanel.userRole.text=Account type: ", "DomainSummaryPanel.category.text=Category: ", "DomainSummaryPanel.loadingImages.text=Loading thumbnail...", "DomainSummaryPanel.no.text=No", From e9d382e88b6820b88c49a9dd60497b46890d24dc Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Fri, 19 Feb 2021 13:02:22 -0500 Subject: [PATCH 16/69] 7178 update bundle properties merged file --- .../org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED index 2907bfa112..de8ecc7cef 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/Bundle.properties-MERGED @@ -64,7 +64,7 @@ DomainSummaryPanel.no.text=No DomainSummaryPanel.notability.text=Previously tagged as notable: DomainSummaryPanel.pages.text=Page views in past 60 days: DomainSummaryPanel.totalPages.text=Total page views: -DomainSummaryPanel.userRole.text=User role: +DomainSummaryPanel.userRole.text=Account type: DomainSummaryPanel.yes.text=Yes GroupsListPanel.noDomainResults.message.text=No domains were found for the selected filters.\n\nReminder:\n -The Recent Activity module must be run on each data source you want to find results in.\n -The Central Repository module must be run on each data source if you want to filter or sort by past occurrences.\n -The iOS Analyzer (iLEAPP) module must be run on each data source which contains data from an iOS device.\n GroupsListPanel.noFileResults.message.text=No files were found for the selected filters.\n\nReminder:\n -The File Type Identification module must be run on each data source you want to find results in.\n -The Hash Lookup module must be run on each data source if you want to filter by past occurrence.\n -The Picture Analyzer module must be run on each data source if you are filtering by User Created content. From 571a4c314e9e88e945a6547412eb5a5e6d964691 Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Fri, 19 Feb 2021 18:35:21 -0500 Subject: [PATCH 17/69] Using report infrastructure instead --- .../keywordsearch/Bundle.properties-MERGED | 12 +- .../keywordsearch/ExtractAllTermsAction.java | 67 --- .../keywordsearch/ExtractAllTermsReport.java | 129 ++++++ .../autopsy/keywordsearch/Server.java | 75 +--- .../keywordsearch/TermsExtractionDialog.form | 120 ------ .../keywordsearch/TermsExtractionDialog.java | 393 ------------------ .../sleuthkit/autopsy/keywordsearch/layer.xml | 4 + 7 files changed, 165 insertions(+), 635 deletions(-) delete mode 100755 KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java create mode 100755 KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java delete mode 100755 KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.form delete mode 100755 KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.java diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED index 72d49889a5..e130c9052a 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED @@ -5,12 +5,20 @@ AccountsText.nextPage.exception.msg=No next page. AccountsText.previousItem.exception.msg=No previous item. AccountsText.previousPage.exception.msg=No previous page. CannotRunFileTypeDetection=Unable to run file type detection. -CTL_ExtractAllTermsAction=Extract Unique Words DropdownListSearchPanel.selected=Ad Hoc Search data source filter is selected DropdownSingleTermSearchPanel.selected=Ad Hoc Search data source filter is selected DropdownSingleTermSearchPanel.warning.text=Boundary characters ^ and $ do not match word boundaries. Consider\nreplacing with an explicit list of boundary characters, such as [ \\.,] DropdownSingleTermSearchPanel.warning.title=Warning -ExtractAllTermsAction.getName.text=Extract Unique Words +ExtractAllTermsReport.error.unableToOpenCase=Exception while getting open case. +ExtractAllTermsReport.export.error=Error During Unique Word Export +ExtractAllTermsReport.exportComplete=Unique Word Export Complete +ExtractAllTermsReport.getName.text=Extract Unique Words +ExtractAllTermsReport.numberExtractedTerms=Extracted {0} terms... +ExtractAllTermsReport.search.ingestInProgressBody=Keyword Search Ingest is currently running.
    Not all files have been indexed and this search might yield incomplete results.
    Do you want to proceed with this search anyway? +ExtractAllTermsReport.search.noFilesInIdxMsg=No files are in index yet.
    Try again later. Index is updated every {0} minutes. +ExtractAllTermsReport.search.noFilesInIdxMsg2=No files are in index yet.
    Try again later +ExtractAllTermsReport.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress +ExtractAllTermsReport.startExport=Starting Unique Word Export ExtractedContentPanel.setMarkup.panelTxt=Loading text... Please wait # {0} - Content name ExtractedContentPanel.SetMarkup.progress.loading=Loading text for {0} diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java deleted file mode 100755 index c68061f8d5..0000000000 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsAction.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Autopsy Forensic Browser - * - * Copyright 2021 Basis Technology Corp. - * Contact: carrier sleuthkit org - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.sleuthkit.autopsy.keywordsearch; - -import java.awt.event.ActionEvent; -import org.openide.awt.ActionID; -import org.openide.awt.ActionReference; -import org.openide.awt.ActionRegistration; -import org.openide.util.HelpCtx; -import org.openide.util.NbBundle; -import org.openide.util.actions.CallableSystemAction; -import org.sleuthkit.autopsy.casemodule.Case; - -/** - * Action for accessing the Search Other Cases dialog. - */ -@ActionID(category = "Tools", id = "org.sleuthkit.autopsy.keywordsearch.ExtractAllTermsAction") -@ActionRegistration(displayName = "#CTL_OtherExtractAllTermsAction=Extract Unique Words", lazy = false) -@ActionReference(path = "Menu/Tools", position = 202) -@NbBundle.Messages({"CTL_ExtractAllTermsAction=Extract Unique Words"}) -public class ExtractAllTermsAction extends CallableSystemAction { - - @Override - public boolean isEnabled() { - return Case.isCaseOpen(); - } - - @Override - public void actionPerformed(ActionEvent event) { - performAction(); - } - - @Override - public void performAction() { - TermsExtractionDialog listsPanel = TermsExtractionDialog.getDefault(); - listsPanel.display(); - } - - @NbBundle.Messages({ - "ExtractAllTermsAction.getName.text=Extract Unique Words"}) - @Override - public String getName() { - return Bundle.ExtractAllTermsAction_getName_text(); - } - - @Override - public HelpCtx getHelpCtx() { - return HelpCtx.DEFAULT_HELP; - } - -} diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java new file mode 100755 index 0000000000..9debf161ac --- /dev/null +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java @@ -0,0 +1,129 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.keywordsearch; + +import java.util.logging.Level; +import org.openide.util.Exceptions; +import org.openide.util.NbBundle; +import org.openide.util.lookup.ServiceProvider; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.ingest.IngestManager; +import org.sleuthkit.autopsy.report.GeneralReportModule; +import org.sleuthkit.autopsy.report.GeneralReportSettings; +import org.sleuthkit.autopsy.report.ReportProgressPanel; + +/** + * Instances of this class plug in to the reporting infrastructure to provide a + * convenient way to extract all unique terms from Solr index. + */ +@ServiceProvider(service = GeneralReportModule.class) +public class ExtractAllTermsReport implements GeneralReportModule { + + private static final Logger logger = Logger.getLogger(ExtractAllTermsReport.class.getName()); + + @NbBundle.Messages({ + "ExtractAllTermsReport.getName.text=Extract Unique Words"}) + @Override + public String getName() { + return Bundle.ExtractAllTermsReport_getName_text(); + } + + @NbBundle.Messages({ + "ExtractAllTermsReport.error.unableToOpenCase=Exception while getting open case.", + "ExtractAllTermsReport.search.noFilesInIdxMsg=No files are in index yet.
    Try again later. Index is updated every {0} minutes.", + "ExtractAllTermsReport.search.noFilesInIdxMsg2=No files are in index yet.
    Try again later", + "ExtractAllTermsReport.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress", + "ExtractAllTermsReport.search.ingestInProgressBody=Keyword Search Ingest is currently running.
    Not all files have been indexed and this search might yield incomplete results.
    Do you want to proceed with this search anyway?", + "ExtractAllTermsReport.startExport=Starting Unique Word Export", + "ExtractAllTermsReport.export.error=Error During Unique Word Export", + "ExtractAllTermsReport.exportComplete=Unique Word Export Complete" + }) + @Override + public void generateReport(GeneralReportSettings settings, ReportProgressPanel progressPanel) { + Case openCase; + try { + openCase = Case.getCurrentCaseThrows(); + } catch (NoCurrentCaseException ex) { + logger.log(Level.SEVERE, "Exception while getting open case.", ex); //NON-NLS + progressPanel.complete(ReportProgressPanel.ReportStatus.ERROR, Bundle.ExtractAllTermsReport_error_unableToOpenCase()); + return; + } + progressPanel.setIndeterminate(true); + progressPanel.start(); + progressPanel.updateStatusLabel("Extracting unique words..."); + + boolean isIngestRunning = IngestManager.getInstance().isIngestRunning(); + + int filesIndexed = 0; + try { // see if another node added any indexed files + filesIndexed = KeywordSearch.getServer().queryNumIndexedFiles(); + } catch (KeywordSearchModuleException | NoOpenCoreException ignored) { + } + + if (filesIndexed == 0) { + if (isIngestRunning) { + progressPanel.complete(ReportProgressPanel.ReportStatus.ERROR, Bundle.ExtractAllTermsReport_search_noFilesInIdxMsg(KeywordSearchSettings.getUpdateFrequency().getTime())); + } else { + progressPanel.complete(ReportProgressPanel.ReportStatus.ERROR, Bundle.ExtractAllTermsReport_search_noFilesInIdxMsg2()); + } + progressPanel.setIndeterminate(false); + progressPanel.complete(ReportProgressPanel.ReportStatus.ERROR); + return; + } + + //check if keyword search module ingest is running (indexing, etc) + if (isIngestRunning) { + if (KeywordSearchUtil.displayConfirmDialog(Bundle.ExtractAllTermsReport_search_searchIngestInProgressTitle(), + Bundle.ExtractAllTermsReport_search_ingestInProgressBody(), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.WARN) == false) { + return; + } + } + + final Server server = KeywordSearch.getServer(); + try { + progressPanel.updateStatusLabel(Bundle.ExtractAllTermsReport_startExport()); + server.extractAllTermsForDataSource(settings, progressPanel); + } catch (Exception ex) { + progressPanel.updateStatusLabel(Bundle.ExtractAllTermsReport_export_error()); + Exceptions.printStackTrace(ex); // ELTODO + } + progressPanel.updateStatusLabel(Bundle.ExtractAllTermsReport_exportComplete()); + + progressPanel.setIndeterminate(false); + progressPanel.complete(ReportProgressPanel.ReportStatus.COMPLETE); + } + + @Override + public boolean supportsDataSourceSelection() { + return false; + } + + @Override + public String getDescription() { + return "Extracts all unique words out of the current case. NOTE: The extracted words are lower-cased."; + } + + @Override + public String getRelativeFilePath() { + return "Unique Words.txt"; // ELTODO + } + +} diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java index 701d783e4b..0f9a59a881 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java @@ -43,10 +43,8 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Random; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -61,7 +59,6 @@ import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrRequest; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.SolrClient; -import org.apache.solr.client.solrj.SolrQuery.SortClause; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.impl.CloudSolrClient; import org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrClient; @@ -98,6 +95,8 @@ import org.sleuthkit.autopsy.coreutils.ThreadUtils; import org.sleuthkit.autopsy.healthmonitor.HealthMonitor; import org.sleuthkit.autopsy.healthmonitor.TimingMetric; import org.sleuthkit.autopsy.keywordsearchservice.KeywordSearchServiceException; +import org.sleuthkit.autopsy.report.GeneralReportSettings; +import org.sleuthkit.autopsy.report.ReportProgressPanel; import org.sleuthkit.datamodel.Content; /** @@ -1843,17 +1842,18 @@ public class Server { /** * Extract all unique terms/words for a given data source. * - * @param dataSourceId to process + * @param settings GeneralReportSettings to use + * @param progressPanel ReportProgressPanel to update * * @throws NoOpenCoreException */ - void extractAllTermsForDataSource(Long dataSourceId) throws IOException, KeywordSearchModuleException, NoOpenCoreException, SolrServerException, NoCurrentCaseException { + void extractAllTermsForDataSource(GeneralReportSettings settings, ReportProgressPanel progressPanel) throws IOException, KeywordSearchModuleException, NoOpenCoreException, SolrServerException, NoCurrentCaseException { try { currentCoreLock.writeLock().lock(); if (null == currentCollection) { throw new NoOpenCoreException(); } - currentCollection.extractAllTermsForDataSource(dataSourceId); + currentCollection.extractAllTermsForDataSource(settings, progressPanel); } finally { currentCoreLock.writeLock().unlock(); } @@ -2206,54 +2206,18 @@ public class Server { queryClient.deleteByQuery(deleteQuery); } - private void extractAllTermsForDataSource(Long dsObjId) throws IOException, SolrServerException, NoCurrentCaseException, KeywordSearchModuleException { - String dataSourceId = Long.toString(dsObjId); + @NbBundle.Messages({ + "ExtractAllTermsReport.numberExtractedTerms=Extracted {0} terms..." + }) + private void extractAllTermsForDataSource(GeneralReportSettings settings, ReportProgressPanel progressPanel) throws IOException, SolrServerException, NoCurrentCaseException, KeywordSearchModuleException { - /* ELTODO int numTerms = 400000; - int termStep = 1000; - - SolrQuery query = new SolrQuery(); - query.setRequestHandler("/terms"); - query.setTerms(true); - query.setTermsLimit(numTerms); - query.setTermsSortString("index"); - query.addTermsField("text"); - query.setTermsMinCount(0); - - query.addFilterQuery("image_id:" + dataSourceId); - - QueryRequest request = new QueryRequest(query); - TermsResponse response = request.process(queryClient).getTermsResponse(); - List terms = response.getTerms("text"); - - if (terms == null || terms.isEmpty()) { - logger.log(Level.WARNING, "No unique terms/words returned for data source ID: " + dataSourceId); //NON-NLS - return; - } - - //Term term = terms.get(0); - //String word = term.getTerm(); - //long frequency = term.getFrequency(); - - // Write the server data to a file - Case currentCase = Case.getCurrentCaseThrows(); - File caseDirectoryPath = new File(currentCase.getOutputDirectory()); - Path serverFile = Paths.get(caseDirectoryPath.toString(), "terms_"+numTerms+"_whole.txt"); //NON-NLS - Files.deleteIfExists(serverFile); - - List listTerms = terms.stream().map(Term::getTerm).collect(Collectors.toList()); - - OpenOption[] options = new OpenOption[] { java.nio.file.StandardOpenOption.CREATE, java.nio.file.StandardOpenOption.APPEND }; - Files.write(serverFile, listTerms, options);*/ - - // step through the terms - Case currentCase = Case.getCurrentCaseThrows(); - File caseDirectoryPath = new File(currentCase.getOutputDirectory()); - Path serverFileIterated = Paths.get(caseDirectoryPath.toString(), "Unique Words from Data Source " + dataSourceId + ".txt"); //NON-NLS + // step through the terms + Path serverFileIterated = Paths.get(settings.getReportDirectoryPath(), "Unique Words.txt"); //NON-NLS Files.deleteIfExists(serverFileIterated); OpenOption[] options = new OpenOption[] { java.nio.file.StandardOpenOption.CREATE, java.nio.file.StandardOpenOption.APPEND }; int termStep = 1000; + long numExtractedTerms = 0; String firstTerm = ""; while (true) { SolrQuery query = new SolrQuery(); @@ -2263,8 +2227,8 @@ public class Server { query.setTermsLower(firstTerm); query.setTermsLowerInclusive(false); - // returned terms sorted by "index" order, which is the fastest way. Per Solr documentation: - // " Retrieving terms in index order is very fast since the implementation directly uses Lucene’s TermEnum to iterate over the term dictionary." + // Returned terms sorted by "index" order, which is the fastest way. Per Solr documentation: + // "Retrieving terms in index order is very fast since the implementation directly uses Lucene’s TermEnum to iterate over the term dictionary." // All other sort criteria return very inconsistent and overlapping resuts. query.setTermsSortString("index"); @@ -2272,13 +2236,16 @@ public class Server { query.addTermsField(Server.Schema.TEXT.toString()); query.setTermsMinCount(0); - query.addFilterQuery(Server.Schema.IMAGE_ID.toString() + ":" + dataSourceId); + // Unfortunatelly Solr "terms queries" do not support any filtering so we can't filter by data source this way. + // query.addFilterQuery(Server.Schema.IMAGE_ID.toString() + ":" + dataSourceId); QueryRequest request = new QueryRequest(query); TermsResponse response = request.process(queryClient).getTermsResponse(); List terms = response.getTerms(Server.Schema.TEXT.toString()); if (terms == null || terms.isEmpty()) { + numExtractedTerms += terms.size(); + progressPanel.updateStatusLabel(Bundle.ExtractAllTermsReport_numberExtractedTerms(numExtractedTerms)); break; } @@ -2287,6 +2254,9 @@ public class Server { List listTerms = terms.stream().map(Term::getTerm).collect(Collectors.toList()); Files.write(serverFileIterated, listTerms, options); + + numExtractedTerms += termStep; + progressPanel.updateStatusLabel(Bundle.ExtractAllTermsReport_numberExtractedTerms(numExtractedTerms)); } } @@ -2325,7 +2295,6 @@ public class Server { * * @throws KeywordSearchModuleException */ - // ELTODO DECIDE ON SYNCHRONIZATION private void sendBufferedDocs(List docBuffer) throws KeywordSearchModuleException { if (docBuffer.isEmpty()) { diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.form b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.form deleted file mode 100755 index c398b11e0a..0000000000 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.form +++ /dev/null @@ -1,120 +0,0 @@ - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.java deleted file mode 100755 index 52908682cc..0000000000 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/TermsExtractionDialog.java +++ /dev/null @@ -1,393 +0,0 @@ -/* - * Autopsy Forensic Browser - * - * Copyright 2021 Basis Technology Corp. - * Contact: carrier sleuthkit org - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.sleuthkit.autopsy.keywordsearch; - -import java.awt.Cursor; -import java.awt.EventQueue; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.io.File; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import javax.swing.DefaultListModel; -import javax.swing.ListSelectionModel; -import javax.swing.event.ListSelectionEvent; -import org.openide.util.Exceptions; -import org.openide.util.NbBundle; -import org.openide.windows.WindowManager; -import org.sleuthkit.autopsy.casemodule.Case; -import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; -import org.sleuthkit.autopsy.coreutils.Logger; -import org.sleuthkit.autopsy.ingest.IngestManager; -import org.sleuthkit.datamodel.DataSource; -import org.sleuthkit.datamodel.TskCoreException; - -/** - * Viewer panel widget for keyword lists that is used in the ingest config and - * options area. - */ -@SuppressWarnings("PMD.SingularField") // UI widgets cause lots of false positives -@NbBundle.Messages({ - "TermsExtractionDialog.dialogErrorHeader=Error Extracting Unique Words"}) -class TermsExtractionDialog extends javax.swing.JDialog { - - private static final Logger logger = Logger.getLogger(TermsExtractionDialog.class.getName()); - - // ELTODO - private final String errorDialogHeader = Bundle.TermsExtractionDialog_dialogErrorHeader(); - private static TermsExtractionDialog instance; - private ActionListener searchAddListener; - private boolean ingestRunning; - private final Map dataSourceMap = new HashMap<>(); - private List dataSources = new ArrayList<>(); - private final DefaultListModel dataSourceListModel = new DefaultListModel<>(); - - /** - * Creates new form TermsExtractionPanel - */ - private TermsExtractionDialog() { - initComponents(); - customizeComponents(); - dataSourceList.setModel(getDataSourceListModel()); - - dataSourceList.addListSelectionListener((ListSelectionEvent evt) -> { - firePropertyChange(Bundle.TermsExtractionPanel_selected(), null, null); // ELTODO - }); - } - - static synchronized TermsExtractionDialog getDefault() { - if (instance == null) { - instance = new TermsExtractionDialog(); - } - return instance; - } - - /** - * Display the Search Other Cases dialog. - */ - void display() { - updateComponents(); - this.setLocationRelativeTo(WindowManager.getDefault().getMainWindow()); - setVisible(true); - } - - private void customizeComponents() { - - ingestRunning = IngestManager.getInstance().isIngestRunning(); - updateComponents(); - - IngestManager.getInstance().addIngestJobEventListener(new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - Object source = evt.getSource(); - if (source instanceof String && ((String) source).equals("LOCAL")) { //NON-NLS - EventQueue.invokeLater(() -> { - ingestRunning = IngestManager.getInstance().isIngestRunning(); - updateComponents(); - }); - } - } - }); - - searchAddListener = new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (ingestRunning) { -// ELTODO IngestSearchRunner.getInstance().addKeywordListsToAllJobs(listsTableModel.getSelectedLists()); - logger.log(Level.INFO, "Ingest is running"); //NON-NLS - } else { - searchAction(e); - } - } - }; - - extractTermsButton.addActionListener(searchAddListener); - } - - @NbBundle.Messages({ - "TermsExtractionDialog.unableToGetDataSources.error=Unable to populate list of data sources"}) - private void updateComponents() { - statusLabel.setText(""); - ingestRunning = IngestManager.getInstance().isIngestRunning(); - - try { - updateDataSourceListModel(); - } catch (NoCurrentCaseException | TskCoreException ex) { - statusLabel.setText(Bundle.TermsExtractionDialog_unableToGetDataSources_error()); - logger.log(Level.SEVERE, "Unable to populate list of data sources", ex); //NON-NLS - } - } - - /** - * Get a list of data source display names. - * - * @return The list of data source name - */ - synchronized List getDataSourceArray() { - List dsList = new ArrayList<>(); - Collections.sort(this.dataSources, (DataSource ds1, DataSource ds2) -> ds1.getName().compareTo(ds2.getName())); - for (DataSource ds : dataSources) { - String dsName = ds.getName(); - File dataSourceFullName = new File(dsName); - String displayName = dataSourceFullName.getName(); - dataSourceMap.put(ds.getId(), displayName); - dsList.add(displayName); - } - return dsList; - } - - /** - * Set dataSources - * @param dataSources A list of DataSource - */ - synchronized void setDataSources(List dataSources) { - this.dataSources = dataSources; - } - - /** - * Get dataSourceMap with object id and data source display name. - * - * @return The list of data source name - */ - Map getDataSourceMap() { - return dataSourceMap; - } - - /** - * Get a list of DataSourceListModel - * @return A list of DataSourceListModel - */ - final DefaultListModel getDataSourceListModel() { - return dataSourceListModel; - } - - /** - * This method is called from within the constructor to initialize the form. - * WARNING: Do NOT modify this code. The content of this method is always - * regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - - extractTermsButton = new javax.swing.JButton(); - jScrollPane1 = new javax.swing.JScrollPane(); - dataSourceList = new javax.swing.JList<>(); - selectDataSourceLabel = new javax.swing.JLabel(); - statusLabel = new javax.swing.JLabel(); - - setSize(new java.awt.Dimension(500, 200)); - - extractTermsButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/keywordsearch/search-icon.png"))); // NOI18N - extractTermsButton.setText(org.openide.util.NbBundle.getMessage(TermsExtractionDialog.class, "KeywordSearchListsViewerPanel.searchAddButton.text")); // NOI18N - extractTermsButton.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - extractTermsButtonActionPerformed(evt); - } - }); - - dataSourceList.setMinimumSize(new java.awt.Dimension(0, 200)); - jScrollPane1.setViewportView(dataSourceList); - - selectDataSourceLabel.setFont(selectDataSourceLabel.getFont().deriveFont(selectDataSourceLabel.getFont().getSize()-1f)); - selectDataSourceLabel.setText(org.openide.util.NbBundle.getMessage(TermsExtractionDialog.class, "TermsExtractionDialog.selectDataSourceLabel.text")); // NOI18N - - statusLabel.setFont(statusLabel.getFont().deriveFont(statusLabel.getFont().getSize()-1f)); - statusLabel.setText(org.openide.util.NbBundle.getMessage(TermsExtractionDialog.class, "TermsExtractionDialog.statusLabel.text")); // NOI18N - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addComponent(extractTermsButton) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(statusLabel)) - .addComponent(selectDataSourceLabel)) - .addGap(0, 0, Short.MAX_VALUE)) - .addGroup(layout.createSequentialGroup() - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 358, Short.MAX_VALUE) - .addContainerGap()) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGap(15, 15, 15) - .addComponent(selectDataSourceLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 13, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, 18) - .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(extractTermsButton) - .addComponent(statusLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 13, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(20, Short.MAX_VALUE)) - ); - }// //GEN-END:initComponents - - private void extractTermsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_extractTermsButtonActionPerformed - }//GEN-LAST:event_extractTermsButtonActionPerformed - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JList dataSourceList; - private javax.swing.JButton extractTermsButton; - private javax.swing.JScrollPane jScrollPane1; - private javax.swing.JLabel selectDataSourceLabel; - private javax.swing.JLabel statusLabel; - // End of variables declaration//GEN-END:variables - - private void searchAction(ActionEvent e) { - setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - - try { - search(); - } finally { - setCursor(null); - } - } - - /** - * Performs the search using the selected keywords. Creates a - * DataResultTopComponent with the results. - * - * @param saveResults Flag whether to save search results as KWS artifacts. - */ - @NbBundle.Messages({ - "TermsExtractionDialog.search.noFilesInIdxMsg=No files are in index yet.
    Try again later. Index is updated every {0} minutes.", - "TermsExtractionDialog.search.noFilesInIdxMsg2=No files are in index yet.
    Try again later", - "TermsExtractionDialog.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress", - "TermsExtractionDialog.search.ingestInProgressBody=Keyword Search Ingest is currently running.
    Not all files have been indexed and this search might yield incomplete results.
    Do you want to proceed with this search anyway?", - "TermsExtractionDialog.startExport=Starting Unique Word Export", - "TermsExtractionDialog.export.error=Error During Unique Word Export", - "TermsExtractionDialog.exportComplete=Unique Word Export Complete" - }) - void search() { - boolean isIngestRunning = IngestManager.getInstance().isIngestRunning(); - - int filesIndexed = 0; - try { // see if another node added any indexed files - filesIndexed = KeywordSearch.getServer().queryNumIndexedFiles(); - } catch (KeywordSearchModuleException | NoOpenCoreException ignored) { - } - - if (filesIndexed == 0) { - if (isIngestRunning) { - KeywordSearchUtil.displayDialog(errorDialogHeader, - Bundle.TermsExtractionDialog_search_noFilesInIdxMsg(KeywordSearchSettings.getUpdateFrequency().getTime()), - KeywordSearchUtil.DIALOG_MESSAGE_TYPE.ERROR); - } else { - KeywordSearchUtil.displayDialog(errorDialogHeader, Bundle.TermsExtractionDialog_search_noFilesInIdxMsg2(), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.ERROR); - } - return; - } - - //check if keyword search module ingest is running (indexing, etc) - if (isIngestRunning) { - if (KeywordSearchUtil.displayConfirmDialog(Bundle.TermsExtractionDialog_search_searchIngestInProgressTitle(), - Bundle.TermsExtractionDialog_search_ingestInProgressBody(), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.WARN) == false) { - return; - } - } - - final Server server = KeywordSearch.getServer(); - Set selectedDs = getDataSourcesSelected(); - try { - statusLabel.setText(Bundle.TermsExtractionDialog_startExport()); - server.extractAllTermsForDataSource(selectedDs.iterator().next()); //ELTODO check if not empty - } catch (Exception ex) { - statusLabel.setText(Bundle.TermsExtractionDialog_export_error()); - Exceptions.printStackTrace(ex); - } - statusLabel.setText(Bundle.TermsExtractionDialog_exportComplete()); - } - - void addSearchButtonActionListener(ActionListener al) { - extractTermsButton.addActionListener(al); - } - - /** - * Get a set of data source object ids that are selected. - * @return A set of selected object ids. - */ - Set getDataSourcesSelected() { - Set dataSourceObjIdSet = new HashSet<>(); - for (Long key : getDataSourceMap().keySet()) { - String value = getDataSourceMap().get(key); - for (String dataSource : this.dataSourceList.getSelectedValuesList()) { - if (value.equals(dataSource)) { - dataSourceObjIdSet.add(key); - } - } - } - return dataSourceObjIdSet; - } - - /** - * Update the dataSourceListModel - */ - @NbBundle.Messages({"TermsExtractionPanel.selected=Data source filter is selected"}) - void updateDataSourceListModel() throws NoCurrentCaseException, TskCoreException { - dataSources = getDataSourceList(); - getDataSourceListModel().removeAllElements(); - for (String dsName : getDataSourceArray()) { - getDataSourceListModel().addElement(dsName); - } - setComponentsEnabled(); - firePropertyChange(Bundle.TermsExtractionPanel_selected(), null, null); // ELTODO - } - - /** - * Get a list of DataSource from case database - * @return A list of DataSource - * @throws NoCurrentCaseException - * @throws TskCoreException - */ - private synchronized List getDataSourceList() throws NoCurrentCaseException, TskCoreException { - Case openCase = Case.getCurrentCaseThrows(); - return openCase.getSleuthkitCase().getDataSources(); - } - - /** - * Set the dataSourceList enabled if there are data sources to select - */ - private void setComponentsEnabled() { - - this.dataSourceList.setEnabled(false); - extractTermsButton.setEnabled(false); - if (getDataSourceListModel().size() > 1) { - this.dataSourceList.setEnabled(true); - this.dataSourceList.setSelectionInterval(0, this.dataSourceList.getModel().getSize()-1); - dataSourceList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // do not allow multiselect - extractTermsButton.setEnabled(true); - } else if (getDataSourceListModel().size() == 1) { - this.dataSourceList.setEnabled(false); - this.dataSourceList.setSelectionInterval(0, 0); - extractTermsButton.setEnabled(true); - } - } -} diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/layer.xml b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/layer.xml index bde41b641f..8effaba623 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/layer.xml +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/layer.xml @@ -7,6 +7,10 @@ ====================================================== --> + + + + From d5864739d615550b1f30d6cedfff295a93af0ba0 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Mon, 22 Feb 2021 13:57:41 -0500 Subject: [PATCH 18/69] fix persons api --- .../datamodel/AutopsyTreeChildFactory.java | 11 +-- .../sleuthkit/autopsy/datamodel/HostNode.java | 38 +++++++++- .../autopsy/datamodel/PersonGroupingNode.java | 69 +++++-------------- 3 files changed, 57 insertions(+), 61 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java index f3ff2766ff..9bf93e3a72 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java @@ -35,10 +35,8 @@ import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.CasePreferences; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; -import org.sleuthkit.autopsy.datamodel.PersonGroupingNode.Person; -import org.sleuthkit.autopsy.datamodel.PersonGroupingNode.PersonManager; -import org.sleuthkit.datamodel.Host; -import org.sleuthkit.datamodel.Host.HostStatus; +import org.sleuthkit.datamodel.Person; +import org.sleuthkit.datamodel.PersonManager; import org.sleuthkit.datamodel.SleuthkitCase; import org.sleuthkit.datamodel.SleuthkitVisitableItem; import org.sleuthkit.datamodel.TskCoreException; @@ -88,10 +86,7 @@ public final class AutopsyTreeChildFactory extends ChildFactory.Detachable persons = new HashSet<>(); //personManager.getPersons(); + List persons = tskCase.getPersonManager().getPersons(); // show persons level if there are persons to be shown if (!CollectionUtils.isEmpty(persons)) { persons.stream() diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java index 2fee291117..b886f12237 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java @@ -20,12 +20,14 @@ package org.sleuthkit.autopsy.datamodel; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.util.Arrays; +import java.util.ArrayList; import java.util.Collections; import java.util.EnumSet; import java.util.List; import java.util.function.Function; import java.util.logging.Level; +import javax.swing.Action; +import static org.jdom2.filter.Filters.content; import org.openide.nodes.ChildFactory; import org.openide.nodes.Children; @@ -35,8 +37,15 @@ import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.DeleteDataSourceAction; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.datasourcesummary.ui.ViewSummaryInformationAction; +import org.sleuthkit.autopsy.directorytree.ExplorerNodeActionVisitor; +import org.sleuthkit.autopsy.directorytree.FileSearchAction; +import org.sleuthkit.autopsy.directorytree.NewWindowViewAction; +import org.sleuthkit.autopsy.ingest.runIngestModuleWizard.RunIngestModulesAction; +import org.sleuthkit.datamodel.Content; import org.sleuthkit.datamodel.DataSource; import org.sleuthkit.datamodel.Host; import org.sleuthkit.datamodel.SleuthkitVisitableItem; @@ -230,4 +239,31 @@ public class HostNode extends DisplayableItemNode { return sheet; } + + /** + * Right click action for this node + * + * @param context + * + * @return + */ + @Override + @Messages({"HostNode_actions_associateWithExisting=Associate with existing person...", + "HostNode_actions_associateWithNew=Associate with new person...", + "# {0} - hostName", + "HostNode_actions_removeFromPerson=Remove from person ({0})"}) + public Action[] getActions(boolean context) { + +// List actionsList = new ArrayList<>(); +// for (Action a : super.getActions(true)) { +// actionsList.add(a); +// } +// actionsList.addAll(ExplorerNodeActionVisitor.getActions(content)); +// actionsList.add(new FileSearchAction(Bundle.ImageNode_getActions_openFileSearchByAttr_text())); +// actionsList.add(new ViewSummaryInformationAction(content.getId())); +// actionsList.add(new RunIngestModulesAction(Collections.singletonList(content))); +// actionsList.add(new NewWindowViewAction(NbBundle.getMessage(this.getClass(), "ImageNode.getActions.viewInNewWin.text"), this)); +// actionsList.add(new DeleteDataSourceAction(content.getId())); +// return actionsList.toArray(new Action[0]); + } } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java index 7918a84a79..7f77b46caa 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java @@ -23,7 +23,6 @@ import java.beans.PropertyChangeListener; import java.util.Collections; import java.util.EnumSet; import java.util.List; -import java.util.Set; import java.util.logging.Level; import org.openide.nodes.ChildFactory; import org.openide.nodes.Children; @@ -33,6 +32,7 @@ import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.Host; +import org.sleuthkit.datamodel.Person; import org.sleuthkit.datamodel.TskCoreException; /** @@ -42,38 +42,6 @@ import org.sleuthkit.datamodel.TskCoreException; @NbBundle.Messages(value = {"PersonNode_unknownPersonNode_title=Unknown Persons"}) public class PersonGroupingNode extends DisplayableItemNode { - // stub class until this goes into TSK datamodel. - static class PersonManager { - - Set getPersons() throws TskCoreException { - return Collections.emptySet(); - } - - private Set getHostsForPerson(Person person) throws TskCoreException { - return Collections.emptySet(); - } - } - - // stub class until this goes into TSK datamodel. - static class Person { - - private final String name; - private final long id; - - public Person(long id, String name) { - this.id = id; - this.name = name; - } - - public String getName() { - return name; - } - - public long getId() { - return id; - } - } - private static final String ICON_PATH = "org/sleuthkit/autopsy/images/person.png"; /** @@ -126,22 +94,20 @@ public class PersonGroupingNode extends DisplayableItemNode { @Override protected boolean createKeys(List toPopulate) { - Set hosts = null; - try { - hosts = new PersonManager().getHostsForPerson(person); - // NOTE: This code will be used when person manager exists - // hosts = Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getHostsForPerson(person); - } catch (TskCoreException ex) { - String personName = person == null || person.getName() == null ? "" : person.getName(); - logger.log(Level.WARNING, String.format("Unable to get data sources for host: %s", personName), ex); + List hosts = Collections.emptyList(); + if (this.person != null) { + try { + hosts = Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getHostsForPerson(this.person); + } catch (TskCoreException ex) { + String personName = person == null || person.getName() == null ? "" : person.getName(); + logger.log(Level.WARNING, String.format("Unable to get data sources for host: %s", personName), ex); + } } - if (hosts != null) { - hosts.stream() - .map(HostGrouping::new) - .sorted() - .forEach(toPopulate::add); - } + hosts.stream() + .map(HostGrouping::new) + .sorted() + .forEach(toPopulate::add); return true; } @@ -178,11 +144,10 @@ public class PersonGroupingNode extends DisplayableItemNode { public T accept(DisplayableItemNodeVisitor visitor) { return visitor.visit(this); } - + @NbBundle.Messages({ - "PersonGroupingNode_createSheet_nameProperty=Name", - }) - @Override + "PersonGroupingNode_createSheet_nameProperty=Name",}) + @Override protected Sheet createSheet() { Sheet sheet = Sheet.createDefault(); Sheet.Set sheetSet = sheet.get(Sheet.PROPERTIES); @@ -192,7 +157,7 @@ public class PersonGroupingNode extends DisplayableItemNode { } sheetSet.put(new NodeProperty<>("Name", Bundle.PersonGroupingNode_createSheet_nameProperty(), "", getDisplayName())); //NON-NLS - + return sheet; } } From 1e8149fc84101439f66de80152d8aa5e62cbec49 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Mon, 22 Feb 2021 15:04:12 -0500 Subject: [PATCH 19/69] working through nodes --- .../sleuthkit/autopsy/datamodel/HostNode.java | 50 ++++++++----------- .../autopsy/datamodel/PersonGroupingNode.java | 21 ++++++++ 2 files changed, 43 insertions(+), 28 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java index b886f12237..2505e8fd82 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java @@ -20,14 +20,12 @@ package org.sleuthkit.autopsy.datamodel; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.util.ArrayList; -import java.util.Collections; import java.util.EnumSet; import java.util.List; +import java.util.Optional; import java.util.function.Function; import java.util.logging.Level; import javax.swing.Action; -import static org.jdom2.filter.Filters.content; import org.openide.nodes.ChildFactory; import org.openide.nodes.Children; @@ -37,17 +35,11 @@ import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; -import org.sleuthkit.autopsy.casemodule.DeleteDataSourceAction; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; -import org.sleuthkit.autopsy.datasourcesummary.ui.ViewSummaryInformationAction; -import org.sleuthkit.autopsy.directorytree.ExplorerNodeActionVisitor; -import org.sleuthkit.autopsy.directorytree.FileSearchAction; -import org.sleuthkit.autopsy.directorytree.NewWindowViewAction; -import org.sleuthkit.autopsy.ingest.runIngestModuleWizard.RunIngestModulesAction; -import org.sleuthkit.datamodel.Content; import org.sleuthkit.datamodel.DataSource; import org.sleuthkit.datamodel.Host; +import org.sleuthkit.datamodel.Person; import org.sleuthkit.datamodel.SleuthkitVisitableItem; import org.sleuthkit.datamodel.TskCoreException; @@ -142,6 +134,7 @@ public class HostNode extends DisplayableItemNode { } } + private static final Logger logger = Logger.getLogger(HostNode.class.getName()); private static final String ICON_PATH = "org/sleuthkit/autopsy/images/host.png"; private static final CreateSleuthkitNodeVisitor CREATE_TSK_NODE_VISITOR = new CreateSleuthkitNodeVisitor(); @@ -240,13 +233,6 @@ public class HostNode extends DisplayableItemNode { return sheet; } - /** - * Right click action for this node - * - * @param context - * - * @return - */ @Override @Messages({"HostNode_actions_associateWithExisting=Associate with existing person...", "HostNode_actions_associateWithNew=Associate with new person...", @@ -254,16 +240,24 @@ public class HostNode extends DisplayableItemNode { "HostNode_actions_removeFromPerson=Remove from person ({0})"}) public Action[] getActions(boolean context) { -// List actionsList = new ArrayList<>(); -// for (Action a : super.getActions(true)) { -// actionsList.add(a); -// } -// actionsList.addAll(ExplorerNodeActionVisitor.getActions(content)); -// actionsList.add(new FileSearchAction(Bundle.ImageNode_getActions_openFileSearchByAttr_text())); -// actionsList.add(new ViewSummaryInformationAction(content.getId())); -// actionsList.add(new RunIngestModulesAction(Collections.singletonList(content))); -// actionsList.add(new NewWindowViewAction(NbBundle.getMessage(this.getClass(), "ImageNode.getActions.viewInNewWin.text"), this)); -// actionsList.add(new DeleteDataSourceAction(content.getId())); -// return actionsList.toArray(new Action[0]); + Optional parent = Optional.empty(); + + if (this.host != null) { + try { + Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getPerson(this.host); + } catch (NoCurrentCaseException | TskCoreException ex) { + logger.log(Level.WARNING, String.format("Error fetching parent person of host: %s", this.host.getName() == null ? "" : this.host.getName()), ex); + return new Action[0]; + } + } + + if (parent.isPresent()) { + return new Action[]{new RemoveParentPersonAction(this.host, parent.get())}; + } else { + return new Action[]{ + new AssociatePersonAction(this.host), + new AssociateNewPersonAction(this.host) + }; + } } } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java index 7f77b46caa..01035eeff6 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java @@ -23,13 +23,17 @@ import java.beans.PropertyChangeListener; import java.util.Collections; import java.util.EnumSet; import java.util.List; +import java.util.Optional; import java.util.logging.Level; +import javax.swing.Action; import org.openide.nodes.ChildFactory; import org.openide.nodes.Children; import org.openide.nodes.Sheet; import org.openide.util.NbBundle; +import org.openide.util.NbBundle.Messages; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.Host; import org.sleuthkit.datamodel.Person; @@ -112,6 +116,8 @@ public class PersonGroupingNode extends DisplayableItemNode { return true; } } + + private final Person person; /** * Main constructor. @@ -128,6 +134,7 @@ public class PersonGroupingNode extends DisplayableItemNode { super.setName(safeName); super.setDisplayName(safeName); this.setIconBaseWithExtension(ICON_PATH); + this.person = person; } @Override @@ -160,4 +167,18 @@ public class PersonGroupingNode extends DisplayableItemNode { return sheet; } + + @Override + @Messages({"PersonGroupingNode_actions_rename=Rename Person...", + "PersonGroupingNode_actions_delete=Delete Person"}) + public Action[] getActions(boolean context) { + if (this.person == null) { + return new Action[0]; + } else { + return new Action[]{ + new RenamePersonAction(this.person), + new DeletePersonAction(this.person) + }; + } + } } From b337acccdfa536741028cbbcf4fac94b7d4c6e9a Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Mon, 22 Feb 2021 15:59:53 -0500 Subject: [PATCH 20/69] working through menu items --- .../sleuthkit/autopsy/datamodel/HostNode.java | 3 + .../persons/AddEditPersonDialog.form | 117 ++++++++ .../persons/AddEditPersonDialog.java | 253 ++++++++++++++++++ .../datamodel/persons/Bundle.properties | 7 + .../persons/Bundle.properties-MERGED | 4 + 5 files changed, 384 insertions(+) create mode 100644 Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.form create mode 100644 Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.java create mode 100644 Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties create mode 100644 Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties-MERGED diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java index 2505e8fd82..b1811fe252 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java @@ -37,6 +37,9 @@ import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.datamodel.hosts.AssociateNewPersonAction; +import org.sleuthkit.autopsy.datamodel.hosts.AssociatePersonAction; +import org.sleuthkit.autopsy.datamodel.hosts.RemoveParentPersonAction; import org.sleuthkit.datamodel.DataSource; import org.sleuthkit.datamodel.Host; import org.sleuthkit.datamodel.Person; diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.form b/Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.form new file mode 100644 index 0000000000..e1991c46c3 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.form @@ -0,0 +1,117 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.java b/Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.java new file mode 100644 index 0000000000..f811fde29c --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.java @@ -0,0 +1,253 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.datamodel.persons; + +import java.awt.Color; +import org.sleuthkit.datamodel.Person; +import java.util.Collection; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import javax.swing.event.DocumentEvent; +import javax.swing.event.DocumentListener; +import org.openide.util.NbBundle.Messages; + +/** + * + * Dialog for adding or editing a person. + */ +class AddEditPersonDialog extends javax.swing.JDialog { + + private static final long serialVersionUID = 1L; + + private boolean changed = false; + + private final Set personNamesUpper; + private final Person initialPerson; + + /** + * Main constructor. + * @param parent The parent frame for this dialog. + * @param currentPersons The current set of persons in the case. + */ + AddEditPersonDialog(java.awt.Frame parent, Collection currentPersons) { + this(parent, currentPersons, null); + } + + /** + * Main constructor. + * + * @param parent The parent frame for this dialog. + * @param currentPersons The current set of persons (used for determining if + * name is unique). + * @param initialPerson If adding a new person, this will be a null value. + * Otherwise, if editing, this will be the person being edited. + */ + @Messages({ + "AddEditPersonDialog_addPerson_title=Add Person", + "AddEditPersonDialog_editPerson_title=Edit Person" + }) + AddEditPersonDialog(java.awt.Frame parent, Collection currentPersons, Person initialPerson) { + super(parent, true); + this.initialPerson = initialPerson; + setTitle(initialPerson == null ? Bundle.AddEditPersonDialog_addPerson_title() : Bundle.AddEditPersonDialog_editPerson_title()); + + Stream curPersonStream = (currentPersons == null) ? Stream.empty() : currentPersons.stream(); + personNamesUpper = curPersonStream + .filter(h -> h != null && h.getName() != null) + .map(h -> h.getName().toUpperCase()) + .collect(Collectors.toSet()); + + initComponents(); + onNameUpdate(initialPerson == null ? null : initialPerson.getName()); + + // initially, don't show validation message (for empty strings or repeat), + // but do disable ok button if not valid. + validationLabel.setText(""); + + inputTextField.getDocument().addDocumentListener(new DocumentListener() { + @Override + public void changedUpdate(DocumentEvent e) { + onNameUpdate(inputTextField.getText()); + } + + @Override + public void removeUpdate(DocumentEvent e) { + onNameUpdate(inputTextField.getText()); + } + + @Override + public void insertUpdate(DocumentEvent e) { + onNameUpdate(inputTextField.getText()); + } + }); + } + + /** + * @return The string value for the name in the input field if Ok pressed or + * null if not. + */ + String getValue() { + return inputTextField.getText(); + } + + /** + * @return Whether or not the value has been changed and the user pressed + * okay to save the new value. + */ + boolean isChanged() { + return changed; + } + + /** + * When the text field is updated, this method is called. + * + * @param newNameValue + */ + private void onNameUpdate(String newNameValue) { + String newNameValueOrEmpty = newNameValue == null ? "" : newNameValue; + // update input text field if it is not the same. + if (!newNameValueOrEmpty.equals(this.inputTextField.getText())) { + inputTextField.setText(newNameValue); + } + + // validate text input against invariants setting validation + // message and whether or not okay button is enabled accordingly. + String validationMessage = getValidationMessage(newNameValue); + okButton.setEnabled(validationMessage == null); + validationLabel.setText(validationMessage == null ? "" : validationMessage); + } + + /** + * Gets the validation message based on the current text checked against the + * person names. + * + * @param name The current name in the text field. + * @return The validation message if the name is not valid or null. + */ + @Messages({ + "AddEditPersonDialog_getValidationMessage_onEmpty=Please provide some text for the person name.", + "AddEditPersonDialog_getValidationMessage_sameAsOriginal=Please provide a new name for this person.", + "AddEditPersonDialog_getValidationMessage_onDuplicate=Another person already has the same name. Please choose a different name.",}) + private String getValidationMessage(String name) { + if (name == null || name.isEmpty()) { + return Bundle.AddEditPersonDialog_getValidationMessage_onEmpty(); + } else if (initialPerson != null && name.equalsIgnoreCase(initialPerson.getName())) { + return Bundle.AddEditPersonDialog_getValidationMessage_sameAsOriginal(); + } else if (personNamesUpper.contains(name.toUpperCase())) { + return Bundle.AddEditPersonDialog_getValidationMessage_onDuplicate(); + } else { + return null; + } + } + + /** + * This method is called from within the constructor to initialize the form. + * WARNING: Do NOT modify this code. The content of this method is always + * regenerated by the Form Editor. + */ + @SuppressWarnings("unchecked") + // //GEN-BEGIN:initComponents + private void initComponents() { + + inputTextField = new javax.swing.JTextField(); + javax.swing.JLabel nameLabel = new javax.swing.JLabel(); + validationLabel = new javax.swing.JLabel(); + okButton = new javax.swing.JButton(); + javax.swing.JButton cancelButton = new javax.swing.JButton(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + + inputTextField.setText(org.openide.util.NbBundle.getMessage(AddEditPersonDialog.class, "AddEditPersonDialog.inputTextField.text")); // NOI18N + + nameLabel.setText(org.openide.util.NbBundle.getMessage(AddEditPersonDialog.class, "AddEditPersonDialog.nameLabel.text")); // NOI18N + + validationLabel.setForeground(Color.RED); + validationLabel.setVerticalAlignment(javax.swing.SwingConstants.TOP); + + okButton.setText(org.openide.util.NbBundle.getMessage(AddEditPersonDialog.class, "AddEditPersonDialog.okButton.text")); // NOI18N + okButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + okButtonActionPerformed(evt); + } + }); + + cancelButton.setText(org.openide.util.NbBundle.getMessage(AddEditPersonDialog.class, "AddEditPersonDialog.cancelButton.text")); // NOI18N + cancelButton.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cancelButtonActionPerformed(evt); + } + }); + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(validationLabel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(inputTextField) + .addGroup(layout.createSequentialGroup() + .addComponent(nameLabel) + .addGap(0, 0, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() + .addGap(0, 288, Short.MAX_VALUE) + .addComponent(okButton) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cancelButton))) + .addContainerGap()) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(nameLabel) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(inputTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(validationLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(cancelButton) + .addComponent(okButton)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + pack(); + }// //GEN-END:initComponents + + private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed + this.changed = true; + dispose(); + }//GEN-LAST:event_okButtonActionPerformed + + + private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed + this.changed = false; + dispose(); + }//GEN-LAST:event_cancelButtonActionPerformed + + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JTextField inputTextField; + private javax.swing.JButton okButton; + private javax.swing.JLabel validationLabel; + // End of variables declaration//GEN-END:variables +} diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties b/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties new file mode 100644 index 0000000000..f586998704 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties @@ -0,0 +1,7 @@ +# To change this license header, choose License Headers in Project Properties. +# To change this template file, choose Tools | Templates +# and open the template in the editor. +AddEditPersonDialog.cancelButton.text=Cancel +AddEditPersonDialog.okButton.text=OK +AddEditPersonDialog.nameLabel.text=Name: +AddEditPersonDialog.inputTextField.text= diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties-MERGED new file mode 100644 index 0000000000..df6d5f78b2 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties-MERGED @@ -0,0 +1,4 @@ +AddEditPersonDialog.cancelButton.text=Cancel +AddEditPersonDialog.okButton.text=OK +AddEditPersonDialog.nameLabel.text=Name: +AddEditPersonDialog.inputTextField.text=jTextField1 From f0b5fc617dcc7abcb7f7f8b503c6cc6e6aa4a19f Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Mon, 22 Feb 2021 16:00:04 -0500 Subject: [PATCH 21/69] working through menu items --- .../hosts/AssociateNewPersonAction.java | 105 ++++++++++++++++++ .../hosts/AssociatePersonAction.java | 83 ++++++++++++++ .../hosts/RemoveParentPersonAction.java | 79 +++++++++++++ .../datamodel/persons/DeletePersonAction.java | 78 +++++++++++++ 4 files changed, 345 insertions(+) create mode 100644 Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java create mode 100644 Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java create mode 100644 Core/src/org/sleuthkit/autopsy/datamodel/hosts/RemoveParentPersonAction.java create mode 100644 Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java new file mode 100644 index 0000000000..246c6ca110 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java @@ -0,0 +1,105 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.datamodel.hosts; + +import java.awt.Frame; +import java.awt.event.ActionEvent; +import java.util.logging.Level; +import javax.swing.AbstractAction; +import javax.swing.JOptionPane; +import org.apache.commons.lang.StringUtils; +import org.openide.util.NbBundle.Messages; +import org.openide.windows.WindowManager; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.autopsy.casemodule.TskCoreException; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.datamodel.Host; +import org.sleuthkit.datamodel.Person; + +/** + * Allows someone to associate a new person with a parentless host. + */ +@Messages({ + "AssociateNewPersonAction_menuTitle=New...", + "AssociateNewPersonAction_onError_title=Error While Associating New Person", + "# {0} - hostName", + "# {1} - personName", + "AssociateNewPersonAction_onError_description=There was an error while associating host {0} with new person {1}."}) +public class AssociateNewPersonAction extends AbstractAction { + + private static final Logger logger = Logger.getLogger(AssociateNewPersonAction.class.getName()); + + private final Host host; + + /** + * Main constructor. + * + * @param host The host to be associated with new person. + */ + public AssociateNewPersonAction(Host host) { + super(Bundle.RemoveParentPersonAction_menuTitle()); + this.host = host; + } + + @Override + public void actionPerformed(ActionEvent e) { + String newPersonName = getAddEditDialogName(); + if (StringUtils.isNotBlank(newPersonName)) { + try { + + Person person = Case.getCurrentCaseThrows.getSleuthkitCase().getPersonManager().createPerson(newPersonName); + Case.getCurrentCaseThrows().getSleuthkitCase().getHostManager().setPerson(host, person); + + } catch (NoCurrentCaseException | TskCoreException ex) { + String hostName = this.host == null || this.host.getName() == null ? "" : this.host.getName(); + logger.log(Level.WARNING, String.format("Unable to remove parent from host: %s", hostName), ex); + + JOptionPane.showMessageDialog( + WindowManager.getDefault().getMainWindow(), + Bundle.AssociateNewPersonAction_onError_description(hostName, newPersonName), + Bundle.AssociateNewPersonAction_onError_title(), + JOptionPane.WARNING_MESSAGE); + } + } + } + + private String getAddEditDialogName() { + Frame parent = WindowManager.getDefault().getMainWindow(); + + AddEditPersonDialog addEditDialog + = new AddEditPersonDialog( + parent, + hostChildrenMap.keySet(), + null); + + addEditDialog.setResizable(false); + addEditDialog.setLocationRelativeTo(parent); + addEditDialog.setVisible(true); + addEditDialog.toFront(); + + if (addEditDialog.isChanged()) { + String newHostName = addEditDialog.getValue(); + return newHostName; + } + + return null; + } + +} diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java new file mode 100644 index 0000000000..99dcdefd9b --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java @@ -0,0 +1,83 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.datamodel.hosts; + +import java.awt.event.ActionEvent; +import java.util.logging.Level; +import javax.swing.AbstractAction; +import javax.swing.JOptionPane; +import org.openide.util.NbBundle.Messages; +import org.openide.windows.WindowManager; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.autopsy.casemodule.TskCoreException; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.datamodel.Host; +import org.sleuthkit.datamodel.Person; + +/** + * Removes the parent person from the specified host. + */ +@Messages({ + "# {0} - personName", + "RemoveParentPersonAction_menuTitle=Remove from Person ({0})", + "RemoveParentPersonAction_unknownPerson=Unknown Person", + "RemoveParentPersonAction_onError_title=Error Removing Host from Person", + "# {0} - hostName", + "RemoveParentPersonAction_onError_description=There was an error removing person from host: {0}.",}) +public class AssociatePersonAction extends AbstractAction { + + private static final Logger logger = Logger.getLogger(AssociatePersonAction.class.getName()); + + private final Host host; + + /** + * Main constructor. + * + * @param host The host that will become parentless. + * @param person The person to be removed as a parent from the host. + */ + public AssociatePersonAction(Host host) { + super(Bundle.RemoveParentPersonAction_menuTitle( + person == null || person.getName() == null + ? Bundle.RemoveParentPersonAction_unknownPerson() : person.getName())); + this.host = host; + } + + public AssociatePersonAction(Host host) { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void actionPerformed(ActionEvent e) { + try { + Case.getCurrentCaseThrows().getSleuthkitCase().getHostManager().setPerson(host, null); + } catch (NoCurrentCaseException | TskCoreException ex) { + String hostName = this.host == null || this.host.getName() == null ? "" : this.host.getName(); + logger.log(Level.WARNING, String.format("Unable to remove parent from host: %s", hostName), ex); + + JOptionPane.showMessageDialog( + WindowManager.getDefault().getMainWindow(), + Bundle.RemoveParentPersonAction_onError_description(hostName), + Bundle.RemoveParentPersonAction_onError_title(), + JOptionPane.WARNING_MESSAGE); + } + } + +} diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/RemoveParentPersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/RemoveParentPersonAction.java new file mode 100644 index 0000000000..47fbe6207e --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/RemoveParentPersonAction.java @@ -0,0 +1,79 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.datamodel.hosts; + +import java.awt.event.ActionEvent; +import java.util.logging.Level; +import javax.swing.AbstractAction; +import javax.swing.JOptionPane; +import org.openide.util.NbBundle.Messages; +import org.openide.windows.WindowManager; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.autopsy.casemodule.TskCoreException; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.datamodel.Host; +import org.sleuthkit.datamodel.Person; + +/** + * Removes the parent person from the specified host. + */ +@Messages({ + "# {0} - personName", + "RemoveParentPersonAction_menuTitle=Remove from Person ({0})", + "RemoveParentPersonAction_unknownPerson=Unknown Person", + "RemoveParentPersonAction_onError_title=Error Removing Host from Person", + "# {0} - hostName", + "RemoveParentPersonAction_onError_description=There was an error removing person from host: {0}.",}) +public class RemoveParentPersonAction extends AbstractAction { + + private static final Logger logger = Logger.getLogger(RemoveParentPersonAction.class.getName()); + + private final Host host; + + /** + * Main constructor. + * + * @param host The host that will become parentless. + * @param person The person to be removed as a parent from the host. + */ + public RemoveParentPersonAction(Host host, Person person) { + super(Bundle.RemoveParentPersonAction_menuTitle( + person == null || person.getName() == null + ? Bundle.RemoveParentPersonAction_unknownPerson() : person.getName())); + this.host = host; + } + + @Override + public void actionPerformed(ActionEvent e) { + try { + Case.getCurrentCaseThrows().getSleuthkitCase().getHostManager().setPerson(host, null); + } catch (NoCurrentCaseException | TskCoreException ex) { + String hostName = this.host == null || this.host.getName() == null ? "" : this.host.getName(); + logger.log(Level.WARNING, String.format("Unable to remove parent from host: %s", hostName), ex); + + JOptionPane.showMessageDialog( + WindowManager.getDefault().getMainWindow(), + Bundle.RemoveParentPersonAction_onError_description(hostName), + Bundle.RemoveParentPersonAction_onError_title(), + JOptionPane.WARNING_MESSAGE); + } + } + +} diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java new file mode 100644 index 0000000000..9a06bd7a64 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java @@ -0,0 +1,78 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.datamodel.persons; + +import java.awt.event.ActionEvent; +import java.util.logging.Level; +import javax.swing.AbstractAction; +import javax.swing.JOptionPane; +import org.openide.util.NbBundle.Messages; +import org.openide.windows.WindowManager; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.autopsy.casemodule.TskCoreException; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.datamodel.Host; +import org.sleuthkit.datamodel.Person; + +/** + * Removes person from case. + */ +@Messages({ + "# {0} - personName", + "DeletePersonAction_menuTitle=Delete Person", + "DeletePersonAction_onError_title=Error Removing Host from Person", + "# {0} - hostName", + "RemoveParentPersonAction_onError_description=There was an error removing person from host: {0}.",}) +public class DeletePersonAction extends AbstractAction { + + private static final Logger logger = Logger.getLogger(DeletePersonAction.class.getName()); + + private final Person person; + + /** + * Main constructor. + * + * @param person The person to be removed. + */ + public DeletePersonAction(Person person) { + super(Bundle.DeletePersonAction_menuTitle()); + this.person = person; + } + + @Override + public void actionPerformed(ActionEvent e) { + if (person != null && person.getName() != null) { + try { + Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().deletePerson(person.getName()); + } catch (NoCurrentCaseException | TskCoreException ex) { + String hostName = this.host == null || this.host.getName() == null ? "" : this.host.getName(); + logger.log(Level.WARNING, String.format("Unable to remove parent from host: %s", hostName), ex); + + JOptionPane.showMessageDialog( + WindowManager.getDefault().getMainWindow(), + Bundle.RemoveParentPersonAction_onError_description(hostName), + Bundle.RemoveParentPersonAction_onError_title(), + JOptionPane.WARNING_MESSAGE); + } + } + + } + +} From 8350f72553751f397dafa9e71d4d44f46f2c4ddd Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Mon, 22 Feb 2021 17:30:28 -0500 Subject: [PATCH 22/69] Fixed a path issue that was affecting 32-bit Solr --- KeywordSearch/solr/bin/autopsy-solr.cmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/KeywordSearch/solr/bin/autopsy-solr.cmd b/KeywordSearch/solr/bin/autopsy-solr.cmd index 018a626694..37dbc22a03 100755 --- a/KeywordSearch/solr/bin/autopsy-solr.cmd +++ b/KeywordSearch/solr/bin/autopsy-solr.cmd @@ -62,7 +62,7 @@ IF NOT DEFINED SOLR_SSL_ENABLED ( ) IF "%SOLR_SSL_ENABLED%"=="true" ( - set "SOLR_JETTY_CONFIG=--lib="%DEFAULT_SERVER_DIR%\solr-webapp\webapp\WEB-INF\lib\*"" + set "SOLR_JETTY_CONFIG=--lib='%DEFAULT_SERVER_DIR%\solr-webapp\webapp\WEB-INF\lib\*'" if !JAVA_MAJOR_VERSION! GEQ 9 ( set "SOLR_JETTY_CONFIG=!SOLR_JETTY_CONFIG! --module=https" ) else ( From 4de8f7b0b964911121969f8c35727a004bc9161f Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Mon, 22 Feb 2021 20:43:39 -0500 Subject: [PATCH 23/69] menu items present --- .../datamodel/Bundle.properties-MERGED | 8 +- .../sleuthkit/autopsy/datamodel/HostNode.java | 28 +++-- .../autopsy/datamodel/PersonGrouping.java | 2 +- .../autopsy/datamodel/PersonGroupingNode.java | 5 +- .../datamodel/hosts/AddEditHostDialog.java | 2 - .../hosts/AssociateNewPersonAction.java | 40 +++---- .../hosts/AssociatePersonAction.java | 31 +++--- .../datamodel/hosts/Bundle.properties-MERGED | 18 ++++ .../hosts/RemoveParentPersonAction.java | 3 +- .../persons/AddEditPersonDialog.form | 8 +- .../persons/AddEditPersonDialog.java | 57 +++------- .../datamodel/persons/Bundle.properties | 4 + .../persons/Bundle.properties-MERGED | 22 +++- .../datamodel/persons/DeletePersonAction.java | 19 ++-- .../persons/PersonNameValidator.java | 81 ++++++++++++++ .../datamodel/persons/RenamePersonAction.java | 101 ++++++++++++++++++ 16 files changed, 324 insertions(+), 105 deletions(-) create mode 100644 Core/src/org/sleuthkit/autopsy/datamodel/persons/PersonNameValidator.java create mode 100644 Core/src/org/sleuthkit/autopsy/datamodel/persons/RenamePersonAction.java diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED index d4ff918e9a..6d7a1dc7ff 100755 --- a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED @@ -124,6 +124,10 @@ FileTypesByMimeTypeNode.createSheet.mediaType.name=Type GetSCOTask.occurrences.defaultDescription=No correlation properties found GetSCOTask.occurrences.multipleProperties=Multiple different correlation properties exist for this result HostGroupingNode_unknownHostNode_title=Unknown Host +HostNode_actions_associateWithExisting=Associate with existing person... +HostNode_actions_associateWithNew=Associate with new person... +# {0} - hostName +HostNode_actions_removeFromPerson=Remove from person ({0}) HostNode_createSheet_nameProperty=Name ImageNode.action.runIngestMods.text=Run Ingest Modules ImageNode.createSheet.deviceId.desc=Device ID of the image @@ -303,7 +307,6 @@ OpenReportAction.actionPerformed.NoAssociatedEditorMessage=There is no associate OpenReportAction.actionPerformed.NoOpenInEditorSupportMessage=This platform (operating system) does not support opening a file in an editor this way. OpenReportAction.actionPerformed.MissingReportFileMessage=The report file no longer exists. OpenReportAction.actionPerformed.ReportFileOpenPermissionDeniedMessage=Permission to open the report file was denied. -PersonGroupingNode_createSheet_nameProperty=Name OsAccount_listNode_name=OS Accounts OsAccounts_accountNameProperty_desc=Os Account name OsAccounts_accountNameProperty_displayName=Name @@ -317,6 +320,9 @@ OsAccounts_createdTimeProperty_name=creationTime OsAccounts_loginNameProperty_desc=Os Account login name OsAccounts_loginNameProperty_displayName=Login Name OsAccounts_loginNameProperty_name=loginName +PersonGroupingNode_actions_delete=Delete Person +PersonGroupingNode_actions_rename=Rename Person... +PersonGroupingNode_createSheet_nameProperty=Name PersonNode_unknownPersonNode_title=Unknown Persons PoolNode.createSheet.name.desc=no description PoolNode.createSheet.name.displayName=Name diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java index b1811fe252..b2f2f4b636 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java @@ -20,11 +20,13 @@ package org.sleuthkit.autopsy.datamodel; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.util.Collections; import java.util.EnumSet; import java.util.List; import java.util.Optional; import java.util.function.Function; import java.util.logging.Level; +import java.util.stream.Stream; import javax.swing.Action; import org.openide.nodes.ChildFactory; @@ -252,15 +254,25 @@ public class HostNode extends DisplayableItemNode { logger.log(Level.WARNING, String.format("Error fetching parent person of host: %s", this.host.getName() == null ? "" : this.host.getName()), ex); return new Action[0]; } - } - if (parent.isPresent()) { - return new Action[]{new RemoveParentPersonAction(this.host, parent.get())}; - } else { - return new Action[]{ - new AssociatePersonAction(this.host), - new AssociateNewPersonAction(this.host) - }; + if (parent.isPresent()) { + return new Action[]{new RemoveParentPersonAction(this.host, parent.get())}; + } else { + List existingPersons = Collections.emptyList(); + try { + existingPersons = Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getPersons(); + } catch (NoCurrentCaseException | TskCoreException ex) { + logger.log(Level.WARNING, "Error getting persons for case.", ex); + } + + Stream personActionsStream = existingPersons.stream() + .map((p) -> new AssociatePersonAction(this.host, p)); + + return Stream.concat( + Stream.of(new AssociateNewPersonAction(this.host), null), personActionsStream) + .toArray(Action[]::new); + } } + return new Action[0]; } } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGrouping.java b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGrouping.java index 1a0a96ce48..d606d288f1 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGrouping.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGrouping.java @@ -19,7 +19,7 @@ package org.sleuthkit.autopsy.datamodel; import java.util.Objects; -import org.sleuthkit.autopsy.datamodel.PersonGroupingNode.Person; +import org.sleuthkit.datamodel.Person; /** * A top level UI grouping of hosts under a person. diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java index 01035eeff6..bfa3242751 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java @@ -23,7 +23,6 @@ import java.beans.PropertyChangeListener; import java.util.Collections; import java.util.EnumSet; import java.util.List; -import java.util.Optional; import java.util.logging.Level; import javax.swing.Action; import org.openide.nodes.ChildFactory; @@ -35,6 +34,8 @@ import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.datamodel.persons.DeletePersonAction; +import org.sleuthkit.autopsy.datamodel.persons.RenamePersonAction; import org.sleuthkit.datamodel.Host; import org.sleuthkit.datamodel.Person; import org.sleuthkit.datamodel.TskCoreException; @@ -102,7 +103,7 @@ public class PersonGroupingNode extends DisplayableItemNode { if (this.person != null) { try { hosts = Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getHostsForPerson(this.person); - } catch (TskCoreException ex) { + } catch (NoCurrentCaseException | TskCoreException ex) { String personName = person == null || person.getName() == null ? "" : person.getName(); logger.log(Level.WARNING, String.format("Unable to get data sources for host: %s", personName), ex); } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AddEditHostDialog.java b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AddEditHostDialog.java index 4a02edc69a..c2a5446925 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AddEditHostDialog.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AddEditHostDialog.java @@ -22,8 +22,6 @@ import java.awt.Color; import org.sleuthkit.datamodel.Host; import java.util.Collection; import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import org.openide.util.NbBundle.Messages; diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java index 246c6ca110..c39649d1ae 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java @@ -28,10 +28,12 @@ import org.openide.util.NbBundle.Messages; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; -import org.sleuthkit.autopsy.casemodule.TskCoreException; +import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.datamodel.persons.AddEditPersonDialog; import org.sleuthkit.datamodel.Host; import org.sleuthkit.datamodel.Person; +import org.sleuthkit.datamodel.TskCoreException; /** * Allows someone to associate a new person with a parentless host. @@ -54,39 +56,39 @@ public class AssociateNewPersonAction extends AbstractAction { * @param host The host to be associated with new person. */ public AssociateNewPersonAction(Host host) { - super(Bundle.RemoveParentPersonAction_menuTitle()); + super(Bundle.AssociateNewPersonAction_menuTitle()); this.host = host; } @Override public void actionPerformed(ActionEvent e) { - String newPersonName = getAddEditDialogName(); - if (StringUtils.isNotBlank(newPersonName)) { - try { - - Person person = Case.getCurrentCaseThrows.getSleuthkitCase().getPersonManager().createPerson(newPersonName); + String newPersonName = ""; + try { + newPersonName = getAddDialogName(); + if (StringUtils.isNotBlank(newPersonName)) { + Person person = Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().createPerson(newPersonName); Case.getCurrentCaseThrows().getSleuthkitCase().getHostManager().setPerson(host, person); - - } catch (NoCurrentCaseException | TskCoreException ex) { - String hostName = this.host == null || this.host.getName() == null ? "" : this.host.getName(); - logger.log(Level.WARNING, String.format("Unable to remove parent from host: %s", hostName), ex); - - JOptionPane.showMessageDialog( - WindowManager.getDefault().getMainWindow(), - Bundle.AssociateNewPersonAction_onError_description(hostName, newPersonName), - Bundle.AssociateNewPersonAction_onError_title(), - JOptionPane.WARNING_MESSAGE); } + } catch (NoCurrentCaseException | TskCoreException ex) { + String hostName = this.host == null || this.host.getName() == null ? "" : this.host.getName(); + logger.log(Level.WARNING, String.format("Unable to remove parent from host: %s", hostName), ex); + + JOptionPane.showMessageDialog( + WindowManager.getDefault().getMainWindow(), + Bundle.AssociateNewPersonAction_onError_description(hostName, newPersonName), + Bundle.AssociateNewPersonAction_onError_title(), + JOptionPane.WARNING_MESSAGE); } + } - private String getAddEditDialogName() { + private String getAddDialogName() throws NoCurrentCaseException, TskCoreException { Frame parent = WindowManager.getDefault().getMainWindow(); AddEditPersonDialog addEditDialog = new AddEditPersonDialog( parent, - hostChildrenMap.keySet(), + Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getPersons(), null); addEditDialog.setResizable(false); diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java index 99dcdefd9b..9846f34501 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java @@ -26,26 +26,29 @@ import org.openide.util.NbBundle.Messages; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; -import org.sleuthkit.autopsy.casemodule.TskCoreException; +import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.Host; import org.sleuthkit.datamodel.Person; +import org.sleuthkit.datamodel.TskCoreException; /** - * Removes the parent person from the specified host. + * Associate a host with a particular (existing) person. */ @Messages({ "# {0} - personName", - "RemoveParentPersonAction_menuTitle=Remove from Person ({0})", - "RemoveParentPersonAction_unknownPerson=Unknown Person", - "RemoveParentPersonAction_onError_title=Error Removing Host from Person", + "AssociatePersonAction_menuTitle=Associate with {0}", + "AssociatePersonAction_unknownPerson=Unknown Person", + "AssociatePersonAction_onError_title=Error Associating Host with Person", "# {0} - hostName", - "RemoveParentPersonAction_onError_description=There was an error removing person from host: {0}.",}) + "# {1} - personName", + "AssociatePersonAction_onError_description=There was an error associating host {0} with person {1}.",}) public class AssociatePersonAction extends AbstractAction { private static final Logger logger = Logger.getLogger(AssociatePersonAction.class.getName()); private final Host host; + private final Person person; /** * Main constructor. @@ -53,29 +56,27 @@ public class AssociatePersonAction extends AbstractAction { * @param host The host that will become parentless. * @param person The person to be removed as a parent from the host. */ - public AssociatePersonAction(Host host) { + public AssociatePersonAction(Host host, Person person) { super(Bundle.RemoveParentPersonAction_menuTitle( person == null || person.getName() == null ? Bundle.RemoveParentPersonAction_unknownPerson() : person.getName())); this.host = host; - } - - public AssociatePersonAction(Host host) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + this.person = person; } @Override public void actionPerformed(ActionEvent e) { try { - Case.getCurrentCaseThrows().getSleuthkitCase().getHostManager().setPerson(host, null); + Case.getCurrentCaseThrows().getSleuthkitCase().getHostManager().setPerson(host, person); } catch (NoCurrentCaseException | TskCoreException ex) { String hostName = this.host == null || this.host.getName() == null ? "" : this.host.getName(); - logger.log(Level.WARNING, String.format("Unable to remove parent from host: %s", hostName), ex); + String personName = this.person == null || this.person.getName() == null ? "" : this.person.getName(); + logger.log(Level.WARNING, String.format("Unable to remove parent from host: %s with person: %s", hostName, personName), ex); JOptionPane.showMessageDialog( WindowManager.getDefault().getMainWindow(), - Bundle.RemoveParentPersonAction_onError_description(hostName), - Bundle.RemoveParentPersonAction_onError_title(), + Bundle.AssociatePersonAction_onError_description(hostName, personName), + Bundle.AssociatePersonAction_onError_title(), JOptionPane.WARNING_MESSAGE); } } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED index 22dc1165b3..d75e7e0d52 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED @@ -1,5 +1,17 @@ AddEditHostDialog_addHost_title=Add Host AddEditHostDialog_editHost_title=Edit Host +AssociateNewPersonAction_menuTitle=New... +# {0} - hostName +# {1} - personName +AssociateNewPersonAction_onError_description=There was an error while associating host {0} with new person {1}. +AssociateNewPersonAction_onError_title=Error While Associating New Person +# {0} - personName +AssociatePersonAction_menuTitle=Associate with {0} +# {0} - hostName +# {1} - personName +AssociatePersonAction_onError_description=There was an error associating host {0} with person {1}. +AssociatePersonAction_onError_title=Error Associating Host with Person +AssociatePersonAction_unknownPerson=Unknown Person CTL_OpenHosts=Manage Hosts HostNameValidator_getValidationMessage_onDuplicate=Another host already has the same name. Please choose a different name. HostNameValidator_getValidationMessage_onEmpty=Please provide some text for the host name. @@ -21,3 +33,9 @@ AddEditHostDialog.cancelButton.text=Cancel AddEditHostDialog.inputTextField.text=jTextField1 ManageHostsDialog_title_text=Manage Hosts OpenHostsAction_displayName=Hosts +# {0} - personName +RemoveParentPersonAction_menuTitle=Remove from Person ({0}) +# {0} - hostName +RemoveParentPersonAction_onError_description=There was an error removing person from host: {0}. +RemoveParentPersonAction_onError_title=Error Removing Host from Person +RemoveParentPersonAction_unknownPerson=Unknown Person diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/RemoveParentPersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/RemoveParentPersonAction.java index 47fbe6207e..e12990e5d7 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/RemoveParentPersonAction.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/RemoveParentPersonAction.java @@ -26,10 +26,11 @@ import org.openide.util.NbBundle.Messages; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; -import org.sleuthkit.autopsy.casemodule.TskCoreException; +import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.Host; import org.sleuthkit.datamodel.Person; +import org.sleuthkit.datamodel.TskCoreException; /** * Removes the parent person from the specified host. diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.form b/Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.form index e1991c46c3..edca61bcca 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.form +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.form @@ -66,14 +66,14 @@ - + - + @@ -92,7 +92,7 @@ - + @@ -102,7 +102,7 @@ - + diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.java b/Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.java index f811fde29c..d5040585f0 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/AddEditPersonDialog.java @@ -22,8 +22,6 @@ import java.awt.Color; import org.sleuthkit.datamodel.Person; import java.util.Collection; import java.util.Set; -import java.util.stream.Collectors; -import java.util.stream.Stream; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import org.openide.util.NbBundle.Messages; @@ -32,21 +30,23 @@ import org.openide.util.NbBundle.Messages; * * Dialog for adding or editing a person. */ -class AddEditPersonDialog extends javax.swing.JDialog { +public class AddEditPersonDialog extends javax.swing.JDialog { private static final long serialVersionUID = 1L; private boolean changed = false; - private final Set personNamesUpper; + // person names to upper and trimmed + private final Set personNamesSanitized; private final Person initialPerson; /** * Main constructor. + * * @param parent The parent frame for this dialog. * @param currentPersons The current set of persons in the case. */ - AddEditPersonDialog(java.awt.Frame parent, Collection currentPersons) { + public AddEditPersonDialog(java.awt.Frame parent, Collection currentPersons) { this(parent, currentPersons, null); } @@ -63,16 +63,12 @@ class AddEditPersonDialog extends javax.swing.JDialog { "AddEditPersonDialog_addPerson_title=Add Person", "AddEditPersonDialog_editPerson_title=Edit Person" }) - AddEditPersonDialog(java.awt.Frame parent, Collection currentPersons, Person initialPerson) { + public AddEditPersonDialog(java.awt.Frame parent, Collection currentPersons, Person initialPerson) { super(parent, true); this.initialPerson = initialPerson; setTitle(initialPerson == null ? Bundle.AddEditPersonDialog_addPerson_title() : Bundle.AddEditPersonDialog_editPerson_title()); - Stream curPersonStream = (currentPersons == null) ? Stream.empty() : currentPersons.stream(); - personNamesUpper = curPersonStream - .filter(h -> h != null && h.getName() != null) - .map(h -> h.getName().toUpperCase()) - .collect(Collectors.toSet()); + personNamesSanitized = PersonNameValidator.getSanitizedPersonNames(currentPersons); initComponents(); onNameUpdate(initialPerson == null ? null : initialPerson.getName()); @@ -103,7 +99,7 @@ class AddEditPersonDialog extends javax.swing.JDialog { * @return The string value for the name in the input field if Ok pressed or * null if not. */ - String getValue() { + public String getValue() { return inputTextField.getText(); } @@ -111,7 +107,7 @@ class AddEditPersonDialog extends javax.swing.JDialog { * @return Whether or not the value has been changed and the user pressed * okay to save the new value. */ - boolean isChanged() { + public boolean isChanged() { return changed; } @@ -129,34 +125,13 @@ class AddEditPersonDialog extends javax.swing.JDialog { // validate text input against invariants setting validation // message and whether or not okay button is enabled accordingly. - String validationMessage = getValidationMessage(newNameValue); + String validationMessage = PersonNameValidator.getValidationMessage( + newNameValue, initialPerson == null ? null : initialPerson.getName(), personNamesSanitized); + okButton.setEnabled(validationMessage == null); validationLabel.setText(validationMessage == null ? "" : validationMessage); } - /** - * Gets the validation message based on the current text checked against the - * person names. - * - * @param name The current name in the text field. - * @return The validation message if the name is not valid or null. - */ - @Messages({ - "AddEditPersonDialog_getValidationMessage_onEmpty=Please provide some text for the person name.", - "AddEditPersonDialog_getValidationMessage_sameAsOriginal=Please provide a new name for this person.", - "AddEditPersonDialog_getValidationMessage_onDuplicate=Another person already has the same name. Please choose a different name.",}) - private String getValidationMessage(String name) { - if (name == null || name.isEmpty()) { - return Bundle.AddEditPersonDialog_getValidationMessage_onEmpty(); - } else if (initialPerson != null && name.equalsIgnoreCase(initialPerson.getName())) { - return Bundle.AddEditPersonDialog_getValidationMessage_sameAsOriginal(); - } else if (personNamesUpper.contains(name.toUpperCase())) { - return Bundle.AddEditPersonDialog_getValidationMessage_onDuplicate(); - } else { - return null; - } - } - /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always @@ -174,21 +149,21 @@ class AddEditPersonDialog extends javax.swing.JDialog { setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); - inputTextField.setText(org.openide.util.NbBundle.getMessage(AddEditPersonDialog.class, "AddEditPersonDialog.inputTextField.text")); // NOI18N + inputTextField.setText(org.openide.util.NbBundle.getMessage(AddEditPersonDialog.class, "AddEditPersonDialog.inputTextField.text_1")); // NOI18N - nameLabel.setText(org.openide.util.NbBundle.getMessage(AddEditPersonDialog.class, "AddEditPersonDialog.nameLabel.text")); // NOI18N + nameLabel.setText(org.openide.util.NbBundle.getMessage(AddEditPersonDialog.class, "AddEditPersonDialog.nameLabel.text_1")); // NOI18N validationLabel.setForeground(Color.RED); validationLabel.setVerticalAlignment(javax.swing.SwingConstants.TOP); - okButton.setText(org.openide.util.NbBundle.getMessage(AddEditPersonDialog.class, "AddEditPersonDialog.okButton.text")); // NOI18N + okButton.setText(org.openide.util.NbBundle.getMessage(AddEditPersonDialog.class, "AddEditPersonDialog.okButton.text_1")); // NOI18N okButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { okButtonActionPerformed(evt); } }); - cancelButton.setText(org.openide.util.NbBundle.getMessage(AddEditPersonDialog.class, "AddEditPersonDialog.cancelButton.text")); // NOI18N + cancelButton.setText(org.openide.util.NbBundle.getMessage(AddEditPersonDialog.class, "AddEditPersonDialog.cancelButton.text_1")); // NOI18N cancelButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelButtonActionPerformed(evt); diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties b/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties index f586998704..9312ed7732 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties @@ -5,3 +5,7 @@ AddEditPersonDialog.cancelButton.text=Cancel AddEditPersonDialog.okButton.text=OK AddEditPersonDialog.nameLabel.text=Name: AddEditPersonDialog.inputTextField.text= +AddEditPersonDialog.inputTextField.text_1=jTextField1 +AddEditPersonDialog.cancelButton.text_1=Cancel +AddEditPersonDialog.okButton.text_1=OK +AddEditPersonDialog.nameLabel.text_1=Name: diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties-MERGED index df6d5f78b2..75e2acbbfe 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties-MERGED @@ -1,4 +1,24 @@ +# To change this license header, choose License Headers in Project Properties. +# To change this template file, choose Tools | Templates +# and open the template in the editor. AddEditPersonDialog.cancelButton.text=Cancel AddEditPersonDialog.okButton.text=OK AddEditPersonDialog.nameLabel.text=Name: -AddEditPersonDialog.inputTextField.text=jTextField1 +AddEditPersonDialog.inputTextField.text= +AddEditPersonDialog.inputTextField.text_1=jTextField1 +AddEditPersonDialog.cancelButton.text_1=Cancel +AddEditPersonDialog.okButton.text_1=OK +AddEditPersonDialog.nameLabel.text_1=Name: +AddEditPersonDialog_addPerson_title=Add Person +AddEditPersonDialog_editPerson_title=Edit Person +DeletePersonAction_menuTitle=Delete Person +# {0} - personName +DeletePersonAction_onError_description=There was an error removing person: {0}. +DeletePersonAction_onError_title=Error Delete Host from Person +PersonNameValidator_getValidationMessage_onDuplicate=Another person already has the same name. Please choose a different name. +PersonNameValidator_getValidationMessage_onEmpty=Please provide some text for the person name. +PersonNameValidator_getValidationMessage_sameAsOriginal=Please provide a new name for this person. +RenamePersonAction_menuTitle=Rename Person... +# {0} - personName +RenamePersonAction_onError_description=There was an error renaming person: {0}. +RenamePersonAction_onError_title=Error Renaming Person diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java index 9a06bd7a64..d3b8325599 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java @@ -26,7 +26,7 @@ import org.openide.util.NbBundle.Messages; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; -import org.sleuthkit.autopsy.casemodule.TskCoreException; +import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.Host; import org.sleuthkit.datamodel.Person; @@ -35,11 +35,10 @@ import org.sleuthkit.datamodel.Person; * Removes person from case. */ @Messages({ - "# {0} - personName", "DeletePersonAction_menuTitle=Delete Person", - "DeletePersonAction_onError_title=Error Removing Host from Person", - "# {0} - hostName", - "RemoveParentPersonAction_onError_description=There was an error removing person from host: {0}.",}) + "DeletePersonAction_onError_title=Error Delete Host from Person", + "# {0} - personName", + "DeletePersonAction_onError_description=There was an error removing person: {0}.",}) public class DeletePersonAction extends AbstractAction { private static final Logger logger = Logger.getLogger(DeletePersonAction.class.getName()); @@ -49,7 +48,7 @@ public class DeletePersonAction extends AbstractAction { /** * Main constructor. * - * @param person The person to be removed. + * @param person The person to be deleted. */ public DeletePersonAction(Person person) { super(Bundle.DeletePersonAction_menuTitle()); @@ -62,13 +61,13 @@ public class DeletePersonAction extends AbstractAction { try { Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().deletePerson(person.getName()); } catch (NoCurrentCaseException | TskCoreException ex) { - String hostName = this.host == null || this.host.getName() == null ? "" : this.host.getName(); - logger.log(Level.WARNING, String.format("Unable to remove parent from host: %s", hostName), ex); + String personName = this.person == null || this.person.getName() == null ? "" : this.person.getName(); + logger.log(Level.WARNING, String.format("Unable to remove parent from host: %s", personName), ex); JOptionPane.showMessageDialog( WindowManager.getDefault().getMainWindow(), - Bundle.RemoveParentPersonAction_onError_description(hostName), - Bundle.RemoveParentPersonAction_onError_title(), + Bundle.DeletePersonAction_onError_description(personName), + Bundle.DeletePersonAction_onError_title(), JOptionPane.WARNING_MESSAGE); } } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/PersonNameValidator.java b/Core/src/org/sleuthkit/autopsy/datamodel/persons/PersonNameValidator.java new file mode 100644 index 0000000000..60ee786c40 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/PersonNameValidator.java @@ -0,0 +1,81 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.datamodel.persons; + +import java.util.Collection; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import org.apache.commons.lang3.StringUtils; +import org.openide.util.NbBundle; +import org.sleuthkit.datamodel.Person; + +/** + * Provides methods for validating person names. + */ +public class PersonNameValidator { + + /** + * Gets the validation message based on the current text checked against the + * person names. + * + * @param curName The current name to be validated. + * @param initialName If editing a name, the initial name of the person. + * Otherwise, null can be provided for this parameter. + * @param currentPersonsTrimmedUpper The current person names. This set should + * be sanitized to upper case and trimmed. + * @return The validation message if the name is not valid or null. + */ + @NbBundle.Messages({ + "PersonNameValidator_getValidationMessage_onEmpty=Please provide some text for the person name.", + "PersonNameValidator_getValidationMessage_sameAsOriginal=Please provide a new name for this person.", + "PersonNameValidator_getValidationMessage_onDuplicate=Another person already has the same name. Please choose a different name.",}) + public static String getValidationMessage(String curName, String initialName, Set currentPersonsTrimmedUpper) { + + if (StringUtils.isBlank(curName)) { + return Bundle.PersonNameValidator_getValidationMessage_onEmpty(); + } + + if (StringUtils.equalsIgnoreCase(initialName, curName)) { + return Bundle.PersonNameValidator_getValidationMessage_sameAsOriginal(); + } + + if (currentPersonsTrimmedUpper.contains(curName.trim().toUpperCase())) { + return Bundle.PersonNameValidator_getValidationMessage_onDuplicate(); + } + + return null; + } + + /** + * Generates a list of person names trimmed and to upper case that can be used + * with getValidationMessage. + * + * @param persons The persons. + * @return The set of person names trimmed and to upper case. + */ + public static Set getSanitizedPersonNames(Collection persons) { + Stream personsStream = persons != null ? persons.stream() : Stream.empty(); + return personsStream + .map(h -> h == null ? null : h.getName()) + .filter(hName -> StringUtils.isNotBlank(hName)) + .map(hName -> hName.trim().toUpperCase()) + .collect(Collectors.toSet()); + } +} diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/RenamePersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/persons/RenamePersonAction.java new file mode 100644 index 0000000000..a6f99c6c54 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/RenamePersonAction.java @@ -0,0 +1,101 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.datamodel.persons; + +import java.awt.Frame; +import java.awt.event.ActionEvent; +import java.util.logging.Level; +import javax.swing.AbstractAction; +import javax.swing.JOptionPane; +import org.openide.util.NbBundle.Messages; +import org.openide.windows.WindowManager; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.datamodel.TskCoreException; +import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.datamodel.Person; + +/** + * Rename the specified person. + */ +@Messages({ + "RenamePersonAction_menuTitle=Rename Person...", + "RenamePersonAction_onError_title=Error Renaming Person", + "# {0} - personName", + "RenamePersonAction_onError_description=There was an error renaming person: {0}.",}) +public class RenamePersonAction extends AbstractAction { + + private static final Logger logger = Logger.getLogger(RenamePersonAction.class.getName()); + + private final Person person; + + /** + * Main constructor. + * + * @param person The person to be renamed. + */ + public RenamePersonAction(Person person) { + super(Bundle.RenamePersonAction_menuTitle()); + this.person = person; + } + + + @Override + public void actionPerformed(ActionEvent e) { + try { + String newPersonName = getEditedPersonName(person); + if (newPersonName != null) { + person.setName(newPersonName); + } + Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().updatePerson(person); + } catch (NoCurrentCaseException | TskCoreException ex) { + String personName = this.person == null || this.person.getName() == null ? "" : this.person.getName(); + logger.log(Level.WARNING, String.format("Unable to update person: %s", personName), ex); + + JOptionPane.showMessageDialog( + WindowManager.getDefault().getMainWindow(), + Bundle.RenamePersonAction_onError_description(personName), + Bundle.RenamePersonAction_onError_title(), + JOptionPane.WARNING_MESSAGE); + } + } + + private String getEditedPersonName(Person person) throws NoCurrentCaseException, TskCoreException { + Frame parent = WindowManager.getDefault().getMainWindow(); + + AddEditPersonDialog addEditDialog + = new AddEditPersonDialog( + parent, + Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getPersons(), + person); + + addEditDialog.setResizable(false); + addEditDialog.setLocationRelativeTo(parent); + addEditDialog.setVisible(true); + addEditDialog.toFront(); + + if (addEditDialog.isChanged()) { + String newHostName = addEditDialog.getValue(); + return newHostName; + } + + return null; + } + +} From bab174f325df66e8ad877f897a987e3a15f544c9 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 23 Feb 2021 09:42:03 -0500 Subject: [PATCH 24/69] fixes --- .../sleuthkit/autopsy/datamodel/HostNode.java | 2 +- .../hosts/AssociateNewPersonAction.java | 2 +- .../datamodel/hosts/Bundle.properties-MERGED | 2 +- .../datamodel/persons/DeletePersonAction.java | 20 +++++++++++++++++++ .../DirectoryTreeFilterNode.java | 6 +++--- 5 files changed, 26 insertions(+), 6 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java index b2f2f4b636..e5e51f68c9 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java @@ -249,7 +249,7 @@ public class HostNode extends DisplayableItemNode { if (this.host != null) { try { - Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getPerson(this.host); + parent = Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getPerson(this.host); } catch (NoCurrentCaseException | TskCoreException ex) { logger.log(Level.WARNING, String.format("Error fetching parent person of host: %s", this.host.getName() == null ? "" : this.host.getName()), ex); return new Action[0]; diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java index c39649d1ae..fc81ab4e2a 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java @@ -39,7 +39,7 @@ import org.sleuthkit.datamodel.TskCoreException; * Allows someone to associate a new person with a parentless host. */ @Messages({ - "AssociateNewPersonAction_menuTitle=New...", + "AssociateNewPersonAction_menuTitle=Associate with New Person...", "AssociateNewPersonAction_onError_title=Error While Associating New Person", "# {0} - hostName", "# {1} - personName", diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED index d75e7e0d52..192006582b 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED @@ -1,6 +1,6 @@ AddEditHostDialog_addHost_title=Add Host AddEditHostDialog_editHost_title=Edit Host -AssociateNewPersonAction_menuTitle=New... +AssociateNewPersonAction_menuTitle=Associate with New Person... # {0} - hostName # {1} - personName AssociateNewPersonAction_onError_description=There was an error while associating host {0} with new person {1}. diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java index d3b8325599..47b3a42ce1 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java @@ -19,9 +19,11 @@ package org.sleuthkit.autopsy.datamodel.persons; import java.awt.event.ActionEvent; +import java.util.List; import java.util.logging.Level; import javax.swing.AbstractAction; import javax.swing.JOptionPane; +import org.apache.commons.collections.CollectionUtils; import org.openide.util.NbBundle.Messages; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; @@ -53,6 +55,24 @@ public class DeletePersonAction extends AbstractAction { public DeletePersonAction(Person person) { super(Bundle.DeletePersonAction_menuTitle()); this.person = person; + setEnabled(); + } + + private void setEnabled() { + if (person == null) { + this.setEnabled(false); + } else { + try { + List hosts = Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getHostsForPerson(person); + if (CollectionUtils.isNotEmpty(hosts)) { + this.setEnabled(false); + return; + } + } catch (NoCurrentCaseException | TskCoreException ex) { + logger.log(Level.WARNING, String.format("Unable to fetch hosts belonging to person: %s", person.getName() == null ? "" : person.getName(), ex)); + } + this.setEnabled(true); + } } @Override diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeFilterNode.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeFilterNode.java index 06a0b18c10..6dd6039d37 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeFilterNode.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeFilterNode.java @@ -164,10 +164,10 @@ class DirectoryTreeFilterNode extends FilterNode { public Action[] getActions(boolean context) { List actions = new ArrayList<>(); - final Content content = this.getLookup().lookup(Content.class); - if (content != null) { + //final Content content = this.getLookup().lookup(Content.class); + //if (content != null) { actions.addAll(Arrays.asList(super.getActions(true))); - } + //} actions.add(collapseAllAction); return actions.toArray(new Action[actions.size()]); } From 8e049cf20709ebb7c746166061743cb07c0d557a Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Tue, 23 Feb 2021 13:25:14 -0500 Subject: [PATCH 25/69] Inital save --- .../autopsy/datamodel/OsAccounts.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/OsAccounts.java b/Core/src/org/sleuthkit/autopsy/datamodel/OsAccounts.java index faf3cfd0ae..80a0a13cfe 100755 --- a/Core/src/org/sleuthkit/autopsy/datamodel/OsAccounts.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/OsAccounts.java @@ -18,9 +18,12 @@ */ package org.sleuthkit.autopsy.datamodel; +import java.beans.PropertyChangeEvent; import java.text.SimpleDateFormat; +import java.util.EnumSet; import java.util.List; import java.util.Optional; +import java.util.Set; import java.util.logging.Level; import org.openide.nodes.ChildFactory; import org.openide.nodes.Children; @@ -28,6 +31,8 @@ import org.openide.nodes.Node; import org.openide.nodes.Sheet; import org.openide.util.NbBundle.Messages; import org.openide.util.lookup.Lookups; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.Host; import org.sleuthkit.datamodel.OsAccount; @@ -101,6 +106,25 @@ public final class OsAccounts implements AutopsyVisitableItem { */ private final class OsAccountNodeFactory extends ChildFactory { + private final Set CASE_EVENTS_OF_INTEREST = EnumSet.of(Case.Events.OS_ACCOUNT_ADDED, Case.Events.OS_ACCOUNT_CHANGED); + + OsAccountNodeFactory() { + Case.addEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, (PropertyChangeEvent evt) -> { + String eventType = evt.getPropertyName(); + if (eventType.equals(Case.Events.OS_ACCOUNT_ADDED.toString()) || eventType.equals(Case.Events.OS_ACCOUNT_CHANGED.toString())) { + + try { + Case.getCurrentCaseThrows(); + OsAccounts.OsAccountNodeFactory.this.refresh(true); + } catch (NoCurrentCaseException notUsed) { + /** + * Case is closed, do nothing. + */ + } + } + }); + } + @Override protected boolean createKeys(List list) { try { From 2ce2bfc27c827b0056530cbb0f37d2e002509c3e Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 23 Feb 2021 13:40:37 -0500 Subject: [PATCH 26/69] fixes --- .../datamodel/AutopsyTreeChildFactory.java | 8 ++- .../sleuthkit/autopsy/datamodel/HostNode.java | 26 ++++--- .../autopsy/datamodel/PersonGroupingNode.java | 21 +++--- .../hosts/AssociatePersonAction.java | 9 ++- .../hosts/AssociatePersonsMenuAction.java | 68 +++++++++++++++++++ .../datamodel/hosts/Bundle.properties-MERGED | 3 +- .../persons/Bundle.properties-MERGED | 8 +-- ...ersonAction.java => EditPersonAction.java} | 22 +++--- 8 files changed, 122 insertions(+), 43 deletions(-) create mode 100644 Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonsMenuAction.java rename Core/src/org/sleuthkit/autopsy/datamodel/persons/{RenamePersonAction.java => EditPersonAction.java} (81%) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java index 9bf93e3a72..e7af2149d6 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java @@ -86,13 +86,19 @@ public final class AutopsyTreeChildFactory extends ChildFactory.Detachable persons = tskCase.getPersonManager().getPersons(); + PersonManager personManager = tskCase.getPersonManager(); + List persons = personManager.getPersons(); // show persons level if there are persons to be shown if (!CollectionUtils.isEmpty(persons)) { persons.stream() .map(PersonGrouping::new) .sorted() .forEach(list::add); + + if (CollectionUtils.isNotEmpty(personManager.getHostsForPerson(null))) { + list.add(new PersonGrouping(null)); + } + return true; } else { // otherwise, just show host level diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java index e5e51f68c9..d00a61bd48 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java @@ -26,7 +26,6 @@ import java.util.List; import java.util.Optional; import java.util.function.Function; import java.util.logging.Level; -import java.util.stream.Stream; import javax.swing.Action; import org.openide.nodes.ChildFactory; @@ -40,7 +39,7 @@ import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.datamodel.hosts.AssociateNewPersonAction; -import org.sleuthkit.autopsy.datamodel.hosts.AssociatePersonAction; +import org.sleuthkit.autopsy.datamodel.hosts.AssociatePersonsMenuAction; import org.sleuthkit.autopsy.datamodel.hosts.RemoveParentPersonAction; import org.sleuthkit.datamodel.DataSource; import org.sleuthkit.datamodel.Host; @@ -256,7 +255,10 @@ public class HostNode extends DisplayableItemNode { } if (parent.isPresent()) { - return new Action[]{new RemoveParentPersonAction(this.host, parent.get())}; + return new Action[]{ + new RemoveParentPersonAction(this.host, parent.get()), + null + }; } else { List existingPersons = Collections.emptyList(); try { @@ -265,12 +267,18 @@ public class HostNode extends DisplayableItemNode { logger.log(Level.WARNING, "Error getting persons for case.", ex); } - Stream personActionsStream = existingPersons.stream() - .map((p) -> new AssociatePersonAction(this.host, p)); - - return Stream.concat( - Stream.of(new AssociateNewPersonAction(this.host), null), personActionsStream) - .toArray(Action[]::new); + if (existingPersons.size() > 0) { + return new Action[]{ + new AssociateNewPersonAction(this.host), + new AssociatePersonsMenuAction(existingPersons, this.host), + null + }; + } else { + return new Action[]{ + new AssociateNewPersonAction(this.host), + null + }; + } } } return new Action[0]; diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java index bfa3242751..11b4c2e647 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java @@ -35,7 +35,7 @@ import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.datamodel.persons.DeletePersonAction; -import org.sleuthkit.autopsy.datamodel.persons.RenamePersonAction; +import org.sleuthkit.autopsy.datamodel.persons.EditPersonAction; import org.sleuthkit.datamodel.Host; import org.sleuthkit.datamodel.Person; import org.sleuthkit.datamodel.TskCoreException; @@ -100,13 +100,11 @@ public class PersonGroupingNode extends DisplayableItemNode { @Override protected boolean createKeys(List toPopulate) { List hosts = Collections.emptyList(); - if (this.person != null) { - try { - hosts = Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getHostsForPerson(this.person); - } catch (NoCurrentCaseException | TskCoreException ex) { - String personName = person == null || person.getName() == null ? "" : person.getName(); - logger.log(Level.WARNING, String.format("Unable to get data sources for host: %s", personName), ex); - } + try { + hosts = Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getHostsForPerson(this.person); + } catch (NoCurrentCaseException | TskCoreException ex) { + String personName = person == null || person.getName() == null ? "" : person.getName(); + logger.log(Level.WARNING, String.format("Unable to get data sources for host: %s", personName), ex); } hosts.stream() @@ -117,7 +115,7 @@ public class PersonGroupingNode extends DisplayableItemNode { return true; } } - + private final Person person; /** @@ -177,8 +175,9 @@ public class PersonGroupingNode extends DisplayableItemNode { return new Action[0]; } else { return new Action[]{ - new RenamePersonAction(this.person), - new DeletePersonAction(this.person) + new EditPersonAction(this.person), + new DeletePersonAction(this.person), + null }; } } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java index 9846f34501..341931941b 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java @@ -36,8 +36,6 @@ import org.sleuthkit.datamodel.TskCoreException; * Associate a host with a particular (existing) person. */ @Messages({ - "# {0} - personName", - "AssociatePersonAction_menuTitle=Associate with {0}", "AssociatePersonAction_unknownPerson=Unknown Person", "AssociatePersonAction_onError_title=Error Associating Host with Person", "# {0} - hostName", @@ -57,9 +55,10 @@ public class AssociatePersonAction extends AbstractAction { * @param person The person to be removed as a parent from the host. */ public AssociatePersonAction(Host host, Person person) { - super(Bundle.RemoveParentPersonAction_menuTitle( - person == null || person.getName() == null - ? Bundle.RemoveParentPersonAction_unknownPerson() : person.getName())); + super(person == null || person.getName() == null ? + Bundle.RemoveParentPersonAction_unknownPerson() : + person.getName()); + this.host = host; this.person = person; } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonsMenuAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonsMenuAction.java new file mode 100644 index 0000000000..6c780f6662 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonsMenuAction.java @@ -0,0 +1,68 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.datamodel.hosts; + +import java.awt.event.ActionEvent; +import java.util.List; +import javax.swing.AbstractAction; +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import org.openide.util.NbBundle.Messages; +import org.openide.util.actions.Presenter; +import org.sleuthkit.datamodel.Host; +import org.sleuthkit.datamodel.Person; + +/** + * + * JMenu item to show menu to associate given host with an existing person. + */ +@Messages({ + "AssociatePersonsMenuAction_menuTitle=Associate with Existing Person", +}) +public class AssociatePersonsMenuAction extends AbstractAction implements Presenter.Popup { + + private final List persons; + private final Host host; + + public AssociatePersonsMenuAction(List persons, Host host) { + super(""); + this.persons = persons; + this.host = host; + } + + @Override + @SuppressWarnings("NoopMethodInAbstractClass") + public void actionPerformed(ActionEvent event) { + } + + @Override + public JMenuItem getPopupPresenter() { + JMenu menu = new JMenu(Bundle.AssociatePersonsMenuAction_menuTitle()); + + persons.stream() + .filter(p -> p != null && p.getName() != null) + .sorted((a, b) -> a.getName().compareToIgnoreCase(b.getName())) + .map(p -> new JMenuItem(new AssociatePersonAction(this.host, p))) + .forEach(menu::add); + + return menu; + } + + +} diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED index 192006582b..fb43913557 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED @@ -5,13 +5,12 @@ AssociateNewPersonAction_menuTitle=Associate with New Person... # {1} - personName AssociateNewPersonAction_onError_description=There was an error while associating host {0} with new person {1}. AssociateNewPersonAction_onError_title=Error While Associating New Person -# {0} - personName -AssociatePersonAction_menuTitle=Associate with {0} # {0} - hostName # {1} - personName AssociatePersonAction_onError_description=There was an error associating host {0} with person {1}. AssociatePersonAction_onError_title=Error Associating Host with Person AssociatePersonAction_unknownPerson=Unknown Person +AssociatePersonsMenuAction_menuTitle=Associate with Existing Person CTL_OpenHosts=Manage Hosts HostNameValidator_getValidationMessage_onDuplicate=Another host already has the same name. Please choose a different name. HostNameValidator_getValidationMessage_onEmpty=Please provide some text for the host name. diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties-MERGED index 75e2acbbfe..2e17939821 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/Bundle.properties-MERGED @@ -15,10 +15,10 @@ DeletePersonAction_menuTitle=Delete Person # {0} - personName DeletePersonAction_onError_description=There was an error removing person: {0}. DeletePersonAction_onError_title=Error Delete Host from Person +EditPersonAction_menuTitle=Edit Person... +# {0} - personName +EditPersonAction_onError_description=There was an error editing person: {0}. +EditPersonAction_onError_title=Error Editing Person PersonNameValidator_getValidationMessage_onDuplicate=Another person already has the same name. Please choose a different name. PersonNameValidator_getValidationMessage_onEmpty=Please provide some text for the person name. PersonNameValidator_getValidationMessage_sameAsOriginal=Please provide a new name for this person. -RenamePersonAction_menuTitle=Rename Person... -# {0} - personName -RenamePersonAction_onError_description=There was an error renaming person: {0}. -RenamePersonAction_onError_title=Error Renaming Person diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/RenamePersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/persons/EditPersonAction.java similarity index 81% rename from Core/src/org/sleuthkit/autopsy/datamodel/persons/RenamePersonAction.java rename to Core/src/org/sleuthkit/autopsy/datamodel/persons/EditPersonAction.java index a6f99c6c54..042d1c6e28 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/persons/RenamePersonAction.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/EditPersonAction.java @@ -32,26 +32,26 @@ import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.Person; /** - * Rename the specified person. + * Action to edit the specified person. */ @Messages({ - "RenamePersonAction_menuTitle=Rename Person...", - "RenamePersonAction_onError_title=Error Renaming Person", + "EditPersonAction_menuTitle=Edit Person...", + "EditPersonAction_onError_title=Error Editing Person", "# {0} - personName", - "RenamePersonAction_onError_description=There was an error renaming person: {0}.",}) -public class RenamePersonAction extends AbstractAction { + "EditPersonAction_onError_description=There was an error editing person: {0}.",}) +public class EditPersonAction extends AbstractAction { - private static final Logger logger = Logger.getLogger(RenamePersonAction.class.getName()); + private static final Logger logger = Logger.getLogger(EditPersonAction.class.getName()); private final Person person; /** * Main constructor. * - * @param person The person to be renamed. + * @param person The person to be edited. */ - public RenamePersonAction(Person person) { - super(Bundle.RenamePersonAction_menuTitle()); + public EditPersonAction(Person person) { + super(Bundle.EditPersonAction_menuTitle()); this.person = person; } @@ -70,8 +70,8 @@ public class RenamePersonAction extends AbstractAction { JOptionPane.showMessageDialog( WindowManager.getDefault().getMainWindow(), - Bundle.RenamePersonAction_onError_description(personName), - Bundle.RenamePersonAction_onError_title(), + Bundle.EditPersonAction_onError_description(personName), + Bundle.EditPersonAction_onError_title(), JOptionPane.WARNING_MESSAGE); } } From e4442cce82b55cc6889639fd48fd6d0d0bb5c21c Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 23 Feb 2021 14:24:32 -0500 Subject: [PATCH 27/69] fixes --- .../sleuthkit/autopsy/datamodel/HostNode.java | 5 ++- .../hosts/AssociateNewPersonAction.java | 10 ++++-- .../hosts/AssociatePersonAction.java | 13 ++++--- .../hosts/AssociatePersonsMenuAction.java | 15 +++++--- .../datamodel/persons/DeletePersonAction.java | 3 ++ .../datamodel/persons/EditPersonAction.java | 7 ++++ .../DirectoryTreeFilterNode.java | 35 +++++++++++++------ 7 files changed, 62 insertions(+), 26 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java index d00a61bd48..7e40db5f9d 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java @@ -246,20 +246,23 @@ public class HostNode extends DisplayableItemNode { Optional parent = Optional.empty(); + // if there is a host, then provide actions if (this.host != null) { try { - parent = Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getPerson(this.host); + parent = Case.getCurrentCaseThrows().getSleuthkitCase().getHostManager().getPerson(this.host); } catch (NoCurrentCaseException | TskCoreException ex) { logger.log(Level.WARNING, String.format("Error fetching parent person of host: %s", this.host.getName() == null ? "" : this.host.getName()), ex); return new Action[0]; } + // if there is a parent, only give option to remove parent person. if (parent.isPresent()) { return new Action[]{ new RemoveParentPersonAction(this.host, parent.get()), null }; } else { + // otherwise provide options to associate with new person or existing persons List existingPersons = Collections.emptyList(); try { existingPersons = Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getPersons(); diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java index fc81ab4e2a..6fbcdd6f8e 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java @@ -28,7 +28,6 @@ import org.openide.util.NbBundle.Messages; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; -import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.datamodel.persons.AddEditPersonDialog; import org.sleuthkit.datamodel.Host; @@ -64,7 +63,7 @@ public class AssociateNewPersonAction extends AbstractAction { public void actionPerformed(ActionEvent e) { String newPersonName = ""; try { - newPersonName = getAddDialogName(); + newPersonName = getAddDialogName(); if (StringUtils.isNotBlank(newPersonName)) { Person person = Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().createPerson(newPersonName); Case.getCurrentCaseThrows().getSleuthkitCase().getHostManager().setPerson(host, person); @@ -82,6 +81,13 @@ public class AssociateNewPersonAction extends AbstractAction { } + /** + * Get dialog to add new person name. + * + * @return The name for the new person or null to cancel. + * @throws NoCurrentCaseException + * @throws TskCoreException + */ private String getAddDialogName() throws NoCurrentCaseException, TskCoreException { Frame parent = WindowManager.getDefault().getMainWindow(); diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java index 341931941b..a58787997f 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonAction.java @@ -26,7 +26,6 @@ import org.openide.util.NbBundle.Messages; import org.openide.windows.WindowManager; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; -import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.Host; import org.sleuthkit.datamodel.Person; @@ -51,14 +50,14 @@ public class AssociatePersonAction extends AbstractAction { /** * Main constructor. * - * @param host The host that will become parentless. - * @param person The person to be removed as a parent from the host. + * @param host The host that will get associated with the person. + * @param person The person to be the parent of the host. */ public AssociatePersonAction(Host host, Person person) { - super(person == null || person.getName() == null ? - Bundle.RemoveParentPersonAction_unknownPerson() : - person.getName()); - + super(person == null || person.getName() == null + ? Bundle.RemoveParentPersonAction_unknownPerson() + : person.getName()); + this.host = host; this.person = person; } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonsMenuAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonsMenuAction.java index 6c780f6662..c7bc7ed3ee 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonsMenuAction.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonsMenuAction.java @@ -30,16 +30,22 @@ import org.sleuthkit.datamodel.Person; /** * - * JMenu item to show menu to associate given host with an existing person. + * JMenu item to show a menu giving options to associate the given host with an + * existing person. */ @Messages({ - "AssociatePersonsMenuAction_menuTitle=Associate with Existing Person", -}) + "AssociatePersonsMenuAction_menuTitle=Associate with Existing Person",}) public class AssociatePersonsMenuAction extends AbstractAction implements Presenter.Popup { private final List persons; private final Host host; + /** + * Main constructor. + * + * @param persons The persons that this host can be associated with. + * @param host The host. + */ public AssociatePersonsMenuAction(List persons, Host host) { super(""); this.persons = persons; @@ -63,6 +69,5 @@ public class AssociatePersonsMenuAction extends AbstractAction implements Presen return menu; } - - + } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java index 47b3a42ce1..76312fb3a8 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/DeletePersonAction.java @@ -58,6 +58,9 @@ public class DeletePersonAction extends AbstractAction { setEnabled(); } + /** + * Sets the action enabled only if no child hosts. + */ private void setEnabled() { if (person == null) { this.setEnabled(false); diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/persons/EditPersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/persons/EditPersonAction.java index 042d1c6e28..2343557f6b 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/persons/EditPersonAction.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/persons/EditPersonAction.java @@ -76,6 +76,13 @@ public class EditPersonAction extends AbstractAction { } } + /** + * Presents a dialog that will allow the user to edit the person's name. + * @param person The person. + * @return The edited person's name or null if cancelled.. + * @throws NoCurrentCaseException + * @throws TskCoreException + */ private String getEditedPersonName(Person person) throws NoCurrentCaseException, TskCoreException { Frame parent = WindowManager.getDefault().getMainWindow(); diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeFilterNode.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeFilterNode.java index 6dd6039d37..fc561da950 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeFilterNode.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeFilterNode.java @@ -25,6 +25,7 @@ import java.util.logging.Level; import javax.swing.Action; import org.openide.nodes.FilterNode; import org.openide.nodes.Node; +import org.openide.util.Lookup; import org.openide.util.NbBundle; import org.openide.util.lookup.Lookups; import org.openide.util.lookup.ProxyLookup; @@ -36,6 +37,8 @@ import org.sleuthkit.datamodel.AbstractFile; import org.sleuthkit.datamodel.BlackboardArtifact; import org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE; import org.sleuthkit.datamodel.Content; +import org.sleuthkit.datamodel.Host; +import org.sleuthkit.datamodel.Person; import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.datamodel.TskData; @@ -54,9 +57,9 @@ class DirectoryTreeFilterNode extends FilterNode { * the tree view and wraps the Children object of the wrapped node with a * DirectoryTreeFilterChildren. * - * @param nodeToWrap The node to wrap. + * @param nodeToWrap The node to wrap. * @param createChildren Whether to create the children of the wrapped node - * or treat it a a leaf node. + * or treat it a a leaf node. */ DirectoryTreeFilterNode(Node nodeToWrap, boolean createChildren) { super(nodeToWrap, @@ -131,7 +134,7 @@ class DirectoryTreeFilterNode extends FilterNode { numVisibleChildren--; } } else if (child instanceof BlackboardArtifact) { - + if (FilterNodeUtils.showMessagesInDatasourceTree()) { // In older versions of Autopsy, attachments were children of email/message artifacts // and hence email/messages with attachments are shown in the directory tree. @@ -141,8 +144,7 @@ class DirectoryTreeFilterNode extends FilterNode { && (bba.getArtifactTypeID() != ARTIFACT_TYPE.TSK_MESSAGE.getTypeID())) { numVisibleChildren--; } - } - else { + } else { numVisibleChildren--; } } @@ -156,22 +158,33 @@ class DirectoryTreeFilterNode extends FilterNode { * Gets the context mneu (right click menu) actions for the wrapped node. * * @param context Whether to find actions for context meaning or for the - * node itself. + * node itself. * * @return */ @Override public Action[] getActions(boolean context) { List actions = new ArrayList<>(); - - //final Content content = this.getLookup().lookup(Content.class); - //if (content != null) { - actions.addAll(Arrays.asList(super.getActions(true))); - //} + actions.addAll(Arrays.asList(getNodeActions())); actions.add(collapseAllAction); return actions.toArray(new Action[actions.size()]); } + /** + * @return If lookup node is content, host, or person, returns super + * actions. Otherwise, returns empty array. + */ + private Action[] getNodeActions() { + Lookup lookup = this.getLookup(); + if (lookup.lookup(Content.class) != null + || lookup.lookup(Host.class) != null + || lookup.lookup(Person.class) != null) { + return super.getActions(true); + } else { + return new Action[0]; + } + } + /** * Get the wrapped node. * From 2329e4cb0ccc4eed2ac693c4c188cdbfdecc1907 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 23 Feb 2021 15:07:20 -0500 Subject: [PATCH 28/69] updates from comments --- .../sleuthkit/autopsy/datamodel/HostNode.java | 26 +++------------- .../hosts/AssociateNewPersonAction.java | 2 +- .../hosts/AssociatePersonsMenuAction.java | 30 +++++++++++++++---- .../datamodel/hosts/Bundle.properties-MERGED | 4 +-- 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java index 7e40db5f9d..4742788514 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java @@ -20,7 +20,6 @@ package org.sleuthkit.autopsy.datamodel; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.util.Collections; import java.util.EnumSet; import java.util.List; import java.util.Optional; @@ -38,7 +37,6 @@ import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; -import org.sleuthkit.autopsy.datamodel.hosts.AssociateNewPersonAction; import org.sleuthkit.autopsy.datamodel.hosts.AssociatePersonsMenuAction; import org.sleuthkit.autopsy.datamodel.hosts.RemoveParentPersonAction; import org.sleuthkit.datamodel.DataSource; @@ -262,26 +260,10 @@ public class HostNode extends DisplayableItemNode { null }; } else { - // otherwise provide options to associate with new person or existing persons - List existingPersons = Collections.emptyList(); - try { - existingPersons = Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getPersons(); - } catch (NoCurrentCaseException | TskCoreException ex) { - logger.log(Level.WARNING, "Error getting persons for case.", ex); - } - - if (existingPersons.size() > 0) { - return new Action[]{ - new AssociateNewPersonAction(this.host), - new AssociatePersonsMenuAction(existingPersons, this.host), - null - }; - } else { - return new Action[]{ - new AssociateNewPersonAction(this.host), - null - }; - } + return new Action[]{ + new AssociatePersonsMenuAction(this.host), + null + }; } } return new Action[0]; diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java index 6fbcdd6f8e..f0cda7ac75 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociateNewPersonAction.java @@ -38,7 +38,7 @@ import org.sleuthkit.datamodel.TskCoreException; * Allows someone to associate a new person with a parentless host. */ @Messages({ - "AssociateNewPersonAction_menuTitle=Associate with New Person...", + "AssociateNewPersonAction_menuTitle=New Person...", "AssociateNewPersonAction_onError_title=Error While Associating New Person", "# {0} - hostName", "# {1} - personName", diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonsMenuAction.java b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonsMenuAction.java index c7bc7ed3ee..6d8a546ed8 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonsMenuAction.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/AssociatePersonsMenuAction.java @@ -19,14 +19,21 @@ package org.sleuthkit.autopsy.datamodel.hosts; import java.awt.event.ActionEvent; +import java.util.Collections; import java.util.List; +import java.util.logging.Level; import javax.swing.AbstractAction; import javax.swing.JMenu; import javax.swing.JMenuItem; +import javax.swing.JSeparator; import org.openide.util.NbBundle.Messages; import org.openide.util.actions.Presenter; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.Host; import org.sleuthkit.datamodel.Person; +import org.sleuthkit.datamodel.TskCoreException; /** * @@ -34,21 +41,20 @@ import org.sleuthkit.datamodel.Person; * existing person. */ @Messages({ - "AssociatePersonsMenuAction_menuTitle=Associate with Existing Person",}) + "AssociatePersonsMenuAction_menuTitle=Associate with Person",}) public class AssociatePersonsMenuAction extends AbstractAction implements Presenter.Popup { - private final List persons; + private static final Logger logger = Logger.getLogger(AssociatePersonsMenuAction.class.getName()); + private final Host host; /** * Main constructor. * - * @param persons The persons that this host can be associated with. * @param host The host. */ - public AssociatePersonsMenuAction(List persons, Host host) { + public AssociatePersonsMenuAction(Host host) { super(""); - this.persons = persons; this.host = host; } @@ -61,12 +67,24 @@ public class AssociatePersonsMenuAction extends AbstractAction implements Presen public JMenuItem getPopupPresenter() { JMenu menu = new JMenu(Bundle.AssociatePersonsMenuAction_menuTitle()); - persons.stream() + List existingPersons = Collections.emptyList(); + try { + existingPersons = Case.getCurrentCaseThrows().getSleuthkitCase().getPersonManager().getPersons(); + } catch (NoCurrentCaseException | TskCoreException ex) { + logger.log(Level.WARNING, "Error getting persons for case.", ex); + } + + existingPersons.stream() .filter(p -> p != null && p.getName() != null) .sorted((a, b) -> a.getName().compareToIgnoreCase(b.getName())) .map(p -> new JMenuItem(new AssociatePersonAction(this.host, p))) .forEach(menu::add); + if (menu.getItemCount() > 0) { + menu.add(new JSeparator()); + } + + menu.add(new JMenuItem(new AssociateNewPersonAction(this.host))); return menu; } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED index fb43913557..452a98a54d 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/datamodel/hosts/Bundle.properties-MERGED @@ -1,6 +1,6 @@ AddEditHostDialog_addHost_title=Add Host AddEditHostDialog_editHost_title=Edit Host -AssociateNewPersonAction_menuTitle=Associate with New Person... +AssociateNewPersonAction_menuTitle=New Person... # {0} - hostName # {1} - personName AssociateNewPersonAction_onError_description=There was an error while associating host {0} with new person {1}. @@ -10,7 +10,7 @@ AssociateNewPersonAction_onError_title=Error While Associating New Person AssociatePersonAction_onError_description=There was an error associating host {0} with person {1}. AssociatePersonAction_onError_title=Error Associating Host with Person AssociatePersonAction_unknownPerson=Unknown Person -AssociatePersonsMenuAction_menuTitle=Associate with Existing Person +AssociatePersonsMenuAction_menuTitle=Associate with Person CTL_OpenHosts=Manage Hosts HostNameValidator_getValidationMessage_onDuplicate=Another host already has the same name. Please choose a different name. HostNameValidator_getValidationMessage_onEmpty=Please provide some text for the host name. From 55a33b0c32c58da35208b913ecf0568c0d796776 Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Tue, 23 Feb 2021 15:47:22 -0500 Subject: [PATCH 29/69] OsAccount nodes will update in the tree --- .../autopsy/datamodel/OsAccounts.java | 60 ++++++++++++------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/OsAccounts.java b/Core/src/org/sleuthkit/autopsy/datamodel/OsAccounts.java index 80a0a13cfe..ade1ef6329 100755 --- a/Core/src/org/sleuthkit/autopsy/datamodel/OsAccounts.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/OsAccounts.java @@ -19,7 +19,9 @@ package org.sleuthkit.autopsy.datamodel; import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import java.text.SimpleDateFormat; +import java.util.Collections; import java.util.EnumSet; import java.util.List; import java.util.Optional; @@ -32,7 +34,7 @@ import org.openide.nodes.Sheet; import org.openide.util.NbBundle.Messages; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; -import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.autopsy.casemodule.events.OsAccountChangedEvent; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.datamodel.Host; import org.sleuthkit.datamodel.OsAccount; @@ -104,25 +106,23 @@ public final class OsAccounts implements AutopsyVisitableItem { * The child node factory that creates the OsAccountNode children for a * OsAccountListNode. */ - private final class OsAccountNodeFactory extends ChildFactory { + private final class OsAccountNodeFactory extends ChildFactory.Detachable { - private final Set CASE_EVENTS_OF_INTEREST = EnumSet.of(Case.Events.OS_ACCOUNT_ADDED, Case.Events.OS_ACCOUNT_CHANGED); + private final PropertyChangeListener listener = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + refresh(true); + } + }; - OsAccountNodeFactory() { - Case.addEventTypeSubscriber(CASE_EVENTS_OF_INTEREST, (PropertyChangeEvent evt) -> { - String eventType = evt.getPropertyName(); - if (eventType.equals(Case.Events.OS_ACCOUNT_ADDED.toString()) || eventType.equals(Case.Events.OS_ACCOUNT_CHANGED.toString())) { - - try { - Case.getCurrentCaseThrows(); - OsAccounts.OsAccountNodeFactory.this.refresh(true); - } catch (NoCurrentCaseException notUsed) { - /** - * Case is closed, do nothing. - */ - } - } - }); + @Override + protected void addNotify() { + Case.addEventTypeSubscriber(Collections.singleton(Case.Events.OS_ACCOUNT_ADDED), listener); + } + + @Override + protected void removeNotify() { + Case.removeEventTypeSubscriber(Collections.singleton(Case.Events.OS_ACCOUNT_ADDED), listener); } @Override @@ -153,7 +153,18 @@ public final class OsAccounts implements AutopsyVisitableItem { */ public static final class OsAccountNode extends DisplayableItemNode { - private final OsAccount account; + private OsAccount account; + + private final PropertyChangeListener listener = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + if(((OsAccountChangedEvent)evt).getOsAccount().getId() == account.getId()) { + // Update the account node to the new one + account = ((OsAccountChangedEvent)evt).getOsAccount(); + updateSheet(); + } + } + }; /** * Constructs a new OsAccountNode. @@ -167,6 +178,8 @@ public final class OsAccounts implements AutopsyVisitableItem { setName(account.getName()); setDisplayName(account.getName()); setIconBaseWithExtension(ICON_PATH); + + Case.addEventTypeSubscriber(Collections.singleton(Case.Events.OS_ACCOUNT_CHANGED), listener); } @Override @@ -183,7 +196,7 @@ public final class OsAccounts implements AutopsyVisitableItem { public String getItemType() { return getClass().getName(); } - + @Messages({ "OsAccounts_accountNameProperty_name=Name", "OsAccounts_accountNameProperty_displayName=Name", @@ -198,6 +211,13 @@ public final class OsAccounts implements AutopsyVisitableItem { "OsAccounts_loginNameProperty_displayName=Login Name", "OsAccounts_loginNameProperty_desc=Os Account login name" }) + + /** + * Refreshes this node's property sheet. + */ + void updateSheet() { + this.setSheet(createSheet()); + } @Override protected Sheet createSheet() { From cb95f8b093fe5ca49098f6b5253bfe9776884f26 Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Tue, 23 Feb 2021 18:25:52 -0500 Subject: [PATCH 30/69] More work --- .../keywordsearch/Bundle.properties-MERGED | 3 +- .../keywordsearch/ExtractAllTermsReport.java | 34 +++++++++++-------- .../autopsy/keywordsearch/Server.java | 23 ++++++++----- 3 files changed, 37 insertions(+), 23 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED index e130c9052a..e3f51bbb12 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED @@ -9,6 +9,7 @@ DropdownListSearchPanel.selected=Ad Hoc Search data source filter is selected DropdownSingleTermSearchPanel.selected=Ad Hoc Search data source filter is selected DropdownSingleTermSearchPanel.warning.text=Boundary characters ^ and $ do not match word boundaries. Consider\nreplacing with an explicit list of boundary characters, such as [ \\.,] DropdownSingleTermSearchPanel.warning.title=Warning +ExtractAllTermsReport.error.noOpenCase=No currently open case. ExtractAllTermsReport.error.unableToOpenCase=Exception while getting open case. ExtractAllTermsReport.export.error=Error During Unique Word Export ExtractAllTermsReport.exportComplete=Unique Word Export Complete @@ -20,7 +21,6 @@ ExtractAllTermsReport.search.noFilesInIdxMsg2=No files are in index yet. < ExtractAllTermsReport.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress ExtractAllTermsReport.startExport=Starting Unique Word Export ExtractedContentPanel.setMarkup.panelTxt=Loading text... Please wait -# {0} - Content name ExtractedContentPanel.SetMarkup.progress.loading=Loading text for {0} GlobalEditListPanel.editKeyword.title=Edit Keyword GlobalEditListPanel.warning.text=Boundary characters ^ and $ do not match word boundaries. Consider\nreplacing with an explicit list of boundary characters, such as [ \\.,] @@ -228,6 +228,7 @@ Server.deleteCore.exception.msg=Failed to delete Solr colelction {0} Server.exceptionMessage.unableToBackupCollection=Unable to backup Solr collection Server.exceptionMessage.unableToCreateCollection=Unable to create Solr collection Server.exceptionMessage.unableToRestoreCollection=Unable to restore Solr collection +Server.getAllTerms.error=Extraction of all unique Solr terms failed: 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 diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java index 9debf161ac..b1aa714af7 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java @@ -18,12 +18,12 @@ */ package org.sleuthkit.autopsy.keywordsearch; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.logging.Level; -import org.openide.util.Exceptions; import org.openide.util.NbBundle; import org.openide.util.lookup.ServiceProvider; import org.sleuthkit.autopsy.casemodule.Case; -import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.ingest.IngestManager; import org.sleuthkit.autopsy.report.GeneralReportModule; @@ -38,6 +38,7 @@ import org.sleuthkit.autopsy.report.ReportProgressPanel; public class ExtractAllTermsReport implements GeneralReportModule { private static final Logger logger = Logger.getLogger(ExtractAllTermsReport.class.getName()); + private static final String OUTPUT_FILE_NAME = "Unique Words.txt"; @NbBundle.Messages({ "ExtractAllTermsReport.getName.text=Extract Unique Words"}) @@ -45,9 +46,9 @@ public class ExtractAllTermsReport implements GeneralReportModule { public String getName() { return Bundle.ExtractAllTermsReport_getName_text(); } - + @NbBundle.Messages({ - "ExtractAllTermsReport.error.unableToOpenCase=Exception while getting open case.", + "ExtractAllTermsReport.error.noOpenCase=No currently open case.", "ExtractAllTermsReport.search.noFilesInIdxMsg=No files are in index yet.
    Try again later. Index is updated every {0} minutes.", "ExtractAllTermsReport.search.noFilesInIdxMsg2=No files are in index yet.
    Try again later", "ExtractAllTermsReport.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress", @@ -58,14 +59,13 @@ public class ExtractAllTermsReport implements GeneralReportModule { }) @Override public void generateReport(GeneralReportSettings settings, ReportProgressPanel progressPanel) { - Case openCase; - try { - openCase = Case.getCurrentCaseThrows(); - } catch (NoCurrentCaseException ex) { - logger.log(Level.SEVERE, "Exception while getting open case.", ex); //NON-NLS - progressPanel.complete(ReportProgressPanel.ReportStatus.ERROR, Bundle.ExtractAllTermsReport_error_unableToOpenCase()); + + if (!Case.isCaseOpen()) { + logger.log(Level.SEVERE, "No open case when attempting to run {0} report", Bundle.ExtractAllTermsReport_getName_text()); //NON-NLS + progressPanel.complete(ReportProgressPanel.ReportStatus.ERROR, Bundle.ExtractAllTermsReport_error_noOpenCase()); return; } + progressPanel.setIndeterminate(true); progressPanel.start(); progressPanel.updateStatusLabel("Extracting unique words..."); @@ -93,6 +93,8 @@ public class ExtractAllTermsReport implements GeneralReportModule { if (isIngestRunning) { if (KeywordSearchUtil.displayConfirmDialog(Bundle.ExtractAllTermsReport_search_searchIngestInProgressTitle(), Bundle.ExtractAllTermsReport_search_ingestInProgressBody(), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.WARN) == false) { + progressPanel.setIndeterminate(false); + progressPanel.complete(ReportProgressPanel.ReportStatus.CANCELED); return; } } @@ -100,10 +102,14 @@ public class ExtractAllTermsReport implements GeneralReportModule { final Server server = KeywordSearch.getServer(); try { progressPanel.updateStatusLabel(Bundle.ExtractAllTermsReport_startExport()); - server.extractAllTermsForDataSource(settings, progressPanel); - } catch (Exception ex) { + Path outputFile = Paths.get(settings.getReportDirectoryPath(), getRelativeFilePath()); + server.extractAllTermsForDataSource(outputFile, progressPanel); + } catch (KeywordSearchModuleException | NoOpenCoreException ex) { + logger.log(Level.SEVERE, "Exception while extracting all terms", ex); //NON-NLS progressPanel.updateStatusLabel(Bundle.ExtractAllTermsReport_export_error()); - Exceptions.printStackTrace(ex); // ELTODO + progressPanel.setIndeterminate(false); + progressPanel.complete(ReportProgressPanel.ReportStatus.ERROR); + return; } progressPanel.updateStatusLabel(Bundle.ExtractAllTermsReport_exportComplete()); @@ -123,7 +129,7 @@ public class ExtractAllTermsReport implements GeneralReportModule { @Override public String getRelativeFilePath() { - return "Unique Words.txt"; // ELTODO + return OUTPUT_FILE_NAME; } } diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java index 0dcecd584e..2772776ed8 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java @@ -1791,22 +1791,30 @@ public class Server { /** * Extract all unique terms/words for a given data source. * - * @param settings GeneralReportSettings to use + * @param outputFile Absolute path to where the store the output * @param progressPanel ReportProgressPanel to update * * @throws NoOpenCoreException */ - void extractAllTermsForDataSource(GeneralReportSettings settings, ReportProgressPanel progressPanel) throws IOException, KeywordSearchModuleException, NoOpenCoreException, SolrServerException, NoCurrentCaseException { + @NbBundle.Messages({ + "Server.getAllTerms.error=Extraction of all unique Solr terms failed:"}) + void extractAllTermsForDataSource(Path outputFile, ReportProgressPanel progressPanel) throws KeywordSearchModuleException, NoOpenCoreException { try { currentCoreLock.writeLock().lock(); if (null == currentCollection) { throw new NoOpenCoreException(); } - currentCollection.extractAllTermsForDataSource(settings, progressPanel); + try { + currentCollection.extractAllTermsForDataSource(outputFile, progressPanel); + } catch (Exception ex) { + // intentional "catch all" as Solr is known to throw all kinds of Runtime exceptions + logger.log(Level.SEVERE, "Extraction of all unique Solr terms failed: ", ex); //NON-NLS + throw new KeywordSearchModuleException(Bundle.Server_getAllTerms_error(), ex); + } } finally { currentCoreLock.writeLock().unlock(); } - } + } /** * Get the text contents of the given file as stored in SOLR. @@ -2158,11 +2166,10 @@ public class Server { @NbBundle.Messages({ "ExtractAllTermsReport.numberExtractedTerms=Extracted {0} terms..." }) - private void extractAllTermsForDataSource(GeneralReportSettings settings, ReportProgressPanel progressPanel) throws IOException, SolrServerException, NoCurrentCaseException, KeywordSearchModuleException { + private void extractAllTermsForDataSource(Path outputFile, ReportProgressPanel progressPanel) throws IOException, SolrServerException, NoCurrentCaseException, KeywordSearchModuleException { // step through the terms - Path serverFileIterated = Paths.get(settings.getReportDirectoryPath(), "Unique Words.txt"); //NON-NLS - Files.deleteIfExists(serverFileIterated); + Files.deleteIfExists(outputFile); OpenOption[] options = new OpenOption[] { java.nio.file.StandardOpenOption.CREATE, java.nio.file.StandardOpenOption.APPEND }; int termStep = 1000; @@ -2202,7 +2209,7 @@ public class Server { firstTerm = terms.get(terms.size()-1).getTerm(); List listTerms = terms.stream().map(Term::getTerm).collect(Collectors.toList()); - Files.write(serverFileIterated, listTerms, options); + Files.write(outputFile, listTerms, options); numExtractedTerms += termStep; progressPanel.updateStatusLabel(Bundle.ExtractAllTermsReport_numberExtractedTerms(numExtractedTerms)); From 748d2b7ad376e5aee300eeaec24403fa5b365a60 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 23 Feb 2021 20:12:44 -0500 Subject: [PATCH 31/69] working view context action --- .../datamodel/ContentNodeSelectionInfo.java | 2 +- .../datamodel/DataSourcesByTypeNode.java | 2 +- .../directorytree/ViewContextAction.java | 64 +++++++++++++++---- 3 files changed, 55 insertions(+), 13 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/ContentNodeSelectionInfo.java b/Core/src/org/sleuthkit/autopsy/datamodel/ContentNodeSelectionInfo.java index e5b8718931..fe92235454 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/ContentNodeSelectionInfo.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/ContentNodeSelectionInfo.java @@ -50,7 +50,7 @@ public class ContentNodeSelectionInfo implements NodeSelectionInfo { @Override public boolean matches(Node candidateNode) { Content content = candidateNode.getLookup().lookup(Content.class); - return content.getId() == contentId; + return (content != null && content.getId() == contentId); } } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesByTypeNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesByTypeNode.java index 856b6eec96..3152573403 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesByTypeNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesByTypeNode.java @@ -93,7 +93,7 @@ public class DataSourcesByTypeNode extends DisplayableItemNode { } - private static final String NAME = Bundle.DataSourcesHostsNode_name(); + public static final String NAME = Bundle.DataSourcesHostsNode_name(); /** * Main constructor. diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java b/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java index ef8adfa319..7a105f389c 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java @@ -22,10 +22,13 @@ import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.beans.PropertyVetoException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.logging.Level; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.sleuthkit.autopsy.coreutils.Logger; import javax.swing.AbstractAction; import org.openide.nodes.AbstractNode; @@ -43,6 +46,7 @@ import org.sleuthkit.autopsy.datamodel.AbstractAbstractFileNode; import org.sleuthkit.autopsy.datamodel.AbstractFsContentNode; import org.sleuthkit.autopsy.datamodel.BlackboardArtifactNode; import org.sleuthkit.autopsy.datamodel.ContentNodeSelectionInfo; +import org.sleuthkit.autopsy.datamodel.DataSourcesByTypeNode; import org.sleuthkit.autopsy.datamodel.DataSourcesNode; import org.sleuthkit.autopsy.datamodel.DisplayableItemNode; import org.sleuthkit.autopsy.datamodel.RootContentChildren; @@ -52,6 +56,8 @@ import org.sleuthkit.datamodel.Content; import org.sleuthkit.datamodel.ContentVisitor; import org.sleuthkit.datamodel.DataSource; import org.sleuthkit.datamodel.FileSystem; +import org.sleuthkit.datamodel.Host; +import org.sleuthkit.datamodel.Person; import org.sleuthkit.datamodel.SleuthkitCase; import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.datamodel.TskData; @@ -186,17 +192,20 @@ public class ViewContextAction extends AbstractAction { DataSource datasource = skCase.getDataSource(contentDSObjid); dsname = datasource.getName(); Children rootChildren = treeViewExplorerMgr.getRootContext().getChildren(); - + if (null != parentContent) { // the tree view needs to be searched to find the parent treeview node. /* NOTE: we can't do a lookup by data source name here, becase if there are multiple data sources with the same name, then "getChildren().findChild(dsname)" simply returns the first one that it finds. Instead we have to loop over all data sources with that name, and make sure we find the correct one. - */ - for (int i = 0; i < rootChildren.getNodesCount(); i++) { + */ + List dataSourceLevelNodes = Stream.of(rootChildren.getNodes()) + .flatMap(rootNode -> getDataSourceLevelNodes(rootNode).stream()) + .collect(Collectors.toList()); + + for (Node treeNode : dataSourceLevelNodes) { // in the root, look for a data source node with the name of interest - Node treeNode = rootChildren.getNodeAt(i); if (!(treeNode.getName().equals(dsname))) { continue; } @@ -234,13 +243,19 @@ public class ViewContextAction extends AbstractAction { } } else { // Classic view // Start the search at the DataSourcesNode - parentTreeViewNode = treeViewExplorerMgr.getRootContext().getChildren().findChild(DataSourcesNode.NAME); - - if (null != parentContent) { - // the tree view needs to be searched to find the parent treeview node. - Node potentialParentTreeViewNode = findParentNodeInTree(parentContent, parentTreeViewNode); - if (potentialParentTreeViewNode != null) { - parentTreeViewNode = potentialParentTreeViewNode; + Children rootChildren = treeViewExplorerMgr.getRootContext().getChildren(); + Node rootDsNode = rootChildren == null ? null : rootChildren.findChild(DataSourcesByTypeNode.NAME); + if (rootDsNode != null) { + for (Node dataSourceLevelNode : getDataSourceLevelNodes(rootDsNode)) { + DataSource dataSource = dataSourceLevelNode.getLookup().lookup(DataSource.class); + if (dataSource != null) { + // the tree view needs to be searched to find the parent treeview node. + Node potentialParentTreeViewNode = findParentNodeInTree(parentContent, dataSourceLevelNode); + if (potentialParentTreeViewNode != null) { + parentTreeViewNode = potentialParentTreeViewNode; + break; + } + } } } } @@ -286,6 +301,33 @@ public class ViewContextAction extends AbstractAction { }); } + /** + * If the node has lookup of host or person, returns children. If not, just + * returns itself. + * + * @param node The node. + * @return The child nodes that are at the data source level. + */ + private List getDataSourceLevelNodes(Node node) { + if (node == null) { + return Collections.emptyList(); + } else if (node.getLookup().lookup(Host.class) != null || + node.getLookup().lookup(Person.class) != null || + DataSourcesByTypeNode.NAME.equals(node.getLookup().lookup(String.class))) { + Children children = node.getChildren(); + Node[] childNodes = children == null ? null : children.getNodes(); + if (childNodes == null) { + return Collections.emptyList(); + } + + return Stream.of(node.getChildren().getNodes()) + .flatMap(parent -> getDataSourceLevelNodes(parent).stream()) + .collect(Collectors.toList()); + } else { + return Arrays.asList(node); + } + } + /** * Searches tree for parent node by getting an ordered list of the ancestors * of the specified content. From aa41747841d943db595098f4b4a5cdd8ff8ede7b Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 23 Feb 2021 20:54:13 -0500 Subject: [PATCH 32/69] headers for host --- .../datamodel/Bundle.properties-MERGED | 2 +- .../sleuthkit/autopsy/datamodel/HostNode.java | 35 ++++++++++++---- .../autopsy/datamodel/PersonGroupingNode.java | 41 +++++++++++++------ 3 files changed, 56 insertions(+), 22 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED index d4ff918e9a..c3f0871cf4 100755 --- a/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/datamodel/Bundle.properties-MERGED @@ -303,7 +303,6 @@ OpenReportAction.actionPerformed.NoAssociatedEditorMessage=There is no associate OpenReportAction.actionPerformed.NoOpenInEditorSupportMessage=This platform (operating system) does not support opening a file in an editor this way. OpenReportAction.actionPerformed.MissingReportFileMessage=The report file no longer exists. OpenReportAction.actionPerformed.ReportFileOpenPermissionDeniedMessage=Permission to open the report file was denied. -PersonGroupingNode_createSheet_nameProperty=Name OsAccount_listNode_name=OS Accounts OsAccounts_accountNameProperty_desc=Os Account name OsAccounts_accountNameProperty_displayName=Name @@ -317,6 +316,7 @@ OsAccounts_createdTimeProperty_name=creationTime OsAccounts_loginNameProperty_desc=Os Account login name OsAccounts_loginNameProperty_displayName=Login Name OsAccounts_loginNameProperty_name=loginName +PersonGroupingNode_createSheet_nameProperty=Name PersonNode_unknownPersonNode_title=Unknown Persons PoolNode.createSheet.name.desc=no description PoolNode.createSheet.name.displayName=Name diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java index 2fee291117..4d5b2696be 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java @@ -20,8 +20,6 @@ package org.sleuthkit.autopsy.datamodel; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.util.Arrays; -import java.util.Collections; import java.util.EnumSet; import java.util.List; import java.util.function.Function; @@ -159,6 +157,18 @@ public class HostNode extends DisplayableItemNode { return new DataSourceGroupingNode(key.getDataSource()); }; + /** + * Get the host name or 'unknown host' if null. + * + * @param host The host. + * @return The display name. + */ + private static String getHostName(Host host) { + return (host == null || host.getName() == null) + ? Bundle.HostGroupingNode_unknownHostNode_title() + : host.getName(); + } + private final Host host; /** @@ -188,14 +198,21 @@ public class HostNode extends DisplayableItemNode { * @param host The host. */ private HostNode(Children children, Host host) { - super(children, host == null ? null : Lookups.singleton(host)); + this(children, host, getHostName(host)); + } - String safeName = (host == null || host.getName() == null) - ? Bundle.HostGroupingNode_unknownHostNode_title() - : host.getName(); - - super.setName(safeName); - super.setDisplayName(safeName); + /** + * Constructor. + * + * @param children The children for this host node. + * @param host The host. + * @param displayName The displayName. + */ + private HostNode(Children children, Host host, String displayName) { + super(children, + host == null ? Lookups.fixed(displayName) : Lookups.fixed(host, displayName)); + super.setName(displayName); + super.setDisplayName(displayName); this.setIconBaseWithExtension(ICON_PATH); this.host = host; } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java index 7918a84a79..f788e100ab 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java @@ -147,20 +147,38 @@ public class PersonGroupingNode extends DisplayableItemNode { } } + /** + * Gets the display name for this person or "Unknown Persons". + * + * @param person The person. + * @return The non-empty string for the display name. + */ + private static String getDisplayName(Person person) { + return (person == null || person.getName() == null) + ? Bundle.PersonNode_unknownPersonNode_title() + : person.getName(); + } + /** * Main constructor. * * @param person The person record to be represented. */ PersonGroupingNode(Person person) { - super(Children.create(new PersonChildren(person), false), person == null ? null : Lookups.singleton(person)); + this(person, getDisplayName(person)); + } - String safeName = (person == null || person.getName() == null) - ? Bundle.PersonNode_unknownPersonNode_title() - : person.getName(); - - super.setName(safeName); - super.setDisplayName(safeName); + /** + * Constructor. + * + * @param person The person. + * @param displayName The display name for the person. + */ + private PersonGroupingNode(Person person, String displayName) { + super(Children.create(new PersonChildren(person), false), + person == null ? Lookups.fixed(displayName) : Lookups.fixed(person, displayName)); + super.setName(displayName); + super.setDisplayName(displayName); this.setIconBaseWithExtension(ICON_PATH); } @@ -178,11 +196,10 @@ public class PersonGroupingNode extends DisplayableItemNode { public T accept(DisplayableItemNodeVisitor visitor) { return visitor.visit(this); } - + @NbBundle.Messages({ - "PersonGroupingNode_createSheet_nameProperty=Name", - }) - @Override + "PersonGroupingNode_createSheet_nameProperty=Name",}) + @Override protected Sheet createSheet() { Sheet sheet = Sheet.createDefault(); Sheet.Set sheetSet = sheet.get(Sheet.PROPERTIES); @@ -192,7 +209,7 @@ public class PersonGroupingNode extends DisplayableItemNode { } sheetSet.put(new NodeProperty<>("Name", Bundle.PersonGroupingNode_createSheet_nameProperty(), "", getDisplayName())); //NON-NLS - + return sheet; } } From 98bf69a7883d3d179b093df694d576bb6cf8ac0e Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Wed, 24 Feb 2021 09:56:06 -0500 Subject: [PATCH 33/69] getNameIdentifier --- .../autopsy/datamodel/DataSourcesByTypeNode.java | 9 ++++++++- .../sleuthkit/autopsy/datamodel/DataSourcesNode.java | 10 +++++++++- .../autopsy/directorytree/ViewContextAction.java | 8 ++++---- 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesByTypeNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesByTypeNode.java index 3152573403..e855fa8855 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesByTypeNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesByTypeNode.java @@ -93,8 +93,15 @@ public class DataSourcesByTypeNode extends DisplayableItemNode { } - public static final String NAME = Bundle.DataSourcesHostsNode_name(); + private static final String NAME = Bundle.DataSourcesHostsNode_name(); + /** + * @return The name used to identify the node of this type with a lookup. + */ + public static String getNameIdentifier() { + return NAME; + } + /** * Main constructor. */ diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesNode.java index 5ab29a5376..033f14fc04 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesNode.java @@ -43,7 +43,15 @@ import org.sleuthkit.datamodel.TskDataException; */ public class DataSourcesNode extends DisplayableItemNode { - public static final String NAME = NbBundle.getMessage(DataSourcesNode.class, "DataSourcesNode.name"); + private static final String NAME = NbBundle.getMessage(DataSourcesNode.class, "DataSourcesNode.name"); + + /** + * @return The name used to identify the node of this type with a lookup. + */ + public static String getNameIdentifier() { + return NAME; + } + private final String displayName; // NOTE: The images passed in via argument will be ignored. diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java b/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java index 7a105f389c..cd66b54971 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java @@ -211,7 +211,7 @@ public class ViewContextAction extends AbstractAction { } // for this data source, get the "Data Sources" child node - Node datasourceGroupingNode = treeNode.getChildren().findChild(DataSourcesNode.NAME); + Node datasourceGroupingNode = treeNode.getChildren().findChild(DataSourcesNode.getNameIdentifier()); // check whether this is the data source we are looking for parentTreeViewNode = findParentNodeInTree(parentContent, datasourceGroupingNode); @@ -227,7 +227,7 @@ public class ViewContextAction extends AbstractAction { Node datasourceGroupingNode = rootChildren.findChild(dsname); if (!Objects.isNull(datasourceGroupingNode)) { Children dsChildren = datasourceGroupingNode.getChildren(); - parentTreeViewNode = dsChildren.findChild(DataSourcesNode.NAME); + parentTreeViewNode = dsChildren.findChild(DataSourcesNode.getNameIdentifier()); } } @@ -244,7 +244,7 @@ public class ViewContextAction extends AbstractAction { } else { // Classic view // Start the search at the DataSourcesNode Children rootChildren = treeViewExplorerMgr.getRootContext().getChildren(); - Node rootDsNode = rootChildren == null ? null : rootChildren.findChild(DataSourcesByTypeNode.NAME); + Node rootDsNode = rootChildren == null ? null : rootChildren.findChild(DataSourcesByTypeNode.getNameIdentifier()); if (rootDsNode != null) { for (Node dataSourceLevelNode : getDataSourceLevelNodes(rootDsNode)) { DataSource dataSource = dataSourceLevelNode.getLookup().lookup(DataSource.class); @@ -313,7 +313,7 @@ public class ViewContextAction extends AbstractAction { return Collections.emptyList(); } else if (node.getLookup().lookup(Host.class) != null || node.getLookup().lookup(Person.class) != null || - DataSourcesByTypeNode.NAME.equals(node.getLookup().lookup(String.class))) { + DataSourcesByTypeNode.getNameIdentifier().equals(node.getLookup().lookup(String.class))) { Children children = node.getChildren(); Node[] childNodes = children == null ? null : children.getNodes(); if (childNodes == null) { From 76cf9fa2010dadd593bcbdd16a13c42735f71d87 Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Wed, 24 Feb 2021 15:10:11 -0500 Subject: [PATCH 34/69] Bug fixes and code polish --- .../autopsy/keywordsearch/Bundle.properties | 4 +--- .../keywordsearch/Bundle.properties-MERGED | 15 +++------------ .../autopsy/keywordsearch/Bundle_ja.properties | 3 +-- .../keywordsearch/ExtractAllTermsReport.java | 14 ++++++-------- .../org/sleuthkit/autopsy/keywordsearch/layer.xml | 4 ---- 5 files changed, 11 insertions(+), 29 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties index 8a0054c80d..d2ab5f76c7 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties @@ -23,7 +23,7 @@ KeywordSearchEditListPanel.emptyKeyword.text=Empty keyword KeywordSearchEditListPanel.errorAddingKeywords.text=Error adding keyword(s) KeywordSearchListsManagementPanel.newListButton.text=New List KeywordSearchListsManagementPanel.importButton.text=Import List -KeywordSearchListsViewerPanel.searchAddButton.text=Extract +KeywordSearchListsViewerPanel.searchAddButton.text=Search KeywordSearchListsViewerPanel.manageListsButton.text=Manage Lists KeywordSearchListsViewerPanel.ingestIndexLabel.text=Files Indexed: KeywordSearchEditListPanel.ingestMessagesCheckbox.text=Send ingest inbox messages for each hit @@ -320,5 +320,3 @@ ExtractedContentPanel.pageOfLabel.text=of ExtractedContentPanel.pageCurLabel.text=- ExtractedContentPanel.pagesLabel.text=Page: KeywordSearchGlobalSearchSettingsPanel.ocrCheckBox.text=Enable Optical Character Recognition (OCR) -TermsExtractionDialog.selectDataSourceLabel.text=Select Data Source: -TermsExtractionDialog.statusLabel.text= diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED index e3f51bbb12..7856cd5bb4 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED @@ -10,17 +10,18 @@ DropdownSingleTermSearchPanel.selected=Ad Hoc Search data source filter is selec DropdownSingleTermSearchPanel.warning.text=Boundary characters ^ and $ do not match word boundaries. Consider\nreplacing with an explicit list of boundary characters, such as [ \\.,] DropdownSingleTermSearchPanel.warning.title=Warning ExtractAllTermsReport.error.noOpenCase=No currently open case. -ExtractAllTermsReport.error.unableToOpenCase=Exception while getting open case. ExtractAllTermsReport.export.error=Error During Unique Word Export ExtractAllTermsReport.exportComplete=Unique Word Export Complete ExtractAllTermsReport.getName.text=Extract Unique Words ExtractAllTermsReport.numberExtractedTerms=Extracted {0} terms... ExtractAllTermsReport.search.ingestInProgressBody=Keyword Search Ingest is currently running.
    Not all files have been indexed and this search might yield incomplete results.
    Do you want to proceed with this search anyway? +# {0} - Keyword search commit frequency ExtractAllTermsReport.search.noFilesInIdxMsg=No files are in index yet.
    Try again later. Index is updated every {0} minutes. ExtractAllTermsReport.search.noFilesInIdxMsg2=No files are in index yet.
    Try again later ExtractAllTermsReport.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress ExtractAllTermsReport.startExport=Starting Unique Word Export ExtractedContentPanel.setMarkup.panelTxt=Loading text... Please wait +# {0} - Content name ExtractedContentPanel.SetMarkup.progress.loading=Loading text for {0} GlobalEditListPanel.editKeyword.title=Edit Keyword GlobalEditListPanel.warning.text=Boundary characters ^ and $ do not match word boundaries. Consider\nreplacing with an explicit list of boundary characters, such as [ \\.,] @@ -70,7 +71,7 @@ KeywordSearchEditListPanel.emptyKeyword.text=Empty keyword KeywordSearchEditListPanel.errorAddingKeywords.text=Error adding keyword(s) KeywordSearchListsManagementPanel.newListButton.text=New List KeywordSearchListsManagementPanel.importButton.text=Import List -KeywordSearchListsViewerPanel.searchAddButton.text=Extract +KeywordSearchListsViewerPanel.searchAddButton.text=Search KeywordSearchListsViewerPanel.manageListsButton.text=Manage Lists KeywordSearchListsViewerPanel.ingestIndexLabel.text=Files Indexed: KeywordSearchEditListPanel.ingestMessagesCheckbox.text=Send ingest inbox messages for each hit @@ -398,18 +399,8 @@ ExtractedContentPanel.pageOfLabel.text=of ExtractedContentPanel.pageCurLabel.text=- ExtractedContentPanel.pagesLabel.text=Page: KeywordSearchGlobalSearchSettingsPanel.ocrCheckBox.text=Enable Optical Character Recognition (OCR) -TermsExtractionDialog.dialogErrorHeader=Error Extracting Unique Words -TermsExtractionDialog.export.error=Error During Unique Word Export -TermsExtractionDialog.exportComplete=Unique Word Export Complete -TermsExtractionDialog.search.ingestInProgressBody=Keyword Search Ingest is currently running.
    Not all files have been indexed and this search might yield incomplete results.
    Do you want to proceed with this search anyway? -TermsExtractionDialog.search.noFilesInIdxMsg=No files are in index yet.
    Try again later. Index is updated every {0} minutes. -TermsExtractionDialog.search.noFilesInIdxMsg2=No files are in index yet.
    Try again later -TermsExtractionDialog.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress TermsExtractionDialog.selectDataSourceLabel.text=Select Data Source: -TermsExtractionDialog.startExport=Starting Unique Word Export TermsExtractionDialog.statusLabel.text= -TermsExtractionDialog.unableToGetDataSources.error=Unable to populate list of data sources -TermsExtractionPanel.selected=Data source filter is selected TextZoomPanel.zoomInButton.text= TextZoomPanel.zoomOutButton.text= TextZoomPanel.zoomResetButton.text=Reset diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties index cf7f6f92cb..2f50e62095 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle_ja.properties @@ -398,5 +398,4 @@ ExtractedContentPanel.pageOfLabel.text=/ ExtractedContentPanel.pageCurLabel.text=- ExtractedContentPanel.pagesLabel.text=\u30da\u30fc\u30b8: TextZoomPanel.zoomResetButton.text=\u30ea\u30bb\u30c3\u30c8 -TermsExtractionDialog.selectDataSourceLabel.text=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb: -TermsExtractionDialog.statusLabel.text=\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3055\u308c\u305f\u30d5\u30a1\u30a4\u30eb: + diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java index b1aa714af7..40da04822c 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java @@ -49,8 +49,9 @@ public class ExtractAllTermsReport implements GeneralReportModule { @NbBundle.Messages({ "ExtractAllTermsReport.error.noOpenCase=No currently open case.", - "ExtractAllTermsReport.search.noFilesInIdxMsg=No files are in index yet.
    Try again later. Index is updated every {0} minutes.", - "ExtractAllTermsReport.search.noFilesInIdxMsg2=No files are in index yet.
    Try again later", + "# {0} - Keyword search commit frequency", + "ExtractAllTermsReport.search.noFilesInIdxMsg=No files are in index yet. Try again later. Index is updated every {0} minutes.", + "ExtractAllTermsReport.search.noFilesInIdxMsg2=No files are in index yet. Try again later", "ExtractAllTermsReport.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress", "ExtractAllTermsReport.search.ingestInProgressBody=Keyword Search Ingest is currently running.
    Not all files have been indexed and this search might yield incomplete results.
    Do you want to proceed with this search anyway?", "ExtractAllTermsReport.startExport=Starting Unique Word Export", @@ -85,7 +86,6 @@ public class ExtractAllTermsReport implements GeneralReportModule { progressPanel.complete(ReportProgressPanel.ReportStatus.ERROR, Bundle.ExtractAllTermsReport_search_noFilesInIdxMsg2()); } progressPanel.setIndeterminate(false); - progressPanel.complete(ReportProgressPanel.ReportStatus.ERROR); return; } @@ -105,16 +105,14 @@ public class ExtractAllTermsReport implements GeneralReportModule { Path outputFile = Paths.get(settings.getReportDirectoryPath(), getRelativeFilePath()); server.extractAllTermsForDataSource(outputFile, progressPanel); } catch (KeywordSearchModuleException | NoOpenCoreException ex) { - logger.log(Level.SEVERE, "Exception while extracting all terms", ex); //NON-NLS - progressPanel.updateStatusLabel(Bundle.ExtractAllTermsReport_export_error()); + logger.log(Level.SEVERE, "Exception while extracting unique terms", ex); //NON-NLS progressPanel.setIndeterminate(false); - progressPanel.complete(ReportProgressPanel.ReportStatus.ERROR); + progressPanel.complete(ReportProgressPanel.ReportStatus.ERROR, Bundle.ExtractAllTermsReport_export_error()); return; } - progressPanel.updateStatusLabel(Bundle.ExtractAllTermsReport_exportComplete()); progressPanel.setIndeterminate(false); - progressPanel.complete(ReportProgressPanel.ReportStatus.COMPLETE); + progressPanel.complete(ReportProgressPanel.ReportStatus.COMPLETE, Bundle.ExtractAllTermsReport_exportComplete()); } @Override diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/layer.xml b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/layer.xml index 8effaba623..bde41b641f 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/layer.xml +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/layer.xml @@ -7,10 +7,6 @@ ====================================================== --> - - - - From edb24ce07c922ac5355a60e1e0c6f1c5964fbe84 Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Wed, 24 Feb 2021 15:17:45 -0500 Subject: [PATCH 35/69] Potential NPE fix --- .../org/sleuthkit/autopsy/keywordsearch/Server.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java index 1c4fe6364d..97412c2004 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java @@ -671,9 +671,18 @@ public class Server { "Server.status.failed.msg=Local Solr server did not respond to status request. This may be because the server failed to start or is taking too long to initialize.",}) synchronized void startLocalSolr(SOLR_VERSION version) throws KeywordSearchModuleException, SolrServerNoPortException, SolrServerException { + logger.log(Level.INFO, "Starting local Solr " + version + " server"); //NON-NLS + if (version == SOLR_VERSION.SOLR8) { + localSolrFolder = InstalledFileLocator.getDefault().locate("solr", Server.class.getPackage().getName(), false); //NON-NLS + } else { + // solr4 + localSolrFolder = InstalledFileLocator.getDefault().locate("solr4", Server.class.getPackage().getName(), false); //NON-NLS + } + if (isLocalSolrRunning()) { if (localServerVersion.equals(version)) { // this version of local server is already running + logger.log(Level.INFO, "Local Solr " + version + " server is already running"); //NON-NLS return; } else { // wrong version of local server is running, stop it @@ -715,12 +724,10 @@ public class Server { try { if (version == SOLR_VERSION.SOLR8) { logger.log(Level.INFO, "Starting Solr 8 server"); //NON-NLS - localSolrFolder = InstalledFileLocator.getDefault().locate("solr", Server.class.getPackage().getName(), false); //NON-NLS curSolrProcess = runLocalSolr8ControlCommand(new ArrayList<>(Arrays.asList("start", "-p", //NON-NLS Integer.toString(localSolrServerPort)))); //NON-NLS } else { // solr4 - localSolrFolder = InstalledFileLocator.getDefault().locate("solr4", Server.class.getPackage().getName(), false); //NON-NLS logger.log(Level.INFO, "Starting Solr 4 server"); //NON-NLS curSolrProcess = runLocalSolr4ControlCommand(new ArrayList<>( Arrays.asList("-Dbootstrap_confdir=../solr/configsets/AutopsyConfig/conf", //NON-NLS From b5849851343594aea708bf8eac1c977d15d4a23f Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Wed, 24 Feb 2021 20:48:32 -0500 Subject: [PATCH 36/69] view source result fix --- .../autopsy/datamodel/ResultsNode.java | 6 +- .../DirectoryTreeTopComponent.java | 92 +++++++++++++++++-- 2 files changed, 90 insertions(+), 8 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/ResultsNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/ResultsNode.java index 339c6bb29b..e9b2eba696 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/ResultsNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/ResultsNode.java @@ -31,8 +31,12 @@ import org.sleuthkit.datamodel.SleuthkitCase; public class ResultsNode extends DisplayableItemNode { @NbBundle.Messages("ResultsNode.name.text=Results") - public static final String NAME = Bundle.ResultsNode_name_text(); + private static final String NAME = Bundle.ResultsNode_name_text(); + public static String getNameIdentifier() { + return NAME; + } + public ResultsNode(SleuthkitCase sleuthkitCase) { this(sleuthkitCase, 0); } diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java index b4c9e29658..e616b4ac9c 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java @@ -35,6 +35,7 @@ import java.util.concurrent.ExecutionException; import java.util.logging.Level; import java.util.prefs.PreferenceChangeEvent; import java.util.prefs.PreferenceChangeListener; +import java.util.stream.Stream; import javax.swing.Action; import javax.swing.SwingUtilities; import javax.swing.SwingWorker; @@ -81,6 +82,8 @@ import org.sleuthkit.autopsy.datamodel.InterestingHits; import org.sleuthkit.autopsy.datamodel.KeywordHits; import org.sleuthkit.autopsy.datamodel.ResultsNode; import org.sleuthkit.autopsy.datamodel.AutopsyTreeChildFactory; +import org.sleuthkit.autopsy.datamodel.DataSourceGrouping; +import org.sleuthkit.autopsy.datamodel.DataSourcesByTypeNode; import org.sleuthkit.autopsy.datamodel.Tags; import org.sleuthkit.autopsy.datamodel.ViewsNode; import org.sleuthkit.autopsy.datamodel.accounts.Accounts; @@ -89,6 +92,9 @@ import org.sleuthkit.datamodel.Account; import org.sleuthkit.datamodel.BlackboardArtifact; import org.sleuthkit.datamodel.BlackboardAttribute; import org.sleuthkit.datamodel.Content; +import org.sleuthkit.datamodel.DataSource; +import org.sleuthkit.datamodel.Host; +import org.sleuthkit.datamodel.Person; import org.sleuthkit.datamodel.TskCoreException; /** @@ -193,7 +199,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat private void preExpandNodes(Children rootChildren) { BeanTreeView tree = getTree(); - Node results = rootChildren.findChild(ResultsNode.NAME); + Node results = rootChildren.findChild(ResultsNode.getNameIdentifier()); if (!Objects.isNull(results)) { tree.expandNode(results); Children resultsChildren = results.getChildren(); @@ -265,7 +271,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat * Setter to determine if rejected results should be shown or not. * * @param showRejectedResults True if showing rejected results; otherwise - * false. + * false. */ public void setShowRejectedResults(boolean showRejectedResults) { this.showRejectedResults = showRejectedResults; @@ -797,7 +803,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat } // change in node selection else if (changed.equals(ExplorerManager.PROP_SELECTED_NODES)) { respondSelection((Node[]) event.getOldValue(), (Node[]) event.getNewValue()); - } + } } } @@ -1012,8 +1018,7 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat * Set the selected node using a path to a previously selected node. * * @param previouslySelectedNodePath Path to a previously selected node. - * @param rootNodeName Name of the root node to match, may be - * null. + * @param rootNodeName Name of the root node to match, may be null. */ private void setSelectedNode(final String[] previouslySelectedNodePath, final String rootNodeName) { if (previouslySelectedNodePath == null) { @@ -1070,12 +1075,85 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat return false; } + /** + * Does dfs search of node while nodes are Host, Person, or + * DataSourcesByType looking for the Results Node. + * + * @param node The node. + * @return The child nodes that are at the data source level. + */ + private Node getResultsNodeSearch(Node node, long dataSourceId) { + if (node == null) { + return null; + } else if (node.getLookup().lookup(Host.class) != null + || node.getLookup().lookup(Person.class) != null) { + Children children = node.getChildren(); + Node[] childNodes = children == null ? null : children.getNodes(); + if (childNodes != null) { + for (Node child : childNodes) { + Node foundExtracted = getResultsNodeSearch(child, dataSourceId); + if (foundExtracted != null) { + return foundExtracted; + } + } + } + } else { + DataSource dataSource = node.getLookup().lookup(DataSource.class); + if (dataSource != null && dataSource.getId() == dataSourceId) { + Children dsChildren = node.getChildren(); + if (dsChildren != null) { + return dsChildren.findChild(ResultsNode.getNameIdentifier()); + } + } + } + return null; + } + + /** + * Finds the results node for the specific artifact. + * + * @param art The artifact to find the relevant Results Node. + * @return THe Results Node or null. + */ + private Node getResultsNode(final BlackboardArtifact art) { + Children rootChilds = em.getRootContext().getChildren(); + + Node resultsNode = rootChilds.findChild(ResultsNode.getNameIdentifier()); + if (resultsNode != null) { + return resultsNode; + } + + long dataSourceId; + try { + dataSourceId = art.getDataSource().getId(); + } catch (TskCoreException ex) { + LOGGER.log(Level.WARNING, "There was an error fetching the data source id for artifact.", ex); + return null; + } + + Node[] rootNodes = rootChilds.getNodes(); + if (rootNodes != null) { + for (Node rootNode : rootNodes) { + resultsNode = getResultsNodeSearch(rootNode, dataSourceId); + if (resultsNode != null) { + return resultsNode; + } + } + } + + return null; + } + public void viewArtifact(final BlackboardArtifact art) { int typeID = art.getArtifactTypeID(); String typeName = art.getArtifactTypeName(); - Children rootChilds = em.getRootContext().getChildren(); Node treeNode = null; - Node resultsNode = rootChilds.findChild(ResultsNode.NAME); + + Node resultsNode = getResultsNode(art); + if (resultsNode == null) { + return; + } + Children resultsChilds = resultsNode.getChildren(); if (typeID == BlackboardArtifact.ARTIFACT_TYPE.TSK_HASHSET_HIT.getTypeID()) { Node hashsetRootNode = resultsChilds.findChild(typeName); From 8e214d34954f2143af382081bd277bd6be2ffa39 Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Thu, 25 Feb 2021 14:29:19 -0500 Subject: [PATCH 37/69] Bug fixes --- .../autopsy/keywordsearch/Bundle.properties-MERGED | 8 +++----- .../autopsy/keywordsearch/ExtractAllTermsReport.java | 5 ++--- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED index 7856cd5bb4..edff9a8e5e 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED @@ -16,8 +16,8 @@ ExtractAllTermsReport.getName.text=Extract Unique Words ExtractAllTermsReport.numberExtractedTerms=Extracted {0} terms... ExtractAllTermsReport.search.ingestInProgressBody=Keyword Search Ingest is currently running.
    Not all files have been indexed and this search might yield incomplete results.
    Do you want to proceed with this search anyway? # {0} - Keyword search commit frequency -ExtractAllTermsReport.search.noFilesInIdxMsg=No files are in index yet.
    Try again later. Index is updated every {0} minutes. -ExtractAllTermsReport.search.noFilesInIdxMsg2=No files are in index yet.
    Try again later +ExtractAllTermsReport.search.noFilesInIdxMsg=No files are in index yet. Try again later. Index is updated every {0} minutes. +ExtractAllTermsReport.search.noFilesInIdxMsg2=No files are in index yet. Try again later ExtractAllTermsReport.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress ExtractAllTermsReport.startExport=Starting Unique Word Export ExtractedContentPanel.setMarkup.panelTxt=Loading text... Please wait @@ -48,7 +48,7 @@ KeywordSearchResultFactory.createNodeForKey.noResultsFound.text=No results found KeywordSearchResultFactory.query.exception.msg=Could not perform the query OpenIDE-Module-Display-Category=Ingest Module -OpenIDE-Module-Long-Description=Keyword Search ingest module.\n\nThe module indexes files found in the disk image at ingest time.\nIt then periodically runs the search on the indexed files using one or more keyword lists (containing pure words and/or regular expressions) and posts results.\n\nThe module also contains additional tools integrated in the main GUI, such as keyword list configuration, keyword search bar in the top-right corner, extracted text viewer and search results viewer showing highlighted keywords found. +OpenIDE-Module-Long-Description=Keyword Search ingest module.\n\nThe module indexes files found in the disk image at ingest time.\nIt then periodically runs the search on the indexed files using one or more keyword lists (containing pure words and/or regular expressions) and posts results.\n\n\The module also contains additional tools integrated in the main GUI, such as keyword list configuration, keyword search bar in the top-right corner, extracted text viewer and search results viewer showing highlighted keywords found. OpenIDE-Module-Name=KeywordSearch OptionsCategory_Name_KeywordSearchOptions=Keyword Search OptionsCategory_Keywords_KeywordSearchOptions=Keyword Search @@ -399,8 +399,6 @@ ExtractedContentPanel.pageOfLabel.text=of ExtractedContentPanel.pageCurLabel.text=- ExtractedContentPanel.pagesLabel.text=Page: KeywordSearchGlobalSearchSettingsPanel.ocrCheckBox.text=Enable Optical Character Recognition (OCR) -TermsExtractionDialog.selectDataSourceLabel.text=Select Data Source: -TermsExtractionDialog.statusLabel.text= TextZoomPanel.zoomInButton.text= TextZoomPanel.zoomOutButton.text= TextZoomPanel.zoomResetButton.text=Reset diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java index 40da04822c..fa12b5747b 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java @@ -53,7 +53,7 @@ public class ExtractAllTermsReport implements GeneralReportModule { "ExtractAllTermsReport.search.noFilesInIdxMsg=No files are in index yet. Try again later. Index is updated every {0} minutes.", "ExtractAllTermsReport.search.noFilesInIdxMsg2=No files are in index yet. Try again later", "ExtractAllTermsReport.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress", - "ExtractAllTermsReport.search.ingestInProgressBody=Keyword Search Ingest is currently running.
    Not all files have been indexed and this search might yield incomplete results.
    Do you want to proceed with this search anyway?", + "ExtractAllTermsReport.search.ingestInProgressBody=Keyword Search Ingest is currently running.
    Not all files have been indexed and unique word extraction might yield incomplete results.
    Do you want to proceed with unique word extraction anyway?", "ExtractAllTermsReport.startExport=Starting Unique Word Export", "ExtractAllTermsReport.export.error=Error During Unique Word Export", "ExtractAllTermsReport.exportComplete=Unique Word Export Complete" @@ -93,8 +93,7 @@ public class ExtractAllTermsReport implements GeneralReportModule { if (isIngestRunning) { if (KeywordSearchUtil.displayConfirmDialog(Bundle.ExtractAllTermsReport_search_searchIngestInProgressTitle(), Bundle.ExtractAllTermsReport_search_ingestInProgressBody(), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.WARN) == false) { - progressPanel.setIndeterminate(false); - progressPanel.complete(ReportProgressPanel.ReportStatus.CANCELED); + progressPanel.cancel(); return; } } From ffa9a3e4fed7101bff273756d8f72e4560a444f8 Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Thu, 25 Feb 2021 14:52:59 -0500 Subject: [PATCH 38/69] Code polish --- .../keywordsearch/Bundle.properties-MERGED | 13 +++++++------ .../keywordsearch/ExtractAllTermsReport.java | 10 ++++++---- .../autopsy/keywordsearch/Server.java | 18 +++++++++++++++--- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED index edff9a8e5e..72de1c17d8 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties-MERGED @@ -9,19 +9,20 @@ DropdownListSearchPanel.selected=Ad Hoc Search data source filter is selected DropdownSingleTermSearchPanel.selected=Ad Hoc Search data source filter is selected DropdownSingleTermSearchPanel.warning.text=Boundary characters ^ and $ do not match word boundaries. Consider\nreplacing with an explicit list of boundary characters, such as [ \\.,] DropdownSingleTermSearchPanel.warning.title=Warning +ExtractAllTermsReport.description.text=Extracts all unique words out of the current case. NOTE: The extracted words are lower-cased. ExtractAllTermsReport.error.noOpenCase=No currently open case. -ExtractAllTermsReport.export.error=Error During Unique Word Export -ExtractAllTermsReport.exportComplete=Unique Word Export Complete +ExtractAllTermsReport.export.error=Error During Unique Word Extraction +ExtractAllTermsReport.exportComplete=Unique Word Extraction Complete ExtractAllTermsReport.getName.text=Extract Unique Words +# {0} - Number of extracted terms ExtractAllTermsReport.numberExtractedTerms=Extracted {0} terms... -ExtractAllTermsReport.search.ingestInProgressBody=Keyword Search Ingest is currently running.
    Not all files have been indexed and this search might yield incomplete results.
    Do you want to proceed with this search anyway? +ExtractAllTermsReport.search.ingestInProgressBody=Keyword Search Ingest is currently running.
    Not all files have been indexed and unique word extraction might yield incomplete results.
    Do you want to proceed with unique word extraction anyway? # {0} - Keyword search commit frequency ExtractAllTermsReport.search.noFilesInIdxMsg=No files are in index yet. Try again later. Index is updated every {0} minutes. ExtractAllTermsReport.search.noFilesInIdxMsg2=No files are in index yet. Try again later ExtractAllTermsReport.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress -ExtractAllTermsReport.startExport=Starting Unique Word Export +ExtractAllTermsReport.startExport=Starting Unique Word Extraction ExtractedContentPanel.setMarkup.panelTxt=Loading text... Please wait -# {0} - Content name ExtractedContentPanel.SetMarkup.progress.loading=Loading text for {0} GlobalEditListPanel.editKeyword.title=Edit Keyword GlobalEditListPanel.warning.text=Boundary characters ^ and $ do not match word boundaries. Consider\nreplacing with an explicit list of boundary characters, such as [ \\.,] @@ -48,7 +49,7 @@ KeywordSearchResultFactory.createNodeForKey.noResultsFound.text=No results found KeywordSearchResultFactory.query.exception.msg=Could not perform the query OpenIDE-Module-Display-Category=Ingest Module -OpenIDE-Module-Long-Description=Keyword Search ingest module.\n\nThe module indexes files found in the disk image at ingest time.\nIt then periodically runs the search on the indexed files using one or more keyword lists (containing pure words and/or regular expressions) and posts results.\n\n\The module also contains additional tools integrated in the main GUI, such as keyword list configuration, keyword search bar in the top-right corner, extracted text viewer and search results viewer showing highlighted keywords found. +OpenIDE-Module-Long-Description=Keyword Search ingest module.\n\nThe module indexes files found in the disk image at ingest time.\nIt then periodically runs the search on the indexed files using one or more keyword lists (containing pure words and/or regular expressions) and posts results.\n\nThe module also contains additional tools integrated in the main GUI, such as keyword list configuration, keyword search bar in the top-right corner, extracted text viewer and search results viewer showing highlighted keywords found. OpenIDE-Module-Name=KeywordSearch OptionsCategory_Name_KeywordSearchOptions=Keyword Search OptionsCategory_Keywords_KeywordSearchOptions=Keyword Search diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java index fa12b5747b..f646b0863a 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java @@ -54,9 +54,9 @@ public class ExtractAllTermsReport implements GeneralReportModule { "ExtractAllTermsReport.search.noFilesInIdxMsg2=No files are in index yet. Try again later", "ExtractAllTermsReport.search.searchIngestInProgressTitle=Keyword Search Ingest in Progress", "ExtractAllTermsReport.search.ingestInProgressBody=Keyword Search Ingest is currently running.
    Not all files have been indexed and unique word extraction might yield incomplete results.
    Do you want to proceed with unique word extraction anyway?", - "ExtractAllTermsReport.startExport=Starting Unique Word Export", - "ExtractAllTermsReport.export.error=Error During Unique Word Export", - "ExtractAllTermsReport.exportComplete=Unique Word Export Complete" + "ExtractAllTermsReport.startExport=Starting Unique Word Extraction", + "ExtractAllTermsReport.export.error=Error During Unique Word Extraction", + "ExtractAllTermsReport.exportComplete=Unique Word Extraction Complete" }) @Override public void generateReport(GeneralReportSettings settings, ReportProgressPanel progressPanel) { @@ -119,9 +119,11 @@ public class ExtractAllTermsReport implements GeneralReportModule { return false; } + @NbBundle.Messages({ + "ExtractAllTermsReport.description.text=Extracts all unique words out of the current case. NOTE: The extracted words are lower-cased."}) @Override public String getDescription() { - return "Extracts all unique words out of the current case. NOTE: The extracted words are lower-cased."; + return Bundle.ExtractAllTermsReport_description_text(); } @Override diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java index 2772776ed8..851e42e2da 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java @@ -1789,9 +1789,9 @@ public class Server { } /** - * Extract all unique terms/words for a given data source. + * Extract all unique terms/words from current index. * - * @param outputFile Absolute path to where the store the output + * @param outputFile Absolute path to the output file * @param progressPanel ReportProgressPanel to update * * @throws NoOpenCoreException @@ -2163,15 +2163,27 @@ public class Server { queryClient.deleteByQuery(deleteQuery); } + /** + * Extract all unique terms/words from current index. Gets 1,000 terms at a time and + * writes them to output file. Updates ReportProgressPanel status. + * + * @param outputFile Absolute path to the output file + * @param progressPanel ReportProgressPanel to update + * @throws IOException + * @throws SolrServerException + * @throws NoCurrentCaseException + * @throws KeywordSearchModuleException + */ @NbBundle.Messages({ + "# {0} - Number of extracted terms", "ExtractAllTermsReport.numberExtractedTerms=Extracted {0} terms..." }) private void extractAllTermsForDataSource(Path outputFile, ReportProgressPanel progressPanel) throws IOException, SolrServerException, NoCurrentCaseException, KeywordSearchModuleException { - // step through the terms Files.deleteIfExists(outputFile); OpenOption[] options = new OpenOption[] { java.nio.file.StandardOpenOption.CREATE, java.nio.file.StandardOpenOption.APPEND }; + // step through the terms int termStep = 1000; long numExtractedTerms = 0; String firstTerm = ""; From f7696486f2907778cb19ea26d85b1e4ede076c50 Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Thu, 25 Feb 2021 14:54:33 -0500 Subject: [PATCH 39/69] Minor --- .../autopsy/keywordsearch/ExtractAllTermsReport.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java index f646b0863a..b3a754d6b8 100755 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/ExtractAllTermsReport.java @@ -74,7 +74,7 @@ public class ExtractAllTermsReport implements GeneralReportModule { boolean isIngestRunning = IngestManager.getInstance().isIngestRunning(); int filesIndexed = 0; - try { // see if another node added any indexed files + try { // see if there are any indexed files filesIndexed = KeywordSearch.getServer().queryNumIndexedFiles(); } catch (KeywordSearchModuleException | NoOpenCoreException ignored) { } @@ -89,7 +89,7 @@ public class ExtractAllTermsReport implements GeneralReportModule { return; } - //check if keyword search module ingest is running (indexing, etc) + // check if keyword search module ingest is running (indexing, etc) if (isIngestRunning) { if (KeywordSearchUtil.displayConfirmDialog(Bundle.ExtractAllTermsReport_search_searchIngestInProgressTitle(), Bundle.ExtractAllTermsReport_search_ingestInProgressBody(), KeywordSearchUtil.DIALOG_MESSAGE_TYPE.WARN) == false) { From 564fefdba8b36ba8d28dbf22332055d5db567643 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 25 Feb 2021 21:26:10 -0500 Subject: [PATCH 40/69] fix for interesting file hits --- .../directorytree/DirectoryTreeTopComponent.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java index e616b4ac9c..ee83cf3e29 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java @@ -1238,11 +1238,16 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat if (setNode == null) { return; } - Children interestingChildren = setNode.getChildren(); - if (interestingChildren == null) { + + Children fileArtifactChildren = setNode.getChildren(); + Node[] fileArtifactNodes = fileArtifactChildren == null ? null : fileArtifactChildren.getNodes(); + if (fileArtifactNodes == null || fileArtifactNodes.length != 2) { return; } - treeNode = interestingChildren.findChild(art.getDisplayName()); + + treeNode = (typeID == BlackboardArtifact.ARTIFACT_TYPE.TSK_INTERESTING_FILE_HIT.getTypeID()) ? + fileArtifactNodes[0] : + fileArtifactNodes[1]; } catch (TskCoreException ex) { LOGGER.log(Level.WARNING, "Error retrieving attributes", ex); //NON-NLS } From 2bcade64f487da102df3fc0da69e55b67c0104b7 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Fri, 26 Feb 2021 11:13:45 -0500 Subject: [PATCH 41/69] commenting --- .../DirectoryTreeTopComponent.java | 21 ++++++++++++++----- .../directorytree/ViewContextAction.java | 6 ++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java index ee83cf3e29..4a3a432aed 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java @@ -1144,6 +1144,17 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat return null; } + /** + * Navigates to artifact and shows in view. + * + * NOTE: This code will likely need updating in the event that the structure + * of the nodes is changed (i.e. adding parent levels). Places to look when + * changing node structure include: + * + * DirectoryTreeTopComponent.viewArtifact, ViewContextAction + * + * @param art The artifact. + */ public void viewArtifact(final BlackboardArtifact art) { int typeID = art.getArtifactTypeID(); String typeName = art.getArtifactTypeName(); @@ -1238,16 +1249,16 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat if (setNode == null) { return; } - + Children fileArtifactChildren = setNode.getChildren(); Node[] fileArtifactNodes = fileArtifactChildren == null ? null : fileArtifactChildren.getNodes(); if (fileArtifactNodes == null || fileArtifactNodes.length != 2) { return; } - - treeNode = (typeID == BlackboardArtifact.ARTIFACT_TYPE.TSK_INTERESTING_FILE_HIT.getTypeID()) ? - fileArtifactNodes[0] : - fileArtifactNodes[1]; + + treeNode = (typeID == BlackboardArtifact.ARTIFACT_TYPE.TSK_INTERESTING_FILE_HIT.getTypeID()) + ? fileArtifactNodes[0] + : fileArtifactNodes[1]; } catch (TskCoreException ex) { LOGGER.log(Level.WARNING, "Error retrieving attributes", ex); //NON-NLS } diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java b/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java index cd66b54971..bb8fd7c561 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java @@ -147,6 +147,12 @@ public class ViewContextAction extends AbstractAction { * branch of the tree view to the level of the parent of the content, * selecting the parent in the tree view, then selecting the content in the * results view. + * + * NOTE: This code will likely need updating in the event that the structure + * of the nodes is changed (i.e. adding parent levels). Places to look when + * changing node structure include: + * + * DirectoryTreeTopComponent.viewArtifact, ViewContextAction * * @param event The action event. */ From 53842d92024cfd6ce45d8aa9e6cb46eb9e496dfc Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Fri, 26 Feb 2021 11:24:55 -0500 Subject: [PATCH 42/69] jython upgrade --- Core/ivy.xml | 2 +- Core/nbproject/project.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Core/ivy.xml b/Core/ivy.xml index 332383e433..5173860c32 100644 --- a/Core/ivy.xml +++ b/Core/ivy.xml @@ -13,7 +13,7 @@ - + diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml index 5f2696cde2..d59036a1f2 100644 --- a/Core/nbproject/project.xml +++ b/Core/nbproject/project.xml @@ -706,8 +706,8 @@ release\modules\ext\google-auth-library-oauth2-http-0.15.0.jar - ext/jython-standalone-2.7.0.jar - release\modules\ext\jython-standalone-2.7.0.jar + ext/jython-standalone-2.7.2.jar + release\modules\ext\jython-standalone-2.7.2.jar ext/commons-lang-2.6.jar From 6336bb2cee334156f4d086c0cee0de79c109efbc Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Fri, 26 Feb 2021 16:17:50 -0500 Subject: [PATCH 43/69] 7302 fix animation hop on domain discovery details by simplifying code --- .../autopsy/discovery/ui/DomainSummaryViewer.java | 10 +++------- .../sleuthkit/autopsy/discovery/ui/ResultsPanel.java | 4 ++-- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryViewer.java b/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryViewer.java index ef3c7d6ad6..1560b276c1 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryViewer.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/DomainSummaryViewer.java @@ -93,16 +93,12 @@ public class DomainSummaryViewer extends javax.swing.JPanel { * reflect the currently selected domain. Will populate the list with * nothing when a domain is not used. * - * @param useDomain If the currently selected domain should be used to - * retrieve a list. */ @ThreadConfined(type = ThreadConfined.ThreadType.AWT) - void sendPopulateEvent(boolean useDomain) { + void sendPopulateEvent() { String domain = ""; - if (useDomain) { - if (domainList.getSelectedIndex() != -1) { - domain = domainListModel.getElementAt(domainList.getSelectedIndex()).getResultDomain().getDomain(); - } + if (domainList.getSelectedIndex() != -1) { + domain = domainListModel.getElementAt(domainList.getSelectedIndex()).getResultDomain().getDomain(); } //send populateMesage DiscoveryEventUtils.getDiscoveryEventBus().post(new DiscoveryEventUtils.PopulateDomainTabsEvent(domain)); diff --git a/Core/src/org/sleuthkit/autopsy/discovery/ui/ResultsPanel.java b/Core/src/org/sleuthkit/autopsy/discovery/ui/ResultsPanel.java index e1219889a8..5cbb632e57 100644 --- a/Core/src/org/sleuthkit/autopsy/discovery/ui/ResultsPanel.java +++ b/Core/src/org/sleuthkit/autopsy/discovery/ui/ResultsPanel.java @@ -128,8 +128,8 @@ final class ResultsPanel extends javax.swing.JPanel { } }); domainSummaryViewer.addListSelectionListener((e) -> { - if (resultType == SearchData.Type.DOMAIN) { - domainSummaryViewer.sendPopulateEvent(!e.getValueIsAdjusting()); + if (resultType == SearchData.Type.DOMAIN && !e.getValueIsAdjusting()) { + domainSummaryViewer.sendPopulateEvent(); } }); } From 1c3059d76c7095d3d0273b564eb2261f85ffbc0a Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Mon, 1 Mar 2021 15:47:12 -0500 Subject: [PATCH 44/69] added hosts and persons autopsy events --- .../sleuthkit/autopsy/casemodule/Case.java | 159 +++++++++++++++++- .../casemodule/events/HostAddedEvent.java | 39 +++++ .../casemodule/events/HostChangedEvent.java | 41 +++++ .../autopsy/casemodule/events/HostEvent.java | 87 ++++++++++ .../casemodule/events/HostRemovedEvent.java | 39 +++++ .../casemodule/events/PersonAddedEvent.java | 39 +++++ .../casemodule/events/PersonChangedEvent.java | 41 +++++ .../casemodule/events/PersonEvent.java | 87 ++++++++++ .../casemodule/events/PersonRemovedEvent.java | 39 +++++ 9 files changed, 569 insertions(+), 2 deletions(-) create mode 100644 Core/src/org/sleuthkit/autopsy/casemodule/events/HostAddedEvent.java create mode 100644 Core/src/org/sleuthkit/autopsy/casemodule/events/HostChangedEvent.java create mode 100644 Core/src/org/sleuthkit/autopsy/casemodule/events/HostEvent.java create mode 100644 Core/src/org/sleuthkit/autopsy/casemodule/events/HostRemovedEvent.java create mode 100644 Core/src/org/sleuthkit/autopsy/casemodule/events/PersonAddedEvent.java create mode 100644 Core/src/org/sleuthkit/autopsy/casemodule/events/PersonChangedEvent.java create mode 100644 Core/src/org/sleuthkit/autopsy/casemodule/events/PersonEvent.java create mode 100644 Core/src/org/sleuthkit/autopsy/casemodule/events/PersonRemovedEvent.java diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index 0115b3a53c..eb37895a30 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -39,6 +39,7 @@ import java.sql.SQLException; import java.sql.Statement; import java.text.SimpleDateFormat; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.HashSet; @@ -81,6 +82,9 @@ import org.sleuthkit.autopsy.casemodule.events.ContentTagDeletedEvent; import org.sleuthkit.autopsy.casemodule.events.DataSourceAddedEvent; import org.sleuthkit.autopsy.casemodule.events.DataSourceDeletedEvent; import org.sleuthkit.autopsy.casemodule.events.DataSourceNameChangedEvent; +import org.sleuthkit.autopsy.casemodule.events.HostAddedEvent; +import org.sleuthkit.autopsy.casemodule.events.HostChangedEvent; +import org.sleuthkit.autopsy.casemodule.events.HostRemovedEvent; import org.sleuthkit.autopsy.casemodule.events.OsAccountAddedEvent; import org.sleuthkit.autopsy.casemodule.events.OsAccountChangedEvent; import org.sleuthkit.autopsy.casemodule.events.ReportAddedEvent; @@ -130,6 +134,7 @@ import org.sleuthkit.datamodel.Content; import org.sleuthkit.datamodel.ContentTag; import org.sleuthkit.datamodel.DataSource; import org.sleuthkit.datamodel.FileSystem; +import org.sleuthkit.datamodel.Host; import org.sleuthkit.datamodel.Image; import org.sleuthkit.datamodel.OsAccount; import org.sleuthkit.datamodel.OsAccountManager; @@ -426,8 +431,38 @@ public class Case { * OSAccount associated with the current case has changed. * Call getOsAccount to get the changed account; */ - OS_ACCOUNT_CHANGED; + OS_ACCOUNT_CHANGED, + + /** + * Hosts associated with the current case added. + */ + HOSTS_ADDED, + /** + * Hosts associated with the current case has changed. + */ + HOSTS_CHANGED, + + /** + * Hosts associated with the current case has been deleted. + */ + HOSTS_DELETED, + + /** + * Persons associated with the current case added. + */ + PERSONS_ADDED, + + /** + * Persons associated with the current case has changed. + */ + PERSONS_CHANGED, + + /** + * Persons associated with the current case has been deleted. + */ + PERSONS_DELETED + ; }; /** @@ -474,6 +509,78 @@ public class Case { eventPublisher.publish(new OsAccountChangedEvent(account)); } } + + /** + * Publishes an autopsy event from the sleuthkit HostCreationEvent + * indicating that hosts have been created. + * + * @param event The sleuthkit event for the creation of hosts. + */ + @Subscribe + public void publishHostsAddedEvent(HostCreationEvent event) { + eventPublisher.publish(new HostsAddedEvent( + event == null ? Collections.emptyList() : event.getHosts())); + } + + /** + * Publishes an autopsy event from the sleuthkit HostUpdateEvent + * indicating that hosts have been updated. + * + * @param event The sleuthkit event for the updating of hosts. + */ + @Subscribe + public void publishHostsChangedEvent(HostUpdateEvent event) { + eventPublisher.publish(new HostsChangedEvent( + event == null ? Collections.emptyList() : event.getHosts())); + } + + /** + * Publishes an autopsy event from the sleuthkit HostDeletedEvent + * indicating that hosts have been deleted. + * + * @param event The sleuthkit event for the deleting of hosts. + */ + @Subscribe + public void publishHostsDeletedEvent(HostDeletedEvent event) { + eventPublisher.publish(new HostsRemovedEvent( + event == null ? Collections.emptyList() : event.getHosts())); + } + + /** + * Publishes an autopsy event from the sleuthkit PersonCreationEvent + * indicating that persons have been created. + * + * @param event The sleuthkit event for the creation of persons. + */ + @Subscribe + public void publishPersonsAddedEvent(PersonCreationEvent event) { + eventPublisher.publish(new PersonsAddedEvent( + event == null ? Collections.emptyList() : event.getPersons())); + } + + /** + * Publishes an autopsy event from the sleuthkit PersonUpdateEvent + * indicating that persons have been updated. + * + * @param event The sleuthkit event for the updating of persons. + */ + @Subscribe + public void publishPersonsChangedEvent(PersonUpdateEvent event) { + eventPublisher.publish(new PersonsChangedEvent( + event == null ? Collections.emptyList() : event.getPersons())); + } + + /** + * Publishes an autopsy event from the sleuthkit PersonDeletedEvent + * indicating that persons have been deleted. + * + * @param event The sleuthkit event for the deleting of persons. + */ + @Subscribe + public void publishPersonsDeletedEvent(PersonDeletedEvent event) { + eventPublisher.publish(new PersonsRemovedEvent( + event == null ? Collections.emptyList() : event.getPersons())); + } } /** @@ -1680,7 +1787,55 @@ public class Case { public void notifyOsAccountChanged(OsAccount account) { eventPublisher.publish(new OsAccountChangedEvent(account)); } - + + /** + * Notify via an autopsy event that a host has been added. + * @param host The host that has been added. + */ + public void notifyHostAdded(Host host) { + eventPublisher.publish(new HostAddedEvent(Collections.singletonList(host))); + } + + /** + * Notify via an autopsy event that a host has been changed. + * @param newValue The host that has been updated. + */ + public void notifyHostChanged(Host newValue) { + eventPublisher.publish(new HostChangedEvent(Collections.singletonList(newValue))); + } + + /** + * Notify via an autopsy event that a host has been deleted. + * @param host The host that has been deleted. + */ + public void notifyHostDeleted(Host host) { + eventPublisher.publish(new HostRemovedEvent(Collections.singletonList(host))); + } + + /** + * Notify via an autopsy event that a person has been added. + * @param person The person that has been added. + */ + public void notifyPersonAdded(Person person) { + eventPublisher.publish(new PersonAddedEvent(Collections.singletonList(person))); + } + + /** + * Notify via an autopsy event that a person has been changed. + * @param newValue The person that has been updated. + */ + public void notifyPersonChanged(Person newValue) { + eventPublisher.publish(new PersonChangedEvent(Collections.singletonList(newValue))); + } + + /** + * Notify via an autopsy event that a person has been deleted. + * @param person The person that has been deleted. + */ + public void notifyPersonDeleted(Person person) { + eventPublisher.publish(new PersonRemovedEvent(Collections.singletonList(person))); + } + /** * Adds a report to the case. * diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/HostAddedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostAddedEvent.java new file mode 100644 index 0000000000..3676c475c0 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostAddedEvent.java @@ -0,0 +1,39 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.casemodule.events; + +import java.util.List; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.datamodel.Host; + +/** + * Event fired when new hosts are added. + */ +public class HostAddedEvent extends HostEvent { + + private static final long serialVersionUID = 1L; + + /** + * Main constructor. + * @param dataModelObjects The hosts that have been added. + */ + public HostAddedEvent(List dataModelObjects) { + super(Case.Events.HOST_ADDED.name(), dataModelObjects); + } +} diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/HostChangedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostChangedEvent.java new file mode 100644 index 0000000000..37e589ea61 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostChangedEvent.java @@ -0,0 +1,41 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.casemodule.events; + +import java.util.List; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.datamodel.Host; + +/** + * Event fired when hosts are changed. + */ +public class HostChangedEvent extends HostEvent { + + private static final long serialVersionUID = 1L; + + /** + * Main constructor. + * + * @param dataModelObjects The new values for the hosts that have been + * changed. + */ + public HostChangedEvent(List dataModelObjects) { + super(Case.Events.HOST_CHANGED.name(), dataModelObjects); + } +} diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/HostEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostEvent.java new file mode 100644 index 0000000000..0f2e1ed0e4 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostEvent.java @@ -0,0 +1,87 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.casemodule.events; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; +import org.sleuthkit.datamodel.Host; +import org.sleuthkit.datamodel.HostManager; +import org.sleuthkit.datamodel.SleuthkitCase; +import org.sleuthkit.datamodel.TskCoreException; + +/** + * Base event class for when something pertaining to hosts changes. + */ +public class HostEvent extends TskDataModelChangeEvent { + + /** + * Retrieves a list of ids from a list of hosts. + * + * @param hosts The hosts. + * @return The list of ids. + */ + private static List getIds(List hosts) { + return getSafeList(hosts).stream() + .filter(h -> h != null) + .map(h -> h.getId()).collect(Collectors.toList()); + } + + /** + * Returns the hosts or an empty list. + * + * @param hosts The host list. + * @return The host list or an empty list if the parameter is null. + */ + private static List getSafeList(List hosts) { + return hosts == null ? Collections.emptyList() : hosts; + } + + /** + * Main constructor. + * + * @param eventName The name of the Case.Events enum value for the event + * type. + * @param dataModelObjects The list of hosts for the event. + */ + protected HostEvent(String eventName, List dataModelObjects) { + super(eventName, getIds(dataModelObjects), new ArrayList<>(getSafeList(dataModelObjects))); + } + + @Override + protected List getDataModelObjects(SleuthkitCase caseDb, List ids) throws TskCoreException { + HostManager hostManager = caseDb.getHostManager(); + List toRet = new ArrayList<>(); + if (ids != null) { + for (Long id : ids) { + if (id == null) { + continue; + } + + Optional thisHostOpt = hostManager.getHost(id); + thisHostOpt.ifPresent((h) -> toRet.add(h)); + } + } + + return toRet; + } + +} diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/HostRemovedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostRemovedEvent.java new file mode 100644 index 0000000000..22cd237629 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostRemovedEvent.java @@ -0,0 +1,39 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.casemodule.events; + +import java.util.List; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.datamodel.Host; + +/** + * Event fired when hosts are removed. + */ +public class HostRemovedEvent extends HostEvent { + + private static final long serialVersionUID = 1L; + + /** + * Main constructor. + * @param dataModelObjects The list of hosts that have been deleted. + */ + public HostRemovedEvent(List dataModelObjects) { + super(Case.Events.HOST_DELETED.name(), dataModelObjects); + } +} diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonAddedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonAddedEvent.java new file mode 100644 index 0000000000..2d33315f95 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonAddedEvent.java @@ -0,0 +1,39 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.casemodule.events; + +import java.util.List; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.datamodel.Person; + +/** + * Event fired when new persons are added. + */ +public class PersonAddedEvent extends PersonEvent { + + private static final long serialVersionUID = 1L; + + /** + * Main constructor. + * @param dataModelObjects The persons that have been added. + */ + public PersonAddedEvent(List dataModelObjects) { + super(Case.Events.PERSON_ADDED.name(), dataModelObjects); + } +} diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonChangedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonChangedEvent.java new file mode 100644 index 0000000000..9209497de8 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonChangedEvent.java @@ -0,0 +1,41 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.casemodule.events; + +import java.util.List; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.datamodel.Person; + +/** + * Event fired when persons are changed. + */ +public class PersonChangedEvent extends PersonEvent { + + private static final long serialVersionUID = 1L; + + /** + * Main constructor. + * + * @param dataModelObjects The new values for the persons that have been + * changed. + */ + public PersonChangedEvent(List dataModelObjects) { + super(Case.Events.PERSON_CHANGED.name(), dataModelObjects); + } +} diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonEvent.java new file mode 100644 index 0000000000..f41ae6ff86 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonEvent.java @@ -0,0 +1,87 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.casemodule.events; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; +import org.sleuthkit.datamodel.Person; +import org.sleuthkit.datamodel.PersonManager; +import org.sleuthkit.datamodel.SleuthkitCase; +import org.sleuthkit.datamodel.TskCoreException; + +/** + * Base event class for when something pertaining to persons changes. + */ +public class PersonEvent extends TskDataModelChangeEvent { + + /** + * Retrieves a list of ids from a list of persons. + * + * @param persons The persons. + * @return The list of ids. + */ + private static List getIds(List persons) { + return getSafeList(persons).stream() + .filter(h -> h != null) + .map(h -> h.getId()).collect(Collectors.toList()); + } + + /** + * Returns the persons or an empty list. + * + * @param persons The person list. + * @return The person list or an empty list if the parameter is null. + */ + private static List getSafeList(List persons) { + return persons == null ? Collections.emptyList() : persons; + } + + /** + * Main constructor. + * + * @param eventName The name of the Case.Events enum value for the event + * type. + * @param dataModelObjects The list of persons for the event. + */ + protected PersonEvent(String eventName, List dataModelObjects) { + super(eventName, getIds(dataModelObjects), new ArrayList<>(getSafeList(dataModelObjects))); + } + + @Override + protected List getDataModelObjects(SleuthkitCase caseDb, List ids) throws TskCoreException { + PersonManager personManager = caseDb.getPersonManager(); + List toRet = new ArrayList<>(); + if (ids != null) { + for (Long id : ids) { + if (id == null) { + continue; + } + + Optional thisPersonOpt = personManager.getPerson(id); + thisPersonOpt.ifPresent((h) -> toRet.add(h)); + } + } + + return toRet; + } + +} diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonRemovedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonRemovedEvent.java new file mode 100644 index 0000000000..a33af32cc7 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonRemovedEvent.java @@ -0,0 +1,39 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2021 Basis Technology Corp. + * Contact: carrier sleuthkit org + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.sleuthkit.autopsy.casemodule.events; + +import java.util.List; +import org.sleuthkit.autopsy.casemodule.Case; +import org.sleuthkit.datamodel.Person; + +/** + * Event fired when persons are removed. + */ +public class PersonRemovedEvent extends PersonEvent { + + private static final long serialVersionUID = 1L; + + /** + * Main constructor. + * @param dataModelObjects The list of persons that have been deleted. + */ + public PersonRemovedEvent(List dataModelObjects) { + super(Case.Events.PERSON_DELETED.name(), dataModelObjects); + } +} From 31f8a3db49a380e500755fe8ce69a2b7398f304f Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Mon, 1 Mar 2021 20:15:00 -0500 Subject: [PATCH 45/69] 7332 ingest pipeline refactor fix --- .../src/org/sleuthkit/autopsy/ingest/IngestTaskPipeline.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestTaskPipeline.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestTaskPipeline.java index 5e918d4ddb..f7451dd9d8 100755 --- a/Core/src/org/sleuthkit/autopsy/ingest/IngestTaskPipeline.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestTaskPipeline.java @@ -323,6 +323,11 @@ abstract class IngestTaskPipeline { * performing the task. */ abstract void performTask(IngestJobPipeline ingestJobPipeline, T task) throws IngestModuleException; + + @Override + public void shutDown() { + module.shutDown(); + } } From f718f3ae07d23d7c8a39ecd73f77b1cfd902eace Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Mon, 1 Mar 2021 20:37:57 -0500 Subject: [PATCH 46/69] updates --- .../sleuthkit/autopsy/casemodule/Case.java | 40 ++++++++++------- ...stAddedEvent.java => HostsAddedEvent.java} | 6 +-- ...angedEvent.java => HostsChangedEvent.java} | 6 +-- .../{HostEvent.java => HostsEvent.java} | 4 +- ...movedEvent.java => HostsRemovedEvent.java} | 6 +-- ...AddedEvent.java => PersonsAddedEvent.java} | 6 +-- ...gedEvent.java => PersonsChangedEvent.java} | 6 +-- ...vedEvent.java => PersonsRemovedEvent.java} | 6 +-- .../{PersonEvent.java => PersonxEvent.java} | 4 +- .../datamodel/AutopsyTreeChildFactory.java | 23 +++++++--- .../sleuthkit/autopsy/datamodel/HostNode.java | 28 ++++++++++-- .../autopsy/datamodel/PersonGroupingNode.java | 43 ++++++++++++++++--- 12 files changed, 125 insertions(+), 53 deletions(-) rename Core/src/org/sleuthkit/autopsy/casemodule/events/{HostAddedEvent.java => HostsAddedEvent.java} (86%) rename Core/src/org/sleuthkit/autopsy/casemodule/events/{HostChangedEvent.java => HostsChangedEvent.java} (85%) rename Core/src/org/sleuthkit/autopsy/casemodule/events/{HostEvent.java => HostsEvent.java} (95%) rename Core/src/org/sleuthkit/autopsy/casemodule/events/{HostRemovedEvent.java => HostsRemovedEvent.java} (85%) rename Core/src/org/sleuthkit/autopsy/casemodule/events/{PersonAddedEvent.java => PersonsAddedEvent.java} (85%) rename Core/src/org/sleuthkit/autopsy/casemodule/events/{PersonChangedEvent.java => PersonsChangedEvent.java} (85%) rename Core/src/org/sleuthkit/autopsy/casemodule/events/{PersonRemovedEvent.java => PersonsRemovedEvent.java} (85%) rename Core/src/org/sleuthkit/autopsy/casemodule/events/{PersonEvent.java => PersonxEvent.java} (94%) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index eb37895a30..ffd226d6d3 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -82,11 +82,14 @@ import org.sleuthkit.autopsy.casemodule.events.ContentTagDeletedEvent; import org.sleuthkit.autopsy.casemodule.events.DataSourceAddedEvent; import org.sleuthkit.autopsy.casemodule.events.DataSourceDeletedEvent; import org.sleuthkit.autopsy.casemodule.events.DataSourceNameChangedEvent; -import org.sleuthkit.autopsy.casemodule.events.HostAddedEvent; -import org.sleuthkit.autopsy.casemodule.events.HostChangedEvent; -import org.sleuthkit.autopsy.casemodule.events.HostRemovedEvent; +import org.sleuthkit.autopsy.casemodule.events.HostsAddedEvent; +import org.sleuthkit.autopsy.casemodule.events.HostsChangedEvent; +import org.sleuthkit.autopsy.casemodule.events.HostsRemovedEvent; import org.sleuthkit.autopsy.casemodule.events.OsAccountAddedEvent; import org.sleuthkit.autopsy.casemodule.events.OsAccountChangedEvent; +import org.sleuthkit.autopsy.casemodule.events.PersonsAddedEvent; +import org.sleuthkit.autopsy.casemodule.events.PersonsChangedEvent; +import org.sleuthkit.autopsy.casemodule.events.PersonsRemovedEvent; import org.sleuthkit.autopsy.casemodule.events.ReportAddedEvent; import org.sleuthkit.autopsy.casemodule.multiusercases.CaseNodeData.CaseNodeDataException; import org.sleuthkit.autopsy.casemodule.multiusercases.CoordinationServiceUtils; @@ -135,11 +138,18 @@ import org.sleuthkit.datamodel.ContentTag; import org.sleuthkit.datamodel.DataSource; import org.sleuthkit.datamodel.FileSystem; import org.sleuthkit.datamodel.Host; +import org.sleuthkit.datamodel.HostManager.HostsCreationEvent; +import org.sleuthkit.datamodel.HostManager.HostsUpdateEvent; +import org.sleuthkit.datamodel.HostManager.HostsDeletionEvent; import org.sleuthkit.datamodel.Image; import org.sleuthkit.datamodel.OsAccount; import org.sleuthkit.datamodel.OsAccountManager; import org.sleuthkit.datamodel.OsAccountManager.OsAccountsCreationEvent; import org.sleuthkit.datamodel.OsAccountManager.OsAccountsUpdateEvent; +import org.sleuthkit.datamodel.Person; +import org.sleuthkit.datamodel.PersonManager.PersonsCreationEvent; +import org.sleuthkit.datamodel.PersonManager.PersonsUpdateEvent; +import org.sleuthkit.datamodel.PersonManager.PersonsDeletionEvent; import org.sleuthkit.datamodel.Report; import org.sleuthkit.datamodel.SleuthkitCase; import org.sleuthkit.datamodel.TimelineManager; @@ -517,7 +527,7 @@ public class Case { * @param event The sleuthkit event for the creation of hosts. */ @Subscribe - public void publishHostsAddedEvent(HostCreationEvent event) { + public void publishHostsAddedEvent(HostsCreationEvent event) { eventPublisher.publish(new HostsAddedEvent( event == null ? Collections.emptyList() : event.getHosts())); } @@ -529,7 +539,7 @@ public class Case { * @param event The sleuthkit event for the updating of hosts. */ @Subscribe - public void publishHostsChangedEvent(HostUpdateEvent event) { + public void publishHostsChangedEvent(HostsUpdateEvent event) { eventPublisher.publish(new HostsChangedEvent( event == null ? Collections.emptyList() : event.getHosts())); } @@ -541,7 +551,7 @@ public class Case { * @param event The sleuthkit event for the deleting of hosts. */ @Subscribe - public void publishHostsDeletedEvent(HostDeletedEvent event) { + public void publishHostsDeletedEvent(HostsDeletionEvent event) { eventPublisher.publish(new HostsRemovedEvent( event == null ? Collections.emptyList() : event.getHosts())); } @@ -553,7 +563,7 @@ public class Case { * @param event The sleuthkit event for the creation of persons. */ @Subscribe - public void publishPersonsAddedEvent(PersonCreationEvent event) { + public void publishPersonsAddedEvent(PersonsCreationEvent event) { eventPublisher.publish(new PersonsAddedEvent( event == null ? Collections.emptyList() : event.getPersons())); } @@ -565,7 +575,7 @@ public class Case { * @param event The sleuthkit event for the updating of persons. */ @Subscribe - public void publishPersonsChangedEvent(PersonUpdateEvent event) { + public void publishPersonsChangedEvent(PersonsUpdateEvent event) { eventPublisher.publish(new PersonsChangedEvent( event == null ? Collections.emptyList() : event.getPersons())); } @@ -577,7 +587,7 @@ public class Case { * @param event The sleuthkit event for the deleting of persons. */ @Subscribe - public void publishPersonsDeletedEvent(PersonDeletedEvent event) { + public void publishPersonsDeletedEvent(PersonsDeletionEvent event) { eventPublisher.publish(new PersonsRemovedEvent( event == null ? Collections.emptyList() : event.getPersons())); } @@ -1793,7 +1803,7 @@ public class Case { * @param host The host that has been added. */ public void notifyHostAdded(Host host) { - eventPublisher.publish(new HostAddedEvent(Collections.singletonList(host))); + eventPublisher.publish(new HostsAddedEvent(Collections.singletonList(host))); } /** @@ -1801,7 +1811,7 @@ public class Case { * @param newValue The host that has been updated. */ public void notifyHostChanged(Host newValue) { - eventPublisher.publish(new HostChangedEvent(Collections.singletonList(newValue))); + eventPublisher.publish(new HostsChangedEvent(Collections.singletonList(newValue))); } /** @@ -1809,7 +1819,7 @@ public class Case { * @param host The host that has been deleted. */ public void notifyHostDeleted(Host host) { - eventPublisher.publish(new HostRemovedEvent(Collections.singletonList(host))); + eventPublisher.publish(new HostsRemovedEvent(Collections.singletonList(host))); } /** @@ -1817,7 +1827,7 @@ public class Case { * @param person The person that has been added. */ public void notifyPersonAdded(Person person) { - eventPublisher.publish(new PersonAddedEvent(Collections.singletonList(person))); + eventPublisher.publish(new PersonsAddedEvent(Collections.singletonList(person))); } /** @@ -1825,7 +1835,7 @@ public class Case { * @param newValue The person that has been updated. */ public void notifyPersonChanged(Person newValue) { - eventPublisher.publish(new PersonChangedEvent(Collections.singletonList(newValue))); + eventPublisher.publish(new PersonsChangedEvent(Collections.singletonList(newValue))); } /** @@ -1833,7 +1843,7 @@ public class Case { * @param person The person that has been deleted. */ public void notifyPersonDeleted(Person person) { - eventPublisher.publish(new PersonRemovedEvent(Collections.singletonList(person))); + eventPublisher.publish(new PersonsRemovedEvent(Collections.singletonList(person))); } /** diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/HostAddedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostsAddedEvent.java similarity index 86% rename from Core/src/org/sleuthkit/autopsy/casemodule/events/HostAddedEvent.java rename to Core/src/org/sleuthkit/autopsy/casemodule/events/HostsAddedEvent.java index 3676c475c0..c10b66face 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/events/HostAddedEvent.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostsAddedEvent.java @@ -25,7 +25,7 @@ import org.sleuthkit.datamodel.Host; /** * Event fired when new hosts are added. */ -public class HostAddedEvent extends HostEvent { +public class HostsAddedEvent extends HostsEvent { private static final long serialVersionUID = 1L; @@ -33,7 +33,7 @@ public class HostAddedEvent extends HostEvent { * Main constructor. * @param dataModelObjects The hosts that have been added. */ - public HostAddedEvent(List dataModelObjects) { - super(Case.Events.HOST_ADDED.name(), dataModelObjects); + public HostsAddedEvent(List dataModelObjects) { + super(Case.Events.HOSTS_ADDED.name(), dataModelObjects); } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/HostChangedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostsChangedEvent.java similarity index 85% rename from Core/src/org/sleuthkit/autopsy/casemodule/events/HostChangedEvent.java rename to Core/src/org/sleuthkit/autopsy/casemodule/events/HostsChangedEvent.java index 37e589ea61..a5b8692c03 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/events/HostChangedEvent.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostsChangedEvent.java @@ -25,7 +25,7 @@ import org.sleuthkit.datamodel.Host; /** * Event fired when hosts are changed. */ -public class HostChangedEvent extends HostEvent { +public class HostsChangedEvent extends HostsEvent { private static final long serialVersionUID = 1L; @@ -35,7 +35,7 @@ public class HostChangedEvent extends HostEvent { * @param dataModelObjects The new values for the hosts that have been * changed. */ - public HostChangedEvent(List dataModelObjects) { - super(Case.Events.HOST_CHANGED.name(), dataModelObjects); + public HostsChangedEvent(List dataModelObjects) { + super(Case.Events.HOSTS_CHANGED.name(), dataModelObjects); } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/HostEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostsEvent.java similarity index 95% rename from Core/src/org/sleuthkit/autopsy/casemodule/events/HostEvent.java rename to Core/src/org/sleuthkit/autopsy/casemodule/events/HostsEvent.java index 0f2e1ed0e4..1ba225f4a2 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/events/HostEvent.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostsEvent.java @@ -31,7 +31,7 @@ import org.sleuthkit.datamodel.TskCoreException; /** * Base event class for when something pertaining to hosts changes. */ -public class HostEvent extends TskDataModelChangeEvent { +public class HostsEvent extends TskDataModelChangeEvent { /** * Retrieves a list of ids from a list of hosts. @@ -62,7 +62,7 @@ public class HostEvent extends TskDataModelChangeEvent { * type. * @param dataModelObjects The list of hosts for the event. */ - protected HostEvent(String eventName, List dataModelObjects) { + protected HostsEvent(String eventName, List dataModelObjects) { super(eventName, getIds(dataModelObjects), new ArrayList<>(getSafeList(dataModelObjects))); } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/HostRemovedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostsRemovedEvent.java similarity index 85% rename from Core/src/org/sleuthkit/autopsy/casemodule/events/HostRemovedEvent.java rename to Core/src/org/sleuthkit/autopsy/casemodule/events/HostsRemovedEvent.java index 22cd237629..407b83c32a 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/events/HostRemovedEvent.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/HostsRemovedEvent.java @@ -25,7 +25,7 @@ import org.sleuthkit.datamodel.Host; /** * Event fired when hosts are removed. */ -public class HostRemovedEvent extends HostEvent { +public class HostsRemovedEvent extends HostsEvent { private static final long serialVersionUID = 1L; @@ -33,7 +33,7 @@ public class HostRemovedEvent extends HostEvent { * Main constructor. * @param dataModelObjects The list of hosts that have been deleted. */ - public HostRemovedEvent(List dataModelObjects) { - super(Case.Events.HOST_DELETED.name(), dataModelObjects); + public HostsRemovedEvent(List dataModelObjects) { + super(Case.Events.HOSTS_DELETED.name(), dataModelObjects); } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonAddedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsAddedEvent.java similarity index 85% rename from Core/src/org/sleuthkit/autopsy/casemodule/events/PersonAddedEvent.java rename to Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsAddedEvent.java index 2d33315f95..0b7a0f6a12 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonAddedEvent.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsAddedEvent.java @@ -25,7 +25,7 @@ import org.sleuthkit.datamodel.Person; /** * Event fired when new persons are added. */ -public class PersonAddedEvent extends PersonEvent { +public class PersonsAddedEvent extends PersonxEvent { private static final long serialVersionUID = 1L; @@ -33,7 +33,7 @@ public class PersonAddedEvent extends PersonEvent { * Main constructor. * @param dataModelObjects The persons that have been added. */ - public PersonAddedEvent(List dataModelObjects) { - super(Case.Events.PERSON_ADDED.name(), dataModelObjects); + public PersonsAddedEvent(List dataModelObjects) { + super(Case.Events.PERSONS_ADDED.name(), dataModelObjects); } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonChangedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsChangedEvent.java similarity index 85% rename from Core/src/org/sleuthkit/autopsy/casemodule/events/PersonChangedEvent.java rename to Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsChangedEvent.java index 9209497de8..f3027cf22b 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonChangedEvent.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsChangedEvent.java @@ -25,7 +25,7 @@ import org.sleuthkit.datamodel.Person; /** * Event fired when persons are changed. */ -public class PersonChangedEvent extends PersonEvent { +public class PersonsChangedEvent extends PersonxEvent { private static final long serialVersionUID = 1L; @@ -35,7 +35,7 @@ public class PersonChangedEvent extends PersonEvent { * @param dataModelObjects The new values for the persons that have been * changed. */ - public PersonChangedEvent(List dataModelObjects) { - super(Case.Events.PERSON_CHANGED.name(), dataModelObjects); + public PersonsChangedEvent(List dataModelObjects) { + super(Case.Events.PERSONS_CHANGED.name(), dataModelObjects); } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonRemovedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsRemovedEvent.java similarity index 85% rename from Core/src/org/sleuthkit/autopsy/casemodule/events/PersonRemovedEvent.java rename to Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsRemovedEvent.java index a33af32cc7..4a5c717002 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonRemovedEvent.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsRemovedEvent.java @@ -25,7 +25,7 @@ import org.sleuthkit.datamodel.Person; /** * Event fired when persons are removed. */ -public class PersonRemovedEvent extends PersonEvent { +public class PersonsRemovedEvent extends PersonxEvent { private static final long serialVersionUID = 1L; @@ -33,7 +33,7 @@ public class PersonRemovedEvent extends PersonEvent { * Main constructor. * @param dataModelObjects The list of persons that have been deleted. */ - public PersonRemovedEvent(List dataModelObjects) { - super(Case.Events.PERSON_DELETED.name(), dataModelObjects); + public PersonsRemovedEvent(List dataModelObjects) { + super(Case.Events.PERSONS_DELETED.name(), dataModelObjects); } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonxEvent.java similarity index 94% rename from Core/src/org/sleuthkit/autopsy/casemodule/events/PersonEvent.java rename to Core/src/org/sleuthkit/autopsy/casemodule/events/PersonxEvent.java index f41ae6ff86..6582f7bc83 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonEvent.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonxEvent.java @@ -31,7 +31,7 @@ import org.sleuthkit.datamodel.TskCoreException; /** * Base event class for when something pertaining to persons changes. */ -public class PersonEvent extends TskDataModelChangeEvent { +public class PersonxEvent extends TskDataModelChangeEvent { /** * Retrieves a list of ids from a list of persons. @@ -62,7 +62,7 @@ public class PersonEvent extends TskDataModelChangeEvent { * type. * @param dataModelObjects The list of persons for the event. */ - protected PersonEvent(String eventName, List dataModelObjects) { + protected PersonxEvent(String eventName, List dataModelObjects) { super(eventName, getIds(dataModelObjects), new ArrayList<>(getSafeList(dataModelObjects))); } diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java index e7af2149d6..3f02162159 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java @@ -28,6 +28,7 @@ import java.util.List; import java.util.Objects; import java.util.Set; import java.util.logging.Level; +import java.util.stream.Collectors; import org.apache.commons.collections.CollectionUtils; import org.openide.nodes.ChildFactory; import org.openide.nodes.Node; @@ -47,6 +48,18 @@ import org.sleuthkit.datamodel.TskCoreException; */ public final class AutopsyTreeChildFactory extends ChildFactory.Detachable { + private static final Set LISTENING_EVENTS = EnumSet.of( + Case.Events.DATA_SOURCE_ADDED, + Case.Events.HOSTS_ADDED, + Case.Events.HOSTS_DELETED, + Case.Events.PERSONS_ADDED, + Case.Events.PERSONS_DELETED + ); + + private static final Set LISTENING_EVENT_NAMES = LISTENING_EVENTS.stream() + .map(evt -> evt.name()) + .collect(Collectors.toSet()); + private static final Logger logger = Logger.getLogger(AutopsyTreeChildFactory.class.getName()); /** @@ -56,7 +69,7 @@ public final class AutopsyTreeChildFactory extends ChildFactory.Detachable h != null && h.getId() == hostId) + .findFirst() + .ifPresent((newHost) -> setDisplayName(newHost.getName())); + } + } + }; + private final Host host; + private final Long hostId; /** * Main constructor for HostDataSources key where data source children @@ -197,7 +215,9 @@ public class HostNode extends DisplayableItemNode { String safeName = (host == null || host.getName() == null) ? Bundle.HostGroupingNode_unknownHostNode_title() : host.getName(); - + + hostId = host == null ? null : host.getId(); + Case.addEventTypeSubscriber(EnumSet.of(Case.Events.HOSTS_CHANGED), hostChangePcl); super.setName(safeName); super.setDisplayName(safeName); this.setIconBaseWithExtension(ICON_PATH); diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java index 11b4c2e647..f1bb42665f 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java @@ -23,7 +23,10 @@ import java.beans.PropertyChangeListener; import java.util.Collections; import java.util.EnumSet; import java.util.List; +import java.util.Optional; +import java.util.Set; import java.util.logging.Level; +import java.util.stream.Collectors; import javax.swing.Action; import org.openide.nodes.ChildFactory; import org.openide.nodes.Children; @@ -33,6 +36,8 @@ import org.openide.util.NbBundle.Messages; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; +import org.sleuthkit.autopsy.casemodule.events.HostsChangedEvent; +import org.sleuthkit.autopsy.casemodule.events.PersonsChangedEvent; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.datamodel.persons.DeletePersonAction; import org.sleuthkit.autopsy.datamodel.persons.EditPersonAction; @@ -56,6 +61,11 @@ public class PersonGroupingNode extends DisplayableItemNode { private static final Logger logger = Logger.getLogger(PersonChildren.class.getName()); + private static final Set CHILD_EVENTS = EnumSet.of(Case.Events.HOSTS_ADDED, Case.Events.HOSTS_CHANGED); + private static final Set CHILD_EVENTS_STR = CHILD_EVENTS.stream() + .map(ev -> ev.name()) + .collect(Collectors.toSet()); + private final Person person; /** @@ -68,15 +78,13 @@ public class PersonGroupingNode extends DisplayableItemNode { } /** - * Listener for handling DATA_SOURCE_ADDED and DATA_SOURCE_DELETED - * events. + * Listener for handling adding and removing host events. */ - private final PropertyChangeListener pcl = new PropertyChangeListener() { + private final PropertyChangeListener hostAddedDeletedPcl = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { String eventType = evt.getPropertyName(); - if (eventType.equals(Case.Events.DATA_SOURCE_ADDED.toString()) - || eventType.equals(Case.Events.DATA_SOURCE_DELETED.toString())) { + if (eventType != null && CHILD_EVENTS_STR.contains(eventType)) { refresh(true); } } @@ -84,12 +92,12 @@ public class PersonGroupingNode extends DisplayableItemNode { @Override protected void addNotify() { - Case.addEventTypeSubscriber(EnumSet.of(Case.Events.DATA_SOURCE_ADDED), pcl); + Case.addEventTypeSubscriber(CHILD_EVENTS, hostAddedDeletedPcl); } @Override protected void removeNotify() { - Case.removeEventTypeSubscriber(EnumSet.of(Case.Events.DATA_SOURCE_ADDED), pcl); + Case.removeEventTypeSubscriber(CHILD_EVENTS, hostAddedDeletedPcl); } @Override @@ -117,7 +125,24 @@ public class PersonGroupingNode extends DisplayableItemNode { } private final Person person; + private final Long personId; + /** + * Listener for handling person change events. + */ + private final PropertyChangeListener personChangePcl = new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + String eventType = evt.getPropertyName(); + if (personId != null && eventType.equals(Case.Events.PERSONS_CHANGED.toString()) && evt instanceof PersonsChangedEvent) { + ((PersonsChangedEvent) evt).getNewValue().stream() + .filter(p -> p != null && p.getId() == personId) + .findFirst() + .ifPresent((newPerson) -> setDisplayName(newPerson.getName())); + } + } + }; + /** * Main constructor. * @@ -134,7 +159,11 @@ public class PersonGroupingNode extends DisplayableItemNode { super.setDisplayName(safeName); this.setIconBaseWithExtension(ICON_PATH); this.person = person; + this.personId = person == null ? null : person.getId(); + Case.addEventTypeSubscriber(EnumSet.of(Case.Events.PERSONS_CHANGED), personChangePcl); } + + @Override public boolean isLeafTypeNode() { From a108ab5594c8b16d15f8ffbba2a52c7454b08608 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 2 Mar 2021 09:18:19 -0500 Subject: [PATCH 47/69] fix --- .../src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java index f1bb42665f..635b4b5aef 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java @@ -61,7 +61,7 @@ public class PersonGroupingNode extends DisplayableItemNode { private static final Logger logger = Logger.getLogger(PersonChildren.class.getName()); - private static final Set CHILD_EVENTS = EnumSet.of(Case.Events.HOSTS_ADDED, Case.Events.HOSTS_CHANGED); + private static final Set CHILD_EVENTS = EnumSet.of(Case.Events.HOSTS_ADDED, Case.Events.HOSTS_DELETED); private static final Set CHILD_EVENTS_STR = CHILD_EVENTS.stream() .map(ev -> ev.name()) .collect(Collectors.toSet()); From 525a6662d8d5649707717bc9e612dfd2f8f740e4 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 2 Mar 2021 13:09:06 -0500 Subject: [PATCH 48/69] weak listeners --- .../datamodel/AutopsyTreeChildFactory.java | 3 +-- .../sleuthkit/autopsy/datamodel/HostNode.java | 11 ++++++++--- .../autopsy/datamodel/PersonGroupingNode.java | 17 +++++++++-------- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java index 3f02162159..288626f209 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java @@ -23,7 +23,6 @@ import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.Arrays; import java.util.EnumSet; -import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; @@ -55,7 +54,7 @@ public final class AutopsyTreeChildFactory extends ChildFactory.Detachable LISTENING_EVENT_NAMES = LISTENING_EVENTS.stream() .map(evt -> evt.name()) .collect(Collectors.toSet()); diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java index 262fb4a903..5e4df77a3f 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/HostNode.java @@ -33,6 +33,7 @@ import org.openide.nodes.Node; import org.openide.nodes.Sheet; import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; +import org.openide.util.WeakListeners; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; @@ -175,7 +176,10 @@ public class HostNode extends DisplayableItemNode { ((HostsChangedEvent) evt).getNewValue().stream() .filter(h -> h != null && h.getId() == hostId) .findFirst() - .ifPresent((newHost) -> setDisplayName(newHost.getName())); + .ifPresent((newHost) -> { + setName(newHost.getName()); + setDisplayName(newHost.getName()); + }); } } }; @@ -215,9 +219,10 @@ public class HostNode extends DisplayableItemNode { String safeName = (host == null || host.getName() == null) ? Bundle.HostGroupingNode_unknownHostNode_title() : host.getName(); - + hostId = host == null ? null : host.getId(); - Case.addEventTypeSubscriber(EnumSet.of(Case.Events.HOSTS_CHANGED), hostChangePcl); + Case.addEventTypeSubscriber(EnumSet.of(Case.Events.HOSTS_CHANGED), + WeakListeners.propertyChange(hostChangePcl, this)); super.setName(safeName); super.setDisplayName(safeName); this.setIconBaseWithExtension(ICON_PATH); diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java index 635b4b5aef..5cc921b269 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java @@ -23,7 +23,6 @@ import java.beans.PropertyChangeListener; import java.util.Collections; import java.util.EnumSet; import java.util.List; -import java.util.Optional; import java.util.Set; import java.util.logging.Level; import java.util.stream.Collectors; @@ -33,10 +32,10 @@ import org.openide.nodes.Children; import org.openide.nodes.Sheet; import org.openide.util.NbBundle; import org.openide.util.NbBundle.Messages; +import org.openide.util.WeakListeners; import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; -import org.sleuthkit.autopsy.casemodule.events.HostsChangedEvent; import org.sleuthkit.autopsy.casemodule.events.PersonsChangedEvent; import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.datamodel.persons.DeletePersonAction; @@ -65,7 +64,7 @@ public class PersonGroupingNode extends DisplayableItemNode { private static final Set CHILD_EVENTS_STR = CHILD_EVENTS.stream() .map(ev -> ev.name()) .collect(Collectors.toSet()); - + private final Person person; /** @@ -138,11 +137,14 @@ public class PersonGroupingNode extends DisplayableItemNode { ((PersonsChangedEvent) evt).getNewValue().stream() .filter(p -> p != null && p.getId() == personId) .findFirst() - .ifPresent((newPerson) -> setDisplayName(newPerson.getName())); + .ifPresent((newPerson) -> { + setName(newPerson.getName()); + setDisplayName(newPerson.getName()); + }); } } }; - + /** * Main constructor. * @@ -160,10 +162,9 @@ public class PersonGroupingNode extends DisplayableItemNode { this.setIconBaseWithExtension(ICON_PATH); this.person = person; this.personId = person == null ? null : person.getId(); - Case.addEventTypeSubscriber(EnumSet.of(Case.Events.PERSONS_CHANGED), personChangePcl); + Case.addEventTypeSubscriber(EnumSet.of(Case.Events.PERSONS_CHANGED), + WeakListeners.propertyChange(personChangePcl, this)); } - - @Override public boolean isLeafTypeNode() { From 3d8933831fdf9592ac6e80ea9e522fd7880f0b11 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 2 Mar 2021 13:48:38 -0500 Subject: [PATCH 49/69] updates --- .../org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java | 6 +++++- .../modules/portablecase/PortableCaseReportModule.java | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java index 5cc921b269..cb50ced29f 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java @@ -60,7 +60,11 @@ public class PersonGroupingNode extends DisplayableItemNode { private static final Logger logger = Logger.getLogger(PersonChildren.class.getName()); - private static final Set CHILD_EVENTS = EnumSet.of(Case.Events.HOSTS_ADDED, Case.Events.HOSTS_DELETED); + private static final Set CHILD_EVENTS = EnumSet.of( + Case.Events.HOSTS_ADDED, + Case.Events.HOSTS_DELETED, + Case.Events.PERSONS_CHANGED); + private static final Set CHILD_EVENTS_STR = CHILD_EVENTS.stream() .map(ev -> ev.name()) .collect(Collectors.toSet()); diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java b/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java index cc2adf377a..56bb8e9133 100644 --- a/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java +++ b/Core/src/org/sleuthkit/autopsy/report/modules/portablecase/PortableCaseReportModule.java @@ -1085,7 +1085,7 @@ public class PortableCaseReportModule implements ReportModule { Host newHost = null; if (content instanceof DataSource) { Host oldHost = ((DataSource)content).getHost(); - newHost = portableSkCase.getHostManager().getOrCreateHost(oldHost.getName()); + newHost = portableSkCase.getHostManager().createHost(oldHost.getName()); } CaseDbTransaction trans = portableSkCase.beginTransaction(); From 81c776aff10b0921f96fd3549f0c6355b473d9c1 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 2 Mar 2021 14:59:05 -0500 Subject: [PATCH 50/69] class rename --- .../autopsy/casemodule/events/PersonsAddedEvent.java | 2 +- .../autopsy/casemodule/events/PersonsChangedEvent.java | 2 +- .../events/{PersonxEvent.java => PersonsEvent.java} | 4 ++-- .../autopsy/casemodule/events/PersonsRemovedEvent.java | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) rename Core/src/org/sleuthkit/autopsy/casemodule/events/{PersonxEvent.java => PersonsEvent.java} (95%) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsAddedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsAddedEvent.java index 0b7a0f6a12..e2a8a7aabd 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsAddedEvent.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsAddedEvent.java @@ -25,7 +25,7 @@ import org.sleuthkit.datamodel.Person; /** * Event fired when new persons are added. */ -public class PersonsAddedEvent extends PersonxEvent { +public class PersonsAddedEvent extends PersonsEvent { private static final long serialVersionUID = 1L; diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsChangedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsChangedEvent.java index f3027cf22b..f375a125bb 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsChangedEvent.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsChangedEvent.java @@ -25,7 +25,7 @@ import org.sleuthkit.datamodel.Person; /** * Event fired when persons are changed. */ -public class PersonsChangedEvent extends PersonxEvent { +public class PersonsChangedEvent extends PersonsEvent { private static final long serialVersionUID = 1L; diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonxEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsEvent.java similarity index 95% rename from Core/src/org/sleuthkit/autopsy/casemodule/events/PersonxEvent.java rename to Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsEvent.java index 6582f7bc83..ef74585b7f 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonxEvent.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsEvent.java @@ -31,7 +31,7 @@ import org.sleuthkit.datamodel.TskCoreException; /** * Base event class for when something pertaining to persons changes. */ -public class PersonxEvent extends TskDataModelChangeEvent { +public class PersonsEvent extends TskDataModelChangeEvent { /** * Retrieves a list of ids from a list of persons. @@ -62,7 +62,7 @@ public class PersonxEvent extends TskDataModelChangeEvent { * type. * @param dataModelObjects The list of persons for the event. */ - protected PersonxEvent(String eventName, List dataModelObjects) { + protected PersonsEvent(String eventName, List dataModelObjects) { super(eventName, getIds(dataModelObjects), new ArrayList<>(getSafeList(dataModelObjects))); } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsRemovedEvent.java b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsRemovedEvent.java index 4a5c717002..522c841461 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsRemovedEvent.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/events/PersonsRemovedEvent.java @@ -25,7 +25,7 @@ import org.sleuthkit.datamodel.Person; /** * Event fired when persons are removed. */ -public class PersonsRemovedEvent extends PersonxEvent { +public class PersonsRemovedEvent extends PersonsEvent { private static final long serialVersionUID = 1L; From b5278b032701aa3802a25c101bde08d7eae952cb Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Wed, 3 Mar 2021 07:42:25 -0500 Subject: [PATCH 51/69] fix for unit test due to ResultDomain constructor change --- .../autopsy/discovery/search/DomainSearchTestUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/test/unit/src/org/sleuthkit/autopsy/discovery/search/DomainSearchTestUtils.java b/Core/test/unit/src/org/sleuthkit/autopsy/discovery/search/DomainSearchTestUtils.java index b87d0044a2..f6e003c7b0 100755 --- a/Core/test/unit/src/org/sleuthkit/autopsy/discovery/search/DomainSearchTestUtils.java +++ b/Core/test/unit/src/org/sleuthkit/autopsy/discovery/search/DomainSearchTestUtils.java @@ -34,7 +34,7 @@ public class DomainSearchTestUtils { long totalVisits, long visits, long filesDownloaded, long dataSourceId) { Content dataSource = TskMockUtils.getDataSource(dataSourceId); return new ResultDomain(domain, start, end, totalVisits, - visits, filesDownloaded, 0L, dataSource); + visits, filesDownloaded, 0L, "", dataSource); } public static ResultDomain mockDomainResult(String domain) { From 96e00312676ed9d1a33eb5512838a3d98e4233ff Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Wed, 3 Mar 2021 10:55:43 -0500 Subject: [PATCH 52/69] Fix --- .../sleuthkit/autopsy/casemodule/ImageDSProcessor.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java index 92335e75b1..ee78eca31b 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java @@ -496,6 +496,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour @Override public void process(String deviceId, Path dataSourcePath, Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { + // this method does not use the config panel this.deviceId = deviceId; this.imagePath = dataSourcePath.toString(); this.sectorSize = 0; @@ -517,6 +518,9 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour } doAddImageProcess(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, progressMonitor, callBack); + + // reset the settings so that by default the config panel is used next time (JIRA-7337). + reset(); } @Override @@ -526,6 +530,7 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour @Override public IngestStream processWithIngestStream(String deviceId, Path dataSourcePath, Host host, IngestJobSettings settings, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { + // this method does not use the config panel this.deviceId = deviceId; this.imagePath = dataSourcePath.toString(); this.sectorSize = 0; @@ -558,6 +563,10 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour } doAddImageProcess(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, progressMonitor, callBack); + + // reset the settings so that by default the config panel is used next time (JIRA-7337). + reset(); + return ingestStream; } From 67a3bba19a6a053cce92705cf3baadc748177a17 Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Wed, 3 Mar 2021 12:50:52 -0500 Subject: [PATCH 53/69] Removed deprecated method --- .../autopsy/casemodule/ImageDSProcessor.java | 27 +------------------ .../casemodule/LocalDiskDSProcessor.java | 27 +------------------ .../casemodule/LocalFilesDSProcessor.java | 23 +--------------- 3 files changed, 3 insertions(+), 74 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java index ee78eca31b..a3ab85cfc8 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2013-2018 Basis Technology Corp. + * Copyright 2013-2021 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -569,29 +569,4 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour return ingestStream; } - - /** - * Sets the configuration of the data source processor without using the - * selection and configuration panel. - * - * @param imagePath Path to the image file. - * @param timeZone The time zone to use when processing dates - * and times for the image, obtained from - * java.util.TimeZone.getID. - * @param ignoreFatOrphanFiles Whether to parse orphans if the image has a - * FAT filesystem. - * - * @deprecated Use the provided overload of the run method instead. - */ - @Deprecated - public void setDataSourceOptions(String imagePath, String timeZone, boolean ignoreFatOrphanFiles) { - this.deviceId = UUID.randomUUID().toString(); - this.imagePath = imagePath; - this.sectorSize = 0; - this.timeZone = Calendar.getInstance().getTimeZone().getID(); - this.ignoreFatOrphanFiles = ignoreFatOrphanFiles; - this.host = null; - setDataSourceOptionsCalled = true; - } - } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java index 6cf15c54f7..ef3733c039 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2013-2018 Basis Technology Corp. + * Copyright 2013-2021 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,7 +19,6 @@ package org.sleuthkit.autopsy.casemodule; import java.util.ArrayList; -import java.util.Calendar; import java.util.List; import java.util.UUID; import java.util.logging.Level; @@ -287,28 +286,4 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { ignoreFatOrphanFiles = false; setDataSourceOptionsCalled = false; } - - /** - * Sets the configuration of the data source processor without using the - * configuration panel. - * - * @param drivePath Path to the local drive. - * @param timeZone The time zone to use when processing dates - * and times for the local drive, obtained from - * java.util.TimeZone.getID. - * @param ignoreFatOrphanFiles Whether to parse orphans if the image has a - * FAT filesystem. - * - * @deprecated Use the provided overload of the run method instead. - */ - @Deprecated - public void setDataSourceOptions(String drivePath, String timeZone, boolean ignoreFatOrphanFiles) { - this.deviceId = UUID.randomUUID().toString(); - this.drivePath = drivePath; - this.sectorSize = 0; - this.timeZone = Calendar.getInstance().getTimeZone().getID(); - this.ignoreFatOrphanFiles = ignoreFatOrphanFiles; - setDataSourceOptionsCalled = true; - } - } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java index dab8ea19ec..7f5161b290 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java @@ -1,7 +1,7 @@ /* * Autopsy Forensic Browser * - * Copyright 2011-2018 Basis Technology Corp. + * Copyright 2011-2021 Basis Technology Corp. * Contact: carrier sleuthkit org * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -428,27 +428,6 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat run(deviceId, "", filePaths, host, progressMonitor, callBack); } - /** - * Sets the configuration of the data source processor without using the - * configuration panel. The data source processor will assign a UUID to the - * data source and will use the time zone of the machine executing this code - * when when processing dates and times for the image. - * - * @param paths A list of local/logical file and/or directory - * localFilePaths. - * - * @deprecated Use the provided overload of the run method instead. - */ - @Deprecated - public void setDataSourceOptions(String paths) { - // The LocalFilesPanel used to separate file paths with a comma and pass - // them as a string, but because file names are allowed to contain - // commas, this approach was buggy and replaced. We now pass a list of - // String paths. - this.localFilePaths = Arrays.asList(paths.split(",")); - setDataSourceOptionsCalled = true; - } - /** * A custom exception for the L01 processing. */ From 3e6d6f35fa9ffc6a1a2f747027d0815c1bbcd94f Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Wed, 3 Mar 2021 12:51:28 -0500 Subject: [PATCH 54/69] Removed unused import --- .../sleuthkit/autopsy/datasourceprocessors/RawDSProcessor.java | 1 - 1 file changed, 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/RawDSProcessor.java b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/RawDSProcessor.java index 7c38dedcf8..61b6df93b6 100644 --- a/Core/src/org/sleuthkit/autopsy/datasourceprocessors/RawDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/datasourceprocessors/RawDSProcessor.java @@ -29,7 +29,6 @@ import javax.swing.filechooser.FileFilter; import org.openide.util.NbBundle.Messages; import org.openide.util.lookup.ServiceProvider; import org.openide.util.lookup.ServiceProviders; -import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.GeneralFilter; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor; import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback; From f6d446d8c8229aaa2d03d95ef0239816b38829cb Mon Sep 17 00:00:00 2001 From: Eugene Livis Date: Wed, 3 Mar 2021 13:44:59 -0500 Subject: [PATCH 55/69] removed a flag --- .../autopsy/casemodule/ImageDSProcessor.java | 210 ++++++++---------- .../casemodule/LocalDiskDSProcessor.java | 50 ++--- .../casemodule/LocalFilesDSProcessor.java | 46 ++-- 3 files changed, 142 insertions(+), 164 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java index a3ab85cfc8..07a88ee07f 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/ImageDSProcessor.java @@ -51,8 +51,7 @@ import org.sleuthkit.datamodel.TskCoreException; * independently of the wizard. */ @ServiceProviders(value = { - @ServiceProvider(service = DataSourceProcessor.class) - , + @ServiceProvider(service = DataSourceProcessor.class), @ServiceProvider(service = AutoIngestDataSourceProcessor.class)} ) public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSourceProcessor { @@ -83,7 +82,6 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour private String sha1; private String sha256; private Host host = null; - private boolean setDataSourceOptionsCalled; static { filtersList.add(allFilter); @@ -184,8 +182,8 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour @Override public void run(DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { run(null, progressMonitor, callback); - } - + } + /** * Adds a data source to the case database using a background task in a * separate thread and the settings provided by the selection and @@ -208,71 +206,71 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour this.host = host; try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); - errors.add(ex.getMessage()); + errors.add(ex.getMessage()); callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); return; } - + doAddImageProcess(deviceId, imagePath, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, progressMonitor, callback); } - + /** * Adds a data source to the case database using a background task in a * separate thread and the settings provided by the selection and - * configuration panel. Files found during ingest will be sent directly to the - * IngestStream provided. Returns as soon as the background task is started. - * The background task uses a callback object to signal task completion and - * return results. + * configuration panel. Files found during ingest will be sent directly to + * the IngestStream provided. Returns as soon as the background task is + * started. The background task uses a callback object to signal task + * completion and return results. * - * This method should not be called unless isPanelValid returns true, and + * This method should not be called unless isPanelValid returns true, and * should only be called for DSPs that support ingest streams. - * - * @param settings The ingest job settings. - * @param progress Progress monitor that will be used by the - * background task to report progress. - * @param callBack Callback that will be used by the background task - * to return results. + * + * @param settings The ingest job settings. + * @param progress Progress monitor that will be used by the background task + * to report progress. + * @param callBack Callback that will be used by the background task to + * return results. */ @Override - public void runWithIngestStream(IngestJobSettings settings, DataSourceProcessorProgressMonitor progress, + public void runWithIngestStream(IngestJobSettings settings, DataSourceProcessorProgressMonitor progress, DataSourceProcessorCallback callBack) { runWithIngestStream(null, settings, progress, callBack); - } - + } + /** * Adds a data source to the case database using a background task in a * separate thread and the settings provided by the selection and - * configuration panel. Files found during ingest will be sent directly to the - * IngestStream provided. Returns as soon as the background task is started. - * The background task uses a callback object to signal task completion and - * return results. + * configuration panel. Files found during ingest will be sent directly to + * the IngestStream provided. Returns as soon as the background task is + * started. The background task uses a callback object to signal task + * completion and return results. * - * This method should not be called unless isPanelValid returns true, and + * This method should not be called unless isPanelValid returns true, and * should only be called for DSPs that support ingest streams. - * - * @param host The host for this data source. - * @param settings The ingest job settings. - * @param progress Progress monitor that will be used by the - * background task to report progress. - * @param callBack Callback that will be used by the background task - * to return results. + * + * @param host The host for this data source. + * @param settings The ingest job settings. + * @param progress Progress monitor that will be used by the background task + * to report progress. + * @param callBack Callback that will be used by the background task to + * return results. */ @Override - public void runWithIngestStream(Host host, IngestJobSettings settings, DataSourceProcessorProgressMonitor progress, + public void runWithIngestStream(Host host, IngestJobSettings settings, DataSourceProcessorProgressMonitor progress, DataSourceProcessorCallback callBack) { - + // Read the settings from the wizard readConfigSettings(); this.host = host; - + // Set up the data source before creating the ingest stream try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, this.host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -291,46 +289,43 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour callBack.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); return; } - doAddImageProcess(deviceId, imagePath, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, progress, callBack); } - + /** * Store the options from the config panel. */ private void readConfigSettings() { - if (!setDataSourceOptionsCalled) { - configPanel.storeSettings(); - deviceId = UUID.randomUUID().toString(); - imagePath = configPanel.getContentPaths(); - sectorSize = configPanel.getSectorSize(); - timeZone = configPanel.getTimeZone(); - ignoreFatOrphanFiles = configPanel.getNoFatOrphans(); - md5 = configPanel.getMd5(); - if (md5.isEmpty()) { - md5 = null; - } - sha1 = configPanel.getSha1(); - if (sha1.isEmpty()) { - sha1 = null; - } - sha256 = configPanel.getSha256(); - if (sha256.isEmpty()) { - sha256 = null; - } + configPanel.storeSettings(); + deviceId = UUID.randomUUID().toString(); + imagePath = configPanel.getContentPaths(); + sectorSize = configPanel.getSectorSize(); + timeZone = configPanel.getTimeZone(); + ignoreFatOrphanFiles = configPanel.getNoFatOrphans(); + md5 = configPanel.getMd5(); + if (md5.isEmpty()) { + md5 = null; + } + sha1 = configPanel.getSha1(); + if (sha1.isEmpty()) { + sha1 = null; + } + sha256 = configPanel.getSha256(); + if (sha256.isEmpty()) { + sha256 = null; } } - + /** * Check if this DSP supports ingest streams. - * + * * @return True if this DSP supports an ingest stream, false otherwise. */ @Override public boolean supportsIngestStream() { return true; - } + } /** * Adds a data source to the case database using a background task in a @@ -357,11 +352,11 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour ingestStream = new DefaultIngestStream(); try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId); + new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); - errors.add(ex.getMessage()); + errors.add(ex.getMessage()); callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); return; } @@ -375,10 +370,10 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour * selection and configuration panel. Returns as soon as the background task * is started and uses the callback object to signal task completion and * return results. - * - * The image should be loaded in the database and stored in "image" - * before calling this method. Additionally, an ingest stream should be initialized - * and stored in "ingestStream". + * + * The image should be loaded in the database and stored in "image" before + * calling this method. Additionally, an ingest stream should be initialized + * and stored in "ingestStream". * * @param deviceId An ASCII-printable identifier for the device * associated with the data source that is @@ -400,28 +395,28 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour */ private void doAddImageProcess(String deviceId, String imagePath, int sectorSize, String timeZone, boolean ignoreFatOrphanFiles, String md5, String sha1, String sha256, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { - // If the data source or ingest stream haven't been initialized, stop processing - if (ingestStream == null) { - String message = "Ingest stream was not initialized before running the add image process on " + imagePath; - logger.log(Level.SEVERE, message); - final List errors = new ArrayList<>(); - errors.add(message); - callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); - return; - } - if (image == null) { - String message = "Image was not added to database before running the add image process on " + imagePath; - logger.log(Level.SEVERE, message); - final List errors = new ArrayList<>(); - errors.add(message); - callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); - return; - } + // If the data source or ingest stream haven't been initialized, stop processing + if (ingestStream == null) { + String message = "Ingest stream was not initialized before running the add image process on " + imagePath; + logger.log(Level.SEVERE, message); + final List errors = new ArrayList<>(); + errors.add(message); + callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); + return; + } + if (image == null) { + String message = "Image was not added to database before running the add image process on " + imagePath; + logger.log(Level.SEVERE, message); + final List errors = new ArrayList<>(); + errors.add(message); + callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); + return; + } - AddImageTask.ImageDetails imageDetails = new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, null); - addImageTask = new AddImageTask(imageDetails, - progressMonitor, - new StreamingAddDataSourceCallbacks(ingestStream), + AddImageTask.ImageDetails imageDetails = new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, md5, sha1, sha256, null); + addImageTask = new AddImageTask(imageDetails, + progressMonitor, + new StreamingAddDataSourceCallbacks(ingestStream), new StreamingAddImageTaskCallback(ingestStream, callback)); new Thread(addImageTask).start(); } @@ -455,7 +450,6 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour ignoreFatOrphanFiles = false; host = null; configPanel.reset(); - setDataSourceOptionsCalled = false; } private static boolean isAcceptedByFiler(File file, List filters) { @@ -488,12 +482,12 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour // able to process the data source return 100; } - + @Override public void process(String deviceId, Path dataSourcePath, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { process(deviceId, dataSourcePath, null, progressMonitor, callBack); } - + @Override public void process(String deviceId, Path dataSourcePath, Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { // this method does not use the config panel @@ -503,31 +497,27 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour this.timeZone = Calendar.getInstance().getTimeZone().getID(); this.host = host; this.ignoreFatOrphanFiles = false; - setDataSourceOptionsCalled = true; - + ingestStream = new DefaultIngestStream(); try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId, host); + new String[]{imagePath}, sectorSize, timeZone, "", "", "", deviceId, host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); - errors.add(ex.getMessage()); + errors.add(ex.getMessage()); callBack.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); return; } - + doAddImageProcess(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, progressMonitor, callBack); - - // reset the settings so that by default the config panel is used next time (JIRA-7337). - reset(); } - + @Override public IngestStream processWithIngestStream(String deviceId, Path dataSourcePath, IngestJobSettings settings, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { return processWithIngestStream(deviceId, dataSourcePath, null, settings, progressMonitor, callBack); } - + @Override public IngestStream processWithIngestStream(String deviceId, Path dataSourcePath, Host host, IngestJobSettings settings, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { // this method does not use the config panel @@ -537,12 +527,11 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour this.timeZone = Calendar.getInstance().getTimeZone().getID(); this.host = host; this.ignoreFatOrphanFiles = false; - setDataSourceOptionsCalled = true; - + // Set up the data source before creating the ingest stream try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, host); + new String[]{imagePath}, sectorSize, timeZone, md5, sha1, sha256, deviceId, host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding data source with path " + imagePath + " to database", ex); final List errors = new ArrayList<>(); @@ -560,13 +549,10 @@ public class ImageDSProcessor implements DataSourceProcessor, AutoIngestDataSour errors.add(ex.getMessage()); callBack.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); return null; - } - + } + doAddImageProcess(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, progressMonitor, callBack); - - // reset the settings so that by default the config panel is used next time (JIRA-7337). - reset(); - + return ingestStream; } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java index ef3733c039..c659727d74 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskDSProcessor.java @@ -59,7 +59,6 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { private Host host; private ImageWriterSettings imageWriterSettings; private boolean ignoreFatOrphanFiles; - private boolean setDataSourceOptionsCalled; /** * Constructs a local drive data source processor that implements the @@ -138,7 +137,7 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { public void run(DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { run(null, progressMonitor, callback); } - + /** * Adds a data source to the case database using a background task in a * separate thread and the settings provided by the selection and @@ -156,38 +155,36 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { */ @Override public void run(Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { - if (!setDataSourceOptionsCalled) { - deviceId = UUID.randomUUID().toString(); - drivePath = configPanel.getContentPath(); - sectorSize = configPanel.getSectorSize(); - timeZone = configPanel.getTimeZone(); - ignoreFatOrphanFiles = configPanel.getNoFatOrphans(); - if (configPanel.getImageWriterEnabled()) { - imageWriterSettings = configPanel.getImageWriterSettings(); - } else { - imageWriterSettings = null; - } + deviceId = UUID.randomUUID().toString(); + drivePath = configPanel.getContentPath(); + sectorSize = configPanel.getSectorSize(); + timeZone = configPanel.getTimeZone(); + ignoreFatOrphanFiles = configPanel.getNoFatOrphans(); + if (configPanel.getImageWriterEnabled()) { + imageWriterSettings = configPanel.getImageWriterSettings(); + } else { + imageWriterSettings = null; } - + this.host = host; Image image; try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{drivePath}, sectorSize, - timeZone, null, null, null, deviceId, this.host); + new String[]{drivePath}, sectorSize, + timeZone, null, null, null, deviceId, this.host); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding local disk with path " + drivePath + " to database", ex); final List errors = new ArrayList<>(); errors.add(ex.getMessage()); callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); return; - } + } addDiskTask = new AddImageTask( - new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings), + new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings), progressMonitor, - new StreamingAddDataSourceCallbacks(new DefaultIngestStream()), + new StreamingAddDataSourceCallbacks(new DefaultIngestStream()), new StreamingAddImageTaskCallback(new DefaultIngestStream(), callback)); new Thread(addDiskTask).start(); } @@ -243,19 +240,19 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { Image image; try { image = SleuthkitJNI.addImageToDatabase(Case.getCurrentCase().getSleuthkitCase(), - new String[]{drivePath}, sectorSize, - timeZone, null, null, null, deviceId); + new String[]{drivePath}, sectorSize, + timeZone, null, null, null, deviceId); } catch (TskCoreException ex) { logger.log(Level.SEVERE, "Error adding local disk with path " + drivePath + " to database", ex); final List errors = new ArrayList<>(); errors.add(ex.getMessage()); callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); return; - } - - addDiskTask = new AddImageTask(new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings), - progressMonitor, - new StreamingAddDataSourceCallbacks(new DefaultIngestStream()), + } + + addDiskTask = new AddImageTask(new AddImageTask.ImageDetails(deviceId, image, sectorSize, timeZone, ignoreFatOrphanFiles, null, null, null, imageWriterSettings), + progressMonitor, + new StreamingAddDataSourceCallbacks(new DefaultIngestStream()), new StreamingAddImageTaskCallback(new DefaultIngestStream(), callback)); new Thread(addDiskTask).start(); } @@ -284,6 +281,5 @@ public class LocalDiskDSProcessor implements DataSourceProcessor { drivePath = null; timeZone = null; ignoreFatOrphanFiles = false; - setDataSourceOptionsCalled = false; } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java index 7f5161b290..d75fabbae9 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalFilesDSProcessor.java @@ -78,7 +78,6 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat * when the deprecated method setDataSourceOptions is removed. */ private List localFilePaths; - private boolean setDataSourceOptionsCalled; /** * Constructs a local/logical files and/or directories data source processor @@ -139,7 +138,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat return configPanel.validatePanel(); } - /** + /** * Adds a data source to the case database using a background task in a * separate thread and the settings provided by the selection and * configuration panel. Returns as soon as the background task is started. @@ -156,8 +155,8 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat @Override public void run(DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { run(null, progressMonitor, callback); - } - + } + /** * Adds a data source to the case database using a background task in a * separate thread and the settings provided by the selection and @@ -175,23 +174,21 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat */ @Override public void run(Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback) { - if (!setDataSourceOptionsCalled) { - - localFilePaths = configPanel.getContentPaths(); - if (configPanel.subTypeIsLogicalEvidencePanel()) { - try { - //if the L01 option was chosen - localFilePaths = extractLogicalEvidenceFileContents(localFilePaths); - } catch (L01Exception ex) { - //contents of l01 could not be extracted don't add data source or run ingest - final List errors = new ArrayList<>(); - errors.add(ex.getMessage()); - callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); - return; - } catch (NoCurrentCaseException ex) { - logger.log(Level.WARNING, "Exception while getting open case.", ex); - return; - } + + localFilePaths = configPanel.getContentPaths(); + if (configPanel.subTypeIsLogicalEvidencePanel()) { + try { + //if the L01 option was chosen + localFilePaths = extractLogicalEvidenceFileContents(localFilePaths); + } catch (L01Exception ex) { + //contents of l01 could not be extracted don't add data source or run ingest + final List errors = new ArrayList<>(); + errors.add(ex.getMessage()); + callback.done(DataSourceProcessorCallback.DataSourceProcessorResult.CRITICAL_ERRORS, errors, new ArrayList<>()); + return; + } catch (NoCurrentCaseException ex) { + logger.log(Level.WARNING, "Exception while getting open case.", ex); + return; } } run(UUID.randomUUID().toString(), configPanel.getFileSetName(), localFilePaths, host, progressMonitor, callback); @@ -220,7 +217,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat command.add("-f"); command.add("files"); command.add("-t"); - File l01Dir = new File(Case.getCurrentCaseThrows().getModuleDirectory(), L01_EXTRACTION_DIR); + File l01Dir = new File(Case.getCurrentCaseThrows().getModuleDirectory(), L01_EXTRACTION_DIR); if (!l01Dir.exists()) { l01Dir.mkdirs(); } @@ -307,7 +304,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat return executablePath; } - + /** * Adds a data source to the case database using a background task in a * separate thread and the given settings instead of those provided by the @@ -385,7 +382,6 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat public void reset() { configPanel.select(); localFilePaths = null; - setDataSourceOptionsCalled = false; } @Override @@ -421,7 +417,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor, AutoIngestDat public void process(String deviceId, Path dataSourcePath, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { process(deviceId, dataSourcePath, null, progressMonitor, callBack); } - + @Override public void process(String deviceId, Path dataSourcePath, Host host, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack) { List filePaths = Arrays.asList(new String[]{dataSourcePath.toString()}); From 14b58936a0a751101c5ac792433115f9ca7efc0d Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Thu, 4 Mar 2021 07:29:45 -0500 Subject: [PATCH 56/69] update to include event --- .../sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java index 288626f209..c909ddaad3 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/AutopsyTreeChildFactory.java @@ -52,7 +52,8 @@ public final class AutopsyTreeChildFactory extends ChildFactory.Detachable LISTENING_EVENT_NAMES = LISTENING_EVENTS.stream() From 5b5fed78eb7bd6996da14541ab9ffd912b4ecd73 Mon Sep 17 00:00:00 2001 From: apriestman Date: Thu, 4 Mar 2021 10:58:27 -0500 Subject: [PATCH 57/69] Remove unused import --- .../org/sleuthkit/autopsy/datamodel/DataSourcesByTypeNode.java | 1 - 1 file changed, 1 deletion(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesByTypeNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesByTypeNode.java index 856b6eec96..7205d2d89c 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesByTypeNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/DataSourcesByTypeNode.java @@ -33,7 +33,6 @@ import org.openide.util.lookup.Lookups; import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException; import org.sleuthkit.autopsy.coreutils.Logger; -import org.sleuthkit.datamodel.Host.HostStatus; import org.sleuthkit.datamodel.TskCoreException; /** From 86820e98eecc711f2bfa27b96c79b6c026964c44 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 4 Mar 2021 14:20:52 -0500 Subject: [PATCH 58/69] 7370-Substitute SID for OS account Object ID everywhere SID is not in output already --- test/script/tskdbdiff.py | 66 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 60 insertions(+), 6 deletions(-) diff --git a/test/script/tskdbdiff.py b/test/script/tskdbdiff.py index 0d4e7f7ab9..d70a77adc3 100644 --- a/test/script/tskdbdiff.py +++ b/test/script/tskdbdiff.py @@ -329,7 +329,8 @@ class TskDbDiff(object): id_legacy_artifact_types = build_id_legacy_artifact_types_table(conn.cursor(), isMultiUser) id_reports_table = build_id_reports_table(conn.cursor(), isMultiUser) id_images_table = build_id_image_names_table(conn.cursor(), isMultiUser) - id_obj_path_table = build_id_obj_path_table(id_files_table, id_objects_table, id_artifact_types_table, id_reports_table, id_images_table) + id_accounts_table = build_id_accounts_table(conn.cursor(), isMultiUser) + id_obj_path_table = build_id_obj_path_table(id_files_table, id_objects_table, id_artifact_types_table, id_reports_table, id_images_table, id_accounts_table) if isMultiUser: # Use PostgreSQL os.environ['PGPASSWORD']=pgSettings.password @@ -352,7 +353,7 @@ class TskDbDiff(object): if 'INSERT INTO image_gallery_groups_seen' in dump_line: dump_line = '' continue; - dump_line = normalize_db_entry(dump_line, id_obj_path_table, id_vs_parts_table, id_vs_info_table, id_fs_info_table, id_objects_table, id_reports_table, id_images_table, id_legacy_artifact_types) + dump_line = normalize_db_entry(dump_line, id_obj_path_table, id_vs_parts_table, id_vs_info_table, id_fs_info_table, id_objects_table, id_reports_table, id_images_table, id_legacy_artifact_types, id_accounts_table) db_log.write('%s\n' % dump_line) dump_line = '' postgreSQL_db.close() @@ -366,7 +367,7 @@ class TskDbDiff(object): for line in conn.iterdump(): if 'INSERT INTO "image_gallery_groups_seen"' in line: continue - line = normalize_db_entry(line, id_obj_path_table, id_vs_parts_table, id_vs_info_table, id_fs_info_table, id_objects_table, id_reports_table, id_images_table, id_legacy_artifact_types) + line = normalize_db_entry(line, id_obj_path_table, id_vs_parts_table, id_vs_info_table, id_fs_info_table, id_objects_table, id_reports_table, id_images_table, id_legacy_artifact_types, id_accounts_table) db_log.write('%s\n' % line) # Now sort the file srtcmdlst = ["sort", dump_file, "-o", dump_file] @@ -419,7 +420,7 @@ class PGSettings(object): return self.password -def normalize_db_entry(line, files_table, vs_parts_table, vs_info_table, fs_info_table, objects_table, reports_table, images_table, artifact_table): +def normalize_db_entry(line, files_table, vs_parts_table, vs_info_table, fs_info_table, objects_table, reports_table, images_table, artifact_table, accounts_table): """ Make testing more consistent and reasonable by doctoring certain db entries. Args: @@ -442,6 +443,7 @@ def normalize_db_entry(line, files_table, vs_parts_table, vs_info_table, fs_info ig_groups_index = line.find('INSERT INTO "image_gallery_groups"') > -1 or line.find('INSERT INTO image_gallery_groups ') > -1 ig_groups_seen_index = line.find('INSERT INTO "image_gallery_groups_seen"') > -1 or line.find('INSERT INTO image_gallery_groups_seen ') > -1 os_account_index = line.find('INSERT INTO "tsk_os_accounts"') > -1 or line.find('INSERT INTO tsk_os_accounts') > -1 + os_accaount_attr_index = line.find('INSERT INTO "tsk_os_account_attributes"') > -1 or line.find('INSERT INTO tsk_os_account_attributes') > -1 parens = line[line.find('(') + 1 : line.rfind(')')] no_space_parens = parens.replace(" ", "") @@ -569,6 +571,8 @@ def normalize_db_entry(line, files_table, vs_parts_table, vs_info_table, fs_info parent_path = fs_info_table[parent_id] elif parent_id in images_table.keys(): parent_path = images_table[parent_id] + elif parent_id in accounts_table.keys(): + parent_path = accounts_table[parent_id] elif parent_id == 'NULL': parent_path = "NULL" @@ -636,8 +640,42 @@ def normalize_db_entry(line, files_table, vs_parts_table, vs_info_table, fs_info newLine = ('INSERT INTO "tsk_event_descriptions" VALUES(' + ','.join(fields_list[1:]) + ');') # remove report_id return newLine elif os_account_index: - newLine = ('INSERT INTO "tsk_os_accounts" VALUES(' + ','.join(fields_list[1:]) + ');') # remove id + newLine = ('INSERT INTO "tsk_os_accounts" VALUES(' + ','.join(fields_list[1:]) + ');') # remove id since value that would be substituted is in diff line already return newLine + elif os_accaount_attr_index: + #substitue the account object id for a non changing value + os_account_id = fields_list[1] + if os_account_id in files_table.keys(): + fields_list[1] = files_table[parent_id] + elif os_account_id in vs_parts_table.keys(): + fields_list[1] = vs_parts_table[parent_id] + elif os_account_id in vs_info_table.keys(): + fields_list[1] = vs_info_table[parent_id] + elif os_account_id in fs_info_table.keys(): + fields_list[1] = fs_info_table[parent_id] + elif os_account_id in images_table.keys(): + fields_list[1] = images_table[parent_id] + elif os_account_id in accounts_table.keys(): + fields_list[1] = accounts_table[parent_id] + elif os_account_id == 'NULL': + fields_list[1] = "NULL" + #substitue the source object id for a non changing value + source_obj_id = fields_list[3] + if os_account_id in files_table.keys(): + fields_list[1] = files_table[parent_id] + elif os_account_id in vs_parts_table.keys(): + fields_list[1] = vs_parts_table[parent_id] + elif os_account_id in vs_info_table.keys(): + fields_list[1] = vs_info_table[parent_id] + elif os_account_id in fs_info_table.keys(): + fields_list[1] = fs_info_table[parent_id] + elif os_account_id in images_table.keys(): + fields_list[1] = images_table[parent_id] + elif os_account_id in accounts_table.keys(): + fields_list[1] = accounts_table[parent_id] + elif os_account_id == 'NULL': + fields_list[1] = "NULL" + newLine = = ('INSERT INTO "tsk_os_account_attributes" VALUES(' + ','.join(fields_list[1:]) + ');') # remove id else: return line @@ -758,8 +796,18 @@ def build_id_reports_table(db_cursor, isPostgreSQL): mapping = dict([(row[0], row[1]) for row in sql_select_execute(db_cursor, isPostgreSQL, "SELECT obj_id, path FROM reports")]) return mapping +def build_id_accounts_table(db_cursor, isPostgreSQL): + """Build the map of object ids to OS account SIDs. -def build_id_obj_path_table(files_table, objects_table, artifacts_table, reports_table, images_table): + Args: + db_cursor: the database cursor + """ + # for each row in the db, take the object id and account SID then creates a tuple in the dictionary + # with the object id as the key and the OS Account's SID as the value + mapping = dict([(row[0], row[1]) for row in sql_select_execute(db_cursor, isPostgreSQL, "SELECT os_account_obj_id, unique_id FROM tsk_os_accounts")]) + return mapping + +def build_id_obj_path_table(files_table, objects_table, artifacts_table, reports_table, images_table, accounts_table): """Build the map of object ids to artifact ids. Args: @@ -767,6 +815,8 @@ def build_id_obj_path_table(files_table, objects_table, artifacts_table, reports objects_table: obj_id, par_obj_id, type artifacts_table: obj_id, artifact_type_name reports_table: obj_id, path + images_table: obj_id, name + accounts_table: obj_id, unique_id """ # make a copy of files_table and update it with new data from artifacts_table and reports_table mapping = files_table.copy() @@ -786,6 +836,10 @@ def build_id_obj_path_table(files_table, objects_table, artifacts_table, reports elif par_obj_id in images_table.keys(): path = images_table[par_obj_id] mapping[k] = path + "/" + artifacts_table[k] + elif k in accounts_table.keys(): # For an OS Account object ID we use its unique_id field which is the account SID + unique_id = v[0] + if unique_id is not None: + mapping[k] = accounts_table[k] elif v[0] not in mapping.keys(): if v[0] in artifacts_table.keys(): par_obj_id = objects_table[v[0]] From 7c157dad81ce38257d19a4c60dedb584a91f1ff8 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 4 Mar 2021 14:23:12 -0500 Subject: [PATCH 59/69] 7370 fix typo --- test/script/tskdbdiff.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/script/tskdbdiff.py b/test/script/tskdbdiff.py index d70a77adc3..e0081e06b9 100644 --- a/test/script/tskdbdiff.py +++ b/test/script/tskdbdiff.py @@ -443,7 +443,7 @@ def normalize_db_entry(line, files_table, vs_parts_table, vs_info_table, fs_info ig_groups_index = line.find('INSERT INTO "image_gallery_groups"') > -1 or line.find('INSERT INTO image_gallery_groups ') > -1 ig_groups_seen_index = line.find('INSERT INTO "image_gallery_groups_seen"') > -1 or line.find('INSERT INTO image_gallery_groups_seen ') > -1 os_account_index = line.find('INSERT INTO "tsk_os_accounts"') > -1 or line.find('INSERT INTO tsk_os_accounts') > -1 - os_accaount_attr_index = line.find('INSERT INTO "tsk_os_account_attributes"') > -1 or line.find('INSERT INTO tsk_os_account_attributes') > -1 + os_account_attr_index = line.find('INSERT INTO "tsk_os_account_attributes"') > -1 or line.find('INSERT INTO tsk_os_account_attributes') > -1 parens = line[line.find('(') + 1 : line.rfind(')')] no_space_parens = parens.replace(" ", "") @@ -642,7 +642,7 @@ def normalize_db_entry(line, files_table, vs_parts_table, vs_info_table, fs_info elif os_account_index: newLine = ('INSERT INTO "tsk_os_accounts" VALUES(' + ','.join(fields_list[1:]) + ');') # remove id since value that would be substituted is in diff line already return newLine - elif os_accaount_attr_index: + elif os_account_attr_index: #substitue the account object id for a non changing value os_account_id = fields_list[1] if os_account_id in files_table.keys(): From 3a663c57b04495eac228110bacc416b58c796d5a Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 4 Mar 2021 14:24:32 -0500 Subject: [PATCH 60/69] 7370 fix extra = in assignment --- test/script/tskdbdiff.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/script/tskdbdiff.py b/test/script/tskdbdiff.py index e0081e06b9..f375934783 100644 --- a/test/script/tskdbdiff.py +++ b/test/script/tskdbdiff.py @@ -675,7 +675,7 @@ def normalize_db_entry(line, files_table, vs_parts_table, vs_info_table, fs_info fields_list[1] = accounts_table[parent_id] elif os_account_id == 'NULL': fields_list[1] = "NULL" - newLine = = ('INSERT INTO "tsk_os_account_attributes" VALUES(' + ','.join(fields_list[1:]) + ');') # remove id + newLine = ('INSERT INTO "tsk_os_account_attributes" VALUES(' + ','.join(fields_list[1:]) + ');') # remove id else: return line From fb2dbaa6db889c66b6ac257c290590214b585c13 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 4 Mar 2021 14:31:06 -0500 Subject: [PATCH 61/69] 7370 fix copy paste that would have left source object id unchanged --- test/script/tskdbdiff.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/test/script/tskdbdiff.py b/test/script/tskdbdiff.py index f375934783..a50911b05c 100644 --- a/test/script/tskdbdiff.py +++ b/test/script/tskdbdiff.py @@ -661,20 +661,20 @@ def normalize_db_entry(line, files_table, vs_parts_table, vs_info_table, fs_info fields_list[1] = "NULL" #substitue the source object id for a non changing value source_obj_id = fields_list[3] - if os_account_id in files_table.keys(): - fields_list[1] = files_table[parent_id] - elif os_account_id in vs_parts_table.keys(): - fields_list[1] = vs_parts_table[parent_id] - elif os_account_id in vs_info_table.keys(): - fields_list[1] = vs_info_table[parent_id] - elif os_account_id in fs_info_table.keys(): - fields_list[1] = fs_info_table[parent_id] - elif os_account_id in images_table.keys(): - fields_list[1] = images_table[parent_id] - elif os_account_id in accounts_table.keys(): - fields_list[1] = accounts_table[parent_id] - elif os_account_id == 'NULL': - fields_list[1] = "NULL" + if source_obj_id in files_table.keys(): + fields_list[3] = files_table[parent_id] + elif source_obj_id in vs_parts_table.keys(): + fields_list[3] = vs_parts_table[parent_id] + elif source_obj_id in vs_info_table.keys(): + fields_list[3] = vs_info_table[parent_id] + elif source_obj_id in fs_info_table.keys(): + fields_list[3] = fs_info_table[parent_id] + elif source_obj_id in images_table.keys(): + fields_list[3] = images_table[parent_id] + elif source_obj_id in accounts_table.keys(): + fields_list[3] = accounts_table[parent_id] + elif source_obj_id == 'NULL': + fields_list[3] = "NULL" newLine = ('INSERT INTO "tsk_os_account_attributes" VALUES(' + ','.join(fields_list[1:]) + ');') # remove id else: return line From 9106868299f83c3f9b5b04fae9c56e2f57d3c780 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 4 Mar 2021 14:33:12 -0500 Subject: [PATCH 62/69] 7370 fix the rest of copy paste error --- test/script/tskdbdiff.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/test/script/tskdbdiff.py b/test/script/tskdbdiff.py index a50911b05c..4c19de1aa9 100644 --- a/test/script/tskdbdiff.py +++ b/test/script/tskdbdiff.py @@ -646,33 +646,33 @@ def normalize_db_entry(line, files_table, vs_parts_table, vs_info_table, fs_info #substitue the account object id for a non changing value os_account_id = fields_list[1] if os_account_id in files_table.keys(): - fields_list[1] = files_table[parent_id] + fields_list[1] = files_table[os_account_id] elif os_account_id in vs_parts_table.keys(): - fields_list[1] = vs_parts_table[parent_id] + fields_list[1] = vs_parts_table[os_account_id] elif os_account_id in vs_info_table.keys(): - fields_list[1] = vs_info_table[parent_id] + fields_list[1] = vs_info_table[os_account_id] elif os_account_id in fs_info_table.keys(): - fields_list[1] = fs_info_table[parent_id] + fields_list[1] = fs_info_table[os_account_id] elif os_account_id in images_table.keys(): - fields_list[1] = images_table[parent_id] + fields_list[1] = images_table[os_account_id] elif os_account_id in accounts_table.keys(): - fields_list[1] = accounts_table[parent_id] + fields_list[1] = accounts_table[os_account_id] elif os_account_id == 'NULL': fields_list[1] = "NULL" #substitue the source object id for a non changing value source_obj_id = fields_list[3] if source_obj_id in files_table.keys(): - fields_list[3] = files_table[parent_id] + fields_list[3] = files_table[source_obj_id] elif source_obj_id in vs_parts_table.keys(): - fields_list[3] = vs_parts_table[parent_id] + fields_list[3] = vs_parts_table[source_obj_id] elif source_obj_id in vs_info_table.keys(): - fields_list[3] = vs_info_table[parent_id] + fields_list[3] = vs_info_table[source_obj_id] elif source_obj_id in fs_info_table.keys(): - fields_list[3] = fs_info_table[parent_id] + fields_list[3] = fs_info_table[source_obj_id] elif source_obj_id in images_table.keys(): - fields_list[3] = images_table[parent_id] + fields_list[3] = images_table[source_obj_id] elif source_obj_id in accounts_table.keys(): - fields_list[3] = accounts_table[parent_id] + fields_list[3] = accounts_table[source_obj_id] elif source_obj_id == 'NULL': fields_list[3] = "NULL" newLine = ('INSERT INTO "tsk_os_account_attributes" VALUES(' + ','.join(fields_list[1:]) + ');') # remove id From fa18fc5b4f9604dc02758b56101a885f35509dea Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Thu, 4 Mar 2021 16:46:18 -0500 Subject: [PATCH 63/69] 7370 add missing return statement --- test/script/tskdbdiff.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/script/tskdbdiff.py b/test/script/tskdbdiff.py index 4c19de1aa9..dc7e5ee691 100644 --- a/test/script/tskdbdiff.py +++ b/test/script/tskdbdiff.py @@ -676,6 +676,7 @@ def normalize_db_entry(line, files_table, vs_parts_table, vs_info_table, fs_info elif source_obj_id == 'NULL': fields_list[3] = "NULL" newLine = ('INSERT INTO "tsk_os_account_attributes" VALUES(' + ','.join(fields_list[1:]) + ');') # remove id + return newLine else: return line From a545401df86298961c9577995451d742cbbcd64c Mon Sep 17 00:00:00 2001 From: apriestman Date: Fri, 5 Mar 2021 12:30:50 -0500 Subject: [PATCH 64/69] Add "ImageGallery" to name of worker thread --- .../sleuthkit/autopsy/imagegallery/ImageGalleryController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java index 2f13a48fd2..9513163587 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/ImageGalleryController.java @@ -659,7 +659,7 @@ public final class ImageGalleryController { private static ListeningExecutorService getNewDBExecutor() { return MoreExecutors.listeningDecorator(Executors.newSingleThreadExecutor( - new ThreadFactoryBuilder().setNameFormat("DB-Worker-Thread-%d").build())); + new ThreadFactoryBuilder().setNameFormat("ImageGallery-DB-Worker-Thread-%d").build())); } /** From 7d2244b84934fcfd843aefaa33e995881e0f49a7 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Fri, 5 Mar 2021 15:13:33 -0500 Subject: [PATCH 65/69] fix view context unknown persons issue --- .../autopsy/datamodel/PersonGroupingNode.java | 10 +++++++++- .../directorytree/DirectoryTreeTopComponent.java | 7 +++---- .../autopsy/directorytree/ViewContextAction.java | 4 +++- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java index 1098ad7322..569d93eb3e 100644 --- a/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java +++ b/Core/src/org/sleuthkit/autopsy/datamodel/PersonGroupingNode.java @@ -52,6 +52,14 @@ import org.sleuthkit.datamodel.TskCoreException; public class PersonGroupingNode extends DisplayableItemNode { private static final String ICON_PATH = "org/sleuthkit/autopsy/images/person.png"; + + /** + * Returns the id of an unknown persons node. This can be used with a node lookup. + * @return The id of an unknown persons node. + */ + public static String getUnknownPersonId() { + return Bundle.PersonNode_unknownPersonNode_title(); + } /** * Responsible for creating the host children of this person. @@ -157,7 +165,7 @@ public class PersonGroupingNode extends DisplayableItemNode { */ private static String getDisplayName(Person person) { return (person == null || person.getName() == null) - ? Bundle.PersonNode_unknownPersonNode_title() + ? getUnknownPersonId() : person.getName(); } diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java index 4a3a432aed..3222173ba3 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/DirectoryTreeTopComponent.java @@ -35,7 +35,6 @@ import java.util.concurrent.ExecutionException; import java.util.logging.Level; import java.util.prefs.PreferenceChangeEvent; import java.util.prefs.PreferenceChangeListener; -import java.util.stream.Stream; import javax.swing.Action; import javax.swing.SwingUtilities; import javax.swing.SwingWorker; @@ -82,8 +81,7 @@ import org.sleuthkit.autopsy.datamodel.InterestingHits; import org.sleuthkit.autopsy.datamodel.KeywordHits; import org.sleuthkit.autopsy.datamodel.ResultsNode; import org.sleuthkit.autopsy.datamodel.AutopsyTreeChildFactory; -import org.sleuthkit.autopsy.datamodel.DataSourceGrouping; -import org.sleuthkit.autopsy.datamodel.DataSourcesByTypeNode; +import org.sleuthkit.autopsy.datamodel.PersonGroupingNode; import org.sleuthkit.autopsy.datamodel.Tags; import org.sleuthkit.autopsy.datamodel.ViewsNode; import org.sleuthkit.autopsy.datamodel.accounts.Accounts; @@ -1086,7 +1084,8 @@ public final class DirectoryTreeTopComponent extends TopComponent implements Dat if (node == null) { return null; } else if (node.getLookup().lookup(Host.class) != null - || node.getLookup().lookup(Person.class) != null) { + || node.getLookup().lookup(Person.class) != null + || PersonGroupingNode.getUnknownPersonId().equals(node.getLookup().lookup(String.class))) { Children children = node.getChildren(); Node[] childNodes = children == null ? null : children.getNodes(); if (childNodes != null) { diff --git a/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java b/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java index bb8fd7c561..ca9aa43198 100644 --- a/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java +++ b/Core/src/org/sleuthkit/autopsy/directorytree/ViewContextAction.java @@ -49,6 +49,7 @@ import org.sleuthkit.autopsy.datamodel.ContentNodeSelectionInfo; import org.sleuthkit.autopsy.datamodel.DataSourcesByTypeNode; import org.sleuthkit.autopsy.datamodel.DataSourcesNode; import org.sleuthkit.autopsy.datamodel.DisplayableItemNode; +import org.sleuthkit.autopsy.datamodel.PersonGroupingNode; import org.sleuthkit.autopsy.datamodel.RootContentChildren; import org.sleuthkit.datamodel.AbstractFile; import org.sleuthkit.datamodel.BlackboardArtifact; @@ -319,7 +320,8 @@ public class ViewContextAction extends AbstractAction { return Collections.emptyList(); } else if (node.getLookup().lookup(Host.class) != null || node.getLookup().lookup(Person.class) != null || - DataSourcesByTypeNode.getNameIdentifier().equals(node.getLookup().lookup(String.class))) { + DataSourcesByTypeNode.getNameIdentifier().equals(node.getLookup().lookup(String.class)) || + PersonGroupingNode.getUnknownPersonId().equals(node.getLookup().lookup(String.class))) { Children children = node.getChildren(); Node[] childNodes = children == null ? null : children.getNodes(); if (childNodes == null) { From 58148f4e42924051f1f20f910aa0c4a084d80bd0 Mon Sep 17 00:00:00 2001 From: Raman Arora Date: Fri, 5 Mar 2021 15:40:18 -0500 Subject: [PATCH 66/69] 4186: Remove admin column and field from Os account table and class. --- .../sleuthkit/autopsy/recentactivity/ExtractRegistry.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractRegistry.java b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractRegistry.java index 1b1661c82e..46504c1886 100644 --- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractRegistry.java +++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/ExtractRegistry.java @@ -2315,8 +2315,9 @@ class ExtractRegistry extends Extract { // "Default Admin User", "Custom Limited Acct" // and "Default Guest Acct" value = userInfo.get(ACCOUNT_TYPE_KEY); - if (value != null && !value.isEmpty()) { - osAccount.setIsAdmin(value.toLowerCase().contains("Admin")); + if (value != null && !value.isEmpty() && value.toLowerCase().contains("admin")) { + attributes.add(createOsAccountAttribute(ATTRIBUTE_TYPE.TSK_IS_ADMIN, + 1, osAccount, host, regFile)); } value = userInfo.get(USER_COMMENT_KEY); From 7810810a7e2621cd33ad95db1b87c2d183f20b32 Mon Sep 17 00:00:00 2001 From: William Schaefer Date: Fri, 5 Mar 2021 16:01:21 -0500 Subject: [PATCH 67/69] 7370 fixed by adding casting --- test/script/tskdbdiff.py | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) diff --git a/test/script/tskdbdiff.py b/test/script/tskdbdiff.py index dc7e5ee691..85087892b1 100644 --- a/test/script/tskdbdiff.py +++ b/test/script/tskdbdiff.py @@ -644,23 +644,10 @@ def normalize_db_entry(line, files_table, vs_parts_table, vs_info_table, fs_info return newLine elif os_account_attr_index: #substitue the account object id for a non changing value - os_account_id = fields_list[1] - if os_account_id in files_table.keys(): - fields_list[1] = files_table[os_account_id] - elif os_account_id in vs_parts_table.keys(): - fields_list[1] = vs_parts_table[os_account_id] - elif os_account_id in vs_info_table.keys(): - fields_list[1] = vs_info_table[os_account_id] - elif os_account_id in fs_info_table.keys(): - fields_list[1] = fs_info_table[os_account_id] - elif os_account_id in images_table.keys(): - fields_list[1] = images_table[os_account_id] - elif os_account_id in accounts_table.keys(): - fields_list[1] = accounts_table[os_account_id] - elif os_account_id == 'NULL': - fields_list[1] = "NULL" + os_account_id = int(fields_list[1]) + fields_list[1] = accounts_table[os_account_id] #substitue the source object id for a non changing value - source_obj_id = fields_list[3] + source_obj_id = int(fields_list[3]) if source_obj_id in files_table.keys(): fields_list[3] = files_table[source_obj_id] elif source_obj_id in vs_parts_table.keys(): @@ -838,9 +825,7 @@ def build_id_obj_path_table(files_table, objects_table, artifacts_table, reports path = images_table[par_obj_id] mapping[k] = path + "/" + artifacts_table[k] elif k in accounts_table.keys(): # For an OS Account object ID we use its unique_id field which is the account SID - unique_id = v[0] - if unique_id is not None: - mapping[k] = accounts_table[k] + mapping[k] = accounts_table[k] elif v[0] not in mapping.keys(): if v[0] in artifacts_table.keys(): par_obj_id = objects_table[v[0]] From 166fda3ff3aa9dc8008eed3c8ce51e44e2a2e136 Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Mon, 8 Mar 2021 14:45:26 -0500 Subject: [PATCH 68/69] Removed the admin property from the content viewer --- .../osaccount/OsAccountDataPanel.java | 26 ------------------- 1 file changed, 26 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/osaccount/OsAccountDataPanel.java b/Core/src/org/sleuthkit/autopsy/contentviewers/osaccount/OsAccountDataPanel.java index dde7396040..ab440995eb 100755 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/osaccount/OsAccountDataPanel.java +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/osaccount/OsAccountDataPanel.java @@ -146,8 +146,6 @@ public class OsAccountDataPanel extends JPanel { data.addData(Bundle.OsAccountDataPanel_basic_address(), account.getName() == null || account.getName().isEmpty() ? "" : account.getName()); - data.addData(Bundle.OsAccountDataPanel_basic_admin(), getIsAdminValue(account.isAdmin())); - data.addData(Bundle.OsAccountDataPanel_basic_type(), account.getOsAccountType().getName()); Optional crTime = account.getCreationTime(); @@ -289,28 +287,4 @@ public class OsAccountDataPanel extends JPanel { return constraints; } - - @Messages({ - "OsAccountDataPanel_basic_yes=Yes", - "OsAccountDataPanel_basic_no=No", - "OsAccountDataPanel_basic_unknown=Unknown",}) - /** - * Return a string representation of the isAdmin status for OsAccounts. - * - * @param isAdmin Admin state for the OsAccount - * - * @return String representation of the admin state. - */ - private String getIsAdminValue(Optional isAdmin) { - if (!isAdmin.isPresent()) { - return Bundle.OsAccountDataPanel_basic_unknown(); - } else { - if (isAdmin.get()) { - return Bundle.OsAccountDataPanel_basic_yes(); - } else { - return Bundle.OsAccountDataPanel_basic_no(); - } - } - } - } From 747a5e39b296927d74d597ae12301dab7e34e645 Mon Sep 17 00:00:00 2001 From: Kelly Kelly Date: Mon, 8 Mar 2021 14:50:02 -0500 Subject: [PATCH 69/69] Updated OsAccount content viewer proeprties file --- .../autopsy/contentviewers/osaccount/Bundle.properties-MERGED | 3 --- 1 file changed, 3 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/contentviewers/osaccount/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/contentviewers/osaccount/Bundle.properties-MERGED index c313958fd5..33ac7b64d3 100755 --- a/Core/src/org/sleuthkit/autopsy/contentviewers/osaccount/Bundle.properties-MERGED +++ b/Core/src/org/sleuthkit/autopsy/contentviewers/osaccount/Bundle.properties-MERGED @@ -3,11 +3,8 @@ OsAccountDataPanel_basic_admin=Administrator OsAccountDataPanel_basic_creationDate=Creation Date OsAccountDataPanel_basic_fullname=Full Name OsAccountDataPanel_basic_login=Login -OsAccountDataPanel_basic_no=No OsAccountDataPanel_basic_title=Basic Properties OsAccountDataPanel_basic_type=Type -OsAccountDataPanel_basic_unknown=Unknown -OsAccountDataPanel_basic_yes=Yes OsAccountDataPanel_realm_address=Address OsAccountDataPanel_realm_confidence=Confidence OsAccountDataPanel_realm_name=Name