
net.cassite.daf4j.jpa.JPQLAndOrParser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of daf4j-ds-jpa Show documentation
Show all versions of daf4j-ds-jpa Show documentation
A library provides implementation of DAF4J DataAccess using JPA
The newest version!
package net.cassite.daf4j.jpa;
import net.cassite.daf4j.*;
import net.cassite.daf4j.ds.AndOrParser;
import net.cassite.daf4j.ds.ObjectResolver;
import java.util.List;
/**
* 将条件转化为JPQL表达式
*/
public class JPQLAndOrParser implements AndOrParser {
private ObjectResolver objectResolver;
@Override
public String and(JPQLContext jpqlContext, List list, List list1) throws Exception {
StringBuilder sb = new StringBuilder();
boolean isFirst = true;
for (Condition c : list) {
if (jpqlContext.GeneratingWhere && DataUtils.getAggregate(c) != null) continue;
if (isFirst) {
isFirst = false;
} else {
sb.append(" AND ");
}
sb.append(objectResolver.resolve(jpqlContext, c));
}
for (ExpressionBoolean exp : list1) {
if (jpqlContext.GeneratingWhere && DataUtils.getAggregate(exp) != null) continue;
if (isFirst) {
isFirst = false;
} else {
sb.append(" AND ");
}
sb.append(objectResolver.resolve(jpqlContext, exp));
}
String res = sb.toString().trim();
if (res.length() == 0) return null;
return res;
}
@Override
public String or(JPQLContext jpqlContext, List list, List list1) throws Exception {
StringBuilder sb = new StringBuilder();
boolean isFirst = true;
for (Condition c : list) {
if (isFirst) {
isFirst = false;
} else {
sb.append(" OR ");
}
sb.append(objectResolver.resolve(jpqlContext, c));
}
for (ExpressionBoolean exp : list1) {
if (isFirst) {
isFirst = false;
} else {
sb.append(" OR ");
}
sb.append(objectResolver.resolve(jpqlContext, exp));
}
String res = sb.toString().trim();
if (res.length() == 0) return null;
return res;
}
@Override
public String and(JPQLContext jpqlContext, List list) throws Exception {
StringBuilder sb = new StringBuilder();
boolean isFirst = true;
for (String str : list) {
if (isFirst) {
isFirst = false;
} else {
sb.append(" AND ");
}
sb.append("(").append(str).append(")");
}
String res = sb.toString().trim();
if (res.length() == 0) return null;
return res;
}
@Override
public String or(JPQLContext jpqlContext, List list) throws Exception {
StringBuilder sb = new StringBuilder();
boolean isFirst = true;
for (String str : list) {
if (isFirst) {
isFirst = false;
} else {
sb.append(" OR ");
}
sb.append("(").append(str).append(")");
}
String res = sb.toString().trim();
if (res.length() == 0) return null;
return res;
}
@Override
public JPQLContext beforeParsingAnd(JPQLContext jpqlContext, And and) throws Exception {
return jpqlContext;
}
@Override
public String afterParsingAnd(JPQLContext jpqlContext, String s) throws Exception {
return s;
}
@Override
public JPQLContext beforeParsingOr(JPQLContext jpqlContext, Or or) throws Exception {
return jpqlContext;
}
@Override
public String afterParsingOr(JPQLContext jpqlContext, String s) throws Exception {
return s;
}
@Override
public void setObjectResolver(ObjectResolver objectResolver) {
this.objectResolver = objectResolver;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy