@Override public AttachmentDAO getAttachmentInfo(final String id) throws AttachmentMgtException { try { AttachmentDAO resultantDAO = jobExecutor.execTransaction( new Callable<AttachmentDAO>() { @Override public AttachmentDAO call() throws Exception { AttachmentDAO attachmentDAO = null; attachmentDAO = entityManager.find(AttachmentDAOImpl.class, Long.parseLong(id)); return attachmentDAO; } }); if (resultantDAO != null) { return resultantDAO; } else { throw new AttachmentMgtException("Attachment not found for id : " + id); } } catch (Exception e) { String errorMsg = "org.wso2.carbon.attachment.mgt.core.dao.impl.hibernate.AttachmentMgtDAOFactoryImpl.getAttachmentInfo operation failed. " + "Reason: " + e.getLocalizedMessage(); log.error(errorMsg, e); throw new AttachmentMgtException(errorMsg, e); } }
@Override public AttachmentDAO addAttachment(final Attachment attachment) throws AttachmentMgtException { try { AttachmentDAO resultantDAO = jobExecutor.execTransaction( new Callable<AttachmentDAO>() { @Override public AttachmentDAO call() throws Exception { AttachmentDAO attachmentDAO = new AttachmentDAOImpl(); attachmentDAO.setName(attachment.getName()); attachmentDAO.setCreatedBy(attachment.getCreatedBy()); attachmentDAO.setContentType(attachment.getContentType()); attachmentDAO.setUrl(URLGeneratorUtil.generateURL()); attachmentDAO.setContent(attachment.getContent()); entityManager.persist(attachmentDAO); if (entityManager.contains(attachmentDAO)) { return attachmentDAO; } else { String errorMsg = "Attachment couldn't persist in the Data Store"; throw new AttachmentMgtException(errorMsg); } } }); return resultantDAO; } catch (Exception e) { String errorMsg = "org.wso2.carbon.attachment.mgt.core.dao.impl.hibernate.AttachmentMgtDAOFactoryImpl.addAttachment operation failed. " + "Reason: " + e.getLocalizedMessage(); log.error(errorMsg, e); throw new AttachmentMgtException(errorMsg, e); } }
@Override public boolean removeAttachment(final String id) throws AttachmentMgtException { try { boolean isRemoved = false; isRemoved = jobExecutor.execTransaction( new Callable<Boolean>() { @Override public Boolean call() throws Exception { Query query = entityManager.createQuery( "DELETE FROM org.wso2.carbon.attachment.mgt.core.dao.impl" + ".jpa.openjpa.entity.AttachmentDAOImpl x WHERE x.id = " + ":attachmentID"); query.setParameter("attachmentID", Long.parseLong(id)); int noOfRowsUpdated = query.executeUpdate(); // entityManager.remove(getAttachmentInfo(id)); if (noOfRowsUpdated == 1) { return true; } else { return false; } } }); return isRemoved; } catch (Exception e) { String errorMsg = "org.wso2.carbon.attachment.mgt.core.dao.impl.hibernate.AttachmentMgtDAOFactoryImpl.removeAttachment operation failed. " + "Reason: " + e.getLocalizedMessage(); log.error(errorMsg, e); throw new AttachmentMgtException(errorMsg, e); } }
@Override public AttachmentDAO getAttachmentInfoFromURL(final String attachmentURI) throws AttachmentMgtException { try { AttachmentDAO resultantDAO = jobExecutor.execTransaction( new Callable<AttachmentDAO>() { @Override public AttachmentDAO call() throws Exception { Query query = entityManager.createQuery( "SELECT x FROM org.wso2.carbon.attachment.mgt.core.dao.impl.jpa.openjpa.entity.AttachmentDAOImpl AS x WHERE x.url = :attachmentURI"); query.setParameter("attachmentURI", attachmentURI); List<AttachmentDAO> daoList = query.getResultList(); if (daoList.isEmpty()) { throw new AttachmentMgtException( "Attachment not found for the uri:" + attachmentURI); } else if (daoList.size() != 1) { String errorMsg = "There exist more than one attachment for the attachment URI:" + attachmentURI + ". org" + ".wso2.carbon.attachment.mgt.util.URLGeneratorUtil.generateURL method has generated " + "similar uris for different attachments. This has caused a major inconsistency for " + "attachment management."; log.fatal(errorMsg); throw new AttachmentMgtException(errorMsg); } else { return daoList.get(0); } } }); return resultantDAO; } catch (Exception e) { String errorMsg = "org.wso2.carbon.attachment.mgt.core.dao.impl.hibernate.AttachmentMgtDAOFactoryImpl.getAttachmentInfoFromURL operation failed. " + "Reason: " + e.getLocalizedMessage(); log.error(errorMsg, e); throw new AttachmentMgtException(errorMsg, e); } }