2017-04-17 50 views
3

我想从露天存储库中检索所有文档内容。那么任何人都可以帮助我,我如何使用CMIS遍历存储库。在遍历的同时,我也想根据它的类型来分离文档。如何从使用Open CMIS分离文档类型的露天存储库中检索所有文档内容

在这一刻,我可以通过指定路径来获取任何一个文档。但现在我的要求是遍历整个存储库并获取所有文档。

所以任何人都可以帮助我。 同时建议我说:“遍历所有文件夹的,后来由特定类型分开”将是很好的办法或“使用CMIS查询的文件搜索特定类型的”将是不错的办法。

在此先感谢。

回答

4

Yagami的答案是一个好的开始,但有几件事要补充。

首先,除非实际需要存储库中的每个属性,否则不要执行“select *”操作。这是一个潜在的性能问题。只问你需要什么。

其次,您的一条评论是关于按类型分割结果的。在CMIS中,类型就像一个SQL表。所以你的情况,你会使用您的三个自定义类型的做三种不同的查询,为不同类型的FROM子句:

select * from test:mainContract; 
select * from test:subContract; 
select * from test:royaltyStatement; 

最后,除非你刚刚的文件少数在你的仓库,你是几乎肯定会想要使用分页结果集。否则,您将只返回服务器配置返回的最大结果数。这可能不足以获得整个集合。

对于表示寻呼结果集的示例,参见Apache CMIS: Paging query result

+0

非常感谢您的回答。这说得通。 –

+0

如果我正在查询select * from test:mainContract;它只给出1000个文件。但是在版本库中还有更多1000个文档。那么我怎样才能得到所有的文件....你可以请回复? –

+0

@Juff Potts你能帮我从露天存储库中获取Aspect属性吗?我为此创建了一个问题。请尽可能帮助我... –

2

要执行这样的(让所有的文档内容)的动作,你需要按照此步骤

第1步:创建一个保护类

我指的是服务器级是什么,它将举行两次信息(对我来说是最有价值的信息),他们两个最是字符改变

1 - 文档ID

2 - 该文档名称

第2步:获取所有的文件

要得到所有我们必须使用一个查询的文档

String query; 
query = "SELECT * FROM cmis:document "; 

您将得到所有的文件,你有你的存储库。

您可以添加一些条件,以使您的研究更喜欢在这个例子更容易:

query = "SELECT * FROM cmis:document WHERE IN_FOLDER('" + folderId + "')"; 

在这个例子中,你会得到一个特定文件夹中的文件。

ItemIterable<QueryResult> resultList = session.query(query, false); 

最后

for (QueryResult qr : resultList) {  
String idDocument = qr.getPropertyByQueryName("cmis:objectId").getFirstValue().toString(); 
String name = qr.getPropertyByQueryName("cmis:name").getFirstValue().toString(); 
Document doc = (Document) session.getObject(idDocument);// this is how you can get document with add that's mean no need of path  
} 

您可以在CMIS query阅读更多有关查询。

第3步:保存每次在保护类的信息

我想很明显,你必须保存每一次你在保护类的occurence使用循环(步骤2)时间。

我希望对你有帮助。

+0

我怎样才能根据内容类型的内容分开?意味着我在存储库中共有4种不同类型的内容。我想单独购买。所以,如果可能的话,你可以修改答案。 –

+0

请给我这个内容类型 –

+0

测试:mainContract,测试:subContract和测试:版税说明这些是内容类型..........和我想分开所有内容为每个内容类型 –