Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.osbp.xtext.datainterchange/src/org/eclipse/osbp/xtext/datainterchange/jvmmodel/DataDSLJvmModelInferrer.xtend')
-rw-r--r--org.eclipse.osbp.xtext.datainterchange/src/org/eclipse/osbp/xtext/datainterchange/jvmmodel/DataDSLJvmModelInferrer.xtend459
1 files changed, 365 insertions, 94 deletions
diff --git a/org.eclipse.osbp.xtext.datainterchange/src/org/eclipse/osbp/xtext/datainterchange/jvmmodel/DataDSLJvmModelInferrer.xtend b/org.eclipse.osbp.xtext.datainterchange/src/org/eclipse/osbp/xtext/datainterchange/jvmmodel/DataDSLJvmModelInferrer.xtend
index e73f2d6..d6c774b 100644
--- a/org.eclipse.osbp.xtext.datainterchange/src/org/eclipse/osbp/xtext/datainterchange/jvmmodel/DataDSLJvmModelInferrer.xtend
+++ b/org.eclipse.osbp.xtext.datainterchange/src/org/eclipse/osbp/xtext/datainterchange/jvmmodel/DataDSLJvmModelInferrer.xtend
@@ -47,7 +47,6 @@ import org.eclipse.osbp.datainterchange.api.IDataInterchange
import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions
import org.eclipse.osbp.dsl.semantic.common.types.LReference
import org.eclipse.osbp.dsl.semantic.entity.LEntity
-import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature
import org.eclipse.osbp.osgi.hybrid.api.AbstractHybridVaaclipseView
import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent
import org.eclipse.osbp.runtime.common.event.IEventDispatcher
@@ -544,6 +543,7 @@ class DataDSLJvmModelInferrer extends AbstractModelInferrer {
«dataInterchange.getDefaultVariableName».setDataInterchange(dataInterchange);
«dataInterchange.getDefaultVariableName».setEventDispatcher(eventDispatcher);
«dataInterchange.getDefaultVariableName».setBlobService(blobService);
+««« «IF dataInterchange.hasPostFunction && dataInterchange.postFunction.afterImport»postInterchangeExecution(«dataInterchange.postFunction.doExecuteFunction.fullyQualifiedName»);«ENDIF»
«if(direction.equals(Direction.IMPORT.name)){
'''«dataInterchange.getDefaultVariableName».setDeleteFileAfterImport(«dataInterchange.isDeleteFileAfterImport»);'''
@@ -836,6 +836,11 @@ class DataDSLJvmModelInferrer extends AbstractModelInferrer {
}
body = '''
«body»
+ «IF dataInterchange.hasPostFunction && dataInterchange.postFunction.afterImport»
+ log.info("post interchange function execution started ... >>> «dataInterchange.postFunction.doExecuteFunction.fullyQualifiedName»");
+ «dataInterchange.postFunction.doExecuteFunction.fullyQualifiedName»(Paths.get(getFileURL().getPath().substring(1)), getFilter());
+ log.info("post interchange function execution done ... >>> «dataInterchange.postFunction.doExecuteFunction.fullyQualifiedName»");
+ «ENDIF»
if(isDeleteFileAfterImport()){
deleteFile(Paths.get(getFileURL().getPath().substring(1)), "DeleteFileAfterImport -"); // interchange file
}
@@ -892,7 +897,12 @@ class DataDSLJvmModelInferrer extends AbstractModelInferrer {
em.getTransaction().commit();
}
«ENDIF»
- if (log.isDebugEnabled()) log.debug("export finished");
+ log.info("export finished");
+ «IF dataInterchange.hasPostFunction && !dataInterchange.postFunction.afterImport»
+ log.info("post interchange function execution started ... >>> «dataInterchange.postFunction.doExecuteFunction.fullyQualifiedName»");
+ «dataInterchange.postFunction.doExecuteFunction.fullyQualifiedName»(Paths.get(getFileURL().getPath().substring(1)), getFilter());
+ log.info("post interchange function execution done ... >>> «dataInterchange.postFunction.doExecuteFunction.fullyQualifiedName»");
+ «ENDIF»
}
log.info(getDirection().name()+" of «dataInterchange.name» successfully ended!");
'''
@@ -918,8 +928,14 @@ class DataDSLJvmModelInferrer extends AbstractModelInferrer {
e.printStackTrace(new PrintWriter(sw));
log.error(getDirection().name()+" Execution of «dataInterchange.name»: failed due to: {}", sw.toString());
setExecutionFailed(true);
- «IF dataInterchange.isDeleteFileAfterImport»
+ log.info("import failed");
Path filePath = Paths.get(getFileURL().getPath().substring(1));
+ «IF dataInterchange.hasPostFunction && dataInterchange.postFunction.afterImport»
+ log.info("post interchange function execution started ... >>> «dataInterchange.postFunction.doExecuteFunction.fullyQualifiedName»");
+ «dataInterchange.postFunction.doExecuteFunction.fullyQualifiedName»(Paths.get(getFileURL().getPath().substring(1)), getFilter());
+ log.info("post interchange function execution done ... >>> «dataInterchange.postFunction.doExecuteFunction.fullyQualifiedName»");
+ «ENDIF»
+ «IF dataInterchange.isDeleteFileAfterImport»
if(Files.exists(filePath) && getDirection()==WorkerThreadRunnable.Direction.IMPORT) {
renameFile(filePath, "FAILEDIMPORT"+ getFormatter().format(new Date(System.currentTimeMillis())) + filePath.getFileName().toString()+ ".LOCKED");
}
@@ -1122,12 +1138,24 @@ class DataDSLJvmModelInferrer extends AbstractModelInferrer {
def String buildExportFilterWhereClause(DataInterchangeFilter filter, String rootname, boolean actionfilter, boolean log){
var body = ""
- exportParamIdx = 0;
+ var attrFilter = ""
+ var refFilter = ""
if(filter !== null && filter.attrFilter !== null){
- var where = filter.attrFilter.buildSubCondition(rootname, actionfilter, log)
- if(where !== null && !where.empty){
- body = '''«where»'''
- }
+ exportParamIdx = 0;
+ attrFilter = filter.attrFilter.buildSubCondition(rootname, actionfilter, log)
+ }
+ if(filter !== null && filter.refFilter !== null){
+ exportParamIdx = 0;
+ refFilter = filter.refFilter.buildSubCondition2(rootname, actionfilter, log)
+ }
+ if(attrFilter !== null && !attrFilter.empty && refFilter !== null && !refFilter.empty){
+ body = '''«IF log»«attrFilter» and «refFilter»«ELSE»criteriaBuilder.and(«attrFilter» , «refFilter»)«ENDIF»'''
+ }
+ if(attrFilter !== null && !attrFilter.empty && (refFilter === null || refFilter.empty)){
+ body = attrFilter
+ }
+ if(refFilter !== null && !refFilter.empty && (attrFilter === null || attrFilter.empty)){
+ body = refFilter
}
return body
}
@@ -1135,112 +1163,91 @@ class DataDSLJvmModelInferrer extends AbstractModelInferrer {
def String buildSubCondition(AttributeFilter filter, String rootname, boolean actionfilter, boolean log){
// the criteria has to be built for an action filter and each parameter value has to be fetched
// from the eclipse context, hence from the parameter list !!!
- var part1 = ""
-
-
+ var String part1 = null
+
if(filter !== null && filter !== null && filter.refProperty !== null && filter.operator !== null){
+ var type = filter.refProperty.type.toTypeReference.qualifiedName
+ var defaultOrModelValue = '''«IF filter.value !== null && !filter.value.empty»"«filter.getValue»"«ELSE»null«ENDIF»'''
+
+ var actionFilterCriteriaValue = '''«IF type.equals("java.util.Date")»getFilter().get("param«exportParamIdx»").getExpression(criteriaBuilder)«ELSE»getCriteriaValue(getFilter().get("param«exportParamIdx»").getValue(), «defaultOrModelValue»)«ENDIF»'''
+
switch(filter.operator){
case ISNOTNULL:
part1 = '''«IF log»«filter.getRefProperty.name» isNotNull"«ELSE»«rootname».get("«filter.getRefProperty.name»").isNotNull()«ENDIF»'''
case ISNULL:
part1 = '''«IF log»«filter.getRefProperty.name» isNull"«ELSE»«rootname».get("«filter.getRefProperty.name»").isNull()«ENDIF»'''
case EQUALS:
- if(actionfilter){
-// part1 = '''criteriaBuilder.equal(«rootname».get("«filter.getRefProperty.name»"), («filter.refProperty.type.toTypeReference.identifier») getFilter().get("param«exportParamIdx»").getValue())'''
- part1 = '''criteriaBuilder.equal(«rootname».get("«filter.getRefProperty.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
- exportParamIdx++
- }
- else if(log){
-// part1 = '''«filter.refProperty.name» = "+(«filter.refProperty.type.toTypeReference.identifier») getFilter().get("param«exportParamIdx»").getValue()'''
- part1 = '''«filter.refProperty.name» = "+getFilter().get("param«exportParamIdx»").getValue()'''
- exportParamIdx++
+ if(log){
+ part1 = '''«filter.refProperty.name»«IF actionfilter» = "+«actionFilterCriteriaValue»«ELSE» = '«filter.value»'«ENDIF»'''
+ if(actionfilter){exportParamIdx++}
}
- else if(filter.value !== null && !filter.value.empty){
-// part1 = '''criteriaBuilder.equal(«rootname».get("«filter.refProperty.name»"), "«filter.getValue»")'''
- part1 = '''criteriaBuilder.equal(«rootname».get("«filter.refProperty.name»"), "«filter.getValue»")'''
+ else {
+ part1 = '''criteriaBuilder.equal(«rootname».get("«filter.getRefProperty.name»"), «IF actionfilter»«actionFilterCriteriaValue»«ELSE»«defaultOrModelValue»«ENDIF»)'''
+ if(actionfilter){exportParamIdx++}
}
- else{ part1 = null}
case NOTEQUALS:
- if(actionfilter){
-// part1 = '''criteriaBuilder.notEqual(«rootname».get("«filter.getRefProperty.name»"), («filter.refProperty.type.toTypeReference.identifier») getFilter().get("param«exportParamIdx»").getValue())'''
- part1 = '''criteriaBuilder.notEqual(«rootname».get("«filter.getRefProperty.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
- exportParamIdx++
- }
- else if(log){
-// part1 = '''«filter.getRefProperty.name» != "+(«filter.refProperty.type.toTypeReference.identifier») getFilter().get("param«exportParamIdx»").getValue()'''
- part1 = '''«filter.getRefProperty.name» != "+getFilter().get("param«exportParamIdx»").getValue()'''
- exportParamIdx++
+ if(log){
+ part1 = '''«filter.getRefProperty.name»«IF actionfilter» != "+«actionFilterCriteriaValue»«ELSE» != '«filter.value»'«ENDIF»'''
+ if(actionfilter){exportParamIdx++}
}
- else if(filter.getValue !== null && !filter.getValue.empty){
-// part1 = '''criteriaBuilder.notEqual(«rootname».get("«filter.getRefProperty.name»"), "«filter.getValue»")'''
- part1 = '''criteriaBuilder.notEqual(«rootname».get("«filter.getRefProperty.name»"), "«filter.getValue»")'''
+ else{
+ part1 = '''criteriaBuilder.notEqual(«rootname».get("«filter.getRefProperty.name»"), «actionFilterCriteriaValue»)'''
+ if(actionfilter){exportParamIdx++}
}
- else{ part1 = null}
case GREATERTHAN:
if(actionfilter){
-// part1 = '''criteriaBuilder.greaterThan(«rootname».get("«filter.getRefProperty.name»"), («filter.refProperty.type.toTypeReference.identifier») getFilter().get("param«exportParamIdx»").getValue())'''
- part1 = '''criteriaBuilder.greaterThan(«rootname».get("«filter.getRefProperty.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ part1 = '''criteriaBuilder.greaterThan(«rootname».get("«filter.getRefProperty.name»"), «actionFilterCriteriaValue»)'''
exportParamIdx++
}
else if(log){
-// part1 = '''«filter.getRefProperty.name» > "+(«filter.refProperty.type.toTypeReference.identifier») getFilter().get("param«exportParamIdx»").getValue()'''
- part1 = '''«filter.getRefProperty.name» > "+ getFilter().get("param«exportParamIdx»").getValue()'''
+ part1 = '''«filter.getRefProperty.name»«IF actionfilter» > "+ «actionFilterCriteriaValue» «ELSE» > '«filter.value»'«ENDIF»'''
exportParamIdx++
}
else if(filter.getValue !== null && !filter.getValue.empty){
-// part1 = '''criteriaBuilder.greaterThan(«rootname».get("«filter.getRefProperty.name»"), "«filter.getValue»")'''
part1 = '''criteriaBuilder.greaterThan(«rootname».get("«filter.getRefProperty.name»"), "«filter.getValue»")'''
}
else{ part1 = null}
case GREATERTHANOREQUALTO:
if(actionfilter){
-// part1 = '''criteriaBuilder.greaterThanOrEqualTo(«rootname».get("«filter.getRefProperty.name»"), («filter.refProperty.type.toTypeReference.identifier») getFilter().get("param«exportParamIdx»").getValue())'''
- part1 = '''criteriaBuilder.greaterThanOrEqualTo(«rootname».get("«filter.getRefProperty.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ part1 = '''criteriaBuilder.greaterThanOrEqualTo(«rootname».get("«filter.getRefProperty.name»"), «actionFilterCriteriaValue»)'''
exportParamIdx++
}
else if(log){
-// part1 = '''«filter.getRefProperty.name» >= "+(«filter.refProperty.type.toTypeReference.identifier») getFilter().get("param«exportParamIdx»").getValue()'''
- part1 = '''«filter.getRefProperty.name» >= "+getFilter().get("param«exportParamIdx»").getValue()'''
+ part1 = '''«filter.getRefProperty.name»«IF actionfilter» >= "+ «actionFilterCriteriaValue») «ELSE» >= '«filter.value»'«ENDIF»'''
exportParamIdx++
}
else if(filter.getValue !== null && !filter.getValue.empty){
-// part1 = '''criteriaBuilder.greaterThanOrEqualTo(«rootname».get("«filter.getRefProperty.name»"), "«filter.getValue»")'''
part1 = '''criteriaBuilder.greaterThanOrEqualTo(«rootname».get("«filter.getRefProperty.name»"), "«filter.getValue»")'''
}
else{ part1 = null}
case LESSTHAN:
if(actionfilter){
-// part1 = '''criteriaBuilder.lessThan(«rootname».get("«filter.getRefProperty.name»"), («filter.refProperty.type.toTypeReference.identifier») getFilter().get("param«exportParamIdx»").getValue())'''
- part1 = '''criteriaBuilder.lessThan(«rootname».get("«filter.getRefProperty.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ part1 = '''criteriaBuilder.lessThan(«rootname».get("«filter.getRefProperty.name»"), «actionFilterCriteriaValue»)'''
exportParamIdx++
}
else if(log){
-// part1 = '''«filter.getRefProperty.name» < "+(«filter.refProperty.type.toTypeReference.identifier») getFilter().get("param«exportParamIdx»").getValue()'''
- part1 = '''«filter.getRefProperty.name» < "+getFilter().get("param«exportParamIdx»").getValue()'''
+ part1 = '''«filter.getRefProperty.name»«IF actionfilter» < "+ «actionFilterCriteriaValue»«ELSE» < '«filter.value»'«ENDIF»'''
exportParamIdx++
}
else if(filter.getValue !== null && !filter.getValue.empty){
-// part1 = '''criteriaBuilder.lessThan(«rootname».get("«filter.getRefProperty.name»"), "«filter.getValue»")'''
part1 = '''criteriaBuilder.lessThan(«rootname».get("«filter.getRefProperty.name»"), "«filter.getValue»")'''
}
else{ part1 = null}
case LESSTHANOREQUALTO:
if(actionfilter){
-// part1 = '''criteriaBuilder.lessThanOrEqualTo(«rootname».get("«filter.getRefProperty.name»"), («filter.refProperty.type.toTypeReference.identifier») getFilter().get("param«exportParamIdx»").getValue())'''
- part1 = '''criteriaBuilder.lessThanOrEqualTo(«rootname».get("«filter.getRefProperty.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ part1 = '''criteriaBuilder.lessThanOrEqualTo(«rootname».get("«filter.getRefProperty.name»"), «actionFilterCriteriaValue»)'''
exportParamIdx++
}
else if(log){
- part1 = '''«filter.getRefProperty.name» <= "+(«filter.refProperty.type.toTypeReference.identifier») getFilter().get("param«exportParamIdx»").getValue()'''
+ part1 = '''«filter.getRefProperty.name»«IF actionfilter» <= "+«actionFilterCriteriaValue» «ELSE» <= '«filter.value»'«ENDIF»'''
exportParamIdx++
}
else if(filter.getValue !== null && !filter.getValue.empty){
-// part1 = '''criteriaBuilder.lessThanOrEqualTo(«rootname».get("«filter.getRefProperty.name»"), "«filter.getValue»")'''
part1 = '''criteriaBuilder.lessThanOrEqualTo(«rootname».get("«filter.getRefProperty.name»"), "«filter.getValue»")'''
}
else{ part1 = null}
@@ -1250,27 +1257,265 @@ class DataDSLJvmModelInferrer extends AbstractModelInferrer {
if(part1 !== null && filter.operator2 !== null && filter.subCondition !== null && filter.subCondition.refProperty !== null ){
switch(filter.getOperator2){
-// case AND: return '''«IF log»«part1» +" and «filter.subCondition.buildSubCondition(rootname, actionfilter, log)»«ELSE»criteriaBuilder.and(«part1» , «filter.subCondition.buildSubCondition(rootname, actionfilter, log)»)«ENDIF»'''
-// case OR : return '''«IF log»«part1» +" or«filter.subCondition.buildSubCondition(rootname, actionfilter, log)»«ELSE»criteriaBuilder.or(«filter.subCondition.buildSubCondition(rootname, actionfilter, log)» , «part1»)«ENDIF»'''
- case AND: return '''«IF log»«part1» +" and «filter.subCondition.buildSubCondition(rootname, actionfilter, log)»«ELSE»criteriaBuilder.and(«part1» , «filter.subCondition.buildSubCondition(rootname, actionfilter, log)»)«ENDIF»'''
- case OR : return '''«IF log»«part1» +" or«filter.subCondition.buildSubCondition(rootname, actionfilter, log)»«ELSE»criteriaBuilder.or(«filter.subCondition.buildSubCondition(rootname, actionfilter, log)» , «part1»)«ENDIF»'''
+ case AND: return '''«IF log»«part1» +" and"+ «filter.subCondition.buildSubCondition(rootname, actionfilter, log)»«ELSE»criteriaBuilder.and(«part1» , «filter.subCondition.buildSubCondition(rootname, actionfilter, log)»)«ENDIF»'''
+ case OR : return '''«IF log»«part1» +" or"+«filter.subCondition.buildSubCondition(rootname, actionfilter, log)»«ELSE»criteriaBuilder.or(«filter.subCondition.buildSubCondition(rootname, actionfilter, log)» , «part1»)«ENDIF»'''
+ default: {return part1 }
+ }
+ }
+ }
+ return part1
+ }
+
+ def String buildSubCondition2(ReferenceFilter filter, String rootname, boolean actionfilter, boolean log){
+ // the criteria has to be built for an action filter and each parameter value has to be fetched
+ // from the eclipse context, hence from the parameter list !!!
+ var part1 = ""
+
+ if(filter !== null && filter !== null && filter.refEntity !== null && filter.operator !== null){
+ switch(filter.operator){
+ case ISNOTNULL: part1 = filter.refIsNotNull(log, rootname)
+ case ISNULL: part1 = filter.refIsNull(log, rootname)
+ case EQUALS: part1 = filter.refEquals(log, rootname, actionfilter)
+ case NOTEQUALS: part1 = filter.refNotEquals(log, rootname, actionfilter)
+ case GREATERTHAN: part1 = filter.refGreaterThan(log, rootname, actionfilter)
+ case GREATERTHANOREQUALTO: part1 = filter.refGreaterThanOrEquals(log, rootname, actionfilter)
+ case LESSTHAN: part1 = filter.refLessThan(log, rootname, actionfilter)
+ case LESSTHANOREQUALTO: part1 = filter.refLessThanOrEquals(log, rootname, actionfilter)
+ default: { part1 = null }
+ }
+
+ if(part1 !== null && filter.operator2 !== null && filter.subCondition !== null && filter.subCondition.refEntity !== null ){
+ switch(filter.getOperator2){
+ case AND: return '''«IF log»«part1» +" and"+ «filter.subCondition.buildSubCondition2(rootname, actionfilter, log)»«ELSE»criteriaBuilder.and(«part1» , «filter.subCondition.buildSubCondition2(rootname, actionfilter, log)»)«ENDIF»'''
+ case OR : return '''«IF log»«part1» +" or"+«filter.subCondition.buildSubCondition2(rootname, actionfilter, log)»«ELSE»criteriaBuilder.or(«filter.subCondition.buildSubCondition2(rootname, actionfilter, log)» , «part1»)«ENDIF»'''
default: {return part1 }
}
}
}
-
-// //TODO implement the missing peaces here for ref conditions
-// if(filter !== null && filter.refFilter !== null && filter.refFilter.refEntity !== null && filter.refFilter.operator !== null){
-// var refFilter = filter.refFilter
-// if(refFilter instanceof ReferenceFilterWithOutAttr){
-//
-// }
-// else if(refFilter instanceof ReferenceFilterWithAttr){
-//
-// }
-// }
return part1
}
+
+ def String refLessThan(ReferenceFilter filter, boolean log, String rootname, boolean actionfilter){
+ var result = ''''''
+ if(actionfilter){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''criteriaBuilder.lessThan(«rootname».get("«filter.refEntity.name».«filter.refProperty.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ }
+ }else{
+ result = '''criteriaBuilder.lessThan(«rootname».get("«filter.refEntity.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ }
+ exportParamIdx++
+ }
+ else if(log){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''«filter.refEntity.name».«filter.refProperty.name»«IF actionfilter» < "+getFilter().get("param«exportParamIdx»").getValue()«ELSE» < '«filter.value»'«ENDIF»'''
+ }
+ }else{
+ result = '''«filter.refEntity.name»«IF actionfilter» < "+getFilter().get("param«exportParamIdx»").getValue()«ELSE» < '«filter.value»'«ENDIF»'''
+ }
+ exportParamIdx++
+ }
+ else if(filter.getValue !== null && !filter.getValue.empty){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''criteriaBuilder.lessThan(«rootname».get("«filter.refEntity.name».«filter.refProperty.name»"), "«filter.getValue»")'''
+ }
+ }else{
+ result = '''criteriaBuilder.lessThan(«rootname».get("«filter.refEntity.name»"), "«filter.getValue»")'''
+ }
+ }
+ return result
+ }
+
+ def String refLessThanOrEquals(ReferenceFilter filter, boolean log, String rootname, boolean actionfilter){
+ var result = ''''''
+ if(actionfilter){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''criteriaBuilder.lessThanOrEqualTo(«rootname».get("«filter.refEntity.name».«filter.refProperty.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ }
+ }else{
+ result = '''criteriaBuilder.lessThanOrEqualTo(«rootname».get("«filter.refEntity.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ }
+ exportParamIdx++
+ }
+ else if(log){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''«filter.refEntity.name».«filter.refProperty.name»«IF actionfilter» <= "+(«filter.refEntity.type.toTypeReference.identifier») getFilter().get("param«exportParamIdx»").getValue()«ELSE» <= '«filter.value»'«ENDIF»'''
+ }
+ }else{
+ result = '''«filter.refEntity.name»«IF actionfilter» <= "+(«filter.refEntity.type.toTypeReference.identifier») getFilter().get("param«exportParamIdx»").getValue()«ELSE» <= '«filter.value»'«ENDIF»'''
+ }
+ exportParamIdx++
+ }
+ else if(filter.getValue !== null && !filter.getValue.empty){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''criteriaBuilder.lessThanOrEqualTo(«rootname».get("«filter.refEntity.name».«filter.refProperty.name»"), "«filter.getValue»")'''
+ }
+ }else{
+ result = '''criteriaBuilder.lessThanOrEqualTo(«rootname».get("«filter.refEntity.name»"), "«filter.getValue»")'''
+ }
+ }
+ return result
+ }
+
+ def String refGreaterThan(ReferenceFilter filter, boolean log, String rootname, boolean actionfilter){
+ var result = ''''''
+ if(actionfilter){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''criteriaBuilder.greaterThan(«rootname».get("«filter.refEntity.name».«filter.refProperty.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ }
+ }else{
+ result = '''criteriaBuilder.greaterThan(«rootname».get("«filter.refEntity.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ }
+ exportParamIdx++
+ }
+ else if(log){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''«filter.refEntity.name».«filter.refProperty.name»«IF actionfilter» > "+ getFilter().get("param«exportParamIdx»").getValue()«ELSE» > '«filter.value»'«ENDIF»'''
+ }
+ }else{
+ result = '''«filter.refEntity.name»«IF actionfilter» > "+ getFilter().get("param«exportParamIdx»").getValue()«ELSE» > '«filter.value»'«ENDIF»'''
+ }
+ exportParamIdx++
+ }
+ else if(filter.getValue !== null && !filter.getValue.empty){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''criteriaBuilder.greaterThan(«rootname».get("«filter.refEntity.name».«filter.refProperty.name»"), "«filter.getValue»")'''
+ }
+ }else{
+ result = '''criteriaBuilder.greaterThan(«rootname».get("«filter.refEntity.name»"), "«filter.getValue»")'''
+ }
+ }
+ return result
+ }
+
+ def String refGreaterThanOrEquals(ReferenceFilter filter, boolean log, String rootname, boolean actionfilter){
+ var result = ''''''
+ if(actionfilter){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''criteriaBuilder.greaterThanOrEqualTo(«rootname».get("«filter.refEntity.name».«filter.refProperty.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ }
+ }else{
+ result = '''criteriaBuilder.greaterThanOrEqualTo(«rootname».get("«filter.refEntity.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ }
+ exportParamIdx++
+ }
+ else if(log){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''«filter.refEntity.name».«filter.refProperty.name»«IF actionfilter» >= "+getFilter().get("param«exportParamIdx»").getValue()«ELSE» >= '«filter.value»'«ENDIF»'''
+ }
+ }else{
+ result = '''«filter.refEntity.name»«IF actionfilter» >= "+getFilter().get("param«exportParamIdx»").getValue()«ELSE» >= '«filter.value»'«ENDIF»'''
+ }
+ exportParamIdx++
+ }
+ else if(filter.getValue !== null && !filter.getValue.empty){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''criteriaBuilder.greaterThanOrEqualTo(«rootname».get("«filter.refEntity.name».«filter.refProperty.name»"), "«filter.getValue»")'''
+ }
+ }else{
+ result = '''criteriaBuilder.greaterThanOrEqualTo(«rootname».get("«filter.refEntity.name»"), "«filter.getValue»")'''
+ }
+ }
+ return result
+ }
+
+ def String refEquals(ReferenceFilter filter, boolean log, String rootname, boolean actionfilter){
+ var result = ''''''
+ if(actionfilter){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''criteriaBuilder.equal(«rootname».get("«filter.refEntity.name».«filter.refProperty.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ }
+ }else{
+ result = '''criteriaBuilder.equal(«rootname».get("«filter.refEntity.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ }
+ exportParamIdx++
+ }
+ else if(log){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''«filter.refEntity.name».«filter.refProperty.name»«IF actionfilter» = "+getFilter().get("param«exportParamIdx»").getValue()«ELSE» = '«filter.value»'«ENDIF»'''
+ }
+ }else{
+ result = '''«filter.refEntity.name»«IF actionfilter» = "+getFilter().get("param«exportParamIdx»").getValue()«ELSE» = '«filter.value»'«ENDIF»'''
+ }
+ exportParamIdx++
+ }
+ else if(filter.value !== null && !filter.value.empty){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''criteriaBuilder.equal(«rootname».get("«filter.refEntity.name».«filter.refProperty.name»"), "«filter.getValue»")'''
+ }
+ }else{
+ result = '''criteriaBuilder.equal(«rootname».get("«filter.refEntity.name»"), "«filter.getValue»")'''
+ }
+ }
+ return result
+ }
+
+ def String refNotEquals(ReferenceFilter filter, boolean log, String rootname, boolean actionfilter){
+ var result = ''''''
+ if(actionfilter){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''criteriaBuilder.notEqual(«rootname».get("«filter.refEntity.name».«filter.refProperty.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ }
+ }else{
+ result = '''criteriaBuilder.notEqual(«rootname».get("«filter.refEntity.name»"), getFilter().get("param«exportParamIdx»").getValue())'''
+ }
+ exportParamIdx++
+ }
+ else if(log){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''«filter.refEntity.name».«filter.refProperty.name»«IF actionfilter» != "+getFilter().get("param«exportParamIdx»").getValue()«ELSE» != '«filter.value»'«ENDIF»'''
+ }
+ }else{
+ result = '''«filter.refEntity.name»«IF actionfilter» != "+getFilter().get("param«exportParamIdx»").getValue()«ELSE» != '«filter.value»'«ENDIF»'''
+ }
+ exportParamIdx++
+ }
+ else if(filter.getValue !== null && !filter.getValue.empty){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ result = '''criteriaBuilder.notEqual(«rootname».get("«filter.refEntity.name».«filter.refProperty.name»"), "«filter.getValue»")'''
+ }
+ }else{
+ result = '''criteriaBuilder.notEqual(«rootname».get("«filter.refEntity.name»"), "«filter.getValue»")'''
+ }
+ }
+ return result
+ }
+
+ def String refIsNull(ReferenceFilter filter, boolean log, String rootname){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ return '''«IF log»«filter.refEntity.name».«filter.refProperty.name» isNull"«ELSE»«rootname».get("«filter.refEntity.name».«filter.refProperty.name»").isNull()«ENDIF»'''
+ }
+ }
+ return '''«IF log»«filter.refEntity.name» isNull"«ELSE»«rootname».get("«filter.refEntity.name»").isNull()«ENDIF»'''
+ }
+
+ def String refIsNotNull(ReferenceFilter filter, boolean log, String rootname){
+ if(filter instanceof ReferenceFilterWithAttr){
+ if(filter.refProperty !== null){
+ return '''«IF log»«filter.refEntity.name».«filter.refProperty.name» isNotNull"«ELSE»«rootname».get("«filter.refEntity.name».«filter.refProperty.name»").isNotNull()«ENDIF»'''
+ }
+ }
+ return '''«IF log»«filter.refEntity.name» isNotNull"«ELSE»«rootname».get("«filter.refEntity.name»").isNotNull()«ENDIF»'''
+ }
/**
* build a graph for all entities in path
@@ -1338,39 +1583,49 @@ class DataDSLJvmModelInferrer extends AbstractModelInferrer {
def String buildAppropriateFilter(String rootname, DataInterchangeFilter exportfilter, DataInterchangeFilter actionfilter, boolean forActionFilter, boolean forLog){
var result = ""
if(exportfilter !== null && actionfilter !== null){
- var part1 = exportfilter.buildExportFilterWhereClause(rootname, forActionFilter, forLog)
+ var part1 = exportfilter.buildExportFilterWhereClause(rootname, false, forLog)
var part2 = actionfilter.buildExportFilterWhereClause(rootname, forActionFilter, forLog)
if(forLog){
- result = '''«part1» , «part2»'''
+ result = '''EXPORTFILTER: «part1» , ACTIONFILTER: «part2»'''
}
else{
- result = '''criteriaBuilder.and(«part1» «IF !part2.empty», «part2»«ENDIF» )'''
+ result = '''criteriaBuilder.and(«part1» «IF !part2.empty»,«part2»«ENDIF»)'''
}
}
else if(exportfilter !== null && actionfilter === null){
- result = exportfilter.buildExportFilterWhereClause(rootname, forActionFilter, forLog)
+ result = '''«exportfilter.buildExportFilterWhereClause(rootname, false, forLog)»'''
}
else if(exportfilter === null && actionfilter !== null){
- result = actionfilter.buildExportFilterWhereClause(rootname, forActionFilter, forLog)
+ result = '''«actionfilter.buildExportFilterWhereClause(rootname, forActionFilter, forLog)»'''
}
if(!forLog){
- return '''.where(«result»)'''
+ return '''«IF result!== null && !result.empty».where(«result»)«ENDIF»'''
}
return result
}
def boolean hasExportFilter(DataInterchange interchange){
- //TODO extend to refAttributes
- if(interchange.exportFilter !== null && interchange.exportFilter.attrFilter !== null && interchange.exportFilter.attrFilter.refProperty !== null){
- return true
+ var filter = if(interchange !== null) interchange.exportFilter else null
+ if(filter !== null){
+ if(filter.attrFilter !== null && filter.attrFilter.refProperty !== null){
+ return true
+ }
+ else if(filter.refFilter !== null && filter.refFilter.refEntity !== null){
+ return true
+ }
}
return false
}
def boolean hasActionFilter(DataInterchange interchange){
- //TODO extend to refAttributes
- if(interchange.actionFilter !== null && interchange.actionFilter.attrFilter !== null && interchange.actionFilter.attrFilter.refProperty !== null){
- return true
+ var filter = if(interchange !== null) interchange.actionFilter else null
+ if(filter !== null){
+ if(filter.attrFilter !== null && filter.attrFilter.refProperty !== null){
+ return true
+ }
+ else if(filter.refFilter !== null && filter.refFilter.refEntity !== null){
+ return true
+ }
}
return false
}
@@ -1397,23 +1652,32 @@ class DataDSLJvmModelInferrer extends AbstractModelInferrer {
*/
def String exportQuery(String rootname, DataInterchange interchange){
if(interchange.hasActionFilter){
+ var where1 = buildAppropriateFilter(rootname, if(interchange.hasExportFilter) interchange.exportFilter else null, interchange.actionFilter, true, false)
+ var log1 = buildAppropriateFilter(rootname, if(interchange.hasExportFilter) interchange.exportFilter else null, interchange.actionFilter, true, true)
+ var where2 = buildAppropriateFilter(rootname, if(interchange.hasExportFilter) interchange.exportFilter else null, null, false, false)
+ var log2 = buildAppropriateFilter(rootname, if(interchange.hasExportFilter) interchange.exportFilter else null, null, false, true)
return
'''
if(isActionFilterExecutionNeeded()){
- select«buildAppropriateFilter(rootname, if(interchange.hasExportFilter) interchange.exportFilter else null, interchange.actionFilter, true, false)»;
- if (log.isDebugEnabled()) log.debug("applied action-filter: «interchange.actionFilter.buildExportFilterWhereClause(rootname, false, true)»+"]");
+ «IF where1 !== null && !where1.empty»
+ select«where1»;«ENDIF»
}else{
- select«buildAppropriateFilter(rootname, if(interchange.hasExportFilter) interchange.exportFilter else null, null, true, false)»;
- if (log.isDebugEnabled()) log.debug("applied export-filter: «interchange.actionFilter.buildExportFilterWhereClause(rootname, false, true)»+"]");
+ «IF where2 !== null && !where2.empty»
+ select«where2»;«ENDIF»
}
'''
}
- return
- '''«IF interchange.hasExportFilter»
- select«buildAppropriateFilter(rootname, interchange.exportFilter, null, false, false)»;
- if (log.isDebugEnabled()) log.debug("applied export filter: «buildAppropriateFilter(rootname, interchange.exportFilter, null, false, true)»+"]");
- «ENDIF»
- '''
+ if(interchange.hasExportFilter){
+ var where = buildAppropriateFilter(rootname, interchange.exportFilter, null, false, false)
+ var log = buildAppropriateFilter(rootname, interchange.exportFilter, null, false, true)
+ if(where !== null && !where.empty){
+ return
+ '''
+ select«where»;
+ '''
+ }
+ }
+ return ''''''
}
def determineInterchangeFilter(DataInterchange interchange){
@@ -1463,7 +1727,7 @@ class DataDSLJvmModelInferrer extends AbstractModelInferrer {
if(filter !== null && filter.refEntity !== null){
if(filter instanceof ReferenceFilterWithAttr){
if(filter.refProperty !== null) {
- results.add(new WorkerThreadRunnable.Parameter(filter.refProperty.name, filter.value))
+ results.add(new WorkerThreadRunnable.Parameter(filter.refEntity.name+"."+filter.refProperty.name, filter.value))
}
}
else if(filter instanceof ReferenceFilterWithOutAttr){
@@ -1485,4 +1749,11 @@ class DataDSLJvmModelInferrer extends AbstractModelInferrer {
}
return false
}
+
+ def boolean hasPostFunction(DataInterchange interchange){
+ if(interchange !== null && interchange.postFunction !== null){
+ return true
+ }
+ return false
+ }
}

Back to the top