/** * Gets document name and sets valid content file format for the document. * * @param idfSession * @param idfDocument * @throws DfException */ private void setContentTypeFromName(IDfSession idfSession, IDfDocument idfDocument) throws DfException { String strObjectName = null; String[] strFullObjectName = idfDocument.getObjectName().split("/"); if (strFullObjectName.length > 1) { strObjectName = strFullObjectName[strFullObjectName.length - 1]; } else { strObjectName = strFullObjectName[0]; } DfLogger.debug(this, utilObj.getSpaces() + "strObjectName : " + strObjectName, null, null); idfDocument.setObjectName(strObjectName); IDfClientX cl = new DfClientX(); IDfFormatRecognizer fileFormat = cl.getFormatRecognizer(idfSession, strObjectName, null); DfLogger.debug(this, utilObj.getSpaces() + "File Format is= " + fileFormat, null, null); String validFileFormat = fileFormat.getDefaultSuggestedFileFormat(); if (null == validFileFormat || "".equals(validFileFormat)) { validFileFormat = IConstants.UNKNOWN_FORMAT; DfLogger.error(this, "Can not obtain the format for : " + strObjectName, null, null); DfLogger.error(this, "Setting format : " + validFileFormat, null, null); } DfLogger.debug( this, utilObj.getSpaces() + "Valid File Format : " + validFileFormat, null, null); idfDocument.setContentType(validFileFormat); idfDocument.setSubject(strObjectName); idfDocument.save(); }
public void setAttachmentsContentTypeForElf( IDfSession idfSession, String[] attachmentIds, String strArticleFolderPath, String strStageName) throws DfException, XPathExpressionException, ParserConfigurationException, SAXException, IOException { DfLogger.debug( this, utilObj.getSpaces() + "setAttachmentsContentType :::: Length of Attachments : " + attachmentIds.length, null, null); String strDeliveryFolderName = ""; String strStageFolderName = ""; if (IConstants.ATTR_STAGE_NAME_200.equalsIgnoreCase(strStageName)) { strDeliveryFolderName = IConstants.PATH_AMPP_COPY_EDITING; // IConstants.PATH_AMPP_DELIVERY_FOLDER; strStageFolderName = IConstants.FOLDER_NAME_STAGE_200; } else { strDeliveryFolderName = IConstants.PATH_AMPP_COPY_EDITING; // IConstants.PATH_AMPP_DELIVERY_FOLDER; strStageFolderName = IConstants.FOLDER_NAME_STAGE_300; } for (int i = 0; i < attachmentIds.length; i++) { if (DfId.isObjectId(attachmentIds[i])) { DfLogger.debug( this, utilObj.getSpaces() + "Attachment ID : " + attachmentIds[i], null, null); IDfDocument idfDocument = (IDfDocument) idfSession.getObject(new DfId(attachmentIds[i])); if (idfDocument != null) { setContentTypeFromName(idfSession, idfDocument); idfDocument.fetch(null); setAttachmentToArticleForElf( idfSession, idfDocument, strArticleFolderPath, strStageFolderName, strDeliveryFolderName); } } } }
/** * This is the main method which processes AMPP received documents. * * @param idfSession * @param attachmentIds * @param strArticleFolderPath * @throws DfException */ public void setAttachmentsContentTypeForAMPP( IDfSession idfSession, String[] attachmentIds, String strArticleFolderPath, String strStageName) throws DfException { DfLogger.debug(this, utilObj.getSpaces() + "setAttachmentsContentType ::::", null, null); String strDeliveryFolderName = ""; String strStageFolderName = ""; if (IConstants.ATTR_STAGE_NAME_200.equalsIgnoreCase(strStageName)) { strDeliveryFolderName = IConstants.PATH_AMPP_COPY_EDITING; // IConstants.PATH_AMPP_DELIVERY_FOLDER; strStageFolderName = IConstants.FOLDER_NAME_STAGE_200; } else { // Pramod | 30 Oct 2014 | All files will be stored under // Stage/Delivery Folder // strDeliveryFolderName = IConstants.PATH_AMPP_300_DELIVERY_FOLDER; strDeliveryFolderName = IConstants.PATH_AMPP_COPY_EDITING; // IConstants.PATH_AMPP_DELIVERY_FOLDER; strStageFolderName = IConstants.FOLDER_NAME_STAGE_300; } for (int i = 0; i < attachmentIds.length; i++) { if (DfId.isObjectId(attachmentIds[i])) { DfLogger.debug( this, utilObj.getSpaces() + "Attachment ID : " + attachmentIds[i], null, null); IDfDocument idfDocument = (IDfDocument) idfSession.getObject(new DfId(attachmentIds[i])); if (idfDocument != null) { DfLogger.debug( this, "File Path before setting content type : " + idfDocument.getFile(null), null, null); setContentTypeFromName(idfSession, idfDocument); idfDocument.save(); idfDocument.fetch(null); setAttachmentToArticleForAMPP( idfSession, idfDocument, strArticleFolderPath, strStageFolderName, strDeliveryFolderName); if (idfDocument.isDeleted() != true) { idfDocument.save(); DfLogger.debug( this, utilObj.getSpaces() + "Attachment " + idfDocument.getObjectName() + " Processed and Saved successfully ", null, null); } } } } }
private void setAttachmentToArticleForElf( IDfSession idfSession, IDfDocument idfAttachmentDocObj, String strArticleFolderPath, String strStageFolderName, String strDeliveryFolderName) { DfLogger.debug( this, utilObj.getSpaces() + "Inside method setAttachmentToArticleForElf.", null, null); Boolean isCheckedOut = false; IDfDocument docObj = null; String strObjectName = ""; boolean isLogObject = false; boolean isImageObject = false; String strObjectType = ""; String strItemType = ""; String strLogCategory = ""; String strLogType = ""; StringBuilder strFolderPah = new StringBuilder(strArticleFolderPath + "/" + strStageFolderName); try { strObjectName = idfAttachmentDocObj.getObjectName(); DfLogger.debug(null, "strObjectName-->" + strObjectName, null, null); if (strObjectName.toLowerCase().contains(IConstants.STR_CHECK_PDF_ONLINE) && strObjectName.toLowerCase().endsWith(".pdf")) { strItemType = IConstants.ITEM_TYPE_CHECK_PDF_ONLINE; strObjectType = IConstants.TYPE_WORKITEM_OBJECT; strFolderPah.append(IConstants.PATH_GRAPHICS_FOLDER); } else if (strObjectName.toLowerCase().contains(IConstants.STR_CHECK_PDF_PRINT) && strObjectName.toLowerCase().endsWith(".pdf")) { strItemType = IConstants.ITEM_TYPE_CHECK_PDF_PRINT; strObjectType = IConstants.TYPE_WORKITEM_OBJECT; strFolderPah.append(IConstants.PATH_GRAPHICS_FOLDER); } else if (strObjectName.toLowerCase().contains(IConstants.STR_COLOR_ON_PAGE_PRINT) && strObjectName.toLowerCase().endsWith(".pdf")) { strItemType = IConstants.ITEM_TYPE_COLOR_ON_PAGE_PRINT; strObjectType = IConstants.TYPE_WORKITEM_OBJECT; strFolderPah.append(IConstants.PATH_GRAPHICS_FOLDER); } else if (strObjectName.toLowerCase().contains(IConstants.ELF_FILE_PREFIX_METADATA_XML) && strObjectName.endsWith(".xml")) { strObjectType = IConstants.TYPE_LOG_OBJECT; strLogCategory = IConstants.ATTR_LOG_CATEGORY_ELF_METADATA; isLogObject = true; strFolderPah.append(IConstants.PATH_GRAPHICS_FOLDER + "/" + IConstants.FOLDER_NAME_LOGS); } else if (strObjectName.toLowerCase().contains(IConstants.IMAGE_RENDITION_HTML) && (strObjectName.toLowerCase().endsWith(".jpg") || strObjectName.toLowerCase().endsWith(".gif"))) { strItemType = IConstants.ITEM_TYPE_ONLINE_IMAGE; strObjectType = IConstants.TYPE_WORKITEM_OBJECT; strFolderPah.append(IConstants.PATH_GRAPHICS_FOLDER + "/" + IConstants.ONLINE_FOLDER); isImageObject = true; DfLogger.debug(this, "isImageObject : " + isImageObject, null, null); } else if (strObjectName.toLowerCase().contains(IConstants.ELF_FILE_PREFIX_ERROR_XML) && strObjectName.endsWith(".xml")) { strObjectType = IConstants.TYPE_LOG_OBJECT; strLogCategory = IConstants.ATTR_LOG_CATEGORY_ELF_MESSAGES; isLogObject = true; strFolderPah.append(IConstants.PATH_GRAPHICS_FOLDER + "/" + IConstants.FOLDER_NAME_LOGS); } else { // idfAttachmentDocObj.destroy(); idfAttachmentDocObj.mark("DELETE"); idfAttachmentDocObj.save(); DfLogger.warn( this, "Unexpected file received : " + strObjectName + " | no operations required on Object.. ", null, null); return; } DfLogger.debug(this, "setAttachmentToArticle folder path : " + strFolderPah, null, null); if (!isLogObject) { docObj = (IDfDocument) idfSession.getObjectByQualification( strObjectType + " where Folder('" + strFolderPah + "') " + " and object_name = '" + idfAttachmentDocObj.getObjectName() + "' and item_type='" + strItemType + "'"); DfLogger.debug( this, strObjectType + " where Folder('" + strFolderPah + "') " + " and object_name = '" + idfAttachmentDocObj.getObjectName() + "' and item_type='" + strItemType + "'", null, null); } else { docObj = (IDfDocument) idfSession.getObjectByQualification( strObjectType + " where Folder('" + strFolderPah + "') " + " and " + IConstants.ATTR_LOG_CATEGORY + " = '" + strLogCategory + "'"); DfLogger.debug( this, strObjectType + " where Folder('" + strFolderPah + "') " + " and " + IConstants.ATTR_LOG_CATEGORY + " = '" + strLogCategory + "'", null, null); } if (docObj != null) { DfLogger.debug( this, utilObj.getSpaces() + "Existing version found.Creating new version inside Article Folder", null, null); // [TODO] see if checking of "if checked out" can be added in // executeCheckoutOperation if (docObj.isCheckedOut()) { docObj.cancelCheckout(); } isCheckedOut = utilObj.executeCheckoutOperation(docObj); if (isCheckedOut) { IDfDocument idfNewVersion = utilObj.executeCheckinOperation(idfSession, docObj, idfAttachmentDocObj); if (idfNewVersion != null) { idfNewVersion.save(); // idfAttachmentDocObj.destroy(); // Pramod | Attachment object is no longer required on // creation of new version so it will be marked as // DELETE and will be deleted at the end of the // processing idfAttachmentDocObj.mark("DELETE"); idfAttachmentDocObj.save(); DfLogger.info( this, " ---------------------- " + idfAttachmentDocObj.getObjectName() + " Marked as to be deleted ", null, null); } } } else { DfLogger.debug( this, utilObj.getSpaces() + "New document processing. Linking to article folder", null, null); if (isLogObject == true) { DfLogger.debug(this, "Object Name of log file : " + strObjectName, null, null); IDfQuery qry = new DfQuery(); String strObjId = idfAttachmentDocObj.getObjectId().getId(); qry.setDQL( "change " + IConstants.TYPE_WORKITEM_OBJECT + " objects to dm_document where r_object_id='" + strObjId + "'"); IDfCollection idfColl1 = qry.execute(idfSession, IDfQuery.DF_EXEC_QUERY); if (null != idfColl1 && IDfCollection.DF_CLOSED_STATE != idfColl1.getState()) { idfColl1.close(); } qry.setDQL( "change dm_document objects to " + IConstants.TYPE_LOG_OBJECT + " where r_object_id='" + strObjId + "'"); IDfCollection idfColl2 = qry.execute(idfSession, IDfQuery.DF_EXEC_QUERY); if (null != idfColl2 && IDfCollection.DF_CLOSED_STATE != idfColl2.getState()) { idfColl2.close(); } idfAttachmentDocObj.fetch(null); idfAttachmentDocObj.setString(IConstants.ATTR_LOG_TYPE, strLogType); idfAttachmentDocObj.setString(IConstants.ATTR_LOG_CATEGORY, strLogCategory); idfAttachmentDocObj.setObjectName(strObjectName); idfAttachmentDocObj.save(); } IDfACL folderAcl = idfSession.getFolderByPath(strFolderPah.toString()).getACL(); if (isImageObject && strObjectName.split("_").length == 5) { idfAttachmentDocObj.setTitle(strObjectName.split("_")[3]); } idfAttachmentDocObj.setACL(folderAcl); idfAttachmentDocObj.unlink(idfAttachmentDocObj.getFolderId(0).toString()); idfAttachmentDocObj.link(strFolderPah.toString()); setWorkitemMetadata(idfAttachmentDocObj); idfAttachmentDocObj.save(); } DfLogger.debug( this, utilObj.getSpaces() + "Method processAttachments completed successfully.", null, null); } catch (RuntimeException ex) { DfLogger.error(this, ex.getMessage(), null, null); throw ex; } catch (DfException e) { DfLogger.error(this, "Error occured in processing attachment: " + e.getMessage(), null, e); } }
/** * Handles versioning for AMPP documents. Major version will be created if document of particular * type already exists in Article Delivery Folder. * * @param idfSession * @param idfAttachmentDocObj * @param strArticleFolderPath */ private void setAttachmentToArticleForAMPP( IDfSession idfSession, IDfDocument idfAttachmentDocObj, String strArticleFolderPath, String strStageFolderName, String strDeliveryFolderName) { DfLogger.debug(this, utilObj.getSpaces() + "Inside method processAttachments.", null, null); Boolean isCheckedOut = false; IDfDocument docObj = null; String strObjectName = ""; boolean isLogObject = false; String strObjectType = ""; String strItemType = ""; String strLogCategory = ""; String strLogType = ""; StringBuilder strFolderPah = new StringBuilder(strArticleFolderPath + "/" + strStageFolderName); try { strObjectName = idfAttachmentDocObj.getObjectName(); if (strObjectName.toLowerCase().contains(IConstants.AMPP_FILE_SUFFIX_ARTICLE_XML)) { strItemType = IConstants.AMPP_WORKITEM_VALUE_XML; strObjectType = IConstants.TYPE_WORKITEM_OBJECT; strFolderPah.append(IConstants.PATH_AMPP_COPY_EDITING); } else if (strObjectName.toLowerCase().contains(IConstants.FILE_SUFFIX_ARTICLE_PDF)) { strItemType = IConstants.AMPP_WORKITEM_VALUE_ONLINE_PDF; strObjectType = IConstants.TYPE_WORKITEM_OBJECT; strFolderPah.append(IConstants.PATH_AMPP_COPY_EDITING); } else if (strObjectName .toLowerCase() .contains(IConstants.AMPP_FILE_SUFFIX_VALIDATION_LOGL)) { strObjectType = IConstants.TYPE_LOG_OBJECT; strLogCategory = IConstants.ATTR_LOG_CATEGORY_AMPP_CC; isLogObject = true; strFolderPah.append(IConstants.PATH_COPY_EDITING_LOG_FOLDER); } else if (strObjectName.toLowerCase().contains(IConstants.AMPP_FILE_PREFX_ERROR_LOG) && strObjectName.endsWith(".xml")) { strObjectType = IConstants.TYPE_LOG_OBJECT; strLogCategory = IConstants.ATTR_LOG_CATEGORY_AMPP_MESSAGES; strLogType = IConstants.LOG_TYPE_FAILURE; isLogObject = true; strFolderPah.append( IConstants.PATH_COPY_EDITING_FOLDER + "/" + IConstants.FOLDER_NAME_LOGS); } else if (strObjectName.toLowerCase().contains(IConstants.BREEZE_FILE_SUFFIX_ERROR_LOG) && strObjectName.endsWith(".txt")) { strObjectType = IConstants.TYPE_LOG_OBJECT; strLogCategory = IConstants.ATTR_LOG_CATEGORY_BREEZE; isLogObject = true; strFolderPah.append( IConstants.PATH_COPY_EDITING_FOLDER + "/" + IConstants.FOLDER_NAME_LOGS); } else if (strObjectName.toLowerCase().contains(IConstants.BREEZE_FILE_SUFFIX_SUCCESS_LOG) && strObjectName.endsWith(".txt")) { strObjectType = IConstants.TYPE_LOG_OBJECT; strLogCategory = IConstants.ATTR_LOG_CATEGORY_BREEZE; isLogObject = true; strFolderPah.append( IConstants.PATH_COPY_EDITING_FOLDER + "/" + IConstants.FOLDER_NAME_LOGS); } else if (strObjectName.toLowerCase().contains(IConstants.AMPP_FILE_SUFFIX_STYLED_DOC)) { for (String strExtensions : IConstants.AMPP_FILE_EXT_STYLED_DOC) { if (strObjectName.contains("." + strExtensions)) { strItemType = IConstants.AMPP_WORKITEM_VALUE_DOC; strObjectType = IConstants.TYPE_WORKITEM_OBJECT; strFolderPah.append(IConstants.PATH_COPY_EDITING_FOLDER); break; } } } else { idfAttachmentDocObj.destroy(); throw new RuntimeException( "Unexpected file received : " + strObjectName + " | Destroyed Object.. "); } DfLogger.debug(this, "setAttachmentToArticle folder path : " + strFolderPah, null, null); if (!isLogObject) { docObj = (IDfDocument) idfSession.getObjectByQualification( strObjectType + " where Folder('" + strFolderPah + "') " + " and item_type='" + strItemType + "'"); } else { docObj = (IDfDocument) idfSession.getObjectByQualification( strObjectType + " where Folder('" + strFolderPah + "') " + " and " + IConstants.ATTR_LOG_CATEGORY + " = '" + strLogCategory + "'"); } idfAttachmentDocObj.getFile(null); if (docObj != null) { DfLogger.debug( this, utilObj.getSpaces() + "Existing version found.Creating new version inside Delivery Folder", null, null); // [TODO] see if checking of "if checked out" can be added in // executeCheckoutOperation if (docObj.isCheckedOut()) { docObj.cancelCheckout(); } isCheckedOut = utilObj.executeCheckoutOperation(docObj); if (isCheckedOut) { utilObj.executeCheckinOperation(idfSession, docObj, idfAttachmentDocObj); } } else { DfLogger.debug( this, utilObj.getSpaces() + "New document processing. Linking to article folder", null, null); if (isLogObject == true) { DfLogger.debug(this, "Object Name of log file : " + strObjectName, null, null); IDfQuery qry = new DfQuery(); String strObjId = idfAttachmentDocObj.getObjectId().getId(); qry.setDQL( "change " + IConstants.TYPE_WORKITEM_OBJECT + " objects to dm_document where r_object_id='" + strObjId + "'"); DfLogger.debug(this, qry.getDQL(), null, null); IDfCollection idfColl1 = qry.execute(idfSession, IDfQuery.DF_EXEC_QUERY); if (null != idfColl1 && IDfCollection.DF_CLOSED_STATE != idfColl1.getState()) { idfColl1.close(); } qry.setDQL( "change dm_document objects to " + IConstants.TYPE_LOG_OBJECT + " where r_object_id='" + strObjId + "'"); DfLogger.debug(this, qry.getDQL(), null, null); IDfCollection idfColl2 = qry.execute(idfSession, IDfQuery.DF_EXEC_QUERY); if (null != idfColl2 && IDfCollection.DF_CLOSED_STATE != idfColl2.getState()) { idfColl2.close(); } idfAttachmentDocObj.fetch(null); idfAttachmentDocObj.setString(IConstants.ATTR_LOG_TYPE, strLogType); idfAttachmentDocObj.setString(IConstants.ATTR_LOG_CATEGORY, strLogCategory); idfAttachmentDocObj.setObjectName(strObjectName); idfAttachmentDocObj.save(); } IDfACL folderAcl = idfSession.getFolderByPath(strFolderPah.toString()).getACL(); DfLogger.debug(this, folderAcl.getObjectName(), null, null); idfAttachmentDocObj.setACL(folderAcl); idfAttachmentDocObj.unlink(idfAttachmentDocObj.getFolderId(0).toString()); idfAttachmentDocObj.link(strFolderPah.toString()); setWorkitemMetadata(idfAttachmentDocObj); } DfLogger.debug( this, utilObj.getSpaces() + "Method processAttachments completed successfully.", null, null); } catch (DfException e) { DfLogger.error(this, "Error occured in processing attachment: " + e.getMessage(), null, e); } }