Skip to content

Commit 872dead

Browse files
Merge branch 'fixDatasetDeposit340-770' into 'main'
Melhora processo de depósito do conjunto de dados - 3.4.0 See merge request softwares-pkp/plugins_ojs/dataverse!195
2 parents 906f468 + 0974006 commit 872dead

10 files changed

Lines changed: 86 additions & 32 deletions

File tree

api/v1/datasets/DatasetHandler.php

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -225,15 +225,13 @@ public function addDataset($slimRequest, $response, $args)
225225
$dataset->setLicense($requestParams['datasetLicense']);
226226

227227
if (!empty($dataset->getFiles())) {
228-
try {
229-
$datasetService = new DatasetService();
230-
$datasetService->deposit($submission, $dataset);
231-
} catch (DataverseException $e) {
232-
return $response->withStatus(403)
233-
->withJsonError(
234-
'plugins.generic.dataverse.error.depositFailed',
235-
['error' => $e->getMessage()]
236-
);
228+
$datasetService = new DatasetService();
229+
$depositInfo = $datasetService->deposit($submission, $dataset);
230+
if ($depositInfo['status'] != 'Success') {
231+
return $response->withStatus(403)->withJsonError(
232+
$depositInfo['message'].'.author',
233+
$depositInfo['messageParams']
234+
);
237235
}
238236
}
239237

classes/observers/listeners/DatasetDepositOnSubmission.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,9 @@ public function handle(SubmissionSubmitted $event): void
3737
}
3838

3939
$datasetService = new DatasetService();
40-
try {
41-
$datasetService->deposit($submission, $dataset);
42-
} catch (DataverseException $e) {
43-
error_log('Dataverse API error: ' . $e->getMessage());
40+
$depositInfo = $datasetService->deposit($submission, $dataset);
41+
if ($depositInfo['status'] != 'Success') {
42+
error_log('Dataverse API error: ' . $depositInfo['messageParams']['error']);
4443
}
4544
}
4645
}

classes/services/DatasetService.php

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,29 +24,46 @@
2424

2525
class DatasetService extends DataverseService
2626
{
27-
public function deposit(Submission $submission, Dataset $dataset): void
27+
public function deposit(Submission $submission, Dataset $dataset): array
2828
{
2929
$contextId = $submission->getData('contextId');
30+
$dataverseClient = new DataverseClient();
3031

3132
try {
32-
$dataverseClient = new DataverseClient();
3333
$datasetIdentifier = $dataverseClient->getDatasetActions()->create($dataset);
34+
} catch (DataverseException $e) {
35+
$this->registerAndNotifyError(
36+
$submission,
37+
'plugins.generic.dataverse.error.datasetDeposit',
38+
['error' => $e->getMessage()]
39+
);
40+
return [
41+
'status' => 'Error',
42+
'message' => 'plugins.generic.dataverse.error.datasetDeposit',
43+
'messageParams' => ['error' => $e->getMessage()]
44+
];
45+
}
3446

35-
foreach ($dataset->getFiles() as $file) {
47+
foreach ($dataset->getFiles() as $file) {
48+
try {
3649
$dataverseClient->getDatasetFileActions()->add(
3750
$datasetIdentifier->getPersistentId(),
3851
$file->getOriginalFileName(),
3952
$file->getPath()
4053
);
54+
} catch (DataverseException $e) {
55+
$this->registerAndNotifyError(
56+
$submission,
57+
'plugins.generic.dataverse.error.datasetFileDeposit',
58+
['error' => $e->getMessage()]
59+
);
60+
$dataverseClient->getDatasetActions()->delete($datasetIdentifier->getPersistentId());
61+
return [
62+
'status' => 'Error',
63+
'message' => 'plugins.generic.dataverse.error.datasetFileDeposit',
64+
'messageParams' => ['error' => $e->getMessage(), 'fileName' => $file->getOriginalFileName()]
65+
];
4166
}
42-
} catch (DataverseException $e) {
43-
$this->registerAndNotifyError(
44-
$submission,
45-
'plugins.generic.dataverse.error.depositFailed',
46-
['error' => $e->getMessage()]
47-
);
48-
error_log('Dataverse API error: ' . $e->getMessage());
49-
throw $e;
5067
}
5168

5269
$configuration = DAORegistry::getDAO('DataverseConfigurationDAO')->get($contextId);
@@ -79,6 +96,8 @@ public function deposit(Submission $submission, Dataset $dataset): void
7996
);
8097

8198
Repo::draftDatasetFile()->deleteBySubmissionId($submission->getId());
99+
100+
return ['status' => 'Success'];
82101
}
83102

84103
public function update(array $data): void

cypress/support/commands.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,5 @@ Cypress.Commands.add('waitDataStatementTabLoading', function () {
3232
Cypress.Commands.add('waitDatasetTabLoading', function () {
3333
cy.intercept('GET', /\/api\/v1\/datasets\/\d+\/citation/).as('getDatasetRequest');
3434
cy.wait('@getDatasetRequest', {timeout:10000});
35+
cy.wait(1000);
3536
});

locale/en/locale.po

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,20 @@ msgstr "It is mandatory to send a README file, in PDF or TXT format, to accompan
130130
msgid "plugins.generic.dataverse.error.getFailed"
131131
msgstr "Error getting research data to Dataverse: {$error}"
132132

133-
msgid "plugins.generic.dataverse.error.depositFailed"
133+
msgid "plugins.generic.dataverse.error.datasetDeposit"
134134
msgstr "Error depositing research data to Dataverse: {$error}"
135135

136+
msgid "plugins.generic.dataverse.error.datasetDeposit.author"
137+
msgstr "Error depositing research data to Dataverse: {$error}<br>"
138+
"Please choose another data statement option or try again later."
139+
140+
msgid "plugins.generic.dataverse.error.datasetFileDeposit"
141+
msgstr "Error depositing the data file \"{$fileName}\" to Dataverse: {$error}"
142+
143+
msgid "plugins.generic.dataverse.error.datasetFileDeposit.author"
144+
msgstr "Error depositing the data file \"{$fileName}\" to Dataverse: {$error}<br>"
145+
"Please check if there is a problem with the file and replace it if necessary"
146+
136147
msgid "plugins.generic.dataverse.error.updateFailed"
137148
msgstr "Error updating research data in Dataverse: {$error}"
138149

locale/es/locale.po

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,20 @@ msgstr "Es obligatorio enviar un archivo README, en formato PDF o TXT, que acomp
133133
msgid "plugins.generic.dataverse.error.getFailed"
134134
msgstr "Erro al obtener datos de investigación en Dataverse: {$error}"
135135

136-
msgid "plugins.generic.dataverse.error.depositFailed"
136+
msgid "plugins.generic.dataverse.error.datasetDeposit"
137137
msgstr "Erro al depositar datos de investigación en Dataverse: {$error}"
138138

139+
msgid "plugins.generic.dataverse.error.datasetDeposit.author"
140+
msgstr "Error al depositar los datos de investigación en Dataverse: {$error}<br>"
141+
"Por favor, elija otra opción de declaración de datos o intente nuevamente más tarde."
142+
143+
msgid "plugins.generic.dataverse.error.datasetFileDeposit"
144+
msgstr "Erro al depositar lo archivo de datos \"{$fileName}\" en Dataverse: {$error}"
145+
146+
msgid "plugins.generic.dataverse.error.datasetFileDeposit.author"
147+
msgstr "Erro al depositar lo archivo de datos \"{$fileName}\" en Dataverse: {$error}<br>"
148+
"Por favor, compruebe si hay algún problema con el archivo y sustitúyalo si es necesario"
149+
139150
msgid "plugins.generic.dataverse.error.updateFailed"
140151
msgstr "Erro al actualizar datos de investigación en Dataverse: {$error}"
141152

locale/pt_BR/locale.po

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,20 @@ msgstr "É obrigatório o envio de um arquivo README, em formato PDF ou TXT, que
133133
msgid "plugins.generic.dataverse.error.getFailed"
134134
msgstr "Erro ao obter dados de pesquisa no Dataverse: {$error}"
135135

136-
msgid "plugins.generic.dataverse.error.depositFailed"
136+
msgid "plugins.generic.dataverse.error.datasetDeposit"
137137
msgstr "Erro ao depositar dados de pesquisa no Dataverse: {$error}"
138138

139+
msgid "plugins.generic.dataverse.error.datasetDeposit.author"
140+
msgstr "Erro ao depositar dados de pesquisa no Dataverse: {$error}<br>"
141+
"Por favor, escolha outra opção de declaração de dados ou tente novamente mais tarde."
142+
143+
msgid "plugins.generic.dataverse.error.datasetFileDeposit"
144+
msgstr "Erro ao depositar o arquivo de dados \"{$fileName}\" no Dataverse: {$error}"
145+
146+
msgid "plugins.generic.dataverse.error.datasetFileDeposit.author"
147+
msgstr "Erro ao depositar o arquivo de dados \"{$fileName}\" no Dataverse: {$error}<br>"
148+
"Por favor, verifique se há algum problema com o arquivo e substitua-o caso necessário"
149+
139150
msgid "plugins.generic.dataverse.error.updateFailed"
140151
msgstr "Erro ao atualizar dados de pesquisa no Dataverse: {$error}"
141152

report/services/DataverseReportService.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,11 @@ public function getOverview(int $contextId): array
3737
'decisions' => [Decision::DECLINE, Decision::INITIAL_DECLINE]
3838
]),
3939
'datasetsWithDepositError' => $this->countDatasetsWithError(
40-
['plugins.generic.dataverse.error.depositFailed'],
40+
[
41+
'plugins.generic.dataverse.error.depositFailed',
42+
'plugins.generic.dataverse.error.datasetDeposit',
43+
'plugins.generic.dataverse.error.datasetFileDeposit'
44+
],
4145
['contextIds' => [$contextId],]
4246
),
4347
'datasetsWithPublishError' => $this->countDatasetsWithError(

tests/report/services/queryBuilders/DataverseReportQueryBuilderTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ public function testCountDatasetsWithDepositError(): void
167167
'assocType' => Application::ASSOC_TYPE_SUBMISSION,
168168
'assocId' => $submission->getId(),
169169
'eventType' => SubmissionEventLogEntry::SUBMISSION_LOG_METADATA_UPDATE,
170-
'message' => 'plugins.generic.dataverse.error.depositFailed',
170+
'message' => 'plugins.generic.dataverse.error.datasetDeposit',
171171
'isTranslated' => false,
172172
'dateLogged' => Core::getCurrentDate(),
173173
]);
@@ -185,7 +185,7 @@ public function testCountDatasetsWithDepositError(): void
185185

186186
$depositErrorsCount = $this->getQueryBuilder()
187187
->filterByContexts($this->context->getId())
188-
->countDatasetsWithError(['plugins.generic.dataverse.error.depositFailed']);
188+
->countDatasetsWithError(['plugins.generic.dataverse.error.datasetDeposit']);
189189

190190
$publishErrorsCount = $this->getQueryBuilder()
191191
->filterByContexts($this->context->getId())

version.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
<version>
1414
<application>dataverse</application>
1515
<type>plugins.generic</type>
16-
<release>3.2.10.0</release>
17-
<date>2025-04-17</date>
16+
<release>3.2.11.0</release>
17+
<date>2025-04-22</date>
1818
<lazy-load>1</lazy-load>
1919
<class>DataversePlugin</class>
2020
</version>

0 commit comments

Comments
 (0)