gpt4 book ai didi

java - DSpace 5.4 XMLUI – 更改文件名

转载 作者:行者123 更新时间:2023-11-30 02:57:40 24 4
gpt4 key购买 nike

我们在 DSpace XMLUI 工作流程中实现了一个新步骤。此步骤更改上传文件的文件名。我们已经尝试了两种不同的方法:

  • 第一个:
    我们按照提示进行操作 here 。问题是我们的编辑(他们有自己的用户组)显然无权更改文件名。即使当我们给予它们在所有可选集合中的比特流写入权限仍然出现授权错误。


我们的方法如下所示:

private void updateFileName(DBConnection dspaceDbConnection, Context c, Item item, String fName)
throws Exception {

Bundle[] bundles = item.getBundles("ORIGINAL");
for (int i = 0; i < bundles.length; i++) {
Bitstream[] bitstreams = bundles[i].getBitstreams();
for (int j = 0; j < bitstreams.length; j++) {
bitstreams[j].setName(fileName);
bitstreams[j].update();
log.info("file name change:" + fileName);
}
}
c.commit();
  • 由于这种方式没有成功,我们决定直接通过 java 方法在数据库上更改文件名(SQL,类似于 UPDATEmetadatavalue SET text_value = ...)。除了索引不会更新我们的数据库更改之外,效果很好。

    因此我们得到了以下问题:
  • 在 DSpace 中更改文件名的首选或最佳方法是什么?
  • 是否有可行的方法来告诉索引对数据库进行特定更改?
  • 是否有办法授予 DSpace 组更改比特流元数据的授权?


提前感谢您的建议!

最佳答案

查看 DSpace 5x 代码,我在创建项目时在 Item.create() 中调用了以下内容。

    // Call update to give the item a last modified date. OK this isn't
// amazingly efficient but creates don't happen that often.
context.turnOffAuthorisationSystem();
i.update();
context.restoreAuthSystemState();

context.addEvent(new Event(Event.CREATE, Constants.ITEM, i.getID(),
null, i.getIdentifiers(context)));

参见https://github.com/DSpace/DSpace/blob/dspace-5_x/dspace-api/src/main/java/org/dspace/content/Item.java#L179-L186

对于 Bitstream,存在以下方法 Bitstream.updateLastModified()。

public void updateLastModified()
{
//Also fire a modified event since the bitstream HAS been modified
ourContext.addEvent(new Event(Event.MODIFY, Constants.BITSTREAM, getID(), null, getIdentifiers(ourContext)));
}

参见https://github.com/DSpace/DSpace/blob/dspace-5_x/dspace-api/src/main/java/org/dspace/content/Bitstream.java#L728-L734

您是否正在尝试获取索引来发现您分配给比特流的文件名?我不相信文件名位于全文 (SOLR) 索引中。

关于java - DSpace 5.4 XMLUI – 更改文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36792645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com