Left: | ||
Right: |
LEFT | RIGHT |
---|---|
1 # -*- coding: utf-8 -*- | 1 # -*- coding: utf-8 -*- |
2 """SQLite-based storage.""" | 2 """SQLite-based storage.""" |
3 | 3 |
4 import os | 4 import os |
5 import sqlite3 | 5 import sqlite3 |
6 | 6 |
7 from plaso.lib import definitions | 7 from plaso.lib import definitions |
8 from plaso.storage import identifiers | 8 from plaso.storage import identifiers |
9 from plaso.storage import interface | 9 from plaso.storage import interface |
10 | 10 |
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
398 def WriteTaskStart(self, task_start): | 398 def WriteTaskStart(self, task_start): |
399 """Writes task start information. | 399 """Writes task start information. |
400 | 400 |
401 Args: | 401 Args: |
402 task_start (TaskStart): task start information. | 402 task_start (TaskStart): task start information. |
403 """ | 403 """ |
404 self._WriteAttributeContainer(task_start) | 404 self._WriteAttributeContainer(task_start) |
405 | 405 |
406 | 406 |
407 class SQLiteStorageMergeReader(interface.StorageMergeReader): | 407 class SQLiteStorageMergeReader(interface.StorageMergeReader): |
408 """Class that implements a SQLite-based storage file reader for merging.""" | 408 """SQLite-based storage file reader for merging.""" |
onager
2017/05/19 09:00:45
-Class that
Joachim Metz
2017/05/19 11:13:43
Done.
| |
409 | 409 |
410 _CONTAINER_TYPES = ( | 410 _CONTAINER_TYPES = ( |
411 u'event_source', u'event', u'extraction_error', u'analysis_report', | 411 u'event_source', u'event', u'extraction_error', u'analysis_report', |
412 u'event_tag') | 412 u'event_tag') |
413 | 413 |
414 def __init__(self, storage_writer, path): | 414 def __init__(self, storage_writer, path): |
415 """Initializes a storage merge reader. | 415 """Initializes a storage merge reader. |
416 | 416 |
417 Args: | 417 Args: |
418 storage_writer (StorageWriter): storage writer. | 418 storage_writer (StorageWriter): storage writer. |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
482 continue | 482 continue |
483 | 483 |
484 query = u'SELECT _data FROM {0:s}'.format(container_type) | 484 query = u'SELECT _data FROM {0:s}'.format(container_type) |
485 cursor.execute(query) | 485 cursor.execute(query) |
486 | 486 |
487 row = cursor.fetchone() | 487 row = cursor.fetchone() |
488 while row: | 488 while row: |
489 self._AddAttributeContainer(row[0]) | 489 self._AddAttributeContainer(row[0]) |
490 number_of_containers += 1 | 490 number_of_containers += 1 |
491 | 491 |
492 # if (maximum_number_of_containers > 0 and | 492 # if (maximum_number_of_containers > 0 and |
onager
2017/05/19 09:00:45
Please fix - this looks pretty easy to implement w
Joachim Metz
2017/05/19 11:13:43
I opt to do this in a follow up CL.
| |
493 # number_of_containers >= maximum_number_of_containers): | 493 # number_of_containers >= maximum_number_of_containers): |
494 # return False | 494 # return False |
495 | 495 |
496 row = cursor.fetchone() | 496 row = cursor.fetchone() |
497 | 497 |
498 # pylint: disable=protected-access | 498 # pylint: disable=protected-access |
499 # TODO: fix this hack. | 499 # TODO: fix this hack. |
500 self._storage_writer._storage_file._connection.commit() | 500 self._storage_writer._storage_file._connection.commit() |
501 | 501 |
502 connection.close() | 502 connection.close() |
503 | 503 |
504 connection = None | 504 connection = None |
505 cursor = None | 505 cursor = None |
506 | 506 |
507 os.remove(self._path) | 507 os.remove(self._path) |
508 | 508 |
509 return True | 509 return True |
510 | 510 |
511 | 511 |
512 class SQLiteStorageFileWriter(interface.FileStorageWriter): | 512 class SQLiteStorageFileWriter(interface.FileStorageWriter): |
513 """Class that implements the SQLite-based storage file writer.""" | 513 """SQLite-based storage file writer.""" |
onager
2017/05/19 09:00:45
-Class that
Joachim Metz
2017/05/19 11:13:43
Done.
| |
514 | 514 |
515 def _CreateStorageFile(self): | 515 def _CreateStorageFile(self): |
516 """Creates a storage file. | 516 """Creates a storage file. |
517 | 517 |
518 Returns: | 518 Returns: |
519 BaseFileStorage: storage file. | 519 SQLiteStorageFile: storage file. |
onager
2017/05/19 09:00:46
SQLiteStorageFile
Joachim Metz
2017/05/19 11:13:43
Done.
| |
520 """ | 520 """ |
521 return SQLiteStorageFile(storage_type=self._storage_type) | 521 return SQLiteStorageFile(storage_type=self._storage_type) |
522 | 522 |
523 def _CreateTaskStorageMergeReader(self, path): | 523 def _CreateTaskStorageMergeReader(self, path): |
524 """Creates a task storage merge reader. | 524 """Creates a task storage merge reader. |
525 | 525 |
526 Args: | 526 Args: |
527 path (str): path to the task storage file that should be merged. | 527 path (str): path to the task storage file that should be merged. |
528 | 528 |
529 Returns: | 529 Returns: |
530 StorageMergeReader: storage merge reader. | 530 SQLiteStorageMergeReader: storage merge reader. |
onager
2017/05/19 09:00:45
SQLiteStorageMergeReader
Joachim Metz
2017/05/19 11:13:43
Done.
| |
531 """ | 531 """ |
532 return SQLiteStorageMergeReader(self, path) | 532 return SQLiteStorageMergeReader(self, path) |
533 | 533 |
534 def _CreateTaskStorageWriter(self, path, task): | 534 def _CreateTaskStorageWriter(self, path, task): |
535 """Creates a task storage writer. | 535 """Creates a task storage writer. |
536 | 536 |
537 Args: | 537 Args: |
538 path (str): path to the storage file. | 538 path (str): path to the storage file. |
539 task (Task): task. | 539 task (Task): task. |
540 | 540 |
541 Returns: | 541 Returns: |
542 StorageWriter: storage writer. | 542 SQLiteStorageFileWriter: storage writer. |
onager
2017/05/19 09:00:46
SQLiteStorageFileWriter
Joachim Metz
2017/05/19 11:13:42
Done.
| |
543 """ | 543 """ |
544 return SQLiteStorageFileWriter( | 544 return SQLiteStorageFileWriter( |
545 self._session, path, | 545 self._session, path, |
546 storage_type=definitions.STORAGE_TYPE_TASK, task=task) | 546 storage_type=definitions.STORAGE_TYPE_TASK, task=task) |
LEFT | RIGHT |