2012-04-05 2 views
0

내 Java 클래스의 기본 루트 디렉토리에 업로드 된 파일의 노드 참조를 가져 오려고합니다.alfresco - 업로드 된 파일의 노드를 가져옵니다.

나는 this 링크를 시도했다.

그러나 빈 결과 집합이 반환됩니다. 특정 파일 노드를 가져 오기 위해 어떻게 검색 쿼리를 작성할 수 있습니까? 또는 Java 클래스에서 스팅으로부터 노드 참조를 생성 할 수있는 방법이 있습니까?

내 코드 :

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

나는 그것을 얻지 못한다. 마법의 noderef 문자열은 어디에서 나타 났는가? – Gagravarr

+0

이 코드를 사용하는 페이지에 노드 참조 문자열이 있습니다. 내가 야외 수사를 처음 접했을 때, 나는 이전에 파일에 대한 노드 참조를 만드는 데 어려움을 겪고있었습니다. 또한, 내 원래 코드가 작동하지 않았고 심지어 쿼리 브라우저에서 테스트 된 쿼리로 시도했습니다. – mahesh

2

귀하의 루씬 검색 구문이 올바르지 않습니다. 사진이 업로드 된 폴더가 필요하면 다음을 사용하십시오. 경로 : "/ app : company_home/app : user_homes/cm : boris/cm : mypics"

개체를 원하는 경우 폴더를 사용하려면 다음을 사용하십시오. 경로 : "/ app : company_home/app : user_homes/cm : boris/cm : mypics/*"

그리고 특정 폴더에 개체를 넣으려면 다음을 사용하십시오. : 경로 : "/ app : company_home/app : user_homes/cm : boris/cm : mypics/cm : test.png"

검색어 테스트를위한 훌륭한 도구는 Alfresco Explorer와 Alfresco Share. 검색 구문으로 "Lucene"을 선택하고 쿼리를 시도하십시오. 원하는 객체를 반환하면 Java 코드에 연결합니다.

+0

작성한 모든 자습서와 답장을 보내 주셔서 감사합니다. 그것들은 처음부터 매우 도움이됩니다. 내 파일은 repository/sites/mysite/documentlibrary/myfolder/myfile에 있습니다. "/ 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 노드 아래에 표시됩니다. 무엇인가 누락 되었습니까? 더 잘 이해하기 위해 예제를 설명해 주시겠습니까? app : user_homes가 기본값입니까? one.이 디렉토리를 계층 구조의 어느 곳에서도 볼 수 없었습니다. – mahesh

+0

Jeff, 위의 "PATH :"/ app : company_home "쿼리에 대한 Java 코드가 빈 결과 집합을 반환합니다. 같은 것이 노드 브라우저에서 작동합니다. 자바 코드를 업데이트해야합니까 ?? 실제로 내 목표는 파일에 대한 노드 ref를 얻고 Java 코드에서 내용을 업데이트하는 것입니다. 이 작업을 수행하는 더 나은 옵션이 있습니까 ?? – mahesh

+1

mahesh, 아직 수행하지 않았다면 노드 브라우저를보십시오. Alfresco Explorer에서는 관리 콘솔에 있습니다. Share에서는 "More, Application"아래에 있습니다. Node Browser는 repo의 계층 적 구조를 이해하는 데 도움이됩니다. 예를 들어 파일이 repository/sites/mysite/documentlibrary/myfolder/myfile 아래에 있으면 경로는/app : company_home/st : sites/cm : mysite/cm : documentLibrary/cm : myfolder/cm : myfile이됩니다. –

관련 문제