1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.kuali.student.common.assembly.data;
20
21 import java.util.Iterator;
22
23 import org.kuali.student.common.assembly.data.Data.Key;
24
25
26
27
28 public class DefaultPathParser implements PathParser {
29
30 private static final String PATH_SEPARATOR = "/";
31
32 @Override
33 public String format(final QueryPath path) {
34 final StringBuilder sb = new StringBuilder();
35 for (final Iterator<Key> itr = path.iterator(); itr.hasNext();) {
36 final Key key = itr.next();
37 if (key == null) {
38
39
40 sb.append("null");
41 } else {
42 sb.append(key.toString());
43 }
44 if (itr.hasNext()) {
45 sb.append(PATH_SEPARATOR);
46 }
47 }
48 return sb.toString();
49 }
50
51 @Override
52 public String getWildCard() {
53 return "*";
54 }
55
56 @Override
57 public QueryPath parse(final String path) {
58 final QueryPath result = new QueryPath();
59 final String[] elements = path.split(PATH_SEPARATOR);
60 for (String element : elements) {
61 element = element.trim();
62 if (!element.isEmpty()) {
63 Integer index = null;
64 try {
65 index = Integer.valueOf(element);
66 } catch (final Exception e) {
67
68 }
69 if (index == null) {
70 result.add(new Data.StringKey(element));
71 } else {
72 result.add(new Data.IntegerKey(index));
73 }
74 }
75 }
76 return result;
77 }
78
79 @Override
80 public String getPathSeparator() {
81 return PATH_SEPARATOR;
82 }
83 }