Package ca.carleton.gcrc.couch.onUpload.conversion

Examples of ca.carleton.gcrc.couch.onUpload.conversion.DocumentDescriptor


      throw new Exception("Plugin does not support work: "+work);
    }
  }

  public void analyzeFile(AttachmentDescriptor attDescription) throws Exception {
    DocumentDescriptor docDescriptor = attDescription.getDocumentDescriptor();
    OriginalFileDescriptor originalObj = attDescription.getOriginalFileDescription();
    CouchAuthenticationContext submitter = attDescription.getSubmitter();
   
    // Figure out media file located on disk
    File originalFile = originalObj.getMediaFile();
    String mimeType = originalObj.getContentType();

    // Perform conversion(s)
    MultimediaConversionRequest request = new MultimediaConversionRequest();
    request.setInFile( originalFile );
    request.setThumbnailRequested(true);
    request.setProgress( new UploadProgressAdaptor() );
   
    MultimediaClass mmClass = MimeUtils.getMultimediaClassFromMimeType(mimeType);
    if( MultimediaClass.VIDEO == mmClass ) {
      // For video file, convert to appropriate file type
      mmConverter.convertVideo(request);

    } else if( MultimediaClass.AUDIO == mmClass ) {
      // For audio file, convert to appropriate file type
      mmConverter.convertAudio(request);
     
    } else if( MultimediaClass.IMAGE == mmClass ) {
      // For image file, convert to appropriate file type
      mmConverter.convertImage(request);
     
    } else {
      throw new Exception("Unknown multimedia class: "+mmClass);
    }
   
    // Compute a new name for the attachment, to reflect the conversion
    {
      String expectedExtension = "";
      if( null != request.getOutFile() ){
        File convertedFile = request.getOutFile();
        String name = convertedFile.getName();
        int index = name.lastIndexOf('.');
        if( index > 0 ){
          expectedExtension = name.substring(index+1);
        }
      }
     
      String currentPrefix = attDescription.getAttachmentName();
      String currentExtension = "";
      {
        int index = currentPrefix.lastIndexOf('.');
        if( index > 0 ){
          currentExtension = currentPrefix.substring(index+1);
          currentPrefix = currentPrefix.substring(0, index);
        }
      }
     
      if( false == currentExtension.equals(expectedExtension) ){
        // Must rename
        String newAttachmentName = currentPrefix + "." + expectedExtension;
       
        // Check collision
        int index = 0;
        while( docDescriptor.isAttachmentDescriptionAvailable(newAttachmentName) ){
          newAttachmentName = currentPrefix + "_" + index + "." + expectedExtension;
          ++index;
        }
       
        attDescription.renameAttachmentTo(newAttachmentName);
      }
    }
   
    // Report original size
    if( request.getInHeight() != 0 && request.getInWidth() != 0 ) {
      originalObj.setHeight( request.getInHeight() );
      originalObj.setWidth( request.getInWidth() );
    }
   
    // Report EXIF data
    ExifData exifData = request.getExifData();
    if( null != exifData
     && exifData.getSize() > 0 ) {
      ExifDataDescriptor exifDescriptor = attDescription.getExifDataDescription();
      for(String key : exifData.getKeys()){
        String value = exifData.getRawData(key);
        if( null != value ){
          value = value.trim();
          if( false == "".equals(value) ){
            exifDescriptor.addData(key, value);
          }
        }
      }
     
      // Create geometry if one is present in the EXIF
      // data and none is defined in the document
      if( exifData.containsLongLat()
       && false == docDescriptor.isGeometryDescriptionAvailable() ) {
       
        Point point = new Point(exifData.computeLong(),exifData.computeLat());
        MultiPoint mp = new MultiPoint();
        mp.addPoint(point);
       
        GeometryDescriptor geomDesc = docDescriptor.getGeometryDescription();
        geomDesc.setGeometry(mp);
      }
    }

    // Report converted object
    {
      File convertedFile = request.getOutFile();
      SystemFile convertedSf = SystemFile.getSystemFile(convertedFile);

      if( CouchNunaliitUtils.hasVetterRole(submitter, atlasName) ) {
        attDescription.setStatus(UploadConstants.UPLOAD_STATUS_APPROVED);
      } else {
        attDescription.setStatus(UploadConstants.UPLOAD_STATUS_WAITING_FOR_APPROVAL);
      }
      attDescription.setConversionPerformed(request.isConversionPerformed());
      attDescription.setMediaFileName(convertedFile.getName());
      attDescription.setSize(convertedFile.length());
      attDescription.setContentType(convertedSf.getMimeType());
      attDescription.setEncodingType(convertedSf.getMimeEncoding());
      if( request.getOutHeight() != 0 && request.getOutWidth() != 0 ) {
        attDescription.setHeight(request.getOutHeight());
        attDescription.setWidth(request.getOutWidth());
      }
     
      ServerWorkDescriptor serverWork = attDescription.getServerWorkDescription();
      serverWork.setOrientationLevel(UploadConstants.SERVER_ORIENTATION_VALUE);
    }

    // Report thumbnail object
    if( request.isThumbnailCreated() ) {
      File thumbFile = request.getThumbnailFile();
      SystemFile thumbSf = SystemFile.getSystemFile(thumbFile);
     
      String thumbExtension = "";
      {
        String name = thumbFile.getName();
        int index = name.lastIndexOf('.');
        if( index > 0 ){
          thumbExtension = name.substring(index+1);
        }
      }
     
      String thumbnailAttachmentName = computeThumbnailName(attDescription.getAttachmentName(),thumbExtension);
      AttachmentDescriptor thumbnailObj = docDescriptor.getAttachmentDescription(thumbnailAttachmentName);

      if( CouchNunaliitUtils.hasVetterRole(submitter, atlasName) ) {
        thumbnailObj.setStatus(UploadConstants.UPLOAD_STATUS_APPROVED);
      } else {
        thumbnailObj.setStatus(UploadConstants.UPLOAD_STATUS_WAITING_FOR_APPROVAL);
      }
      thumbnailObj.setFileClass("image");
      thumbnailObj.setOriginalName(attDescription.getOriginalName());
      thumbnailObj.setMediaFileName(thumbFile.getName());
      thumbnailObj.setSource(attDescription.getAttachmentName());

      thumbnailObj.setSize(thumbFile.length());
      thumbnailObj.setContentType(thumbSf.getMimeType());
      thumbnailObj.setEncodingType(thumbSf.getMimeEncoding());

      if( request.getThumbnailHeight() != 0 && request.getThumbnailWidth() != 0 ) {
        thumbnailObj.setHeight(request.getThumbnailHeight());
        thumbnailObj.setWidth(request.getThumbnailWidth());
      }

      attDescription.setThumbnailReference(thumbnailAttachmentName);
    }
   
    // Report original file
    if( request.isConversionPerformed() ) {
      // Original is not needed if no conversion performed
     
      String fileClass = attDescription.getFileClass();
      if( "image".equals(fileClass) && uploadOriginalImages ) {
        String originalAttachmentName = computeOriginalName(attDescription.getOriginalName());
        AttachmentDescriptor origDescription = docDescriptor.getAttachmentDescription(originalAttachmentName);

        if( CouchNunaliitUtils.hasVetterRole(submitter, atlasName) ) {
          origDescription.setStatus(UploadConstants.UPLOAD_STATUS_APPROVED);
        } else {
          origDescription.setStatus(UploadConstants.UPLOAD_STATUS_WAITING_FOR_APPROVAL);
View Full Code Here


     || false == attDescription.isWorkDescriptionAvailable()
     ){
      throw new Exception("Invalid attachment description");
    }
   
    DocumentDescriptor docDescriptor = attDescription.getDocumentDescriptor();
    FileConversionContext conversionContext = attDescription.getContext();
    OriginalFileDescriptor originalObj = attDescription.getOriginalFileDescription();
    WorkDescriptor work = attDescription.getWorkDescription();
   
    // Figure out media file located on disk
    File originalFile = originalObj.getMediaFile();
    String mimeType = originalObj.getContentType();

    // Is file converted?
    boolean conversionPerformed = attDescription.isConversionPerformed();
    if( false == conversionPerformed ) {
      work.setStringAttribute(UploadConstants.UPLOAD_WORK_UPLOAD_ORIGINAL_IMAGE, "No conversion performed. No need to upload.");
      return;
    }
   
    // Are uploaded files allowed?
    if( false == uploadOriginalImages ) {
      work.setStringAttribute(UploadConstants.UPLOAD_WORK_UPLOAD_ORIGINAL_IMAGE, "Original file uploads not allowed.");
      return;
    }
   
    // Is it an image?
    String fileClass = attDescription.getFileClass();
    if( false == "image".equals(fileClass) ) {
      work.setStringAttribute(UploadConstants.UPLOAD_WORK_UPLOAD_ORIGINAL_IMAGE, "Original file uploads allowed only for images");
      return;
    }
   
    // Does the original file exist?
    if( false == originalFile.exists() || false == originalFile.isFile() ) {
      work.setStringAttribute(UploadConstants.UPLOAD_WORK_UPLOAD_ORIGINAL_IMAGE, "Can not find original file from media directory");
      return;
    }
   
    // Create attachment description for original file
    String originalAttachmentName = computeOriginalName(attDescription.getOriginalName());
    AttachmentDescriptor origDescription = docDescriptor.getAttachmentDescription(originalAttachmentName);

    origDescription.setStatus(attDescription.getStatus());
    origDescription.setOriginalName(attDescription.getOriginalName());
    origDescription.setMediaFileName(originalFile.getName());
    origDescription.setSource(attDescription.getAttachmentName());
View Full Code Here

    serverWork.setOrientationLevel(UploadConstants.SERVER_ORIENTATION_VALUE);
  }

  public void createThumbnail(AttachmentDescriptor attDescription) throws Exception {
    // Get file
    DocumentDescriptor docDescriptor = attDescription.getDocumentDescriptor();
    FileConversionContext conversionContext = attDescription.getContext();
    String mimeType = attDescription.getContentType();
    File inFile = File.createTempFile("original_", attDescription.getMediaFileName());
    conversionContext.downloadFile(attDescription.getAttachmentName(), inFile);

    File outFile = File.createTempFile("thumb_", attDescription.getMediaFileName());
   
    // Perform thumbnail
    MultimediaConversionRequest request = new MultimediaConversionRequest();
    request.setInFile( inFile );
    request.setThumbnailFile(outFile);
    request.setThumbnailRequested(true);
   
    MultimediaClass mmClass = MimeUtils.getMultimediaClassFromMimeType(mimeType);
    if( MultimediaClass.IMAGE == mmClass ) {
      // For image file, convert to appropriate file type
      mmConverter.createImageThumbnail(request);
     
    } else {
      throw new Exception("Unknown multimedia class: "+mmClass);
    }

    // Compute attachment name
    SystemFile thumbSf = SystemFile.getSystemFile(outFile);
   
    String thumbExtension = "";
    {
      String name = outFile.getName();
      int index = name.lastIndexOf('.');
      if( index > 0 ){
        thumbExtension = name.substring(index+1);
      }
    }
   
    String thumbnailAttachmentName = computeThumbnailName(attDescription.getAttachmentName(),thumbExtension);
   
    // Upload thumbnail
    String thumbMimeType = thumbSf.getMimeType();
    conversionContext.uploadFile(thumbnailAttachmentName, outFile, thumbMimeType);
   
    // Report thumbnail object
    if( request.isThumbnailCreated() ) {
     
      AttachmentDescriptor thumbnailObj = docDescriptor.getAttachmentDescription(thumbnailAttachmentName);

      thumbnailObj.setStatus(UploadConstants.UPLOAD_STATUS_ATTACHED);
      thumbnailObj.setFileClass("image");
      thumbnailObj.setOriginalName(attDescription.getOriginalName());
      thumbnailObj.setSource(attDescription.getAttachmentName());
View Full Code Here

  private void performWaitingForUploadWork(Work work) throws Exception {

    FileConversionContext conversionContext =
      new FileConversionContextImpl(work,documentDbDesign,mediaDir);
   
    DocumentDescriptor docDescriptor = conversionContext.getDocument();
   
    String uploadId = work.getUploadId();
    AttachmentDescriptor attDescription = docDescriptor.findAttachmentWithUploadId(uploadId);
   
    String uploadRequestDocId = work.getUploadRequestDocId();
    JSONObject uploadRequestDoc = documentDbDesign.getDatabase().getDocument(uploadRequestDocId);
   
    attDescription.remove();
   
    JSONObject uploadRequest = uploadRequestDoc.getJSONObject("nunaliit_upload_request");
    JSONArray files = uploadRequest.getJSONArray("files");
   
    for(int i=0,e=files.length(); i<e; ++i){
      JSONObject file = files.getJSONObject(i);
     
      String attachmentName = file.getString("attachmentName");
      String originalName = file.getString("originalName");
      String submitter = file.getString("submitter");
      JSONObject original = file.getJSONObject("original");
      JSONObject data = file.getJSONObject("data");
     
      String effectiveAttachmentName = attachmentName;
      if( docDescriptor.isAttachmentDescriptionAvailable(effectiveAttachmentName) ) {
        // Select a different file name
        String prefix = "";
        String suffix = "";
        int pos = attachmentName.indexOf('.', 1);
        if( pos < 0 ) {
          prefix = attachmentName;
        } else {
          prefix = attachmentName.substring(0, pos-1);
          suffix = attachmentName.substring(pos);
        }
        int counter = 0;
        while( docDescriptor.isAttachmentDescriptionAvailable(effectiveAttachmentName) ) {
          attachmentName = prefix + counter + suffix;
          ++counter;
        }
      }
     
      AttachmentDescriptor requestAttachment =
          docDescriptor.getAttachmentDescription(effectiveAttachmentName);
      requestAttachment.setStatus(UploadConstants.UPLOAD_STATUS_SUBMITTED);
      requestAttachment.setOriginalName(originalName);
      requestAttachment.setSubmitterName(submitter);
      requestAttachment.setUploadId(uploadId);
     
View Full Code Here

    String attachmentName = work.getAttachmentName();
   
    FileConversionContext conversionContext =
      new FileConversionContextImpl(work,documentDbDesign,mediaDir);
   
    DocumentDescriptor docDescriptor = conversionContext.getDocument();
   
    AttachmentDescriptor attDescription = null;
    if( docDescriptor.isAttachmentDescriptionAvailable(attachmentName) ){
      attDescription = docDescriptor.getAttachmentDescription(attachmentName);
    }
   
    if( null == attDescription ) {
      logger.info("Submission can not be found");
View Full Code Here

    String attachmentName = work.getAttachmentName();
   
    FileConversionContext conversionContext =
      new FileConversionContextImpl(work,documentDbDesign,mediaDir);

    DocumentDescriptor docDescriptor = conversionContext.getDocument();

    AttachmentDescriptor attDescription = null;
    if( docDescriptor.isAttachmentDescriptionAvailable(attachmentName) ){
      attDescription = docDescriptor.getAttachmentDescription(attachmentName);
    }
   
    if( null == attDescription ) {
      logger.info("Submission can not be found");
View Full Code Here

    String attachmentName = work.getAttachmentName();

    FileConversionContext conversionContext =
      new FileConversionContextImpl(work,documentDbDesign,mediaDir);

    DocumentDescriptor docDescriptor = conversionContext.getDocument();

    AttachmentDescriptor attDescription = null;
    if( docDescriptor.isAttachmentDescriptionAvailable(attachmentName) ){
      attDescription = docDescriptor.getAttachmentDescription(attachmentName);
    }
   
    if( null == attDescription ) {
      logger.info("Analysis object not found");
View Full Code Here

    String attachmentName = work.getAttachmentName();
   
    FileConversionContext conversionContext =
      new FileConversionContextImpl(work,documentDbDesign,mediaDir);

    DocumentDescriptor docDescriptor = conversionContext.getDocument();

    AttachmentDescriptor attDescription = null;
    if( docDescriptor.isAttachmentDescriptionAvailable(attachmentName) ){
      attDescription = docDescriptor.getAttachmentDescription(attachmentName);
    }

    if( null == attDescription ) {
      logger.info("Approved object not found");
View Full Code Here

    String attachmentName = work.getAttachmentName();
   
    FileConversionContext conversionContext =
      new FileConversionContextImpl(work,documentDbDesign,mediaDir);

    DocumentDescriptor docDescriptor = conversionContext.getDocument();

    AttachmentDescriptor attDescription = null;
    if( docDescriptor.isAttachmentDescriptionAvailable(attachmentName) ){
      attDescription = docDescriptor.getAttachmentDescription(attachmentName);
    }

    if( null == attDescription ) {
      logger.info("Approved object not found");
View Full Code Here

    String attachmentName = work.getAttachmentName();
   
    FileConversionContext conversionContext =
      new FileConversionContextImpl(work,documentDbDesign,mediaDir);

    DocumentDescriptor docDescriptor = conversionContext.getDocument();

    AttachmentDescriptor attDescription = null;
    if( docDescriptor.isAttachmentDescriptionAvailable(attachmentName) ){
      attDescription = docDescriptor.getAttachmentDescription(attachmentName);
    }

    if( null == attDescription ) {
      logger.info("Approved object not found");
View Full Code Here

TOP

Related Classes of ca.carleton.gcrc.couch.onUpload.conversion.DocumentDescriptor

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.