/* * 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.query; import static org.kie.internal.query.QueryParameterIdentifiers.EXTERNAL_ID_LIST; import static org.kie.internal.query.QueryParameterIdentifiers.LAST_VARIABLE_LIST; import static org.kie.internal.query.QueryParameterIdentifiers.OLD_VALUE_LIST; import static org.kie.internal.query.QueryParameterIdentifiers.VALUE_LIST; import static org.kie.internal.query.QueryParameterIdentifiers.VARIABLE_ID_LIST; import static org.kie.internal.query.QueryParameterIdentifiers.VARIABLE_INSTANCE_ID_LIST; import static org.kie.internal.query.QueryParameterIdentifiers.VAR_VALUE_ID_LIST; import static org.kie.internal.query.QueryParameterIdentifiers.VAR_VAL_SEPARATOR; import java.util.List; import org.jbpm.process.audit.JPAAuditLogService; import org.jbpm.query.jpa.data.QueryCriteria; import org.jbpm.query.jpa.data.QueryWhere; import org.kie.api.runtime.CommandExecutor; import org.kie.api.runtime.manager.audit.VariableInstanceLog; import org.kie.internal.query.ParametrizedQuery; import org.kie.internal.runtime.manager.audit.query.VariableInstanceLogQueryBuilder; public class VarInstLogQueryBuilderImpl extends AbstractAuditQueryBuilderImpl<VariableInstanceLogQueryBuilder, VariableInstanceLog> implements VariableInstanceLogQueryBuilder { public VarInstLogQueryBuilderImpl(CommandExecutor cmdExecutor ) { super(cmdExecutor); } public VarInstLogQueryBuilderImpl(JPAAuditLogService jpaAuditService) { super(jpaAuditService); } @Override public VariableInstanceLogQueryBuilder variableInstanceId( String... variableInstanceId ) { addObjectParameter(VARIABLE_INSTANCE_ID_LIST, "variable instance id", variableInstanceId); return this; } @Override public VariableInstanceLogQueryBuilder variableId( String... variableId ) { addObjectParameter(VARIABLE_ID_LIST, "variable id", variableId); return this; } @Override public VariableInstanceLogQueryBuilder value( String... value ) { addObjectParameter(VALUE_LIST, "value", value); return this; } @Override public VariableInstanceLogQueryBuilder oldValue( String... oldVvalue ) { addObjectParameter(OLD_VALUE_LIST, "old value", oldVvalue); return this; } @Override public VariableInstanceLogQueryBuilder variableValue( String variableId, String value ) { if( queryWhere.isRange() ) { throw new IllegalArgumentException("Range values are not supported for the .variableValue(..) method"); } if( variableId == null ) { throw new IllegalArgumentException("A null variable Id criteria is invalid." ); } if( value == null ) { throw new IllegalArgumentException("A null variable value criteria is invalid." ); } String varValStr = variableId.length() + VAR_VAL_SEPARATOR + variableId + VAR_VAL_SEPARATOR + value; addObjectParameter(VAR_VALUE_ID_LIST, "value for variable", varValStr); return this; } @Override public VariableInstanceLogQueryBuilder externalId( String... externalId ) { addObjectParameter(EXTERNAL_ID_LIST, "external id", externalId); return this; } @Override public VariableInstanceLogQueryBuilder last() { List<QueryCriteria> criteriaList = queryWhere.getCriteria(); QueryCriteria lastVariableInstanceLogCriteria = null; for( QueryCriteria criteria : criteriaList ) { if( LAST_VARIABLE_LIST.equals(criteria.getListId()) ) { lastVariableInstanceLogCriteria = criteria; break; } } if( lastVariableInstanceLogCriteria == null ) { queryWhere.addParameter(LAST_VARIABLE_LIST, true); } return this; } @Override protected Class<VariableInstanceLog> getResultType() { return VariableInstanceLog.class; } @Override protected Class getQueryType() { return org.jbpm.process.audit.VariableInstanceLog.class; } }