1
14
15 package com.liferay.portal.service.impl;
16
17 import com.liferay.portal.NoSuchWorkflowDefinitionLinkException;
18 import com.liferay.portal.kernel.exception.PortalException;
19 import com.liferay.portal.kernel.exception.SystemException;
20 import com.liferay.portal.kernel.workflow.WorkflowDefinitionManagerUtil;
21 import com.liferay.portal.model.User;
22 import com.liferay.portal.model.WorkflowDefinitionLink;
23 import com.liferay.portal.service.base.WorkflowDefinitionLinkLocalServiceBaseImpl;
24 import com.liferay.portal.util.PortalUtil;
25
26 import java.util.Date;
27
28
36 public class WorkflowDefinitionLinkLocalServiceImpl
37 extends WorkflowDefinitionLinkLocalServiceBaseImpl {
38
39 public WorkflowDefinitionLink addWorkflowDefinitionLink(
40 long userId, long companyId, long groupId, String className,
41 String workflowDefinitionName, int workflowDefinitionVersion)
42 throws PortalException, SystemException {
43
44 User user = userPersistence.findByPrimaryKey(userId);
45 long classNameId = PortalUtil.getClassNameId(className);
46 Date now = new Date();
47
48 long workflowDefinitionLinkId = counterLocalService.increment();
49
50 WorkflowDefinitionLink workflowDefinitionLink =
51 workflowDefinitionLinkPersistence.create(workflowDefinitionLinkId);
52
53 workflowDefinitionLink.setCreateDate(now);
54 workflowDefinitionLink.setModifiedDate(now);
55 workflowDefinitionLink.setUserId(userId);
56 workflowDefinitionLink.setUserName(user.getFullName());
57 workflowDefinitionLink.setGroupId(groupId);
58 workflowDefinitionLink.setCompanyId(companyId);
59 workflowDefinitionLink.setClassNameId(classNameId);
60 workflowDefinitionLink.setWorkflowDefinitionName(
61 workflowDefinitionName);
62 workflowDefinitionLink.setWorkflowDefinitionVersion(
63 workflowDefinitionVersion);
64
65 workflowDefinitionLinkPersistence.update(workflowDefinitionLink, false);
66
67 return workflowDefinitionLink;
68 }
69
70 public void deleteWorkflowDefinitionLink(
71 long userId, long companyId, long groupId, String className)
72 throws PortalException, SystemException {
73
74 try {
75 WorkflowDefinitionLink workflowDefinitionLink =
76 getWorkflowDefinitionLink(companyId, groupId, className);
77
78 deleteWorkflowDefinitionLink(workflowDefinitionLink);
79
80 WorkflowDefinitionManagerUtil.undeployWorkflowDefinition(
81 companyId, userId,
82 workflowDefinitionLink.getWorkflowDefinitionName(),
83 workflowDefinitionLink.getWorkflowDefinitionVersion());
84 }
85 catch (NoSuchWorkflowDefinitionLinkException nswdle) {
86 }
87 }
88
89 public WorkflowDefinitionLink getWorkflowDefinitionLink(
90 long companyId, long groupId, String className)
91 throws PortalException, SystemException {
92
93 long classNameId = PortalUtil.getClassNameId(className);
94
95 WorkflowDefinitionLink workflowDefinitionLink = null;
96
97 if (groupId > 0) {
98 workflowDefinitionLink =
99 workflowDefinitionLinkPersistence.fetchByG_C_C(
100 groupId, companyId, classNameId);
101 }
102
103 if (workflowDefinitionLink == null) {
104 workflowDefinitionLink =
105 workflowDefinitionLinkPersistence.fetchByG_C_C(
106 0, companyId, classNameId);
107 }
108
109 if (workflowDefinitionLink == null) {
110 throw new NoSuchWorkflowDefinitionLinkException(
111 "No workflow for groupId=" + groupId + ", companyId=" +
112 companyId + " and classNameId=" + classNameId);
113 }
114
115 return workflowDefinitionLink;
116 }
117
118 public boolean hasWorkflowDefinitionLink(
119 long companyId, long groupId, String className)
120 throws PortalException, SystemException {
121
122 try {
123 getWorkflowDefinitionLink(companyId, groupId, className);
124
125 return true;
126 }
127 catch (NoSuchWorkflowDefinitionLinkException nswdle) {
128 return false;
129 }
130 }
131
132 public WorkflowDefinitionLink updateWorkflowDefinitionLink(
133 long userId, long companyId, long groupId, String className,
134 String workflowDefinitionName, int workflowDefinitionVersion)
135 throws PortalException, SystemException {
136
137 User user = userPersistence.findByPrimaryKey(userId);
138 long classNameId = PortalUtil.getClassNameId(className);
139 Date now = new Date();
140
141 WorkflowDefinitionLink workflowDefinitionLink =
142 workflowDefinitionLinkPersistence.fetchByG_C_C(
143 groupId, companyId, classNameId);
144
145 if (workflowDefinitionLink == null) {
146 workflowDefinitionLink = addWorkflowDefinitionLink(
147 userId, companyId, groupId, className, workflowDefinitionName,
148 workflowDefinitionVersion);
149 }
150
151 workflowDefinitionLink.setModifiedDate(now);
152 workflowDefinitionLink.setUserId(userId);
153 workflowDefinitionLink.setUserName(user.getFullName());
154 workflowDefinitionLink.setGroupId(groupId);
155 workflowDefinitionLink.setCompanyId(companyId);
156 workflowDefinitionLink.setClassNameId(classNameId);
157 workflowDefinitionLink.setWorkflowDefinitionName(
158 workflowDefinitionName);
159 workflowDefinitionLink.setWorkflowDefinitionVersion(
160 workflowDefinitionVersion);
161
162 workflowDefinitionLinkPersistence.update(workflowDefinitionLink, false);
163
164 return workflowDefinitionLink;
165 }
166
167 }