
org.ow2.bonita.facade.impl.QueryDefinitionAPIImpl Maven / Gradle / Ivy
/**
* Copyright (C) 2006 Bull S. A. S.
* Bull, Rue Jean Jaures, B.P.68, 78340, Les Clayes-sous-Bois
* 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
* version 2.1 of the License.
* 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.
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
* Floor, Boston, MA 02110-1301, USA.
*
* Modified by Matthieu Chaffotte - BonitaSoft S.A.
**/
package org.ow2.bonita.facade.impl;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.ow2.bonita.facade.QueryDefinitionAPI;
import org.ow2.bonita.facade.def.InternalProcessDefinition;
import org.ow2.bonita.facade.def.element.AttachmentDefinition;
import org.ow2.bonita.facade.def.element.BusinessArchive;
import org.ow2.bonita.facade.def.element.impl.BusinessArchiveImpl;
import org.ow2.bonita.facade.def.majorElement.ActivityDefinition;
import org.ow2.bonita.facade.def.majorElement.DataFieldDefinition;
import org.ow2.bonita.facade.def.majorElement.ParticipantDefinition;
import org.ow2.bonita.facade.def.majorElement.ProcessDefinition;
import org.ow2.bonita.facade.def.majorElement.ProcessDefinition.ProcessState;
import org.ow2.bonita.facade.def.majorElement.impl.ActivityDefinitionImpl;
import org.ow2.bonita.facade.def.majorElement.impl.DataFieldDefinitionImpl;
import org.ow2.bonita.facade.def.majorElement.impl.ParticipantDefinitionImpl;
import org.ow2.bonita.facade.def.majorElement.impl.ProcessDefinitionImpl;
import org.ow2.bonita.facade.exception.ActivityDefNotFoundException;
import org.ow2.bonita.facade.exception.ActivityNotFoundException;
import org.ow2.bonita.facade.exception.DataFieldNotFoundException;
import org.ow2.bonita.facade.exception.DocumentNotFoundException;
import org.ow2.bonita.facade.exception.ParticipantNotFoundException;
import org.ow2.bonita.facade.exception.ProcessNotFoundException;
import org.ow2.bonita.facade.paging.ProcessDefinitionCriterion;
import org.ow2.bonita.facade.privilege.Rule.RuleType;
import org.ow2.bonita.facade.runtime.InitialAttachment;
import org.ow2.bonita.facade.runtime.impl.InitialAttachmentImpl;
import org.ow2.bonita.facade.uuid.ActivityDefinitionUUID;
import org.ow2.bonita.facade.uuid.ParticipantDefinitionUUID;
import org.ow2.bonita.facade.uuid.ProcessDefinitionUUID;
import org.ow2.bonita.light.LightProcessDefinition;
import org.ow2.bonita.light.impl.LightProcessDefinitionImpl;
import org.ow2.bonita.services.Document;
import org.ow2.bonita.services.DocumentationManager;
import org.ow2.bonita.services.LargeDataRepository;
import org.ow2.bonita.util.BonitaRuntimeException;
import org.ow2.bonita.util.DocumentService;
import org.ow2.bonita.util.EnvTool;
import org.ow2.bonita.util.Misc;
public class QueryDefinitionAPIImpl implements QueryDefinitionAPI {
private final String queryList;
protected QueryDefinitionAPIImpl(final String queryList) {
this.queryList = queryList;
}
private String getQueryList() {
return this.queryList;
}
private Set getProcessCopy(final Set src) {
final Set result = new HashSet();
if (src != null) {
for (final ProcessDefinition p : src) {
result.add(new ProcessDefinitionImpl(p));
}
}
return result;
}
private Set getActivityCopy(final Set src) {
final Set result = new HashSet();
if (src != null) {
for (final ActivityDefinition p : src) {
result.add(new ActivityDefinitionImpl(p));
}
}
return result;
}
private Set getParticipantCopy(final Set src) {
final Set result = new HashSet();
if (src != null) {
for (final ParticipantDefinition p : src) {
result.add(new ParticipantDefinitionImpl(p));
}
}
return result;
}
@Override
public List getProcesses(final int fromIndex, final int pageSize) {
final List result = new ArrayList();
if (pageSize <= 0) {
return result;
}
final List processes = getIndexedProcesses(fromIndex, pageSize,
ProcessDefinitionCriterion.DEFAULT);
for (final ProcessDefinition record : processes) {
result.add(new ProcessDefinitionImpl(record));
}
return result;
}
@Override
public List getLightProcesses(final int fromIndex, final int pageSize) {
final List result = new ArrayList();
if (pageSize <= 0) {
return result;
}
final List processes = getIndexedProcesses(fromIndex, pageSize,
ProcessDefinitionCriterion.DEFAULT);
for (final ProcessDefinition record : processes) {
result.add(new LightProcessDefinitionImpl(record));
}
return result;
}
@Override
public List getLightProcesses(final int fromIndex, final int pageSize,
final ProcessDefinitionCriterion pagingCriterion) {
final List result = new ArrayList();
if (pageSize <= 0) {
return result;
}
final List processes = getIndexedProcesses(fromIndex, pageSize, pagingCriterion);
for (final ProcessDefinition record : processes) {
result.add(new LightProcessDefinitionImpl(record));
}
return result;
}
private List getIndexedProcesses(final int fromIndex, final int pageSize,
final ProcessDefinitionCriterion pagingCriterion) {
final boolean access = EnvTool.isRestrictedApplicationAcces();
List processes = new ArrayList();
if (access) {
final String applicationName = EnvTool.getApplicationAccessName();
if (applicationName != null) {
final Set visibleProcessUUIDs = FacadeUtil.getAllowedProcessUUIDsFor(applicationName,
RuleType.PROCESS_READ);
if (!visibleProcessUUIDs.isEmpty()) {
processes = EnvTool.getAllQueriers(getQueryList()).getProcesses(visibleProcessUUIDs, fromIndex, pageSize,
pagingCriterion);
}
}
} else {
processes = EnvTool.getAllQueriers(getQueryList()).getProcesses(fromIndex, pageSize, pagingCriterion);
}
return processes;
}
@Override
public int getNumberOfProcesses() {
final boolean access = EnvTool.isRestrictedApplicationAcces();
if (!access) {
return EnvTool.getAllQueriers(getQueryList()).getNumberOfProcesses();
} else {
final String applicationName = EnvTool.getApplicationAccessName();
if (applicationName != null) {
final Set visibleProcessUUIDs = FacadeUtil.getAllowedProcessUUIDsFor(applicationName,
RuleType.PROCESS_READ);
return visibleProcessUUIDs.size();
} else {
return 0;
}
}
}
@Override
public BusinessArchive getBusinessArchive(final ProcessDefinitionUUID processDefinitionUUID)
throws ProcessNotFoundException {
Misc.checkArgsNotNull(processDefinitionUUID);
final LargeDataRepository ldr = EnvTool.getLargeDataRepository();
final Map resources = ldr.getData(byte[].class,
Misc.getBusinessArchiveCategories(processDefinitionUUID));
return new BusinessArchiveImpl(processDefinitionUUID, resources);
}
private Set getDataFieldCopy(final Set src) {
final Set result = new HashSet();
if (src != null) {
for (final DataFieldDefinition p : src) {
result.add(new DataFieldDefinitionImpl(p));
}
}
return result;
}
@Override
public ProcessDefinition getLastProcess(final String processId) throws ProcessNotFoundException {
FacadeUtil.checkArgsNotNull(processId);
final boolean access = EnvTool.isRestrictedApplicationAcces();
ProcessDefinition last = null;
if (access) {
final String applicationName = EnvTool.getApplicationAccessName();
if (applicationName == null) {
throw new ProcessNotFoundException("bai_QDAPII_2", processId);
}
final Set visibleProcessUUIDs = FacadeUtil.getAllowedProcessUUIDsFor(applicationName,
RuleType.PROCESS_READ);
if (visibleProcessUUIDs.isEmpty()) {
throw new ProcessNotFoundException("bai_QDAPII_2", processId);
}
final Set definitionUUIDs = new HashSet();
for (final ProcessDefinitionUUID processUUID : visibleProcessUUIDs) {
final ProcessDefinition definition = EnvTool.getAllQueriers(getQueryList()).getProcess(processUUID);
if (processId.equals(definition.getName())) {
definitionUUIDs.add(processUUID);
}
}
last = EnvTool.getAllQueriers(getQueryList()).getLastDeployedProcess(definitionUUIDs, ProcessState.ENABLED);
} else {
last = EnvTool.getAllQueriers(getQueryList()).getLastDeployedProcess(processId, ProcessState.ENABLED);
}
if (last == null) {
throw new ProcessNotFoundException("bai_QDAPII_2", processId);
}
return new ProcessDefinitionImpl(last);
}
@Override
public LightProcessDefinition getLastLightProcess(final String processId) throws ProcessNotFoundException {
FacadeUtil.checkArgsNotNull(processId);
final boolean access = EnvTool.isRestrictedApplicationAcces();
ProcessDefinition last = null;
if (access) {
final String applicationName = EnvTool.getApplicationAccessName();
if (applicationName == null) {
throw new ProcessNotFoundException("bai_QDAPII_2", processId);
}
final Set visibleProcessUUIDs = FacadeUtil.getAllowedProcessUUIDsFor(applicationName,
RuleType.PROCESS_READ);
if (visibleProcessUUIDs.isEmpty()) {
throw new ProcessNotFoundException("bai_QDAPII_2", processId);
}
final Set definitionUUIDs = new HashSet();
for (final ProcessDefinitionUUID processUUID : visibleProcessUUIDs) {
final ProcessDefinition definition = EnvTool.getAllQueriers(getQueryList()).getProcess(processUUID);
if (processId.equals(definition.getName())) {
definitionUUIDs.add(processUUID);
}
}
last = EnvTool.getAllQueriers(getQueryList()).getLastDeployedProcess(definitionUUIDs, ProcessState.ENABLED);
} else {
last = EnvTool.getAllQueriers(getQueryList()).getLastDeployedProcess(processId, ProcessState.ENABLED);
}
if (last == null) {
throw new ProcessNotFoundException("bai_QDAPII_2", processId);
}
return new LightProcessDefinitionImpl(last);
}
private InternalProcessDefinition getInternalProcess(final ProcessDefinitionUUID processUUID)
throws ProcessNotFoundException {
FacadeUtil.checkArgsNotNull(processUUID);
final InternalProcessDefinition process = EnvTool.getAllQueriers(getQueryList()).getProcess(processUUID);
if (process == null) {
throw new ProcessNotFoundException("bai_QDAPII_5", processUUID);
}
return process;
}
@Override
public ProcessDefinition getProcess(final ProcessDefinitionUUID processUUID) throws ProcessNotFoundException {
final InternalProcessDefinition process = getInternalProcess(processUUID);
return new ProcessDefinitionImpl(process);
}
@Override
public LightProcessDefinition getLightProcess(final ProcessDefinitionUUID processUUID)
throws ProcessNotFoundException {
FacadeUtil.checkArgsNotNull(processUUID);
final ProcessDefinition process = EnvTool.getAllQueriers(getQueryList()).getProcess(processUUID);
if (process == null) {
throw new ProcessNotFoundException("bai_QDAPII_5", processUUID);
}
return new LightProcessDefinitionImpl(process);
}
@Override
public ProcessDefinition getProcess(final String processId, final String processVersion)
throws ProcessNotFoundException {
FacadeUtil.checkArgsNotNull(processId, processVersion);
final ProcessDefinition process = EnvTool.getAllQueriers(getQueryList()).getProcess(processId, processVersion);
if (process == null) {
throw new ProcessNotFoundException(processId, processVersion);
}
final boolean access = EnvTool.isRestrictedApplicationAcces();
if (access) {
final String applicationName = EnvTool.getApplicationAccessName();
if (applicationName == null) {
throw new ProcessNotFoundException(processId, processVersion);
}
final Set visibleProcessUUIDs = FacadeUtil.getAllowedProcessUUIDsFor(applicationName,
RuleType.PROCESS_READ);
if (visibleProcessUUIDs == null || !visibleProcessUUIDs.contains(process.getUUID())) {
throw new ProcessNotFoundException(processId, processVersion);
}
}
return new ProcessDefinitionImpl(process);
}
@Override
public Set getProcessActivities(final ProcessDefinitionUUID processUUID)
throws ProcessNotFoundException {
FacadeUtil.checkArgsNotNull(processUUID);
final ProcessDefinition process = EnvTool.getAllQueriers(getQueryList()).getProcess(processUUID);
if (process == null) {
throw new ProcessNotFoundException("bai_QDAPII_7", processUUID);
}
final Set activities = process.getActivities();
return getActivityCopy(activities);
}
@Override
public ActivityDefinition getProcessActivity(final ProcessDefinitionUUID processUUID, final String activityId)
throws ProcessNotFoundException, ActivityNotFoundException {
FacadeUtil.checkArgsNotNull(processUUID, activityId);
final ProcessDefinition process = EnvTool.getAllQueriers(getQueryList()).getProcess(processUUID);
if (process == null) {
throw new ProcessNotFoundException("bai_QDAPII_8", processUUID);
}
final Set activities = process.getActivities();
if (activities != null) {
for (final ActivityDefinition activityDefinition : activities) {
if (activityDefinition.getName().equals(activityId)) {
return new ActivityDefinitionImpl(activityDefinition);
}
}
}
throw new ActivityNotFoundException("bai_QDAPII_9", processUUID, activityId);
}
@Override
public ParticipantDefinition getProcessParticipant(final ProcessDefinitionUUID processUUID, final String participantId)
throws ProcessNotFoundException, ParticipantNotFoundException {
FacadeUtil.checkArgsNotNull(processUUID, participantId);
final Set participants = getProcessParticipants(processUUID);
if (participants != null) {
for (final ParticipantDefinition participant : participants) {
if (participant.getName().equals(participantId)) {
return new ParticipantDefinitionImpl(participant);
}
}
}
throw new ParticipantNotFoundException("bai_QDAPII_10", participantId, processUUID);
}
@Override
public Set getProcessParticipants(final ProcessDefinitionUUID processUUID)
throws ProcessNotFoundException {
final InternalProcessDefinition process = getInternalProcess(processUUID);
final Set participants = process.getParticipants();
return getParticipantCopy(participants);
}
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public Set getProcesses() {
final boolean access = EnvTool.isRestrictedApplicationAcces();
Set processes = new HashSet();
if (access) {
final String applicationName = EnvTool.getApplicationAccessName();
if (applicationName != null) {
final Set visibleProcessUUIDs = FacadeUtil.getAllowedProcessUUIDsFor(applicationName,
RuleType.PROCESS_READ);
if (visibleProcessUUIDs != null && !visibleProcessUUIDs.isEmpty()) {
processes = EnvTool.getAllQueriers(getQueryList()).getProcesses(visibleProcessUUIDs);
}
}
} else {
processes = EnvTool.getAllQueriers(getQueryList()).getProcesses();
}
return getProcessCopy((Set) processes);
}
@Override
public Set getLightProcesses() {
final boolean access = EnvTool.isRestrictedApplicationAcces();
Set processes = new HashSet();
if (access) {
final String applicationName = EnvTool.getApplicationAccessName();
if (applicationName != null) {
final Set visibleProcessUUIDs = FacadeUtil.getAllowedProcessUUIDsFor(applicationName,
RuleType.PROCESS_READ);
if (visibleProcessUUIDs != null && !visibleProcessUUIDs.isEmpty()) {
processes = EnvTool.getAllQueriers(getQueryList()).getProcesses(visibleProcessUUIDs);
}
}
} else {
processes = EnvTool.getAllQueriers(getQueryList()).getProcesses();
}
final Set result = new HashSet();
for (final ProcessDefinition p : processes) {
result.add(new LightProcessDefinitionImpl(p));
}
return result;
}
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public Set getProcesses(final String processId) {
FacadeUtil.checkArgsNotNull(processId);
final boolean access = EnvTool.isRestrictedApplicationAcces();
Set processes = new HashSet();
if (access) {
final String applicationName = EnvTool.getApplicationAccessName();
if (applicationName != null) {
final Set visibleProcessUUIDs = FacadeUtil.getAllowedProcessUUIDsFor(applicationName,
RuleType.PROCESS_READ);
if (visibleProcessUUIDs != null && !visibleProcessUUIDs.isEmpty()) {
final Set definitionUUIDs = new HashSet();
for (final ProcessDefinitionUUID processUUID : visibleProcessUUIDs) {
final ProcessDefinition definition = EnvTool.getAllQueriers(getQueryList()).getProcess(processUUID);
if (processId.equals(definition.getName())) {
definitionUUIDs.add(processUUID);
}
}
processes = EnvTool.getAllQueriers(getQueryList()).getProcesses(definitionUUIDs);
}
}
} else {
processes = EnvTool.getAllQueriers(getQueryList()).getProcesses(processId);
}
return getProcessCopy((Set) processes);
}
@Override
public ParticipantDefinitionUUID getProcessParticipantId(final ProcessDefinitionUUID processUUID,
final String participantName) throws ProcessNotFoundException {
FacadeUtil.checkArgsNotNull(processUUID, participantName);
final Set participants = getProcessParticipants(processUUID);
if (participants != null) {
for (final ParticipantDefinition participant : participants) {
if (participantName.equals(participant.getName())) {
return participant.getUUID();
}
}
}
return null;
}
@Override
public ActivityDefinitionUUID getProcessActivityId(final ProcessDefinitionUUID processUUID, final String activityName)
throws ProcessNotFoundException {
FacadeUtil.checkArgsNotNull(processUUID, activityName);
final Set activities = getProcessActivities(processUUID);
if (activities != null) {
for (final ActivityDefinition activity : activities) {
if (activityName.equals(activity.getName())) {
return activity.getUUID();
}
}
}
return null;
}
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public Set getProcesses(final String processId, final ProcessDefinition.ProcessState processState) {
FacadeUtil.checkArgsNotNull(processId, processState);
final boolean access = EnvTool.isRestrictedApplicationAcces();
Set processes = new HashSet();
if (access) {
final String applicationName = EnvTool.getApplicationAccessName();
if (applicationName != null) {
final Set visibleProcessUUIDs = FacadeUtil.getAllowedProcessUUIDsFor(applicationName,
RuleType.PROCESS_READ);
if (visibleProcessUUIDs != null && !visibleProcessUUIDs.isEmpty()) {
final Set definitionUUIDs = new HashSet();
for (final ProcessDefinitionUUID processUUID : visibleProcessUUIDs) {
final ProcessDefinition definition = EnvTool.getAllQueriers(getQueryList()).getProcess(processUUID);
if (processId.equals(definition.getName())) {
definitionUUIDs.add(processUUID);
}
}
processes = EnvTool.getAllQueriers(getQueryList()).getProcesses(definitionUUIDs, processState);
}
}
} else {
processes = EnvTool.getAllQueriers(getQueryList()).getProcesses(processId, processState);
}
return getProcessCopy((Set) processes);
}
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public Set getProcesses(final ProcessDefinition.ProcessState processState) {
FacadeUtil.checkArgsNotNull(processState);
final boolean access = EnvTool.isRestrictedApplicationAcces();
Set processes = new HashSet();
if (access) {
final String applicationName = EnvTool.getApplicationAccessName();
if (applicationName != null) {
final Set visibleProcessUUIDs = FacadeUtil.getAllowedProcessUUIDsFor(applicationName,
RuleType.PROCESS_READ);
if (visibleProcessUUIDs != null && !visibleProcessUUIDs.isEmpty()) {
final Set definitionUUIDs = new HashSet();
for (final ProcessDefinitionUUID processUUID : visibleProcessUUIDs) {
definitionUUIDs.add(processUUID);
}
processes = EnvTool.getAllQueriers(getQueryList()).getProcesses(definitionUUIDs, processState);
}
}
} else {
processes = EnvTool.getAllQueriers(getQueryList()).getProcesses(processState);
}
return getProcessCopy((Set) processes);
}
@Override
public Set getLightProcesses(final ProcessState processState) {
FacadeUtil.checkArgsNotNull(processState);
final boolean access = EnvTool.isRestrictedApplicationAcces();
Set processes = new HashSet();
if (access) {
final String applicationName = EnvTool.getApplicationAccessName();
if (applicationName != null) {
final Set visibleProcessUUIDs = FacadeUtil.getAllowedProcessUUIDsFor(applicationName,
RuleType.PROCESS_READ);
if (visibleProcessUUIDs != null && !visibleProcessUUIDs.isEmpty()) {
final Set definitionUUIDs = new HashSet();
for (final ProcessDefinitionUUID processUUID : visibleProcessUUIDs) {
definitionUUIDs.add(processUUID);
}
processes = EnvTool.getAllQueriers(getQueryList()).getProcesses(definitionUUIDs, processState);
}
}
} else {
processes = EnvTool.getAllQueriers(getQueryList()).getProcesses(processState);
}
final Set result = new HashSet();
for (final ProcessDefinition p : processes) {
result.add(new LightProcessDefinitionImpl(p));
}
return result;
}
@Override
public DataFieldDefinition getProcessDataField(final ProcessDefinitionUUID processDefinitionUUID,
final String dataFieldId) throws ProcessNotFoundException, DataFieldNotFoundException {
FacadeUtil.checkArgsNotNull(processDefinitionUUID, dataFieldId);
final Set datafields = getProcessDataFields(processDefinitionUUID);
if (datafields != null) {
for (final DataFieldDefinition datefield : datafields) {
if (datefield.getName().equals(dataFieldId)) {
return new DataFieldDefinitionImpl(datefield);
}
}
}
throw new DataFieldNotFoundException("bai_QDAPII_14", dataFieldId, processDefinitionUUID);
}
@Override
public Set getProcessDataFields(final ProcessDefinitionUUID processDefinitionUUID)
throws ProcessNotFoundException {
final InternalProcessDefinition process = getInternalProcess(processDefinitionUUID);
final Set datafields = process.getDataFields();
return getDataFieldCopy(datafields);
}
@Override
public Set getActivityDataFields(final ActivityDefinitionUUID activityDefinitionUUID)
throws ActivityDefNotFoundException {
FacadeUtil.checkArgsNotNull(activityDefinitionUUID);
final ActivityDefinition activity = EnvTool.getAllQueriers(getQueryList()).getActivity(activityDefinitionUUID);
if (activity == null) {
throw new ActivityDefNotFoundException("bai_QDAPII_16", activityDefinitionUUID);
}
final Set datafields = activity.getDataFields();
return getDataFieldCopy(datafields);
}
@Override
public DataFieldDefinition getActivityDataField(final ActivityDefinitionUUID activityDefinitionUUID,
final String dataFieldId) throws ActivityDefNotFoundException, DataFieldNotFoundException {
FacadeUtil.checkArgsNotNull(activityDefinitionUUID);
final ActivityDefinition activity = EnvTool.getAllQueriers(getQueryList()).getActivity(activityDefinitionUUID);
if (activity == null) {
throw new ActivityDefNotFoundException("bai_QDAPII_17", activityDefinitionUUID);
}
final Set datafields = activity.getDataFields();
if (datafields != null) {
for (final DataFieldDefinition datefield : datafields) {
if (datefield.getName().equals(dataFieldId)) {
return new DataFieldDefinitionImpl(datefield);
}
}
}
throw new DataFieldNotFoundException("bai_QDAPII_18", dataFieldId, activityDefinitionUUID);
}
@Override
public String getProcessMetaData(final ProcessDefinitionUUID uuid, final String key) throws ProcessNotFoundException {
FacadeUtil.checkArgsNotNull(uuid, key);
final ProcessDefinition process = EnvTool.getAllQueriers(getQueryList()).getProcess(uuid);
if (process == null) {
throw new ProcessNotFoundException("bai_QDAPII_19", uuid);
}
return process.getAMetaData(key);
}
private InitialAttachment getProcessAttachment(final DocumentationManager manager,
final ProcessDefinitionUUID processUUID, final AttachmentDefinition attachment) {
final List documents = DocumentService.getDocuments(manager, processUUID, attachment.getName());
byte[] content = null;
if (!documents.isEmpty()) {
try {
content = manager.getContent(documents.get(0));
} catch (final DocumentNotFoundException e) {
throw new BonitaRuntimeException(e);
}
}
return new InitialAttachmentImpl(attachment, content);
}
@Override
public InitialAttachment getProcessAttachment(final ProcessDefinitionUUID processUUID, final String attachmentName)
throws ProcessNotFoundException {
final InternalProcessDefinition process = getInternalProcess(processUUID);
final AttachmentDefinition attachment = process.getAttachment(attachmentName);
if (attachment == null) {
return null;
}
final DocumentationManager manager = EnvTool.getDocumentationManager();
return getProcessAttachment(manager, processUUID, attachment);
}
@Override
public Set getProcessAttachments(final ProcessDefinitionUUID processUUID)
throws ProcessNotFoundException {
final InternalProcessDefinition process = getInternalProcess(processUUID);
final Map processAttachments = process.getAttachments();
final Set attachments = new HashSet();
if (!processAttachments.isEmpty()) {
final DocumentationManager manager = EnvTool.getDocumentationManager();
for (final AttachmentDefinition attachment : processAttachments.values()) {
final InitialAttachment attach = getProcessAttachment(manager, processUUID, attachment);
attachments.add(attach);
}
}
return attachments;
}
@Override
public AttachmentDefinition getAttachmentDefinition(final ProcessDefinitionUUID processUUID,
final String attachmentName) throws ProcessNotFoundException {
final InternalProcessDefinition process = getInternalProcess(processUUID);
return process.getAttachment(attachmentName);
}
@Override
public Set getAttachmentDefinitions(final ProcessDefinitionUUID processUUID)
throws ProcessNotFoundException {
final InternalProcessDefinition process = getInternalProcess(processUUID);
final Map processAttachments = process.getAttachments();
final Set attachments = new HashSet();
if (!processAttachments.isEmpty()) {
for (final Entry processAttachment : processAttachments.entrySet()) {
attachments.add(processAttachment.getValue());
}
}
return attachments;
}
@Override
public byte[] getResource(final ProcessDefinitionUUID definitionUUID, final String resourcePath)
throws ProcessNotFoundException {
getInternalProcess(definitionUUID);
final ClassLoader classLoader = EnvTool.getClassDataLoader().getProcessClassLoader(definitionUUID);
final InputStream in = classLoader.getResourceAsStream(resourcePath);
byte[] resource = null;
if (in != null) {
try {
resource = Misc.getAllContentFrom(in);
in.close();
} catch (final IOException e) {
}
}
return resource;
}
@Override
public Set getLightProcesses(final Set processUUIDs)
throws ProcessNotFoundException {
FacadeUtil.checkArgsNotNull(processUUIDs);
final Set processes = EnvTool.getAllQueriers(getQueryList()).getProcesses(processUUIDs);
final Set result = new HashSet();
for (final ProcessDefinition p : processes) {
result.add(new LightProcessDefinitionImpl(p));
}
return result;
}
@Override
public List getLightProcesses(final Set processUUIDs,
final int fromIndex, final int pageSize, final ProcessDefinitionCriterion pagingCriterion) {
FacadeUtil.checkArgsNotNull(processUUIDs);
if (processUUIDs.isEmpty()) {
return Collections.emptyList();
}
final List processes = EnvTool.getAllQueriers(getQueryList()).getProcesses(processUUIDs,
fromIndex, pageSize, pagingCriterion);
final List result = new ArrayList();
for (final ProcessDefinition p : processes) {
result.add(new LightProcessDefinitionImpl(p));
}
return result;
}
@Override
public List getAllLightProcessesExcept(final Set processUUIDs,
final int fromIndex, final int pageSize) {
if (processUUIDs == null || processUUIDs.isEmpty()) {
return getLightProcesses(fromIndex, pageSize);
} else {
final List processes = EnvTool.getAllQueriers(getQueryList()).getProcessesExcept(
processUUIDs, fromIndex, pageSize);
final List result = new ArrayList();
for (final ProcessDefinition p : processes) {
result.add(new LightProcessDefinitionImpl(p));
}
return result;
}
}
@Override
public List getAllLightProcessesExcept(final Set processUUIDs,
final int fromIndex, final int pageSize, final ProcessDefinitionCriterion pagingCriterion) {
if (processUUIDs == null || processUUIDs.isEmpty()) {
return getLightProcesses(fromIndex, pageSize, pagingCriterion);
} else {
final List processes = EnvTool.getAllQueriers(getQueryList()).getProcessesExcept(
processUUIDs, fromIndex, pageSize, pagingCriterion);
final List result = new ArrayList();
for (final ProcessDefinition p : processes) {
result.add(new LightProcessDefinitionImpl(p));
}
return result;
}
}
@Override
public Set getProcessUUIDs(final String category) {
FacadeUtil.checkArgsNotNull(category);
if (category.trim().length() == 0) {
throw new IllegalArgumentException();
} else {
final Set processUUIDs = EnvTool.getAllQueriers(getQueryList())
.getProcessUUIDsFromCategory(category);
final Set result = new HashSet();
for (final ProcessDefinitionUUID uuid : processUUIDs) {
result.add(new ProcessDefinitionUUID(uuid));
}
return result;
}
}
@Override
public Set getProcessTaskUUIDs(final ProcessDefinitionUUID defintionUUID)
throws ProcessNotFoundException {
final boolean exist = EnvTool.getAllQueriers(getQueryList()).processExists(defintionUUID);
if (!exist) {
throw new ProcessNotFoundException("bai_QDAPII_19", defintionUUID);
}
return EnvTool.getAllQueriers(getQueryList()).getProcessTaskUUIDs(defintionUUID);
}
@Override
public Date getMigrationDate(final ProcessDefinitionUUID processUUID) throws ProcessNotFoundException {
FacadeUtil.checkArgsNotNull(processUUID);
final InternalProcessDefinition process = EnvTool.getAllQueriers(getQueryList()).getProcess(processUUID);
if (process == null) {
throw new ProcessNotFoundException("bai_QDAPII_5", processUUID);
}
return process.getMigrationDate();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy