Skip to content

Commit aab6dfe

Browse files
wangf1122josegar74
andauthored
Delete draft resource at the end of draft util transaction. (geonetwork#8100)
* Delete draft resource at the end of draft util transaction. * marking deprecating * update info logs * Update datastorages/cmis/src/main/java/org/fao/geonet/api/records/attachments/CMISStore.java Co-authored-by: Jose García <[email protected]> * Update datastorages/cmis/src/main/java/org/fao/geonet/api/records/attachments/CMISStore.java Co-authored-by: Jose García <[email protected]> * Update datastorages/cmis/src/main/java/org/fao/geonet/api/records/attachments/CMISStore.java Co-authored-by: Jose García <[email protected]> * Update datastorages/cmis/src/main/java/org/fao/geonet/api/records/attachments/CMISStore.java Co-authored-by: Jose García <[email protected]> * Update datastorages/cmis/src/main/java/org/fao/geonet/api/records/attachments/CMISStore.java Co-authored-by: Jose García <[email protected]> --------- Co-authored-by: Jose García <[email protected]>
1 parent 5f448a5 commit aab6dfe

File tree

8 files changed

+42
-20
lines changed

8 files changed

+42
-20
lines changed

core/src/main/java/org/fao/geonet/api/records/attachments/AbstractStore.java

+6
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,12 @@ public String delResources(final ServiceContext context, final String metadataUu
202202
return delResources(context, metadataUuid, true);
203203
}
204204

205+
@Override
206+
public String delResources(final ServiceContext context, final String metadataUuid, Boolean approved) throws Exception {
207+
int metadataId = canEdit(context, metadataUuid, approved);
208+
return delResources(context, metadataId);
209+
}
210+
205211
@Override
206212
public String delResource(final ServiceContext context, final String metadataUuid, final String resourceId) throws Exception {
207213
return delResource(context, metadataUuid, resourceId, true);

core/src/main/java/org/fao/geonet/api/records/attachments/FilesystemStore.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,7 @@ private Path getPath(ServiceContext context, int metadataId, MetadataResourceVis
229229
}
230230

231231
@Override
232-
public String delResources(ServiceContext context, String metadataUuid, Boolean approved) throws Exception {
233-
int metadataId = canEdit(context, metadataUuid, approved);
232+
public String delResources(ServiceContext context, int metadataId) throws Exception {
234233
Path metadataDir = Lib.resource.getMetadataDir(getDataDirectory(context), metadataId);
235234
try {
236235
IO.deleteFileOrDirectory(metadataDir, true);

core/src/main/java/org/fao/geonet/api/records/attachments/ResourceLoggerStore.java

+7
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,13 @@ public String delResources(ServiceContext context, String metadataUuid, Boolean
125125
return null;
126126
}
127127

128+
public String delResources(ServiceContext context, int metadataId) throws Exception {
129+
if (decoratedStore != null) {
130+
return decoratedStore.delResources(context, metadataId);
131+
}
132+
return null;
133+
}
134+
128135
@Override
129136
public String delResource(ServiceContext context, String metadataUuid, String resourceId, Boolean approved) throws Exception {
130137
if (decoratedStore != null) {

core/src/main/java/org/fao/geonet/api/records/attachments/Store.java

+12
Original file line numberDiff line numberDiff line change
@@ -278,12 +278,24 @@ MetadataResource putResource(ServiceContext context, String metadataUuid, String
278278
/**
279279
* Delete all resources for a metadata
280280
*
281+
* @deprecated it is possible that the metadata draft was deleted during the transaction. Use
282+
* String delResources(ServiceContext context, int metadataId) throws Exception; instead.
283+
*
281284
* @param context
282285
* @param metadataUuid The metadata UUID
283286
* @param approved Return the approved version or not
284287
*/
288+
@Deprecated
285289
String delResources(ServiceContext context, String metadataUuid, Boolean approved) throws Exception;
286290

291+
/**
292+
* Delete all resources for a metadata
293+
*
294+
* @param context
295+
* @param metadataId The metadata ID
296+
*/
297+
String delResources(ServiceContext context, int metadataId) throws Exception;
298+
287299
/**
288300
* Delete a resource from the metadata store
289301
*

datastorages/cmis/src/main/java/org/fao/geonet/api/records/attachments/CMISStore.java

+11-12
Original file line numberDiff line numberDiff line change
@@ -385,8 +385,7 @@ public MetadataResource patchResourceStatus(final ServiceContext context, final
385385
}
386386

387387
@Override
388-
public String delResources(final ServiceContext context, final String metadataUuid, Boolean approved) throws Exception {
389-
int metadataId = canEdit(context, metadataUuid, approved);
388+
public String delResources(final ServiceContext context, final int metadataId) throws Exception {
390389
String folderKey = null;
391390
try {
392391
folderKey = getMetadataDir(context, metadataId);
@@ -396,24 +395,24 @@ public String delResources(final ServiceContext context, final String metadataUu
396395
cmisUtils.invalidateFolderCache(folderKey);
397396

398397
Log.info(Geonet.RESOURCES,
399-
String.format("Metadata '%s(%s)' directory '%s' removed.", metadataUuid, metadataId, folderKey));
400-
return String.format("Metadata '%s(%s)' directory '%s' removed.", metadataUuid, metadataId, folderKey);
398+
String.format("Metadata '%d' directory '%s' removed.", metadataId, folderKey));
399+
return String.format("Metadata '%d' directory '%s' removed.", metadataId, folderKey);
401400
} catch (CmisObjectNotFoundException e) {
402401
Log.warning(Geonet.RESOURCES,
403-
String.format("Unable to located metadata '%s(%s)' directory '%s' to be removed.", metadataUuid, metadataId, folderKey));
404-
return String.format("Unable to located metadata '%s(%s)' directory '%s' to be removed.", metadataUuid, metadataId, folderKey);
402+
String.format("Unable to located metadata '%d' directory '%s' to be removed.", metadataId, folderKey));
403+
return String.format("Unable to located metadata '%d' directory '%s' to be removed.", metadataId, folderKey);
405404
} catch (ResourceNotFoundException e) {
406405
Log.warning(Geonet.RESOURCES,
407-
String.format("Unable to located metadata '%s(%s)' directory '%s' to be removed.", metadataUuid, metadataId, folderKey));
408-
return String.format("Unable to located metadata '%s(%s)' directory '%s' to be removed.", metadataUuid, metadataId, folderKey);
406+
String.format("Unable to located metadata '%d' directory '%s' to be removed.", metadataId, folderKey));
407+
return String.format("Unable to located metadata '%d' directory '%s' to be removed.", metadataId, folderKey);
409408
} catch (CmisPermissionDeniedException e) {
410409
Log.warning(Geonet.RESOURCES,
411-
String.format("Insufficient privileges, unable to remove metadata '%s(%s)' directory '%s'.", metadataUuid, metadataId, folderKey));
412-
return String.format("Insufficient privileges, unable to remove metadata '%s(%s)' directory '%s'.", metadataUuid, metadataId, folderKey);
410+
String.format("Insufficient privileges, unable to remove metadata '%d' directory '%s'.", metadataId, folderKey));
411+
return String.format("Insufficient privileges, unable to remove metadata '%d' directory '%s'.", metadataId, folderKey);
413412
} catch (CmisConstraintException e) {
414413
Log.warning(Geonet.RESOURCES,
415-
String.format("Unable to remove metadata '%s(%s)' directory '%s' due so constraint violation or locks.", metadataUuid, metadataId, folderKey));
416-
return String.format("Unable to remove metadata '%s(%s)' directory '%s' due so constraint violation or locks.", metadataUuid, metadataId, folderKey);
414+
String.format("Unable to remove metadata '%d' directory '%s' due so constraint violation or locks.", metadataId, folderKey));
415+
return String.format("Unable to remove metadata '%d' directory '%s' due so constraint violation or locks.", metadataId, folderKey);
417416
}
418417
}
419418

datastorages/jcloud/src/main/java/org/fao/geonet/api/records/attachments/JCloudStore.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,7 @@ public MetadataResource patchResourceStatus(final ServiceContext context, final
238238
}
239239

240240
@Override
241-
public String delResources(final ServiceContext context, final String metadataUuid, Boolean approved) throws Exception {
242-
int metadataId = canEdit(context, metadataUuid, approved);
241+
public String delResources(final ServiceContext context, final int metadataId) throws Exception {
243242
try {
244243
ListContainerOptions opts = new ListContainerOptions();
245244
opts.prefix(getMetadataDir(context, metadataId) + jCloudConfiguration.getFolderDelimiter()).recursive();

datastorages/s3/src/main/java/org/fao/geonet/api/records/attachments/S3Store.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -182,8 +182,7 @@ public MetadataResource patchResourceStatus(final ServiceContext context, final
182182
}
183183

184184
@Override
185-
public String delResources(final ServiceContext context, final String metadataUuid, Boolean approved) throws Exception {
186-
int metadataId = canEdit(context, metadataUuid, approved);
185+
public String delResources(final ServiceContext context, final int metadataId) throws Exception {
187186
try {
188187
final ListObjectsV2Result objects = s3.getClient().listObjectsV2(
189188
s3.getBucket(), getMetadataDir(metadataId));

listeners/src/main/java/org/fao/geonet/listener/metadata/draft/DraftUtilities.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,6 @@ public AbstractMetadata replaceMetadataWithDraft(AbstractMetadata md, AbstractMe
146146
Element xmlData = draft.getXmlData(false);
147147
String changeDate = draft.getDataInfo().getChangeDate().getDateAndTime();
148148

149-
store.delResources(context, draft.getUuid(), false);
150149
removeDraft((MetadataDraft) draft);
151150

152151
// Copy contents
@@ -155,8 +154,10 @@ public AbstractMetadata replaceMetadataWithDraft(AbstractMetadata md, AbstractMe
155154
xmlData, false, false,
156155
context.getLanguage(), changeDate, true, IndexingMode.full);
157156

158-
Log.info(Geonet.DATA_MANAGER, "Record updated with draft contents: " + md.getId());
157+
Log.info(Geonet.DATA_MANAGER, "Record '" + md.getUuid() + "(" +md.getId() +")' update with draft contents from metadata id '" + draft.getId() +"'.");
159158

159+
Log.info(Geonet.DATA_MANAGER, "Cleaning up draft record resources for metadata '" + draft.getUuid() + "(" +draft.getId() +")'");
160+
store.delResources(context, draft.getId());
160161
} catch (Exception e) {
161162
Log.error(Geonet.DATA_MANAGER, "Error upgrading from draft record with id " + md.getId(), e);
162163
}

0 commit comments

Comments
 (0)