2012-04-05 29 views
0

私のJavaクラスのデフォルトのルートディレクトリにアップロードされたファイルのノード参照を取得しようとしています。alfresco - アップロードされたファイルのノードを取得する

私はthisリンクを試しました。

しかし、空の結果セットを返しています。どのようにして特定のファイルノードを取得するための検索クエリを書くことができますか?または、Javaクラスでスティッキングからノードrefを作成する方法はありますか?

マイコード:

NodeRef companyHomeNodeRef = null; 
      StoreRef storeRef = new StoreRef(StoreRef.PROTOCOL_WORKSPACE, 
        "SpacesStore"); 

      ResultSet rs = searchService.query(storeRef, 
        SearchService.LANGUAGE_LUCENE, "\\\"/app:company_home/app:user_homes/sys:boris/cm:mypics\\"); 

      try { 
       System.out.println("length :" + rs.length()); 
       if (rs.length() == 0) { 
        // throw new Exception("Didn't find Company Home"); 
       } else { 
        companyHomeNodeRef = rs.getNodeRef(0); 
       } 
      } finally { 
       rs.close(); 
      } 

おかげ

答えて

0

私はこの問題を解決しました。以下は、ノードref stringからファイルのノードrefを作成し、ファイルの内容を更新するコードです。

  AuthenticationUtil.runAs(new RunAsWork<String>() { 

       @Override 
       public String doWork() throws Exception { 

        NodeRef nodeRef = new NodeRef("workspace://SpacesStore/f1a5e908-80cb-4c6e-b919-cc80fe53b835"); 
        if(contentService != null) { 
         ContentWriter writer = contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true); 
         if(writer != null) { 
          writer.putContent(new ByteArrayInputStream("updated content".getBytes())); 
         } 
        } 
        return null; 
       } 

      }, AuthenticationUtil.getSystemUserName()); 
+0

私はそれを得ることはできません、どこから魔法のnoderef文字列が現れましたか? – Gagravarr

+0

このコードを使用しているページには、ノードの参照文字列があります。私がalfrescoに慣れていないので、以前はファイルのノードrefを作成するのに苦労していました。また、私の元のコードは動作していないし、クエリブラウザでクエリをテストしてみました。 – mahesh

2

あなたのLucene検索構文が正しくありません。画像がアップロードされたフォルダが必要な場合は、 パス: "/ app:company_home/app:user_homes/cm:boris/cm:mypics"

パス: "/ app:company_home/app:user_homes/cm:boris/cm:mypics/*"

このフォルダに特定のオブジェクトが必要な場合は、これを使用します: PATH: "/アプリ:company_home /アプリ:user_homes/cmで:ボリス/ cmで:mypics/cmで:test.png"

クエリをテストするための優れたツールは、両方のAlfrescoエクスプローラで利用可能なノードのブラウザであり、かつAlfrescoシェア。検索構文として「Lucene」を選択してから、クエリを試してください。探しているオブジェクトを返すと、Javaコードにプラグインします。

+0

あなたが書いたすべてのチュートリアルと返信いただきありがとうございます。それらは最初から非常に役に立ちます。私のファイルはrepository/sites/mysite/documentlibrary/myfolder/myfileにあります。私はPATHを試しています: "/ app:company_home/app:user_homes/cm:mysite/cm:doclib/cm:myfolder/cm:myfile"私にとっては何の結果も見せていません。 "PATH:"/app:company_home/app:user_homes/cm:mysite "の下にcm:doclibノードが表示されていますが、何か不足していますか?このディレクトリを階層のどこにも見ることができませんでした。 – mahesh

+0

Jeff、上記の "PATH:"/app:company_home "クエリのJavaコードの空の結果セットが返されています。同じものがノードブラウザで動作しています。 Javaコードを更新する必要がありますか?実際に私の目標は、ファイルのノードrefを取得し、その内容をJavaコードから更新することです。これを行うには、より良い選択肢はありますか? – mahesh

+1

mahesh、まだ行っていない場合は、Node Browserを見てください。 Alfresco Explorerでは、管理コンソールにあります。シェアでは、 "More、Application"の下にあります。ノードブラウザは、リポジトリの階層構造を理解するのに役立ちます。たとえば、ファイルがrepository/sites/mysite/documentlibrary/myfolder/myfileにある場合、パスは/ app:company_home/st:sites/cm:mysite/cm:documentLibrary/cm:myfolder/cm:myfileになります。 –

関連する問題