001    package org.trails.validation;
002    
003    import java.util.HashMap;
004    import java.util.Map;
005    
006    import org.apache.tapestry.valid.FieldTracking;
007    import org.apache.tapestry.valid.IFieldTracking;
008    import org.apache.tapestry.valid.RenderString;
009    import org.apache.tapestry.valid.ValidationDelegate;
010    
011    public class TrailsValidationDelegate extends ValidationDelegate
012    {
013    
014            public void record(Exception ex)
015            {
016                    FieldTracking tracking = findCurrentTracking();
017                    tracking.setErrorRenderer(new RenderString(ex.getMessage()));
018            }
019    
020            public IFieldTracking getFieldTracking(String displayName)
021            {
022                    if (_trackingsByDisplayName.containsKey(displayName))
023                    {
024                            return _trackingsByDisplayName.get(displayName);
025                    } else
026                    {
027                            return findCurrentTracking();
028                    }
029            }
030    
031            protected Map<String, IFieldTracking> _trackingsByDisplayName = new HashMap<String, IFieldTracking>();
032    
033            @Override
034            public void recordFieldInputValue(String input)
035            {
036                    super.recordFieldInputValue(input);
037                    FieldTracking tracking = findCurrentTracking();
038                    tracking.setInput(input);
039                    _trackingsByDisplayName.put(tracking.getComponent().getDisplayName(), tracking);
040            }
041    }