package org.fireflow.engine.modules.persistence.nutz;
import java.util.List;
import org.fireflow.pvm.kernel.OperationContextName;
import org.fireflow.pvm.kernel.Token;
import org.fireflow.pvm.kernel.TokenProperty;
import org.fireflow.pvm.kernel.TokenState;
import org.fireflow.pvm.kernel.impl.TokenHistory;
import org.fireflow.pvm.kernel.impl.TokenImpl;
import org.nutz.dao.Cnd;
public class TokenPersisterNutzImpl extends AbsPersisterNutzImpl implements
org.fireflow.engine.modules.persistence.TokenPersister {
public void deleteAllTokens() {
dao().clear(TokenImpl.class);
}
public Token findParentToken(Token token) {
String pid = token.getParentTokenId();
if (pid==null || pid.trim().equals("")){
return null;
}
return this.fetch(TokenImpl.class, pid);
}
public List<Token> findChildTokens(Token token) {
List result = dao().query(TokenImpl.class, Cnd.where(TokenProperty.PARENT_TOKEN_ID.getPropertyName(),
"=",token.getId()));
return (java.util.List<Token>)result;
}
public List<Token> findChildTokens4Compensation(Token token) {
Cnd cnd = Cnd.where(TokenProperty.PARENT_TOKEN_ID.getPropertyName(),"=",token.getId())
.and(TokenProperty.OPERATION_CONTEXT_NAME.getPropertyName(),"=", OperationContextName.NORMAL);
cnd.getOrderBy().desc(TokenProperty.STEP_NUMBER.getPropertyName());
List result = dao().query(TokenImpl.class, cnd );
return (java.util.List<Token>)result;
}
public int countAliveToken(String processInstanceId, String nodeId,
OperationContextName operationContextName) {
Cnd cnd = Cnd.where(TokenProperty.PROCESS_INSTANCE_ID.getPropertyName(),"=",processInstanceId)
.and(TokenProperty.ELEMENT_ID.getPropertyName(),"=", nodeId)
.and(TokenProperty.OPERATION_CONTEXT_NAME.getPropertyName(),"=", operationContextName)
.and(TokenProperty.STATE.getPropertyName(),"<",TokenState.DELIMITER);
return dao().count(TokenImpl.class, cnd);
}
public List<Token> findSiblings(Token token) {
Cnd cnd = Cnd.where(TokenProperty.PROCESS_INSTANCE_ID.getPropertyName(),"=", token.getProcessInstanceId())
.and(TokenProperty.ELEMENT_ID.getPropertyName(),"=", token.getElementId())
.and(TokenProperty.OPERATION_CONTEXT_NAME.getPropertyName(),"=", token.getOperationContextName())
.and(TokenProperty.STATE.getPropertyName(),"<",TokenState.DELIMITER);
List result = dao().query(TokenImpl.class, cnd);
return (List<Token>)result;
}
public List<Token> findAttachedTokens(Token token) {
Cnd cnd = Cnd.where(TokenProperty.ATTACHED_TO_TOKEN.getPropertyName(),"=",token.getId());
List result = dao().query(TokenImpl.class, cnd);
return (List<Token>)result;
}
public Token findTokenByElementInstanceId(String elementInstanceId) {
return dao().fetch(TokenImpl.class, Cnd.where(TokenProperty.ELEMENT_INSTANCE_ID.getPropertyName(), "=", elementInstanceId));
}
@Override
public Class getEntityClass4Runtime(Class interfaceClz) {
return TokenImpl.class;
}
@Override
public Class getEntityClass4History(Class interfaceClz) {
return TokenHistory.class;
}
}