Author: tchemit Date: 2012-09-23 11:48:45 +0200 (Sun, 23 Sep 2012) New Revision: 697 Url: http://forge.codelutin.com/repositories/revision/echobase/697 Log: fix dbeditor search for is null or is not null case for fk Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2012-09-23 09:26:40 UTC (rev 696) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/DbEditorService.java 2012-09-23 09:48:45 UTC (rev 697) @@ -341,29 +341,38 @@ Object realData = data; if (columnMeta.isFK()) { - // must do a select in using the decoration pattern + if (op==FilterRuleOperator.nu || op==FilterRuleOperator.nn){ - JXPathDecorator<?> decorator = - (JXPathDecorator<?>) getDecorator(columnMeta.getType()); + // is null or is not null is a simple case - if (decorator.getNbToken() == 1) { + ruleFilter = op.toHql(propertyName, + propertyName, + data, + filterParams); + } else { + // must do a select in using the decoration pattern + JXPathDecorator<?> decorator = + (JXPathDecorator<?>) getDecorator(columnMeta.getType()); - String fName = "f_" + timestamp + (index++); + if (decorator.getNbToken() == 1) { - // simple case one token - String token = fName + "." + decorator.getProperty(0); + String fName = "f_" + timestamp + (index++); - String subQuery = op.toHql(paramName, - token, - data, - filterParams); + // simple case one token + String token = fName + "." + decorator.getProperty(0); - ruleFilter = propertyName + " IN ( SELECT f FROM " + - columnMeta.getType().getName() + " " + - fName + " WHERE " + subQuery + ")"; - } else { + String subQuery = op.toHql(paramName, + token, + data, + filterParams); - throw new UnsupportedOperationException(); + ruleFilter = propertyName + " IN ( SELECT f FROM " + + columnMeta.getType().getName() + " " + + fName + " WHERE " + subQuery + ")"; + } else { + + throw new UnsupportedOperationException(); + } } } else {