19 package org.sleuthkit.autopsy.datamodel;
 
   21 import java.io.FileOutputStream;
 
   22 import java.io.IOException;
 
   23 import java.io.InputStream;
 
   24 import java.text.SimpleDateFormat;
 
   25 import java.util.TimeZone;
 
   26 import java.util.concurrent.Future;
 
   27 import java.util.function.Supplier;
 
   28 import java.util.logging.Level;
 
   29 import java.util.prefs.PreferenceChangeEvent;
 
   30 import java.util.prefs.PreferenceChangeListener;
 
   31 import javax.swing.SwingWorker;
 
   32 import org.netbeans.api.progress.ProgressHandle;
 
   33 import org.openide.util.NbBundle;
 
   57     private static final SimpleDateFormat 
dateFormatter = 
new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss z");
 
   58     private static final SimpleDateFormat 
dateFormatterISO8601 = 
new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss'Z'");
 
   63             public void preferenceChange(PreferenceChangeEvent evt) {
 
   73         throw new AssertionError();
 
   85         String time = 
"0000-00-00 00:00:00";
 
   86         if (epochSeconds != 0) {
 
   88                 dateFormatter.setTimeZone(tzone);
 
   89                 time = dateFormatter.format(
new java.util.Date(epochSeconds * 1000));
 
   96         String time = 
"0000-00-00T00:00:00Z"; 
 
   97         if (epochSeconds != 0) {
 
   99                 dateFormatterISO8601.setTimeZone(tzone);
 
  100                 time = dateFormatterISO8601.format(
new java.util.Date(epochSeconds * 1000));
 
  136                 return TimeZone.getTimeZone(
"GMT");
 
  139                 if ((dataSource != null) && (dataSource instanceof 
Image)) {
 
  140                     Image image = (Image) dataSource;
 
  144                     return TimeZone.getDefault();
 
  148             return TimeZone.getDefault();
 
  154         return content.
accept(systemName);
 
  164             return cntnt.
getName() + 
":" + Long.toString(cntnt.
getId());
 
  188             ProgressHandle progress, Future<T> worker, 
boolean source) 
throws IOException {
 
  192         int unit = (int) (content.getSize() / 100);
 
  195         try (FileOutputStream out = 
new FileOutputStream(outputFile, 
false)) {
 
  197             int len = in.read(buffer);
 
  200                 if (worker != null && worker.isCancelled()) {
 
  203                 out.write(buffer, 0, len);
 
  204                 len = in.read(buffer);
 
  208                 if (progress != null && source && totalRead >= TO_FILE_BUFFER_SIZE) {
 
  209                     int totalProgress = (int) (totalRead / unit);
 
  210                     progress.progress(content.getName(), totalProgress);
 
  212                 } 
else if (progress != null && !source) {
 
  213                     progress.progress(content.getName());
 
  223         writeToFile(content, outputFile, null, null, 
false);
 
  239             Supplier<Boolean> cancelCheck) 
throws IOException {
 
  243         try (FileOutputStream out = 
new FileOutputStream(outputFile, 
false)) {
 
  245             int len = in.read(buffer);
 
  247                 out.write(buffer, 0, len);
 
  249                 if (cancelCheck.get()) {
 
  252                 len = in.read(buffer);
 
  265         return name.equals(
".") || name.equals(
"..");
 
  276         ProgressHandle progress;
 
  277         SwingWorker<T, V> worker;
 
  278         boolean source = 
false;
 
  293                 ProgressHandle progress, SwingWorker<T, V> worker, 
boolean source) {
 
  295             this.progress = progress;
 
  296             this.worker = worker;
 
  297             this.source = source;
 
  308         public static <T, V> 
void extract(
Content cntnt, java.io.File dest, ProgressHandle progress, SwingWorker<T, V> worker) {
 
  316             } 
catch (IOException ex) {
 
  317                 logger.log(Level.SEVERE,
 
  318                         "Trouble extracting file to " + dest.getAbsolutePath(), 
 
  328             } 
catch (IOException ex) {
 
  329                 logger.log(Level.SEVERE,
 
  330                         "Trouble extracting unallocated content file to " + dest.getAbsolutePath(), 
 
  340             } 
catch (IOException ex) {
 
  341                 logger.log(Level.SEVERE,
 
  342                         "Error extracting derived file to " + dest.getAbsolutePath(), 
 
  352             } 
catch (IOException ex) {
 
  353                 logger.log(Level.SEVERE,
 
  354                         "Error extracting local file to " + dest.getAbsolutePath(), 
 
  364             } 
catch (IOException ex) {
 
  365                 logger.log(Level.SEVERE,
 
  366                         "Trouble extracting slack file to " + dest.getAbsolutePath(), 
 
  383             String path = dest.getAbsolutePath() + java.io.
File.separator
 
  385             return new java.io.File(path);
 
  398                 int numProcessed = 0;
 
  407                     if (worker != null && worker.isCancelled()) {
 
  410                     if (progress != null && source) {
 
  411                         progress.progress(child.getName(), numProcessed);
 
  413                     child.accept(childVisitor);
 
  417                 logger.log(Level.SEVERE,
 
  418                         "Trouble fetching children to extract.", ex); 
 
  426             throw new UnsupportedOperationException(NbBundle.getMessage(
this.getClass(),
 
  427                     "ContentUtils.exception.msg",
 
  428                     content.getClass().getSimpleName()));
 
static String getStringTime(long epochSeconds, TimeZone tzone)
 
File(SleuthkitCase db, long objId, long fsObjId, TSK_FS_ATTR_TYPE_ENUM attrType, short attrId, String name, long metaAddr, int metaSeq, TSK_FS_NAME_TYPE_ENUM dirType, TSK_FS_META_TYPE_ENUM metaType, TSK_FS_NAME_FLAG_ENUM dirFlag, short metaFlags, long size, long ctime, long crtime, long atime, long mtime, short modes, int uid, int gid, String md5Hash, FileKnown knownState, String parentPath)
 
static final SimpleDateFormat dateFormatter
 
String defaultVisit(Content cntnt)
 
static boolean shouldDisplayTimesInLocalTime()
 
static final Logger logger
 
static< T > long writeToFile(Content content, java.io.File outputFile, ProgressHandle progress, Future< T > worker, boolean source)
 
static final int TO_FILE_BUFFER_SIZE
 
static String getSystemName(Content content)
 
List< Content > getChildren()
 
static String getStringTimeISO8601(long epochSeconds, TimeZone tzone)
 
static final SimpleDateFormat dateFormatterISO8601
 
static final String DISPLAY_TIMES_IN_LOCAL_TIME
 
static final SystemNameVisitor systemName
 
static String getStringTime(long epochSeconds, Content c)
 
synchronized static Logger getLogger(String name)
 
static String getStringTimeISO8601(long epochSeconds, Content c)
 
public< T > T accept(ContentVisitor< T > v)
 
static void addChangeListener(PreferenceChangeListener listener)
 
static boolean displayTimesInLocalTime
 
static TimeZone getTimeZone(Content c)
 
static void writeToFile(Content content, java.io.File outputFile)
 
static boolean displayTimesInLocalTime()
 
static long writeToFile(Content content, java.io.File outputFile, Supplier< Boolean > cancelCheck)
 
static boolean isDotDirectory(AbstractFile dir)