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.repr;
21
22 import java.util.Map;
23
24 import org.neo4j.server.rest.domain.URIHelper;
25
26 public abstract class IndexRepresentation extends MappingRepresentation implements EntityRepresentation
27 {
28 private final String name;
29 private final Map<String, String> type;
30
31 public IndexRepresentation( String name, Map<String, String> type )
32 {
33 super( RepresentationType.INDEX );
34 this.name = name;
35 this.type = type;
36 }
37
38 @Override
39 protected void serialize( final MappingSerializer serializer )
40 {
41 serializer.putUriTemplate( "template", "index/" + propertyContainerType() + "/" + name + "/{key}/{value}" );
42 for ( Map.Entry<String, String> pair : type.entrySet() )
43 {
44 serializer.putString( pair.getKey(), pair.getValue() );
45 }
46 }
47
48 public String relativeUriFor( String key, String value, long entityId )
49 {
50 return path() + URIHelper.encode(key) + "/" + URIHelper.encode(value) + "/" + Long.toString( entityId );
51 }
52
53 @Override
54 public ValueRepresentation selfUri()
55 {
56 return ValueRepresentation.uri( path() );
57 }
58
59 private String path()
60 {
61 return "index/" + propertyContainerType() + "/" + name + "/";
62 }
63
64 protected abstract String propertyContainerType();
65
66 }