Package ca.carleton.gcrc.couch.client

Examples of ca.carleton.gcrc.couch.client.CouchDb


    }
   
    // Fix member roles on submission database
    try {
      if( null != submissionDesign ) {
        CouchDb submissionDb = submissionDesign.getDatabase();
        CouchDbSecurityDocument secDoc = submissionDb.getSecurityDocument();
       
        boolean updateRequired = false;
       
        // Administrator role
        {
          String adminRole = atlasName + "_administrator";
          if( false == secDoc.getAdminRoles().contains(adminRole) ) {
            secDoc.addAdminRole(adminRole);
            updateRequired = true;
          }
        }
       
        // Vetter role
        {
          String vetterRole = atlasName + "_vetter";
          if( false == secDoc.getMemberRoles().contains(vetterRole) ) {
            secDoc.addMemberRole(vetterRole);
            updateRequired = true;
          }
        }
       
        if( updateRequired ){
          submissionDb.setSecurityDocument(secDoc);
        }
      }
    } catch(Exception e) {
      throw new ServletException("Error while adjusting member roles on submission database", e);
    }
View Full Code Here


   *
   * complete
   */
  public void performWork(String submissionDocId) throws Exception {
    // Get submission document
    CouchDb submissionDb = submissionDbDesignDocument.getDatabase();
    JSONObject submissionDoc = submissionDb.getDocument(submissionDocId);
   
    JSONObject submissionInfo = submissionDoc.getJSONObject("nunaliit_submission");
    JSONObject originalReserved = submissionInfo.optJSONObject("original_reserved");
    JSONObject submittedReserved = submissionInfo.optJSONObject("submitted_reserved");

    // Get document id and revision
    String docId = null;
    String revision = null;
    if( null != originalReserved ){
      docId = originalReserved.optString("id");
      revision = originalReserved.optString("rev");
    }
    if( null == docId && null != submittedReserved){
      docId = submittedReserved.optString("id");
    }
   
    // At this point, we better have a docId
    if( null == docId ){
      throw new Exception("Can not find document identifier for original document");
    }

    // Check if denial email must be sent
    boolean sendDenialEmail = false;
    JSONObject denialEmail = submissionInfo.optJSONObject("denial_email");
    if( null != denialEmail ){
      boolean requested = denialEmail.optBoolean("requested",false);
      boolean sent = denialEmail.optBoolean("sent",false);
     
      if( requested && !sent ){
        sendDenialEmail = true;
      }
    }
   
    // Get document in document database
    CouchDb documentDb = documentDbDesignDocument.getDatabase();
    JSONObject currentDoc = null;
    try {
      currentDoc = documentDb.getDocument(docId);
    } catch(Exception e) {
      // ignore
    }
    if( null == currentDoc
     && null != revision ) {
View Full Code Here

        break;
      }
    }

    if( approved ) {
      CouchDb submissionDb = submissionDbDesignDocument.getDatabase();
      submissionDoc.getJSONObject("nunaliit_submission")
        .put("state", "approved");
      submissionDb.updateDocument(submissionDoc);
    } else {
      CouchDb submissionDb = submissionDbDesignDocument.getDatabase();
      submissionDoc.getJSONObject("nunaliit_submission")
        .put("state", "waiting_for_approval");
      submissionDb.updateDocument(submissionDoc);
     
      this.mailNotifier.sendSubmissionWaitingForApprovalNotification(submissionDoc);
    }
  }
View Full Code Here

   
    if( null == currentDoc ) {
      // New document. Create.
      JSONObject originalDoc = SubmissionUtils.getApprovedDocumentFromSubmission(submissionDoc);
     
      CouchDb targetDb = documentDbDesignDocument.getDatabase();
      targetDb.createDocument(originalDoc);
     
      CouchDb submissionDb = submissionDbDesignDocument.getDatabase();
      submissionDoc.getJSONObject("nunaliit_submission")
        .put("state", "complete");
      submissionDb.updateDocument(submissionDoc);
     
    } else if( isDeletion ) {
      CouchDb targetDb = documentDbDesignDocument.getDatabase();
      JSONObject toDeleteDoc = targetDb.getDocument(docId);
      targetDb.deleteDocument(toDeleteDoc);
     
      CouchDb submissionDb = submissionDbDesignDocument.getDatabase();
      submissionDoc.getJSONObject("nunaliit_submission")
        .put("state", "complete");
      submissionDb.updateDocument(submissionDoc);
     
    } else {
      // Update
      String currentVersion = currentDoc.getString("_rev");
     
      JSONObject approvedDoc = SubmissionUtils.getApprovedDocumentFromSubmission(submissionDoc);
      String approvedVersion = approvedDoc.optString("_rev",null);
     
      if( currentVersion.equals(approvedVersion) ) {
        // No changes since approval. Simply update the document
        // database.
        CouchDb targetDb = documentDbDesignDocument.getDatabase();
        targetDb.updateDocument(approvedDoc);
       
        CouchDb submissionDb = submissionDbDesignDocument.getDatabase();
        submissionDoc.getJSONObject("nunaliit_submission")
          .put("state", "complete");
        submissionDb.updateDocument(submissionDoc);
      } else {
        // Get document that the changes were made against
        JSONObject rootDoc = SubmissionUtils.getOriginalDocumentFromSubmission(submissionDoc);
       
        // Compute patch from submission
        JSONObject submissionPatch = JSONPatcher.computePatch(rootDoc, approvedDoc);
        JSONObject databasePatch = JSONPatcher.computePatch(rootDoc, currentDoc);
       
        // Detect collision. Apply patches in different order, if result
        // is same, then no collision
        JSONObject doc1 = JSONSupport.copyObject(rootDoc);
        JSONPatcher.applyPatch(doc1, submissionPatch);
        JSONPatcher.applyPatch(doc1, databasePatch);
        JSONObject doc2 = JSONSupport.copyObject(rootDoc);
        JSONPatcher.applyPatch(doc2, databasePatch);
        JSONPatcher.applyPatch(doc2, submissionPatch);
        if( 0 == JSONSupport.compare(doc1, doc2) ) {
          // No collision
          CouchDb targetDb = documentDbDesignDocument.getDatabase();
          targetDb.updateDocument(doc1);
         
          CouchDb submissionDb = submissionDbDesignDocument.getDatabase();
          submissionDoc.getJSONObject("nunaliit_submission")
            .put("state", "complete");
          submissionDb.updateDocument(submissionDoc);
        } else {
          // Collision case
          CouchDb submissionDb = submissionDbDesignDocument.getDatabase();
          submissionDoc.getJSONObject("nunaliit_submission")
            .put("state", "collision");
          submissionDb.updateDocument(submissionDoc);
        }
      }
    }
  }
View Full Code Here

      }
    }
   
    // If no e-mails, just quit
    if( emails.size() < 1 ){
      CouchDb submissionDb = submissionDbDesignDocument.getDatabase();
      denial_email.put("sent", true);
      submissionDb.updateDocument(submissionDoc);
      return;
    }
   
    // Convert e-mail addresses into recipient
    List<MailRecipient> recipients = new ArrayList<MailRecipient>(emails.size());
    for(String email : emails){
      MailRecipient recipient = null;
      if( null != userName ){
        recipient = new MailRecipient(email, userName);
      } else {
        recipient = new MailRecipient(email);
      }
      recipients.add(recipient);
    }
   
    // Send notification
    mailNotifier.sendSubmissionRejectionNotification(submissionDoc, recipients);

    // Remember it was sent
    CouchDb submissionDb = submissionDbDesignDocument.getDatabase();
    denial_email.put("sent", true);
    submissionDb.updateDocument(submissionDoc);
  }
View Full Code Here

  }

  private void initUserDesignDocument(ServletContext servletContext) throws ServletException {
    // Update document
    try {
      CouchDb userDb = couchClient.getDatabase("_users");
      UserDesignDocumentImpl.updateDesignDocument(userDb);
    } catch(Exception e) {
      throw new ServletException("Error while updating user design document",e);
    }
  }
View Full Code Here

  private void initExport(ServletContext servletContext) throws ServletException {

    try {
      ExportConfiguration config = new ExportConfiguration();
      CouchDb couchDb = couchDd.getDatabase();
      config.setCouchDb(couchDb);
      CouchDesignDocument atlasDesign = couchDb.getDesignDocument("atlas");
      config.setAtlasDesignDocument(atlasDesign);
      servletContext.setAttribute(ExportConfiguration.CONFIGURATION_KEY, config);

    } catch(Exception e) {
      logger.error("Error configuring export service",e);
View Full Code Here

  }

  private void initUser(ServletContext servletContext) throws ServletException {
   
    try {
      CouchDb userDb = couchClient.getDatabase("_users");
      servletContext.setAttribute(UserServlet.ConfigAttributeName_UserDb, userDb);
      servletContext.setAttribute(
        UserServlet.ConfigAttributeName_AtlasName
        ,atlasProperties.getAtlasName()
        );
View Full Code Here

  private void initExport(ServletContext servletContext) throws ServletException {

    try {
      ExportConfiguration config = new ExportConfiguration();
      CouchDb couchDb = couchDd.getDatabase();
      config.setCouchDb(couchDb);
      CouchDesignDocument atlasDesign = couchDb.getDesignDocument("atlas");
      config.setAtlasDesignDocument(atlasDesign);
      servletContext.setAttribute(ExportConfiguration.CONFIGURATION_KEY, config);

    } catch(Exception e) {
      logger.error("Error configuring export service",e);
View Full Code Here

    gs.getOutStream().println("Dumping to "+dumpDir.getAbsolutePath());
   
    // Load properties for atlas
    AtlasProperties atlasProperties = AtlasProperties.fromAtlasDir(atlasDir);
   
    CouchDb couchDb = CommandSupport.createCouchDb(gs, atlasProperties);
   
    DumpListener listener = new DumpListener( gs.getOutStream() );
   
    DbDumpProcess dumpProcess = new DbDumpProcess(couchDb, dumpDir);
    if( docIds.size() < 1 ) {
View Full Code Here

TOP

Related Classes of ca.carleton.gcrc.couch.client.CouchDb

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.