Sleuth Kit Java Bindings (JNI)  4.10.1
Java bindings for using The Sleuth Kit
LocalFilesDataSource.java
Go to the documentation of this file.
1 /*
2  * Sleuth Kit Data Model
3  *
4  * Copyright 2011-2017 Basis Technology Corp.
5  * Contact: carrier <at> sleuthkit <dot> org
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19 package org.sleuthkit.datamodel;
20 
21 import java.sql.ResultSet;
22 import java.sql.SQLException;
23 import java.sql.Statement;
24 import java.util.logging.Level;
25 import java.util.logging.Logger;
26 
37 public class LocalFilesDataSource extends VirtualDirectory implements DataSource {
38 
39  private final long objectId;
40  private final String deviceId;
41  private final String timezone;
42 
43  private static final Logger LOGGER = Logger.getLogger(LocalFilesDataSource.class.getName());
44 
70  public LocalFilesDataSource(SleuthkitCase db, long objId, long dataSourceObjectId, String deviceId, String name, TskData.TSK_FS_NAME_TYPE_ENUM dirType, TskData.TSK_FS_META_TYPE_ENUM metaType, TskData.TSK_FS_NAME_FLAG_ENUM dirFlag, short metaFlags, String timezone, String md5Hash, String sha256Hash, TskData.FileKnown knownState, String parentPath) {
71  super(db, objId, dataSourceObjectId, name, dirType, metaType, dirFlag, metaFlags, md5Hash, sha256Hash, knownState, parentPath);
72  this.objectId = objId;
73  this.deviceId = deviceId;
74  this.timezone = timezone;
75  }
76 
85  @Deprecated
87  return this;
88  }
89 
97  @Override
98  public String getDeviceId() {
99  return deviceId;
100  }
101 
107  @Override
108  public String getTimeZone() {
109  return timezone;
110  }
111 
119  @Override
120  public void setDisplayName(String newName) throws TskCoreException {
121  this.getSleuthkitCase().setFileName(newName, objectId);
122  }
123 
139  @Override
140  public long getContentSize(SleuthkitCase sleuthkitCase) throws TskCoreException {
141  return getContentSize(sleuthkitCase, objectId);
142  }
143 
159  static long getContentSize(SleuthkitCase sleuthkitCase, long dataSourceObjId) throws TskCoreException {
160  SleuthkitCase.CaseDbConnection connection;
161  Statement statement = null;
162  ResultSet resultSet = null;
163  long contentSize = 0;
164 
165  connection = sleuthkitCase.getConnection();
166 
167  try {
168  statement = connection.createStatement();
169  resultSet = connection.executeQuery(statement, "SELECT SUM (size) FROM tsk_files WHERE tsk_files.data_source_obj_id = " + dataSourceObjId);
170  if (resultSet.next()) {
171  contentSize = resultSet.getLong("sum");
172  }
173  } catch (SQLException ex) {
174  throw new TskCoreException(String.format("There was a problem while querying the database for size data for object ID %d.", dataSourceObjId), ex);
175  } finally {
176  closeResultSet(resultSet);
177  closeStatement(statement);
178  connection.close();
179  }
180 
181  return contentSize;
182  }
183 
191  @Override
192  public void setAcquisitionDetails(String details) throws TskCoreException {
193  getSleuthkitCase().setAcquisitionDetails(this, details);
194  }
195 
203  @Override
204  public String getAcquisitionDetails() throws TskCoreException {
205  return getSleuthkitCase().getAcquisitionDetails(this);
206  }
207 
213  private static void closeResultSet(ResultSet resultSet) {
214  if (resultSet != null) {
215  try {
216  resultSet.close();
217  } catch (SQLException ex) {
218  LOGGER.log(Level.SEVERE, "Error closing ResultSet", ex); //NON-NLS
219  }
220  }
221  }
222 
228  private static void closeStatement(Statement statement) {
229  if (statement != null) {
230  try {
231  statement.close();
232  } catch (SQLException ex) {
233  LOGGER.log(Level.SEVERE, "Error closing Statement", ex); //NON-NLS
234  }
235  }
236  }
237 
264  @Deprecated
265  public LocalFilesDataSource(SleuthkitCase db, long objId, long dataSourceObjectId, String deviceId, String name, TskData.TSK_FS_NAME_TYPE_ENUM dirType, TskData.TSK_FS_META_TYPE_ENUM metaType, TskData.TSK_FS_NAME_FLAG_ENUM dirFlag, short metaFlags, String timezone, String md5Hash, TskData.FileKnown knownState, String parentPath) {
266  this(db, objId, dataSourceObjectId, deviceId, name, dirType, metaType, dirFlag, metaFlags, timezone, md5Hash, null, knownState, parentPath);
267  }
268 }
final TSK_FS_NAME_TYPE_ENUM dirType
final TSK_FS_NAME_FLAG_ENUM dirFlag
LocalFilesDataSource(SleuthkitCase db, long objId, long dataSourceObjectId, String deviceId, String name, TskData.TSK_FS_NAME_TYPE_ENUM dirType, TskData.TSK_FS_META_TYPE_ENUM metaType, TskData.TSK_FS_NAME_FLAG_ENUM dirFlag, short metaFlags, String timezone, String md5Hash, String sha256Hash, TskData.FileKnown knownState, String parentPath)
final Set< TSK_FS_META_FLAG_ENUM > metaFlags
final TSK_FS_META_TYPE_ENUM metaType
LocalFilesDataSource(SleuthkitCase db, long objId, long dataSourceObjectId, String deviceId, String name, TskData.TSK_FS_NAME_TYPE_ENUM dirType, TskData.TSK_FS_META_TYPE_ENUM metaType, TskData.TSK_FS_NAME_FLAG_ENUM dirFlag, short metaFlags, String timezone, String md5Hash, TskData.FileKnown knownState, String parentPath)
long getContentSize(SleuthkitCase sleuthkitCase)

Copyright © 2011-2020 Brian Carrier. (carrier -at- sleuthkit -dot- org)
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.