WEB开发网
开发学院软件开发Java 开放源码 CMS 入门,第 3 部分: 构建定制存储 阅读

开放源码 CMS 入门,第 3 部分: 构建定制存储

 2010-04-16 00:00:00 来源:WEB开发网   
核心提示: 现在,添加对新的 sf 方法的一个调用,开放源码 CMS 入门,第 3 部分: 构建定制存储(8),如果返回 TRUE,则执行定制的方法将文件复制到 salesforce.com,然后用那个名称创建一个文档文件夹,如果不这么做,但是如何知道文档是否已经被复制到 salesforce.com 呢?

现在,添加对新的 sf 方法的一个调用。如果返回 TRUE,则执行定制的方法将文件复制到 salesforce.com。但是如何知道文档是否已经被复制到 salesforce.com 呢?sforce Web 服务 API 有两个方法 Create SObject 和 Update SObject 可供选择。但是,如果文档已经在那里,则无需尝试创建文件,而当文档不存在的时候,也无需更新文档。

storeRevisionContent 的 revisionDescriptor 参数可以告诉您一部分您想知道的东西。这个参数包含当前被保存版本的版本号,如果版本号大于 1,那么就可以知道这个文档不是最初的文档,于是可以调用 Update 方法,而不是 Create 方法。

另外还需要两个方法:一个方法用于在 salesforce.com 上创建一个文档,一个方法用于更新 salesforce.com 上的文档。首先,创建这些方法的 shell。清单 5 和清单 6 展示了这两个新方法,它们是从 sforce Quick Start 例子中复制出来的,并添加了一些 println 语句。

在 CreateDocument 方法中,通过查询名为 IBM Tutorial 的文件夹,找到您需要的文件夹 ID 值。用开发者帐户登录到 salesforce.com,然后用那个名称创建一个文档文件夹。如果不这么做,该方法则使用您设置的文档文件夹列表中的最后一个 ID。

清单 5. CreateDocument

public String CreateDocument(NodeRev 
isionDescriptor revisionDescriptor, File doc){ 
   
  String docName = revisionDescriptor.getName(); 
  String description = revisionDescriptor.getETag(); 
    ID authorId = null; 
  ID folderId = null; 
   
  System.out.println("CreateDocument"); 
  System.out.println("docName=" + docName); 
  System.out.println("File doc=" + doc.toString()); 
  System.out.println("Description=" + description); 
   
  String retStatus = "Success"; 
  int fileLength = (int) doc.length(); 
  byte[] body = new byte[fileLength]; 
 
  //Verify that we are already authenticated, if not 
  //call the login function to do so 
  if (!loggedIn) { 
    if (!login()) { 
      return "Bad SalesForce Login"; 
    } 
  } 
  try { 
    FileInputStream fis = new FileInputStream(doc); 
    fileLength = fis.read(body); 
  } catch (FileNotFoundException e) { 
    retStatus = "Error Failed to CreateDocument:" 
        + e.getLocalizedMessage(); 
    e.printStackTrace(); 
    return retStatus; 
  } catch (IOException e1) { 
    retStatus = "Error Failed to CreateDocument:" 
        + e1.getLocalizedMessage(); 
    e1.printStackTrace(); 
    return retStatus; 
  } 
 
  if (authorId == null) { 
    //default to current user 
    authorId = this.loginResult.getUserId(); 
  } 
 
  if (folderId == null || folderId.getValue().length() != 18) { 
    try { 
      QueryResult qr = binding.query("Select Id From Folder"); 
 
      SObject[] recs = qr.getRecords(); 
      for (int i = 0; i < recs.length; i++) { 
        SObject object = recs[i]; 
        if (object instanceof Folder) { 
          Folder f = (Folder) qr.getRecords(i); 
          folderId = f.getId(); 
          if (f.getName().compareToIgnoreCase( 
            "IBM Tutorial") == 0){ 
            break; 
          } 
        } 
      } 
      if (folderId == null) throw new 
        InvalidSObjectFault( 
          ExceptionCode.UNKNOWN_EXCEPTION, 
          "folderId == null, 
          possibly no 'IBM Tutorial folder found'"); 
    } catch (UnexpectedErrorFault e2) { 
      e2.printStackTrace(); 
    } catch (InvalidSObjectFault e2) { 
      e2.printStackTrace(); 
    } catch (MalformedQueryFault e2) { 
      e2.printStackTrace(); 
    } catch (InvalidFieldFault e2) { 
      e2.printStackTrace(); 
    } catch (RemoteException e2) { 
      e2.printStackTrace(); 
    } 
  } 
 
  try { 
    Document document; 
    SObject[] sObjects = new SObject[1]; 
    document = new Document(); 
 
    document.setName(docName); 
    document.setBody(body); 
    document.setDescription(description); 
    document.setAuthorId(authorId); 
    document.setFolderId(folderId); 
 
    sObjects[0] = document; 
 
    //create the object(s) by sending the array 
    //to the web service 
    SaveResult[] sr = binding.create(sObjects); 
    for (int i = 0; i < sr.length; i++) { 
      SaveResult result = sr[i]; 
      if (result.isSuccess()) { 
        retStatus = "Success Created Document " + docName; 
      } else { 
        Error[] ers = result.getErrors(); 
        retStatus = "Error:"; 
        for (int j = 0; j < ers.length; j++) { 
          Error error = ers[j]; 
          retStatus += error.getMessage() + ";"; 
          System.out.println("error.getStatusCode():" 
              + error.getStatusCode()); 
          System.out.println(retStatus); 
        } 
      } 
    } 
  } catch (UnexpectedErrorFault uef) { 
    log(uef.getExceptionMessage()); 
  } catch (Exception ex) { 
    retStatus = "\nFailed to create folder, " + docName 
        + ", error message was: \n" + ex.getMessage(); 
    System.out.println(retStatus); 
  } 
 
  return retStatus; 
} 

上一页  3 4 5 6 7 8 9 10  下一页

Tags:开放 源码 CMS

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接