View Javadoc

1   package org.kuali.student.r2.common.criteria.transform;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   import java.util.Map;
6   import org.kuali.rice.core.api.criteria.AndPredicate;
7   import org.kuali.rice.core.api.criteria.OrPredicate;
8   
9   import org.kuali.rice.core.api.criteria.Predicate;
10  import org.kuali.rice.core.api.criteria.PredicateFactory;
11  import org.kuali.rice.core.api.criteria.PropertyPathPredicate;
12  import org.kuali.rice.core.framework.persistence.jpa.criteria.Criteria;
13  
14  public class RenameTransform extends BaseTransform {
15      
16      private Map<String, String> renameAttributes;
17  
18      public RenameTransform ()  {
19      }
20  
21      public RenameTransform(Map<String, String> renameAttributes) {
22          this ();
23          this.renameAttributes = renameAttributes;
24      }
25  
26  
27      @Override
28      public Predicate apply(final Predicate input, Criteria criteria) {
29          if (input instanceof AndPredicate) {
30              AndPredicate and = (AndPredicate) input;
31              List<Predicate> andClauses = new ArrayList<Predicate> ();
32              for (Predicate p: and.getPredicates()) {
33                  Predicate renamedPredicate = this.apply(p, criteria);
34                  andClauses.add(renamedPredicate);
35              }
36              return PredicateFactory.and(andClauses.toArray(new Predicate[andClauses.size()]));
37          }
38          if (input instanceof OrPredicate) {
39              OrPredicate and = (OrPredicate) input;
40              List<Predicate> orClauses = new ArrayList<Predicate> ();
41              for (Predicate p: and.getPredicates()) {
42                  Predicate renamedPredicate = this.apply(p, criteria);
43                  orClauses.add(renamedPredicate);
44              }
45              return PredicateFactory.or(orClauses.toArray(new Predicate[orClauses.size()]));
46          }
47          if (input instanceof PropertyPathPredicate) {
48              String pp = ((PropertyPathPredicate) input).getPropertyPath();
49              String newName = this.getRenameProperty(pp);
50              if (newName != null) {
51                  return this.createPredicate(input, newName);
52              }
53          }
54  
55          return input;
56      }
57  
58      public Map<String, String> getRenameAttributes() {
59          return renameAttributes;
60      }
61  
62      public void setRenameAttributes(Map<String, String> renameAttributes) {
63          this.renameAttributes = renameAttributes;
64      }
65  
66      private String getRenameProperty(String key) {
67          return renameAttributes.get(key);
68      }
69  }