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  }