public static Object getProperty(StoredObject so, String propertyId, PropertyDefinition<?> pd) {
ContentStream content = null;
DocumentVersion ver = null;
VersionedDocument verDoc = null;
Folder folder = null;
Document doc = null;
boolean cmis11 = InMemoryServiceContext.getCallContext().getCmisVersion() != CmisVersion.CMIS_1_0;
if (so instanceof Content)
content = ((Content) so).getContent(0, 0);
if (so instanceof DocumentVersion)
ver = (DocumentVersion) so;
if (so instanceof VersionedDocument)
verDoc = (VersionedDocument) so;
if (so instanceof Folder)
folder = (Folder) so;
if (so instanceof Document)
doc = (Document) so;
// generic properties:
if (propertyId.equals(PropertyIds.NAME)) {
return so.getName();
}
if (propertyId.equals(PropertyIds.OBJECT_ID)) {
return so.getId();
}
if (propertyId.equals(PropertyIds.OBJECT_TYPE_ID)) {
return so.getTypeId();
}
if (propertyId.equals(PropertyIds.BASE_TYPE_ID)) {
return null; // TOODO: return so.getBaseTypeId());
}
if (propertyId.equals(PropertyIds.CREATED_BY)) {
return so.getCreatedBy();
}
if (propertyId.equals(PropertyIds.CREATION_DATE)) {
return so.getCreatedAt();
}
if (propertyId.equals(PropertyIds.LAST_MODIFIED_BY)) {
return so.getModifiedBy();
}
if (propertyId.equals(PropertyIds.LAST_MODIFICATION_DATE)) {
return so.getModifiedAt();
}
if (propertyId.equals(PropertyIds.CHANGE_TOKEN)) {
return so.getChangeToken();
}
if (cmis11 && propertyId.equals(PropertyIds.DESCRIPTION)) {
return so.getDescription();
}
if (ver != null) {
// get version related properties
// not support on a version, only on a versioned document:
// VERSION_SERIES_ID, IS_VERSION_SERIES_CHECKED_OUT,
// VERSION_SERIES_CHECKED_OUT_BY,
// VERSION_SERIES_CHECKED_OUT_ID, IS_LATEST_MAJOR_VERSION,
// IS_LATEST_VERSION
if (propertyId.equals(PropertyIds.IS_MAJOR_VERSION)) {
return ver.isMajor();
}
if (propertyId.equals(PropertyIds.CHECKIN_COMMENT)) {
return ver.getCheckinComment();
}
if (propertyId.equals(PropertyIds.VERSION_LABEL)) {
return ver.getVersionLabel();
}
if (propertyId.equals(PropertyIds.VERSION_SERIES_CHECKED_OUT_ID)) {
return ver.isPwc() ? ver.getId() : null;
}
}
// get versioned document related properties
if (verDoc != null) {
if (propertyId.equals(PropertyIds.VERSION_SERIES_ID)) {
return verDoc.getId();
}
if (propertyId.equals(PropertyIds.IS_VERSION_SERIES_CHECKED_OUT)) {
return verDoc.isCheckedOut();
}
if (propertyId.equals(PropertyIds.VERSION_SERIES_CHECKED_OUT_BY)) {
return verDoc.getCheckedOutBy();
}
}
// Set the content related properties
if (null != content) {
// omit: PropertyIds.CMIS_CONTENT_STREAM_ID
if (propertyId.equals(PropertyIds.CONTENT_STREAM_FILE_NAME)) {
return content.getFileName();
}
if (propertyId.equals(PropertyIds.CONTENT_STREAM_LENGTH)) {
return content.getBigLength();
}
if (propertyId.equals(PropertyIds.CONTENT_STREAM_MIME_TYPE)) {
return content.getMimeType();
}
}
if (folder != null) {
// not supported: ALLOWED_CHILD_OBJECT_TYPE_IDS
if (propertyId.equals(PropertyIds.PARENT_ID)) {
return folder.getParent() == null ? null : folder.getParent().getId();
}
if (propertyId.equals(PropertyIds.PATH)) {
return folder.getPath();
}
}
if (doc != null) {
if (propertyId.equals(PropertyIds.IS_IMMUTABLE)) {