package org.axway.grapes.server.db.mongo; import org.axway.grapes.server.db.DBRegExp; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; /** * Jongo utility class * * <p>Gathers all the utility methods to use Jongo.</p> * * @author jdcoffre */ public final class JongoUtils { private JongoUtils() { // Hide Utility Class Constructor } /** * Generate a Jongo query regarding a set of parameters. * * @param params Map<queryKey, queryValue> of query parameters * @return String */ public static String generateQuery(final Map<String,Object> params){ final StringBuilder sb = new StringBuilder(); boolean newEntry = false; sb.append("{"); for(Entry<String,Object> param: params.entrySet()){ if(newEntry){ sb.append(", "); newEntry = false; } sb.append(param.getKey()); sb.append(": "); sb.append(getParam(param.getValue())); newEntry = true; } sb.append("}"); return sb.toString(); } /** * Generate a Jongo query with provided the parameter. * * @param key * @param value * @return String */ public static String generateQuery(final String key, final Object value) { final Map<String, Object> params = new HashMap<String, Object>(); params.put(key, value); return generateQuery(params); } /** * Handle the serialization of String, Integer and boolean parameters. * * @param param to serialize * @return Object */ private static Object getParam(final Object param) { final StringBuilder sb = new StringBuilder(); if(param instanceof String){ sb.append("'"); sb.append((String)param); sb.append("'"); } else if(param instanceof Boolean){ sb.append(String.valueOf((Boolean)param)); } else if(param instanceof Integer){ sb.append(String.valueOf((Integer)param)); } else if(param instanceof DBRegExp){ sb.append('/'); sb.append(((DBRegExp) param).toString()); sb.append('/'); } return sb.toString(); } }