001
014
015 package com.liferay.portal.service.impl;
016
017 import com.liferay.portal.NoSuchWorkflowDefinitionLinkException;
018 import com.liferay.portal.kernel.exception.PortalException;
019 import com.liferay.portal.kernel.exception.SystemException;
020 import com.liferay.portal.kernel.workflow.WorkflowConstants;
021 import com.liferay.portal.kernel.workflow.WorkflowEngineManagerUtil;
022 import com.liferay.portal.model.Group;
023 import com.liferay.portal.model.User;
024 import com.liferay.portal.model.WorkflowDefinitionLink;
025 import com.liferay.portal.service.base.WorkflowDefinitionLinkLocalServiceBaseImpl;
026 import com.liferay.portal.util.PortalUtil;
027
028 import java.util.Date;
029
030
036 public class WorkflowDefinitionLinkLocalServiceImpl
037 extends WorkflowDefinitionLinkLocalServiceBaseImpl {
038
039 public WorkflowDefinitionLink addWorkflowDefinitionLink(
040 long userId, long companyId, long groupId, String className,
041 String workflowDefinitionName, int workflowDefinitionVersion)
042 throws PortalException, SystemException {
043
044 User user = userPersistence.findByPrimaryKey(userId);
045 long classNameId = PortalUtil.getClassNameId(className);
046 Date now = new Date();
047
048 long workflowDefinitionLinkId = counterLocalService.increment();
049
050 WorkflowDefinitionLink workflowDefinitionLink =
051 workflowDefinitionLinkPersistence.create(workflowDefinitionLinkId);
052
053 workflowDefinitionLink.setCreateDate(now);
054 workflowDefinitionLink.setModifiedDate(now);
055 workflowDefinitionLink.setUserId(userId);
056 workflowDefinitionLink.setUserName(user.getFullName());
057 workflowDefinitionLink.setGroupId(groupId);
058 workflowDefinitionLink.setCompanyId(companyId);
059 workflowDefinitionLink.setClassNameId(classNameId);
060 workflowDefinitionLink.setWorkflowDefinitionName(
061 workflowDefinitionName);
062 workflowDefinitionLink.setWorkflowDefinitionVersion(
063 workflowDefinitionVersion);
064
065 workflowDefinitionLinkPersistence.update(workflowDefinitionLink, false);
066
067 return workflowDefinitionLink;
068 }
069
070 public void deleteWorkflowDefinitionLink(
071 long companyId, long groupId, String className)
072 throws PortalException, SystemException {
073
074 try {
075 WorkflowDefinitionLink workflowDefinitionLink =
076 getWorkflowDefinitionLink(companyId, groupId, className, true);
077
078 deleteWorkflowDefinitionLink(workflowDefinitionLink);
079 }
080 catch (NoSuchWorkflowDefinitionLinkException nswdle) {
081 }
082 }
083
084 public WorkflowDefinitionLink getDefaultWorkflowDefinitionLink(
085 long companyId, String className)
086 throws PortalException, SystemException {
087
088 if (!WorkflowEngineManagerUtil.isDeployed()) {
089 throw new NoSuchWorkflowDefinitionLinkException();
090 }
091
092 long classNameId = PortalUtil.getClassNameId(className);
093
094 return workflowDefinitionLinkPersistence.findByG_C_C(
095 WorkflowConstants.DEFAULT_GROUP_ID, companyId, classNameId);
096 }
097
098 public WorkflowDefinitionLink getWorkflowDefinitionLink(
099 long companyId, long groupId, String className)
100 throws PortalException, SystemException {
101
102 return getWorkflowDefinitionLink(companyId, groupId, className, false);
103 }
104
105 public WorkflowDefinitionLink getWorkflowDefinitionLink(
106 long companyId, long groupId, String className, boolean strict)
107 throws PortalException, SystemException {
108
109 if (!WorkflowEngineManagerUtil.isDeployed()) {
110 throw new NoSuchWorkflowDefinitionLinkException();
111 }
112
113 long classNameId = PortalUtil.getClassNameId(className);
114
115 WorkflowDefinitionLink workflowDefinitionLink = null;
116
117 if (groupId > 0) {
118 Group group = groupLocalService.getGroup(groupId);
119
120 if (group.isLayout()) {
121 groupId = group.getParentGroupId();
122 }
123 }
124
125 workflowDefinitionLink = workflowDefinitionLinkPersistence.fetchByG_C_C(
126 groupId, companyId, classNameId);
127
128 if (!strict && (workflowDefinitionLink == null)) {
129 workflowDefinitionLink =
130 workflowDefinitionLinkPersistence.fetchByG_C_C(
131 WorkflowConstants.DEFAULT_GROUP_ID, companyId, classNameId);
132 }
133
134 if (workflowDefinitionLink == null) {
135 throw new NoSuchWorkflowDefinitionLinkException(
136 "No workflow for groupId=" + groupId + ", companyId=" +
137 companyId + " and classNameId=" + classNameId);
138 }
139
140 return workflowDefinitionLink;
141 }
142
143 public int getWorkflowDefinitionLinksCount(
144 long companyId, String workflowDefinitionName,
145 int workflowDefinitionVersion)
146 throws SystemException{
147
148 if (!WorkflowEngineManagerUtil.isDeployed()) {
149 return 0;
150 }
151
152 return workflowDefinitionLinkPersistence.countByC_W_W(
153 companyId, workflowDefinitionName, workflowDefinitionVersion);
154 }
155
156 public boolean hasWorkflowDefinitionLink(
157 long companyId, long groupId, String className)
158 throws PortalException, SystemException {
159
160 if (!WorkflowEngineManagerUtil.isDeployed()) {
161 return false;
162 }
163
164 try {
165 getWorkflowDefinitionLink(companyId, groupId, className);
166
167 return true;
168 }
169 catch (NoSuchWorkflowDefinitionLinkException nswdle) {
170 return false;
171 }
172 }
173
174 public WorkflowDefinitionLink updateWorkflowDefinitionLink(
175 long userId, long companyId, long groupId, String className,
176 String workflowDefinitionName, int workflowDefinitionVersion)
177 throws PortalException, SystemException {
178
179 User user = userPersistence.findByPrimaryKey(userId);
180 long classNameId = PortalUtil.getClassNameId(className);
181 Date now = new Date();
182
183 WorkflowDefinitionLink workflowDefinitionLink =
184 workflowDefinitionLinkPersistence.fetchByG_C_C(
185 groupId, companyId, classNameId);
186
187 if (workflowDefinitionLink == null) {
188 workflowDefinitionLink = addWorkflowDefinitionLink(
189 userId, companyId, groupId, className, workflowDefinitionName,
190 workflowDefinitionVersion);
191 }
192
193 workflowDefinitionLink.setModifiedDate(now);
194 workflowDefinitionLink.setUserId(userId);
195 workflowDefinitionLink.setUserName(user.getFullName());
196 workflowDefinitionLink.setGroupId(groupId);
197 workflowDefinitionLink.setCompanyId(companyId);
198 workflowDefinitionLink.setClassNameId(classNameId);
199 workflowDefinitionLink.setWorkflowDefinitionName(
200 workflowDefinitionName);
201 workflowDefinitionLink.setWorkflowDefinitionVersion(
202 workflowDefinitionVersion);
203
204 workflowDefinitionLinkPersistence.update(workflowDefinitionLink, false);
205
206 return workflowDefinitionLink;
207 }
208
209 }