
com.liferay.document.library.google.docs.util.GoogleDocsMetadataHelper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com.liferay.document.library.google.docs Show documentation
Show all versions of com.liferay.document.library.google.docs Show documentation
Liferay Document Library Google Docs
The newest version!
/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.document.library.google.docs.util;
import com.liferay.counter.kernel.service.CounterLocalServiceUtil;
import com.liferay.document.library.kernel.model.DLFileEntry;
import com.liferay.document.library.kernel.model.DLFileEntryMetadata;
import com.liferay.document.library.kernel.model.DLFileEntryType;
import com.liferay.document.library.kernel.model.DLFileVersion;
import com.liferay.document.library.kernel.service.DLFileEntryMetadataLocalService;
import com.liferay.dynamic.data.mapping.kernel.DDMStructure;
import com.liferay.dynamic.data.mapping.service.DDMStructureLocalService;
import com.liferay.dynamic.data.mapping.storage.DDMFormValues;
import com.liferay.dynamic.data.mapping.storage.Field;
import com.liferay.dynamic.data.mapping.storage.Fields;
import com.liferay.dynamic.data.mapping.storage.StorageEngine;
import com.liferay.dynamic.data.mapping.util.DDMFormValuesToFieldsConverter;
import com.liferay.dynamic.data.mapping.util.FieldsToDDMFormValuesConverter;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.service.ServiceContext;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author Iván Zaera
*/
public class GoogleDocsMetadataHelper {
public static DDMStructure getGoogleDocsDDMStructure(
DLFileEntryType dlFileEntryType) {
if (dlFileEntryType == null) {
return null;
}
List ddmStructures = dlFileEntryType.getDDMStructures();
for (DDMStructure ddmStructure : ddmStructures) {
String structureKey = ddmStructure.getStructureKey();
if (structureKey.equals(
GoogleDocsConstants.DDM_STRUCTURE_KEY_GOOGLE_DOCS)) {
return ddmStructure;
}
}
return null;
}
public GoogleDocsMetadataHelper(
DDMFormValuesToFieldsConverter ddmFormValuesToFieldsConverter,
DDMStructureLocalService ddmStructureLocalService,
DLFileEntry dlFileEntry,
DLFileEntryMetadataLocalService dlFileEntryMetadataLocalService,
FieldsToDDMFormValuesConverter fieldsToDDMFormValuesConverter,
StorageEngine storageEngine) {
try {
_ddmFormValuesToFieldsConverter = ddmFormValuesToFieldsConverter;
_ddmStructureLocalService = ddmStructureLocalService;
_dlFileEntryMetadataLocalService = dlFileEntryMetadataLocalService;
_fieldsToDDMFormValuesConverter = fieldsToDDMFormValuesConverter;
_storageEngine = storageEngine;
_dlFileVersion = dlFileEntry.getFileVersion();
_ddmStructure = getGoogleDocsDDMStructure(
dlFileEntry.getDLFileEntryType());
}
catch (PortalException pe) {
throw new SystemException(pe);
}
}
public GoogleDocsMetadataHelper(
DDMFormValuesToFieldsConverter ddmFormValuesToFieldsConverter,
DDMStructureLocalService ddmStructureLocalService,
DLFileVersion dlFileVersion,
DLFileEntryMetadataLocalService dlFileEntryMetadataLocalService,
FieldsToDDMFormValuesConverter fieldsToDDMFormValuesConverter,
StorageEngine storageEngine) {
_ddmFormValuesToFieldsConverter = ddmFormValuesToFieldsConverter;
_ddmStructureLocalService = ddmStructureLocalService;
_dlFileVersion = dlFileVersion;
_dlFileEntryMetadataLocalService = dlFileEntryMetadataLocalService;
_fieldsToDDMFormValuesConverter = fieldsToDDMFormValuesConverter;
_storageEngine = storageEngine;
try {
_ddmStructure = getGoogleDocsDDMStructure(
dlFileVersion.getDLFileEntryType());
}
catch (PortalException pe) {
throw new SystemException(pe);
}
}
public boolean containsField(String fieldName) {
initDLFileEntryMetadataAndFields();
Field field = _fieldsMap.get(fieldName);
if (field != null) {
return true;
}
return false;
}
public String getFieldValue(String fieldName) {
Field field = _getField(fieldName);
Serializable value = field.getValue();
if (value == null) {
return null;
}
return value.toString();
}
public boolean isGoogleDocs() {
if (_ddmStructure != null) {
return true;
}
return false;
}
public void setFieldValue(String fieldName, String value) {
Field field = _getField(fieldName);
field.setValue(value);
}
public void update() {
try {
DDMFormValues ddmFormValues = toDDMFormValues(_fields);
_storageEngine.update(
_dlFileEntryMetadata.getDDMStorageId(), ddmFormValues,
new ServiceContext());
}
catch (PortalException pe) {
throw new SystemException(
"Unable to update DDM fields for file version " +
_dlFileVersion.getFileVersionId(),
pe);
}
}
protected void addGoogleDocsDLFileEntryMetadata() {
try {
DLFileEntry dlFileEntry = _dlFileVersion.getFileEntry();
_dlFileEntryMetadata =
_dlFileEntryMetadataLocalService.createDLFileEntryMetadata(
CounterLocalServiceUtil.increment());
long ddmStructureId = _ddmStructure.getStructureId();
Fields fields = new Fields();
fields.put(
new Field(
ddmStructureId,
GoogleDocsConstants.DDM_FIELD_NAME_DESCRIPTION, ""));
fields.put(
new Field(
ddmStructureId,
GoogleDocsConstants.DDM_FIELD_NAME_EMBEDDABLE_URL, ""));
fields.put(
new Field(
ddmStructureId, GoogleDocsConstants.DDM_FIELD_NAME_ICON_URL,
""));
fields.put(
new Field(
ddmStructureId, GoogleDocsConstants.DDM_FIELD_NAME_ID, ""));
fields.put(
new Field(
ddmStructureId, GoogleDocsConstants.DDM_FIELD_NAME_NAME,
""));
fields.put(
new Field(
ddmStructureId, GoogleDocsConstants.DDM_FIELD_NAME_URL,
""));
ServiceContext serviceContext = new ServiceContext();
serviceContext.setScopeGroupId(_dlFileVersion.getGroupId());
serviceContext.setUserId(_dlFileVersion.getUserId());
DDMFormValues ddmFormValues = toDDMFormValues(fields);
long ddmStorageId = _storageEngine.create(
_dlFileVersion.getCompanyId(), ddmStructureId, ddmFormValues,
serviceContext);
_dlFileEntryMetadata.setDDMStorageId(ddmStorageId);
_dlFileEntryMetadata.setDDMStructureId(ddmStructureId);
_dlFileEntryMetadata.setFileEntryId(dlFileEntry.getFileEntryId());
_dlFileEntryMetadata.setFileVersionId(
_dlFileVersion.getFileVersionId());
_dlFileEntryMetadata =
_dlFileEntryMetadataLocalService.addDLFileEntryMetadata(
_dlFileEntryMetadata);
}
catch (PortalException pe) {
throw new SystemException(
"Unable to add DDM fields for file version " +
_dlFileVersion.getFileVersionId(),
pe);
}
}
protected void initDLFileEntryMetadataAndFields() {
if (_fieldsMap != null) {
return;
}
if (_dlFileVersion == null) {
return;
}
_fieldsMap = new HashMap<>();
_dlFileEntryMetadata =
_dlFileEntryMetadataLocalService.fetchFileEntryMetadata(
_ddmStructure.getStructureId(),
_dlFileVersion.getFileVersionId());
if (_dlFileEntryMetadata == null) {
addGoogleDocsDLFileEntryMetadata();
}
try {
DDMFormValues ddmFormValues = _storageEngine.getDDMFormValues(
_dlFileEntryMetadata.getDDMStorageId());
_fields = _ddmFormValuesToFieldsConverter.convert(
_ddmStructureLocalService.getDDMStructure(
_ddmStructure.getStructureId()),
ddmFormValues);
for (Field field : _fields) {
_fieldsMap.put(field.getName(), field);
}
}
catch (PortalException pe) {
throw new SystemException(
"Unable to load DDM fields for file version " +
_dlFileVersion.getFileVersionId(),
pe);
}
}
protected DDMFormValues toDDMFormValues(Fields fields)
throws PortalException {
return _fieldsToDDMFormValuesConverter.convert(
_ddmStructureLocalService.getDDMStructure(
_ddmStructure.getStructureId()),
fields);
}
private Field _getField(String fieldName) {
initDLFileEntryMetadataAndFields();
Field field = _fieldsMap.get(fieldName);
if (field == null) {
throw new IllegalArgumentException("Unknown field " + fieldName);
}
return field;
}
private final DDMFormValuesToFieldsConverter
_ddmFormValuesToFieldsConverter;
private final DDMStructure _ddmStructure;
private final DDMStructureLocalService _ddmStructureLocalService;
private DLFileEntryMetadata _dlFileEntryMetadata;
private final DLFileEntryMetadataLocalService
_dlFileEntryMetadataLocalService;
private DLFileVersion _dlFileVersion;
private Fields _fields;
private Map _fieldsMap;
private final FieldsToDDMFormValuesConverter
_fieldsToDDMFormValuesConverter;
private final StorageEngine _storageEngine;
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy