package org.fireflow.engine.modules.persistence.nutz; import org.fireflow.client.query.Criterion; import org.nutz.dao.Cnd; import org.nutz.dao.util.cri.SqlExpression; import org.nutz.dao.util.cri.SqlExpressionGroup; public class NutzPersisterUtils { public static SqlExpression fireCriterion2NutzSqlExpression(org.fireflow.client.query.Criterion fireCriterion){ String operation = fireCriterion.getOperation().trim(); if (Criterion.OPERATION_EQ.equals(operation)){ return Cnd.exp(fireCriterion.getEntityProperty().getPropertyName(), operation, fireCriterion.getValues()[0]); } else if (Criterion.OPERATION_NE.equals(operation)){ return Cnd.exp(fireCriterion.getEntityProperty().getPropertyName(), operation, fireCriterion.getValues()[0]); } else if (Criterion.OPERATION_LIKE.equals(operation)){ return Cnd.exp(fireCriterion.getEntityProperty().getPropertyName(), "LIKE", fireCriterion.getValues()[0]); } else if (Criterion.OPERATION_GT.equals(operation)){ return Cnd.exp(fireCriterion.getEntityProperty().getPropertyName(), operation, fireCriterion.getValues()[0]); } else if (Criterion.OPERATION_LT.equals(operation)){ return Cnd.exp(fireCriterion.getEntityProperty().getPropertyName(), operation, fireCriterion.getValues()[0]); } else if (Criterion.OPERATION_GE.equals(operation)){ return Cnd.exp(fireCriterion.getEntityProperty().getPropertyName(), operation, fireCriterion.getValues()[0]); } else if (Criterion.OPERATION_LE.equals(operation)){ return Cnd.exp(fireCriterion.getEntityProperty().getPropertyName(), operation, fireCriterion.getValues()[0]); } else if (operation.equals(Criterion.OPERATION_IS_NULL)){ return Cnd.exp(fireCriterion.getEntityProperty().getPropertyName(), "IS", null); } else if (operation.equals(Criterion.OPERATION_IS_NOT_NULL)){ return Cnd.exp(fireCriterion.getEntityProperty().getPropertyName(), "IS NOT", null); } else if (operation.equals(Criterion.OPERATION_IN)){ return Cnd.exp(fireCriterion.getEntityProperty().getPropertyName(), "IN", fireCriterion.getValues()); } // else if (Criterion.OPERATION_BETWEEN.equals(operation)){ // return Restrictions.between(fireCriterion.getEntityProperty().getPropertyName(),fireCriterion.getValues()[0],fireCriterion.getValues()[1]); // } else if (Criterion.OPERATION_AND.equals(operation)){ org.fireflow.client.query.Criterion left = (org.fireflow.client.query.Criterion)fireCriterion.getValues()[0]; org.fireflow.client.query.Criterion right = (org.fireflow.client.query.Criterion)fireCriterion.getValues()[1]; SqlExpression hLeft = fireCriterion2NutzSqlExpression(left); SqlExpression hRight = fireCriterion2NutzSqlExpression(right); if (hLeft instanceof SqlExpressionGroup){ return ((SqlExpressionGroup)hLeft).and(hRight); }else{ return Cnd.exps(hLeft).and(hRight); } } else if (Criterion.OPERATION_OR.equals(operation)){ org.fireflow.client.query.Criterion left = (org.fireflow.client.query.Criterion)fireCriterion.getValues()[0]; org.fireflow.client.query.Criterion right = (org.fireflow.client.query.Criterion)fireCriterion.getValues()[1]; SqlExpression hLeft = fireCriterion2NutzSqlExpression(left); SqlExpression hRight = fireCriterion2NutzSqlExpression(right); if (hLeft instanceof SqlExpressionGroup){ return ((SqlExpressionGroup)hLeft).or(hRight); }else{ return Cnd.exps(hLeft).or(hRight); } } return null; } }