2012-04-05 53 views
0

我想在我的java類中獲取上傳到默認根目錄的文件的節點ref。我試過this鏈接。alfresco - 獲取上傳文件的noderef

但它返回空結果集。我如何編寫搜索查詢來獲取特定的文件節點。或者有沒有什麼辦法可以在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字符串創建文件的節點引用並更新文件內容的代碼。

  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

我不明白,magic noderef字符串是從哪裏出現的? – Gagravarr 2012-04-12 08:55:23

+0

我使用這段代碼的頁面,我有節點ref字符串。由於我是新來的戶外,早些時候我正在努力創建文件的節點參考。此外,我的原始代碼無法正常工作,甚至嘗試在查詢瀏覽器中測試查詢。 – mahesh 2012-04-13 08:38:06

2

你Lucene搜索語法不正確。如果你想要上傳圖片的文件夾,你可以使用: PATH:「/ app:company_home/app:user_homes/cm:boris/cm:mypics」

如果你想讓對象坐在那文件夾,你可以使用: PATH:「/ app:company_home/app:user_homes/cm:boris/cm:mypics/*」

如果你想在該文件夾中有一個特定的對象, : PATH: 「/應用程序:company_home /應用:user_homes /釐米:鮑里斯/釐米:mypics /釐米:test.png」

測試您的查詢,一個好的工具是節點瀏覽器,可在這兩個露天Explorer和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 2012-04-06 09:27:41

+0

Jeff,上面的java代碼正在爲此「PATH:」/ app:company_home「查詢返回空結果集。節點瀏覽器也一樣。我是否需要更新java代碼?實際上,我的目標是獲取文件的節點ref並從java代碼更新它的內容。有沒有更好的選擇來做到這一點? – mahesh 2012-04-06 10:04:43

+1

mahesh,如果你還沒有這樣做,去看節點瀏覽器。在Alfresco Explorer中,它位於管理控制檯中。在Share中,它位於「More,Application」下面。節點瀏覽器將幫助您理解回購的層次結構。例如,如果您的文件位於repository/sites/mysite/documentlibrary/myfolder/myfile下,則路徑將爲/ app:company_home/st:sites/cm:mysite/cm:documentLibrary/cm:myfolder/cm:myfile。 – 2012-04-09 16:16:02