r977 - trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service
Author: tchemit Date: 2014-03-17 15:46:44 +0100 (Mon, 17 Mar 2014) New Revision: 977 Url: http://forge.codelutin.com/projects/echobase/repository/revisions/977 Log: fixes #4676 Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/DbEditorService.java Modified: trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/DbEditorService.java =================================================================== --- trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/DbEditorService.java 2014-03-17 14:10:02 UTC (rev 976) +++ trunk/echobase-services/src/main/java/fr/ifremer/echobase/services/service/DbEditorService.java 2014-03-17 14:46:44 UTC (rev 977) @@ -376,7 +376,35 @@ fName + " WHERE " + subQuery + ")"; } else { - throw new UnsupportedOperationException(); + // more than one property, headace time... + List<String> ruleFilters = Lists.newArrayList(); + for (String decoratorToken : decorator.getTokens()) { + String fName = "f_" + timestamp + (index++); + + // simple case one token + String token = fName + "." + decoratorToken; + + String subQuery = op.toHql(paramName, + token, + data, + filterParams); + + ruleFilters.add(propertyName + " IN ( FROM " + + columnMeta.getType().getName() + " " + + fName + " WHERE " + subQuery + ")"); + } + + String middleOp = "OR"; + switch (op) { + // With negate operand, we must match all !(a or b) = !a and !b + case ne: + case nc: + case en: + case bn: + middleOp = "AND"; + break; + } + ruleFilter = "( " + Joiner.on(" " + middleOp + " ").join(ruleFilters) + " )"; } } @@ -488,8 +516,9 @@ buffer.append("\n "); buffer.append( l(l, "echobase.info.modifiedProperty", propertyName, - sourceValue, - targetValue)); + sourceValue, + targetValue) + ); } } @@ -519,7 +548,8 @@ } catch (Exception eee) { throw new EchoBaseTechnicalException( "Could not obtain property [" + propertyName + - "] value from entity " + entity.getTopiaId(), eee); + "] value from entity " + entity.getTopiaId(), eee + ); } String formatedValue; try { @@ -528,7 +558,8 @@ throw new EchoBaseTechnicalException( "Could not format property [" + propertyName + "] from value [" + value + - "] from entity " + entity.getTopiaId(), eee); + "] from entity " + entity.getTopiaId(), eee + ); } row.put(propertyName, formatedValue);
participants (1)
-
tchemit@users.forge.codelutin.com