com.github.jsonldjava.utils.Obj Maven / Gradle / Ivy
package com.github.jsonldjava.utils;
import java.util.Map;
public class Obj {
/**
* Used to make getting values from maps embedded in maps embedded in maps
* easier TODO: roll out the loops for efficiency
*
* @param map
* The map to get a key from
* @param keys
* The list of keys to attempt to get from the map. The first key
* found with a non-null value is returned, or if none are found,
* the original map is returned.
* @return The key from the map, or the original map if none of the keys are
* found.
*/
public static Object get(Map map, String... keys) {
Map result = map;
for (final String key : keys) {
result = (Map) map.get(key);
// make sure we don't crash if we get a null somewhere down the line
if (result == null) {
return result;
}
}
return result;
}
public static Object put(Object map, String key1, Object value) {
((Map) map).put(key1, value);
return map;
}
public static Object put(Object map, String key1, String key2, Object value) {
((Map) ((Map) map).get(key1)).put(key2, value);
return map;
}
public static Object put(Object map, String key1, String key2, String key3, Object value) {
((Map) ((Map) ((Map) map).get(key1))
.get(key2)).put(key3, value);
return map;
}
public static Object put(Object map, String key1, String key2, String key3, String key4,
Object value) {
((Map) ((Map) ((Map) ((Map) map)
.get(key1)).get(key2)).get(key3)).put(key4, value);
return map;
}
public static boolean contains(Object map, String... keys) {
for (final String key : keys) {
map = ((Map) map).get(key);
if (map == null) {
return false;
}
}
return true;
}
public static Object remove(Object map, String k1, String k2) {
return ((Map) ((Map) map).get(k1)).remove(k2);
}
/**
* A null-safe equals check using v1.equals(v2) if they are both not null.
*
* @param v1
* The source object for the equals check.
* @param v2
* The object to be checked for equality using the first objects
* equals method.
* @return True if the objects were both null. True if both objects were not
* null and v1.equals(v2). False otherwise.
*/
public static boolean equals(Object v1, Object v2) {
return v1 == null ? v2 == null : v1.equals(v2);
}
}