/** * 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.portal.workflow.kaleo.service.impl; import aQute.bnd.annotation.ProviderType; import com.liferay.osgi.util.ServiceTrackerFactory; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.log.Log; import com.liferay.portal.kernel.log.LogFactoryUtil; import com.liferay.portal.kernel.model.User; import com.liferay.portal.kernel.service.ServiceContext; import com.liferay.portal.kernel.util.Validator; import com.liferay.portal.workflow.kaleo.model.KaleoTaskForm; import com.liferay.portal.workflow.kaleo.model.KaleoTaskFormInstance; import com.liferay.portal.workflow.kaleo.model.KaleoTaskInstanceToken; import com.liferay.portal.workflow.kaleo.runtime.form.FormValueProcessor; import com.liferay.portal.workflow.kaleo.service.base.KaleoTaskFormInstanceLocalServiceBaseImpl; import java.util.Date; import java.util.List; import org.osgi.util.tracker.ServiceTracker; /** * @author Michael C. Han */ @ProviderType public class KaleoTaskFormInstanceLocalServiceImpl extends KaleoTaskFormInstanceLocalServiceBaseImpl { @Override public KaleoTaskFormInstance addKaleoTaskFormInstance( long groupId, long kaleoTaskFormId, String formValues, KaleoTaskInstanceToken kaleoTaskInstanceToken, ServiceContext serviceContext) throws PortalException { User user = userLocalService.getUser(serviceContext.getGuestOrUserId()); Date now = new Date(); long kaleoTaskFormInstanceId = counterLocalService.increment(); KaleoTaskFormInstance kaleoTaskFormInstance = kaleoTaskFormInstancePersistence.create(kaleoTaskFormInstanceId); kaleoTaskFormInstance.setCompanyId(user.getCompanyId()); kaleoTaskFormInstance.setGroupId(groupId); kaleoTaskFormInstance.setUserId(user.getUserId()); kaleoTaskFormInstance.setUserName(user.getFullName()); kaleoTaskFormInstance.setCreateDate(now); kaleoTaskFormInstance.setModifiedDate(now); kaleoTaskFormInstance.setKaleoDefinitionId( kaleoTaskInstanceToken.getKaleoDefinitionId()); kaleoTaskFormInstance.setKaleoInstanceId( kaleoTaskInstanceToken.getKaleoInstanceId()); kaleoTaskFormInstance.setKaleoTaskId( kaleoTaskInstanceToken.getKaleoTaskId()); kaleoTaskFormInstance.setKaleoTaskInstanceTokenId( kaleoTaskInstanceToken.getKaleoTaskInstanceTokenId()); kaleoTaskFormInstance.setKaleoTaskFormId(kaleoTaskFormId); KaleoTaskForm kaleoTaskForm = kaleoTaskFormLocalService.getKaleoTaskForm(kaleoTaskFormId); if (Validator.isNotNull(kaleoTaskForm.getFormDefinition())) { kaleoTaskFormInstance.setFormValues(formValues); } else { FormValueProcessor formValueProcessor = getFormValueProcessor(); if (formValueProcessor != null) { kaleoTaskFormInstance = formValueProcessor.processFormValues( kaleoTaskForm, kaleoTaskFormInstance, formValues, serviceContext); } else { if (_log.isWarnEnabled()) { _log.warn( "No form value processor defined to for form: " + kaleoTaskForm.getKaleoTaskFormId() + " and values: " + formValues); } } } kaleoTaskFormInstancePersistence.update(kaleoTaskFormInstance); return kaleoTaskFormInstance; } @Override public int countKaleoTaskFormInstanceByKaleoTaskId(long kaleoTaskId) { return kaleoTaskFormInstancePersistence.countByKaleoTaskId(kaleoTaskId); } @Override public void deleteCompanyKaleoTaskFormInstances(long companyId) { kaleoTaskFormInstancePersistence.removeByCompanyId(companyId); } @Override public void deleteKaleoDefinitionKaleoTaskFormInstances( long kaleoDefinitionId) { kaleoTaskFormInstancePersistence.removeByKaleoDefinitionId( kaleoDefinitionId); } @Override public void deleteKaleoInstanceKaleoTaskFormInstances( long kaleoInstanceId) { kaleoTaskFormInstancePersistence.removeByKaleoInstanceId( kaleoInstanceId); } @Override public KaleoTaskFormInstance fetchKaleoTaskFormKaleoTaskFormInstance(long kaleoTaskFormId) { return kaleoTaskFormInstancePersistence.fetchByKaleoTaskFormId( kaleoTaskFormId); } @Override public KaleoTaskFormInstance getKaleoTaskFormKaleoTaskFormInstance( long kaleoTaskFormId) throws PortalException { return kaleoTaskFormInstancePersistence.findByKaleoTaskFormId( kaleoTaskFormId); } @Override public List<KaleoTaskFormInstance> getKaleoTaskKaleoTaskFormInstances( long kaleoTaskId) { return kaleoTaskFormInstancePersistence.findByKaleoTaskId(kaleoTaskId); } protected FormValueProcessor getFormValueProcessor() { return _serviceTracker.getService(); } private static final Log _log = LogFactoryUtil.getLog( KaleoTaskFormInstanceLocalServiceImpl.class); private static final ServiceTracker<FormValueProcessor, FormValueProcessor> _serviceTracker = ServiceTrackerFactory.open(FormValueProcessor.class); }