Author: michiel
Date: 2010-03-12 12:39:39 +0100 (Fri, 12 Mar 2010)
New Revision: 41358
Modified:
mmbase/trunk/applications/vpro-wizards/src/main/java/org/mmbase/applications/vprowizards/spring/action/CreateRelationAction.java
Log:
consider searchDir when creating relation. Also, make sortField default 'pos'
if role posrel (as advertised in documetnaiton of the tags)
Modified:
mmbase/trunk/applications/vpro-wizards/src/main/java/org/mmbase/applications/vprowizards/spring/action/CreateRelationAction.java
===================================================================
---
mmbase/trunk/applications/vpro-wizards/src/main/java/org/mmbase/applications/vprowizards/spring/action/CreateRelationAction.java
2010-03-12 11:38:21 UTC (rev 41357)
+++
mmbase/trunk/applications/vpro-wizards/src/main/java/org/mmbase/applications/vprowizards/spring/action/CreateRelationAction.java
2010-03-12 11:39:39 UTC (rev 41358)
@@ -55,17 +55,24 @@
if(!SORT_POSITION_BEGIN.equals(sortPosition) &&
!SORT_POSITION_END.equals(sortPosition)){
addGlobalError("error.field.value", new String[]{"sortPosition",
sortPosition} );
}
+
if(!StringUtils.isBlank(sortField)){
if(!relationManager.hasField(sortField)){
addGlobalError("error.field.unknown", new
String[]{"sortField", this.getClass().getName(), relationManager.getName()});
}
}
-
if (!hasErrors()) {
- Relation rel = relationManager.createRelation(sourceNode,
destinationNode);
+ Relation rel;
+ if ("source".equals(searchDir)) {
+ rel = relationManager.createRelation(destinationNode,
sourceNode);
+ } else {
+ rel = relationManager.createRelation(sourceNode,
destinationNode);
+ }
for (Map.Entry<String, Object> entry :
getRelationValues().entrySet()) {
rel.setValue(entry.getKey(), entry.getValue());
}
+ log.info("Created relation " + rel);
+
return rel;
}
return null;
@@ -78,10 +85,12 @@
*/
@Override
protected void processNode(Transaction transaction) {
+ log.info("Processing relation (sortField " + sortField + ")");
if (!StringUtils.isBlank(sortField)) {
// set the position if we need to do that
Integer sortPositionValue = resolvePosition(transaction);
+ log.info("Resolved position value " + sortPositionValue);
if (sortPositionValue != null) {
getNode().setIntValue(sortField, sortPositionValue);
}
@@ -107,17 +116,20 @@
// find the lowest or highest relation number
// it is unlikely that the path matches duplicate builder names
here, but who knows?
- PathBuilder pathBuilder = new PathBuilder(new String[] {
sourceNode.getNodeManager().getName(), role,
+ PathBuilder pathBuilder = new PathBuilder(new String[] {
sourceNode.getNodeManager().getName(),
+ role,
destinationNode.getNodeManager().getName() });
- q = Queries.createQuery(transaction, sourceNode.getNumber() + "",
pathBuilder.getPath(), pathBuilder
- .getStep(1)
- + "." + sortField, null,
pathBuilder.getStep(1) + "." + sortField,
+ q = Queries.createQuery(transaction, sourceNode.getNumber() + "",
pathBuilder.getPath(),
+ pathBuilder.getStep(1) + "." + sortField,
+ null, pathBuilder.getStep(1) + "." +
sortField,
(sortPosition.equals("begin") ? "up" :
"down"), null, false);
q.setMaxNumber(1);
NodeList nl = transaction.getList(q);
if (nl.size() > 0) {
position = nl.getNode(0).getIntValue(role + "." + sortField);
position = (sortPosition.equals("begin") ? position - 1 :
position + 1);
+ } else {
+ log.warn("Query " + q + " didn't result anything");
}
return Integer.valueOf(position);
@@ -146,4 +158,12 @@
this.sortField = sortField;
}
+ @Override
+ public void setRole(String role) {
+ super.setRole(role);
+ if ("posrel".equals(role) && this.sortField == null) {
+ this.sortField = "pos";
+ }
+ }
+
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs