2012-04-14 8 views
0
我々は次のようにコンテンツ(HTML、画像、pdfファイル)を保存するためのApache Jackrabbitのを使用している

:UIでJCRソートやページネーションは、

/folder1 (nt:unstructured) 
     /content1(nt:unstructured) 
      /file(nt:folder) 
       /test.html(nt:file) 
       /test.html-contents (nt:resource) 

は、我々はすべてのコンテンツを表示したいです名前、ファイルサイズ、ファイルタイプなどでソートすることができます。これを達成するために、XPathでコンテンツノードを取得しようとしました。

  1. ノード名を並べ替えることはできますか?

: "@name昇順順(ベースをNT、*)/要素" が、それは動作しません私は

のようないくつかのことを試してみました。それはコンテンツの他のプロパティ上で動作しますが、名前は動作しません。 2.ファイルサイズをソートすることはできますか?ファイルはコンテンツの子ノードなので、ファイルサイズに基づいてコンテンツを照会できる方法はありますか? (jcr:dataによって幾分クエリします).length?)

回避策として、ノードのイテレータを使用してすべてのコンテンツを取得し、メモリ内のソート/ページ処理を行っています。これを行うより良い方法があると私は望んでいた。

答えて

0

名前で並べ替えることは、私が知る限りJCR Xpathクエリでは使用できません。ただし、SQLではサポートされています。これはJackrabbitのバージョンにもよるかもしれません。 SQLで

上記のクエリは次のとおりです。

select * from nt:base order by jcr:name ASC 

がリソースの長さにソートも同様にサポートされていません。ソートの目的で、ノード上に追加のプロパティを設定することを検討することをお勧めします。 Jackrabbitへのアップロードを処理するときにこれを行うことができます。

ノードの量によっては、メモリのソートが大きな問題になることがあります。

+0

上記のSQLを使用してみましたが、ソート順にノードを返しません。 ASC DESCによる順序の変更は効果がありません。 – sfbay

+0

あなたはどのJCR実装とバージョンを使用していますか? JBoss ModeshapeまたはApache Jackrabbitを使用していますか? – Jeroen

+0

私はApache Jackrabbitを使用しています。ありがとう。 – sfbay