Completed
Push — main ( 4447f4...c13e53 )
by
unknown
55s queued 50s
created

ProcessUsageStatsLogFile::deleteByLoadId()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 15
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
eloc 12
c 2
b 0
f 0
nc 1
nop 0
dl 0
loc 15
rs 9.8666
1
<?php
2
3
/**
4
 * @file jobs/statistics/ProcessUsageStatsLogFile.php
5
 *
6
 * Copyright (c) 2024 Simon Fraser University
7
 * Copyright (c) 2024 John Willinsky
8
 * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
9
 *
10
 * @class ProcessUsageStatsLogFile
11
 *
12
 * @ingroup jobs
13
 *
14
 * @brief Compile context metrics.
15
 */
16
17
namespace APP\jobs\statistics;
18
19
use APP\core\Application;
20
use APP\statistics\TemporaryItemInvestigationsDAO;
21
use APP\statistics\TemporaryItemRequestsDAO;
22
use APP\statistics\TemporaryTitleInvestigationsDAO;
23
use APP\statistics\TemporaryTitleRequestsDAO;
24
use APP\statistics\TemporaryTotalsDAO;
25
use Exception;
26
use PKP\db\DAORegistry;
27
use PKP\jobs\statistics\PKPProcessUsageStatsLogFile;
28
use PKP\statistics\TemporaryInstitutionsDAO;
29
30
class ProcessUsageStatsLogFile extends PKPProcessUsageStatsLogFile
31
{
32
    protected function deleteByLoadId(): void
33
    {
34
        $temporaryInstitutionsDao = DAORegistry::getDAO('TemporaryInstitutionsDAO'); /** @var TemporaryInstitutionsDAO $temporaryInstitutionsDao */
35
        $temporaryTotalsDao = DAORegistry::getDAO('TemporaryTotalsDAO'); /** @var TemporaryTotalsDAO $temporaryTotalsDao */
36
        $temporaryItemInvestigationsDao = DAORegistry::getDAO('TemporaryItemInvestigationsDAO'); /** @var TemporaryItemInvestigationsDAO $temporaryItemInvestigationsDao */
37
        $temporaryItemRequestsDao = DAORegistry::getDAO('TemporaryItemRequestsDAO'); /** @var TemporaryItemRequestsDAO $temporaryItemRequestsDao */
38
        $temporaryTitleInvestigationsDao = DAORegistry::getDAO('TemporaryTitleInvestigationsDAO'); /** @var TemporaryTitleInvestigationsDAO $temporaryTitleInvestigationsDao */
39
        $temporaryTitleRequestsDao = DAORegistry::getDAO('TemporaryTitleRequestsDAO'); /** @var TemporaryTitleRequestsDAO $temporaryTitleRequestsDao */
40
41
        $temporaryInstitutionsDao->deleteByLoadId($this->loadId);
42
        $temporaryTotalsDao->deleteByLoadId($this->loadId);
43
        $temporaryItemInvestigationsDao->deleteByLoadId($this->loadId);
44
        $temporaryItemRequestsDao->deleteByLoadId($this->loadId);
45
        $temporaryTitleInvestigationsDao->deleteByLoadId($this->loadId);
46
        $temporaryTitleRequestsDao->deleteByLoadId($this->loadId);
47
    }
48
49
    protected function validateLogEntry(object $entry): void
50
    {
51
        parent::validateLogEntry($entry);
52
        if (!empty($entry->chapterId) && !is_int($entry->chapterId)) {
53
            throw new Exception(__('admin.job.processLogFile.invalidLogEntry.chapterId'));
54
        }
55
        if (!empty($entry->seriesId) && !is_int($entry->seriesId)) {
56
            throw new Exception(__('admin.job.processLogFile.invalidLogEntry.seriesId'));
57
        }
58
    }
59
60
    protected function getValidAssocTypes(): array
61
    {
62
        return [
63
            Application::ASSOC_TYPE_SUBMISSION_FILE,
64
            Application::ASSOC_TYPE_SUBMISSION_FILE_COUNTER_OTHER,
65
            Application::ASSOC_TYPE_CHAPTER,
66
            Application::ASSOC_TYPE_SUBMISSION,
67
            Application::ASSOC_TYPE_SERIES,
68
            Application::ASSOC_TYPE_PRESS,
69
        ];
70
    }
71
72
    protected function insertTemporaryUsageStatsData(object $entry, int $lineNumber): void
73
    {
74
        $temporaryInstitutionsDao = DAORegistry::getDAO('TemporaryInstitutionsDAO'); /** @var TemporaryInstitutionsDAO $temporaryInstitutionsDao */
75
        $temporaryTotalsDao = DAORegistry::getDAO('TemporaryTotalsDAO'); /** @var TemporaryTotalsDAO $temporaryTotalsDao */
76
        $temporaryItemInvestigationsDao = DAORegistry::getDAO('TemporaryItemInvestigationsDAO'); /** @var TemporaryItemInvestigationsDAO $temporaryItemInvestigationsDao */
77
        $temporaryItemRequestsDao = DAORegistry::getDAO('TemporaryItemRequestsDAO'); /** @var TemporaryItemRequestsDAO $temporaryItemRequestsDao */
78
        $temporaryTitleInvestigationsDao = DAORegistry::getDAO('TemporaryTitleInvestigationsDAO'); /** @var TemporaryTitleInvestigationsDAO $temporaryTitleInvestigationsDao */
79
        $temporaryTitleRequestsDao = DAORegistry::getDAO('TemporaryTitleRequestsDAO'); /** @var TemporaryTitleRequestsDAO $temporaryTitleRequestsDao */
80
81
        try {
82
            $temporaryTotalsDao->insert($entry, $lineNumber, $this->loadId);
83
            $temporaryInstitutionsDao->insert($entry->institutionIds, $lineNumber, $this->loadId);
84
            if (!empty($entry->submissionId)) {
85
                $temporaryItemInvestigationsDao->insert($entry, $lineNumber, $this->loadId);
86
                $temporaryTitleInvestigationsDao->insert($entry, $lineNumber, $this->loadId);
87
                if ($entry->assocType == Application::ASSOC_TYPE_SUBMISSION_FILE) {
88
                    $temporaryItemRequestsDao->insert($entry, $lineNumber, $this->loadId);
89
                    $temporaryTitleRequestsDao->insert($entry, $lineNumber, $this->loadId);
90
                }
91
            }
92
        } catch (\Illuminate\Database\QueryException $e) {
93
            $message = __(
94
                'admin.job.processLogFile.insertError',
95
                ['file' => $this->loadId, 'lineNumber' => $lineNumber, 'msg' => $e->getMessage()]
96
            );
97
            error_log($message);
98
        }
99
    }
100
}
101