protected void parseResult() { setResultset(null); if (currentResult instanceof Map<?, ?>) return; final Object first = OMultiValue.getFirstValue(currentResult); if (first instanceof OIdentifiable) { if (currentResult instanceof List<?>) currentResultSet = (List<OIdentifiable>) currentResult; else if (currentResult instanceof Collection<?>) { currentResultSet = new ArrayList<OIdentifiable>(); currentResultSet.addAll((Collection<? extends OIdentifiable>) currentResult); } else if (currentResult.getClass().isArray()) { currentResultSet = new ArrayList<OIdentifiable>(); Collections.addAll(currentResultSet, (OIdentifiable[]) currentResult); } setResultset(currentResultSet); } }
@Override protected void onBefore() { super.onBefore(); setResultset(new ArrayList<OIdentifiable>()); // DISABLE THE NETWORK AND STORAGE TIMEOUTS properties.put("limit", "20"); properties.put("debug", "false"); properties.put("collectionMaxItems", "10"); properties.put("maxBinaryDisplay", "150"); properties.put("verbose", "2"); properties.put("ignoreErrors", "false"); properties.put("backupCompressionLevel", "9"); // 9 = MAX properties.put("backupBufferSize", "1048576"); // 1MB }
@ConsoleCommand(splitInWords = false, description = "Move from current record by evaluating a predicate against current record") public void move(@ConsoleParameter(name = "text", description = "The sql predicate to evaluate") final String iText) { if (iText == null) return; if (currentRecord == null) return; final Object result = new OSQLPredicate(iText).evaluate(currentRecord, null, null); if (result != null) { if (result instanceof OIdentifiable) { setResultset(new ArrayList<OIdentifiable>()); currentRecord = ((OIdentifiable) result).getRecord(); dumpRecordDetails(); } else if (result instanceof List<?>) { setResultset((List<OIdentifiable>) result); dumpResultSet(-1); } else if (result instanceof Iterator<?>) { final List<OIdentifiable> list = new ArrayList<OIdentifiable>(); while (((Iterator) result).hasNext()) list.add(((Iterator<OIdentifiable>) result).next()); setResultset(list); dumpResultSet(-1); } else setResultset(new ArrayList<OIdentifiable>()); } }
private void browseRecords(final OIdentifiableIterator<?> it) { final int limit = Integer.parseInt(properties.get("limit")); final OTableFormatter tableFormatter = new OTableFormatter(this).setMaxWidthSize(getConsoleWidth()) .setMaxMultiValueEntries(maxMultiValueEntries); setResultset(new ArrayList<OIdentifiable>()); while (it.hasNext() && currentResultSet.size() <= limit) currentResultSet.add(it.next()); tableFormatter.writeRecords(currentResultSet, limit); }
@ConsoleCommand(splitInWords = false, description = "Traverse records and display the results", onlineHelp = "SQL-Traverse") public void traverse(@ConsoleParameter(name = "query-text", description = "The traverse to execute") String iQueryText) { final int limit; if (iQueryText.toLowerCase(Locale.ENGLISH).contains(" limit ")) { // RESET CONSOLE FLAG limit = -1; } else { limit = Integer.parseInt(properties.get("limit")); } long start = System.currentTimeMillis(); OResultSet rs = currentDatabase.command("traverse " + iQueryText); setResultset(rs.stream().map(x -> x.toElement()).collect(Collectors.toList())); rs.close(); float elapsedSeconds = getElapsedSecs(start); dumpResultSet(limit); message("\n\n" + currentResultSet.size() + " item(s) found. Traverse executed in " + elapsedSeconds + " sec(s)."); }
@ConsoleCommand(splitInWords = false, description = "Create a new edge into the database", onlineHelp = "SQL-Create-Edge") public void createEdge( @ConsoleParameter(name = "command-text", description = "The command text to execute") String iCommandText) { String command = "create " + iCommandText; resetResultSet(); final long start = System.currentTimeMillis(); OResultSet rs = currentDatabase.command(command); final List<OIdentifiable> result = rs.stream().map(x -> x.toElement()).collect(Collectors.toList()); rs.close(); float elapsedSeconds = getElapsedSecs(start); setResultset((List<OIdentifiable>) result); int displayLimit = Integer.parseInt(properties.get("limit")); dumpResultSet(displayLimit); message("\nCreated '%s' edges in %f sec(s).\n", ((List<OIdentifiable>) result).size(), elapsedSeconds); }