@Override public ContentStream getContent(StoredObject so, long offset, long length) { if (so instanceof Content) { Content content = (Content) so; ContentStream contentStream = content.getContent(); if (null == contentStream) { return null; } else if (offset <= 0 && length < 0) { return contentStream; } else { return ((ContentStreamDataImpl) contentStream).getCloneWithLimits(offset, length); } } else { throw new CmisInvalidArgumentException( "Cannot set content, object does not implement interface Content."); } }
@Override public void appendContent(StoredObject so, ContentStream contentStream) { if (so instanceof Content) { Content content = (Content) so; ContentStreamDataImpl newContent = (ContentStreamDataImpl) content.getContent(); if (null == newContent) { content.setContent(null); } else { try { newContent.appendContent(contentStream.getStream()); } catch (IOException e) { throw new CmisStorageException("Failed to append content: IO Exception", e); } } } else { throw new CmisInvalidArgumentException( "Cannot set content, object does not implement interface Content."); } }
@Override public ContentStream setContent(StoredObject so, ContentStream contentStream) { if (so instanceof Content) { ContentStreamDataImpl newContent; Content content = (Content) so; if (null == contentStream) { newContent = null; } else { boolean useFakeContentStore = so.getTypeId().equals(DefaultTypeSystemCreator.BIG_CONTENT_FAKE_TYPE); newContent = new ContentStreamDataImpl( MAX_CONTENT_SIZE_KB == null ? 0 : MAX_CONTENT_SIZE_KB, useFakeContentStore); String fileName = contentStream.getFileName(); if (null == fileName || fileName.length() <= 0) { fileName = so.getName(); // use name of document as fallback } newContent.setFileName(fileName); String mimeType = contentStream.getMimeType(); if (null == mimeType || mimeType.length() <= 0) { mimeType = "application/octet-stream"; // use as fallback } newContent.setMimeType(mimeType); newContent.setLastModified(new GregorianCalendar()); try { newContent.setContent(contentStream.getStream()); } catch (IOException e) { throw new CmisRuntimeException("Failed to get content from InputStream", e); } } content.setContent(newContent); return newContent; } else { throw new CmisInvalidArgumentException( "Cannot set content, object does not implement interface Content."); } }