View Javadoc

1   /**
2    * Copyright (c) 2002-2011 "Neo Technology,"
3    * Network Engine for Objects in Lund AB [http://neotechnology.com]
4    *
5    * This file is part of Neo4j.
6    *
7    * Neo4j is free software: you can redistribute it and/or modify
8    * it under the terms of the GNU General Public License as published by
9    * the Free Software Foundation, either version 3 of the License, or
10   * (at your option) any later version.
11   *
12   * This program is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   * GNU General Public License for more details.
16   *
17   * You should have received a copy of the GNU General Public License
18   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
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  }