/* * Copyright (c) 2002-2017 "Neo Technology," * Network Engine for Objects in Lund AB [http://neotechnology.com] * * This file is part of Neo4j. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.neo4j.driver.v1.types; import java.util.List; import java.util.Map; import org.neo4j.driver.v1.Value; import org.neo4j.driver.v1.util.Function; /** * Provides methods to access the value of an underlying unordered map by key. * When calling the methods, a user need to provides a default value, which will be given back if no match found by * the key provided. * The default value also servers the purpose of specifying the return type of the value found in map by key. * If the type of the value found A differs from the type of the default value B, a cast from A to B would happen * automatically. Note: Error might arise if the cast from A to B is not possible. */ public interface MapAccessorWithDefaultValue { /** * Retrieve the value with the given key. * If no value found by the key, then the default value provided would be returned. * @param key the key of the value * @param defaultValue the default value that would be returned if no value found by the key in the map * @return the value found by the key or the default value if no such key exists */ Value get( String key, Value defaultValue ); /** * Retrieve the object with the given key. * If no object found by the key, then the default object provided would be returned. * @param key the key of the object * @param defaultValue the default object that would be returned if no object found by the key in the map * @return the object found by the key or the default object if no such key exists */ Object get( String key, Object defaultValue ); /** * Retrieve the number with the given key. * If no number found by the key, then the default number provided would be returned. * @param key the key of the number * @param defaultValue the default number that would be returned if no number found by the key in the map * @return the number found by the key or the default number if no such key exists */ Number get( String key, Number defaultValue ); /** * Retrieve the entity with the given key. * If no entity found by the key, then the default entity provided would be returned. * @param key the key of the entity * @param defaultValue the default entity that would be returned if no entity found by the key in the map * @return the entity found by the key or the default entity if no such key exists */ Entity get( String key, Entity defaultValue ); /** * Retrieve the node with the given key. * If no node found by the key, then the default node provided would be returned. * @param key the key of the node * @param defaultValue the default node that would be returned if no node found by the key in the map * @return the node found by the key or the default node if no such key exists */ Node get( String key, Node defaultValue ); /** * Retrieve the path with the given key. * If no path found by the key, then the default path provided would be returned. * @param key the key of the property * @param defaultValue the default path that would be returned if no path found by the key in the map * @return the path found by the key or the default path if no such key exists */ Path get( String key, Path defaultValue ); /** * Retrieve the value with the given key. * If no value found by the key, then the default value provided would be returned. * @param key the key of the property * @param defaultValue the default value that would be returned if no value found by the key in the map * @return the value found by the key or the default value if no such key exists */ Relationship get( String key, Relationship defaultValue ); /** * Retrieve the list of objects with the given key. * If no value found by the key, then the default value provided would be returned. * @param key the key of the value * @param defaultValue the default value that would be returned if no value found by the key in the map * @return the list of objects found by the key or the default value if no such key exists */ List<Object> get( String key, List<Object> defaultValue ); /** * Retrieve the list of objects with the given key. * If no value found by the key, then the default value provided would be returned. * @param key the key of the value * @param defaultValue the default value that would be returned if no value found by the key in the map * @return the list of objects found by the key or the default value if no such key exists */ /** * Retrieve the list with the given key. * If no value found by the key, then the default list provided would be returned. * @param key the key of the value * @param defaultValue the default value that would be returned if no value found by the key in the map * @param mapFunc the map function that defines how to map each element of the list from {@link Value} to T * @param <T> the type of the elements in the returned list * @return the converted list found by the key or the default list if no such key exists */ <T> List<T> get( String key, List<T> defaultValue, Function<Value,T> mapFunc ); /** * Retrieve the map with the given key. * If no value found by the key, then the default value provided would be returned. * @param key the key of the property * @param defaultValue the default value that would be returned if no value found by the key in the map * @return the map found by the key or the default value if no such key exists */ Map<String, Object> get( String key, Map<String,Object> defaultValue ); /** * Retrieve the map with the given key. * If no value found by the key, then the default map provided would be returned. * @param key the key of the value * @param defaultValue the default value that would be returned if no value found by the key in the map * @param mapFunc the map function that defines how to map each value in map from {@link Value} to T * @param <T> the type of the values in the returned map * @return the converted map found by the key or the default map if no such key exists. */ <T> Map<String, T> get( String key, Map<String,T> defaultValue, Function<Value,T> mapFunc ); /** * Retrieve the java integer with the given key. * If no integer found by the key, then the default integer provided would be returned. * @param key the key of the property * @param defaultValue the default integer that would be returned if no integer found by the key in the map * @return the integer found by the key or the default integer if no such key exists */ int get( String key, int defaultValue ); /** * Retrieve the java long number with the given key. * If no value found by the key, then the default value provided would be returned. * @param key the key of the property * @param defaultValue the default value that would be returned if no value found by the key in the map * @return the java long number found by the key or the default value if no such key exists */ long get( String key, long defaultValue ); /** * Retrieve the java boolean with the given key. * If no value found by the key, then the default value provided would be returned. * @param key the key of the property * @param defaultValue the default value that would be returned if no value found by the key in the map * @return the java boolean found by the key or the default value if no such key exists */ boolean get( String key, boolean defaultValue ); /** * Retrieve the java string with the given key. * If no string found by the key, then the default string provided would be returned. * @param key the key of the property * @param defaultValue the default string that would be returned if no string found by the key in the map * @return the string found by the key or the default string if no such key exists */ String get( String key, String defaultValue ); /** * Retrieve the java float number with the given key. * If no value found by the key, then the default value provided would be returned. * @param key the key of the property * @param defaultValue the default value that would be returned if no value found by the key in the map * @return the java float number found by the key or the default value if no such key exists */ float get( String key, float defaultValue ); /** * Retrieve the java double number with the given key. * If no value found by the key, then the default value provided would be returned. * @param key the key of the property * @param defaultValue the default value that would be returned if no value found by the key in the map * @return the java double number found by the key or the default value if no such key exists */ double get( String key, double defaultValue ); }