/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jbpm.process.audit; import java.util.List; import org.jbpm.process.audit.command.AuditNodeInstanceLogQueryCommand; import org.jbpm.process.audit.command.AuditProcessInstanceLogQueryCommand; import org.jbpm.process.audit.command.AuditVariableInstanceLogQueryCommand; import org.jbpm.process.audit.command.ClearHistoryLogsCommand; import org.jbpm.process.audit.command.FindActiveProcessInstancesCommand; import org.jbpm.process.audit.command.FindNodeInstancesCommand; import org.jbpm.process.audit.command.FindProcessInstanceCommand; import org.jbpm.process.audit.command.FindProcessInstancesCommand; import org.jbpm.process.audit.command.FindSubProcessInstancesCommand; import org.jbpm.process.audit.command.FindVariableInstancesByNameCommand; import org.jbpm.process.audit.command.FindVariableInstancesCommand; import org.jbpm.process.audit.query.NodeInstLogQueryBuilderImpl; import org.jbpm.process.audit.query.NodeInstanceLogDeleteBuilderImpl; import org.jbpm.process.audit.query.ProcInstLogQueryBuilderImpl; import org.jbpm.process.audit.query.ProcessInstanceLogDeleteBuilderImpl; import org.jbpm.process.audit.query.VarInstLogQueryBuilderImpl; import org.jbpm.process.audit.query.VarInstanceLogDeleteBuilderImpl; import org.jbpm.query.jpa.data.QueryWhere; import org.kie.api.runtime.CommandExecutor; import org.kie.internal.runtime.manager.audit.query.NodeInstanceLogDeleteBuilder; import org.kie.internal.runtime.manager.audit.query.NodeInstanceLogQueryBuilder; import org.kie.internal.runtime.manager.audit.query.ProcessInstanceLogDeleteBuilder; import org.kie.internal.runtime.manager.audit.query.ProcessInstanceLogQueryBuilder; import org.kie.internal.runtime.manager.audit.query.VariableInstanceLogDeleteBuilder; import org.kie.internal.runtime.manager.audit.query.VariableInstanceLogQueryBuilder; public class CommandBasedAuditLogService implements AuditLogService { private CommandExecutor executor; public CommandBasedAuditLogService(CommandExecutor executor) { this.executor = executor; } @Override public List<ProcessInstanceLog> findProcessInstances() { return executor.execute(new FindProcessInstancesCommand()); } @Override public List<ProcessInstanceLog> findActiveProcessInstances() { return executor.execute(new FindActiveProcessInstancesCommand()); } @Override public List<ProcessInstanceLog> findProcessInstances(String processId) { return executor.execute(new FindProcessInstancesCommand(processId)); } @Override public List<ProcessInstanceLog> findActiveProcessInstances(String processId) { return executor.execute(new FindActiveProcessInstancesCommand(processId)); } @Override public ProcessInstanceLog findProcessInstance(long processInstanceId) { return executor.execute(new FindProcessInstanceCommand(processInstanceId)); } @Override public List<ProcessInstanceLog> findSubProcessInstances(long processInstanceId) { return executor.execute(new FindSubProcessInstancesCommand(processInstanceId)); } @Override public List<NodeInstanceLog> findNodeInstances(long processInstanceId) { return executor.execute(new FindNodeInstancesCommand(processInstanceId)); } @Override public List<NodeInstanceLog> findNodeInstances(long processInstanceId, String nodeId) { return executor.execute(new FindNodeInstancesCommand(processInstanceId, nodeId)); } @Override public List<VariableInstanceLog> findVariableInstances(long processInstanceId) { return executor.execute(new FindVariableInstancesCommand(processInstanceId)); } @Override public List<VariableInstanceLog> findVariableInstances(long processInstanceId, String variableId) { return executor.execute(new FindVariableInstancesCommand(processInstanceId, variableId)); } @Override public List<VariableInstanceLog> findVariableInstancesByName(String variableId, boolean activeProcesses) { return executor.execute(new FindVariableInstancesByNameCommand(variableId, activeProcesses)); } @Override public List<VariableInstanceLog> findVariableInstancesByNameAndValue(String variableId, String value, boolean activeProcesses) { return executor.execute(new FindVariableInstancesByNameCommand(variableId, value, activeProcesses)); } @Override public NodeInstanceLogQueryBuilder nodeInstanceLogQuery() { return new NodeInstLogQueryBuilderImpl(executor); } @Override public VariableInstanceLogQueryBuilder variableInstanceLogQuery() { return new VarInstLogQueryBuilderImpl(executor); } @Override public ProcessInstanceLogQueryBuilder processInstanceLogQuery() { return new ProcInstLogQueryBuilderImpl(executor); } @Override public ProcessInstanceLogDeleteBuilder processInstanceLogDelete() { return new ProcessInstanceLogDeleteBuilderImpl(executor); } @Override public NodeInstanceLogDeleteBuilder nodeInstanceLogDelete() { return new NodeInstanceLogDeleteBuilderImpl(executor); } @Override public VariableInstanceLogDeleteBuilder variableInstanceLogDelete() { return new VarInstanceLogDeleteBuilderImpl(executor); } @Override @SuppressWarnings("unchecked") public <T, R> List<R> queryLogs( QueryWhere queryWhere, Class<T> queryClass, Class<R> resultClass ) { if( queryClass.equals(NodeInstanceLog.class) ) { return (List<R>) executor.execute(new AuditNodeInstanceLogQueryCommand(queryWhere)); } else if( queryClass.equals(ProcessInstanceLog.class) ) { return (List<R>) executor.execute(new AuditProcessInstanceLogQueryCommand(queryWhere)); } else if( queryClass.equals(VariableInstanceLog.class) ) { return (List<R>) executor.execute(new AuditVariableInstanceLogQueryCommand(queryWhere)); } else { String type = queryClass == null ? "null" : queryClass.getName(); throw new IllegalArgumentException("Unknown type for query:" + type ); } } @Override public void clear() { executor.execute(new ClearHistoryLogsCommand()); } @Override public void dispose() { // no-op } }