1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.neo4j.server.rest.domain;
21
22 import java.net.URI;
23 import java.util.ArrayList;
24 import java.util.regex.Matcher;
25 import java.util.regex.Pattern;
26
27
28 public class UriToDatabaseMatcher {
29
30 private static ArrayList<Tuple> tuples = new ArrayList<Tuple>();
31
32 public GraphDatabaseName lookup(URI requestUri) {
33
34 for(int i = 0; i < tuples.size(); i ++) {
35 Tuple t = tuples.get(i);
36
37
38 Matcher matcher = t.pattern.matcher(requestUri.getPath());
39
40 if (matcher.matches()) {
41 return t.graphDatabaseName;
42 }
43 }
44
45 return GraphDatabaseName.NO_NAME;
46 }
47
48
49
50
51
52 public void add(GraphDatabaseName databaseName) {
53
54 tuples.add(new Tuple(Pattern.compile("^.*" + databaseName.getName() + ".*$"), databaseName));
55 }
56
57 @Override
58 public String toString() {
59
60 StringBuilder sb = new StringBuilder();
61 for(int i = tuples.size() -1; i >=0; i--) {
62 Tuple t = tuples.get(i);
63
64 sb.append(t);
65
66 }
67
68 return sb.toString();
69
70 }
71
72 private static class Tuple {
73 public GraphDatabaseName graphDatabaseName;
74 public Pattern pattern;
75
76 public Tuple(Pattern pattern, GraphDatabaseName graphDatabaseName) {
77 this.pattern = pattern;
78 this.graphDatabaseName = graphDatabaseName;
79
80 }
81
82 @Override
83 public String toString() {
84 return pattern.toString() + " => " + graphDatabaseName + System.getProperty("line.separator");
85 }
86 }
87 }