Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将各种类型的文档(ods、ms office、pdf)持久化到Jackrabbit存储库中_Java_Metadata_Jackrabbit_Jcr - Fatal编程技术网

Java 将各种类型的文档(ods、ms office、pdf)持久化到Jackrabbit存储库中

Java 将各种类型的文档(ods、ms office、pdf)持久化到Jackrabbit存储库中,java,metadata,jackrabbit,jcr,Java,Metadata,Jackrabbit,Jcr,我不确定要选择什么方法来存储这些类型的文档,因为关键的要求是收集尽可能多的元数据,pdf、ods和MS office文档已经 因此,如果节点树具有“组/用户/类别/文档”或“类别/组/用户/文档”结构(我不确定哪种结构更好),那么每个文档都必须有一个属性“type”,如果它是pdf/doc/odt/ppt等,我每次都必须对此进行测试,以了解它有哪些元数据类型,对吗?在我看来,这似乎非常无效。我个人会尽量避免构建您的层次结构,以包括文件类型。这是可行的,但似乎是被迫的和不自然的 相反,我会将我的层

我不确定要选择什么方法来存储这些类型的文档,因为关键的要求是收集尽可能多的元数据,pdf、ods和MS office文档已经


因此,如果节点树具有“组/用户/类别/文档”或“类别/组/用户/文档”结构(我不确定哪种结构更好),那么每个文档都必须有一个属性“type”,如果它是pdf/doc/odt/ppt等,我每次都必须对此进行测试,以了解它有哪些元数据类型,对吗?在我看来,这似乎非常无效。

我个人会尽量避免构建您的层次结构,以包括文件类型。这是可行的,但似乎是被迫的和不自然的

相反,我会将我的层次结构设计为最适合您的应用程序(例如,如果您有组和用户,那么可能是“组/用户”并将用户的文档存储在相应的用户节点下),并使用属性捕获文件类型和附加元数据

如果使用“nt:file”约定将文件上载到JCR中,则每个文件都将由一个类型为“nt:file”的节点(根据文件名命名)表示。然后,该节点将包含一个名为“jcr:content”的子节点,约定为该子节点使用“nt:resource”节点类型。在JCR 2.0中,“nt:resource”节点类型定义了以下属性定义:

  • jcr:数据(二进制)必填项
  • jcr:lastModified(日期)已自动创建
  • jcr:lastModifiedBy(字符串)已自动创建
  • jcr:mimeType(字符串)受保护
  • jcr:编码(字符串)受保护
请注意,允许JCR实现将“JCR:mimeType”和“JCR:encoding”视为受保护的,但两者都不受保护,因此必须手动设置这些属性

以下是用于上载文件和设置“jcr:mimeType”属性的代码段:

// Get an input stream for the file ...
File file = ...
InputStream stream = new BufferedInputStream(new FileInputStream(file));

Node folder = session.getNode("/absolute/path/to/folder/node");
Node file = folder.addNode("Article.pdf","nt:file");
Node content = file.addNode("jcr:content","nt:resource");
Binary binary = session.getValueFactory().createBinary(stream);
content.setProperty("jcr:data",binary);
content.setProperty("jcr:mimeType","application/pdf");
现在,开箱即用的“nt:file”和“nt:resource”节点类型不允许您设置它们未定义的属性。但是您可以使用mixin来绕过这个限制,并将元数据直接存储在这些节点上。请参阅我在前面介绍的如何执行此操作