public static List<String> list(String val) { return list(val, ","); }
public static String parseTemplate(String path, String subs) { Map<String, Object> sub = StringUtil.getMapFromString(subs); StringBuilder ret = new StringBuilder(); int point = 0; while (point < path.length()) { int pos = path.indexOf('$', point); if (pos == -1) { ret.append(path.substring(point)); break; } else { ret.append(path.substring(point, pos)); int nextPoint = path.indexOf('}', pos); if (nextPoint == -1) { ret.append(path.substring(pos)); point = path.length(); } else { String var = path.substring(pos + 2, nextPoint); if (sub.containsKey(var)) { ret.append(sub.get(var)); } else { ret.append(var.toUpperCase()); } point = nextPoint + 1; } } } return ret.toString(); }
@Override public List<Map<String, Object>> batchPullData(List<String> displayNames) { // Run in batches of 50 List<String> content = new ArrayList<String>(); List<List<String>> batches = StringUtil.getBatches(displayNames, 50); for (List<String> batch : batches) { List<String> batchDisplayNames = new ArrayList<String>(); for (String disp : batch) { disp = URIParser.convertDocURI(disp); batchDisplayNames.add(disp); } Map<String, String> contents = api.getDoc().getDocs(batchDisplayNames); content.addAll(contents.values()); } List<Map<String, Object>> ret = new ArrayList<Map<String, Object>>(); for (String c : content) { ret.add((Map<String, Object>) JacksonUtil.getMapFromJson(c)); } return ret; }
@Override public ReflexValue evaluate(IReflexDebugger debugger, Scope scope) { debugger.stepStart(this, scope); ReflexValue retVal = new ReflexNullValue(lineNumber);; ReflexValue val = expr.evaluate(debugger, scope); String b64 = StringUtil.base64Compress(val.asString()); retVal = new ReflexValue(b64); debugger.stepEnd(this, retVal, scope); return retVal; }
@Override public ReflexValue evaluate(IReflexDebugger debugger, Scope scope) { debugger.stepStart(this, scope); ReflexValue retVal = new ReflexNullValue(lineNumber);; ReflexValue val = expr.evaluate(debugger, scope); String b64 = StringUtil.base64Decompress(val.asString()); retVal = new ReflexValue(b64); debugger.stepEnd(this, retVal, scope); return retVal; }
@Override public List<String> putDocumentAndGetDocumentFields(CallingContext context, String docURI, String content, List<String> fields) { Map<String, Map<String, Object>> docCache = new HashMap<String, Map<String, Object>>(); docCache.put(docURI, (Map<String, Object>) JacksonUtil.getMapFromJson(content)); List<String> ret = new ArrayList<String>(); for (String field : fields) { List<String> fieldParts = StringUtil.list(field, "\\."); ret.addAll(getValue(context, docURI, fieldParts, docCache)); } return ret; }
@Override public List<String> getDocumentFields(CallingContext context, String docUri, List<String> fields) { docUri = addSchemeIfNeeded(docUri, Scheme.DOCUMENT); Map<String, Map<String, Object>> docCache = new HashMap<String, Map<String, Object>>(); List<String> ret = new ArrayList<String>(); for (String field : fields) { List<String> fieldParts = StringUtil.list(field, "\\."); ret.addAll(getValue(context, docUri, fieldParts, docCache)); } return ret; }
private List<String> getFieldValue(Map<String, Object> map, String type, RaptureField f) { // displayname_return display = // DisplayNameParser.parseDisplayName(displayName); List<String> ret = new ArrayList<String>(); // TODO: Here we also need to worry about composite fields for (RaptureFieldPath fp : f.getFieldPaths()) { if (fp.getTypeName().equals(type)) { // This will be something like x.y.z List<String> pathParts = StringUtil.list(fp.getPath(), "\\."); ret.add(getFromMap(map, pathParts)); } } return ret; }