/** * 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.definition.internal.export.builder; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.service.ServiceContext; import com.liferay.portal.workflow.kaleo.definition.Definition; import com.liferay.portal.workflow.kaleo.definition.Node; import com.liferay.portal.workflow.kaleo.definition.Transition; import com.liferay.portal.workflow.kaleo.model.KaleoDefinition; import com.liferay.portal.workflow.kaleo.model.KaleoNode; import com.liferay.portal.workflow.kaleo.model.KaleoTransition; import com.liferay.portal.workflow.kaleo.service.KaleoDefinitionLocalService; import com.liferay.portal.workflow.kaleo.service.KaleoNodeLocalService; import com.liferay.portal.workflow.kaleo.service.KaleoTransitionLocalService; import java.util.List; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; /** * @author Michael C. Han */ @Component(immediate = true, service = DefinitionBuilder.class) public class DefaultDefinitionBuilder implements DefinitionBuilder { @Override public Definition buildDefinition(long kaleoDefinitionId) throws PortalException { KaleoDefinition kaleoDefinition = _kaleoDefinitionLocalService.getKaleoDefinition(kaleoDefinitionId); return doBuildDefinition(kaleoDefinition); } @Override public Definition buildDefinition(long companyId, String name, int version) throws PortalException { ServiceContext serviceContext = new ServiceContext(); serviceContext.setCompanyId(companyId); KaleoDefinition kaleoDefinition = _kaleoDefinitionLocalService.getKaleoDefinition( name, version, serviceContext); return doBuildDefinition(kaleoDefinition); } protected Definition doBuildDefinition(KaleoDefinition kaleoDefinition) throws PortalException { Definition definition = new Definition( kaleoDefinition.getName(), kaleoDefinition.getDescription(), kaleoDefinition.getContent(), kaleoDefinition.getVersion()); List<KaleoNode> kaleoNodes = _kaleoNodeLocalService.getKaleoDefinitionKaleoNodes( kaleoDefinition.getKaleoDefinitionId()); for (KaleoNode kaleoNode : kaleoNodes) { NodeBuilder nodeBuilder = _nodeBuilderRegistry.getNodeBuilder( kaleoNode.getType()); Node node = nodeBuilder.buildNode(kaleoNode); definition.addNode(node); } List<KaleoTransition> kaleoTransitions = _kaleoTransitionLocalService.getKaleoDefinitionKaleoTransitions( kaleoDefinition.getKaleoDefinitionId()); for (KaleoTransition kaleoTransition : kaleoTransitions) { String sourceNodeName = kaleoTransition.getSourceKaleoNodeName(); Node sourceNode = definition.getNode(sourceNodeName); String targetNodeName = kaleoTransition.getTargetKaleoNodeName(); Node targetNode = definition.getNode(targetNodeName); Transition transition = new Transition( kaleoTransition.getName(), sourceNode, targetNode, kaleoTransition.isDefaultTransition()); sourceNode.addOutgoingTransition(transition); targetNode.addIncomingTransition(transition); } return definition; } @Reference private KaleoDefinitionLocalService _kaleoDefinitionLocalService; @Reference private KaleoNodeLocalService _kaleoNodeLocalService; @Reference private KaleoTransitionLocalService _kaleoTransitionLocalService; @Reference private NodeBuilderRegistry _nodeBuilderRegistry; }