public AbstractAddValuesCommand(CommandBuilder builder, Config config, Command parent, Command child, MorphlineContext context) { super(builder, config, parent, child, context); entrySet = new Configs().getEntrySet(config); for (Map.Entry<String, Object> entry : entrySet) { if (!(entry.getValue() instanceof Collection)) { entry.setValue(new FieldExpression(entry.getValue().toString(), getConfig())); } } }
@Override protected boolean doProcess(Record record) { for (Map.Entry<String, Object> entry : entrySet) { String fieldName = entry.getKey(); List values = record.get(fieldName); Object entryValue = entry.getValue(); Collection results; if (entryValue instanceof Collection) { results = (Collection)entryValue; } else { results = ((FieldExpression) entryValue).evaluate(record); } if (!values.equals(results)) { if (LOG.isDebugEnabled()) { LOG.debug("Equals command failed because {} does not match values: {} for command: {}", new Object[]{results, values, renderedConfig}); } return false; } } return super.doProcess(record); }
private void evaluate2(int from, Record record, StringBuilder buf, ArrayList<Object> results) { if (from >= fields.size()) { results.add(buf.toString()); return; } Object item = fields.get(from); if (item instanceof String) { buf.append(item); evaluate2(from + 1, record, buf, results); } else { String ref = ((Field) item).getName(); if (ref.length() == 0) { buf.append(record.toString()); // @{} means dump string representation of entire record evaluate2(from + 1, record, buf, results); } else { List resolvedValues = record.get(ref); for (Object value : resolvedValues) { StringBuilder buf2 = new StringBuilder(buf); buf2.append(value.toString()); evaluate2(from + 1, record, buf2, results); } } } }
private List resolveExpression(String expr, Record record) { return new FieldExpression(expr, null).evaluate(record); }
public AbstractAddValuesCommand(CommandBuilder builder, Config config, Command parent, Command child, MorphlineContext context) { super(builder, config, parent, child, context); entrySet = new Configs().getEntrySet(config); for (Map.Entry<String, Object> entry : entrySet) { if (!(entry.getValue() instanceof Collection)) { entry.setValue(new FieldExpression(entry.getValue().toString(), getConfig())); } } }
@Override protected boolean doProcess(Record record) { Object[] resolvedArgs = new Object[expressions.length]; for (int i = 0; i < expressions.length; i++) { resolvedArgs[i] = expressions[i].evaluate(record); } log(format, resolvedArgs); return super.doProcess(record); }
private void evaluate2(int from, Record record, StringBuilder buf, ArrayList<Object> results) { if (from >= fields.size()) { results.add(buf.toString()); return; } Object item = fields.get(from); if (item instanceof String) { buf.append(item); evaluate2(from + 1, record, buf, results); } else { String ref = ((Field) item).getName(); if (ref.length() == 0) { buf.append(record.toString()); // @{} means dump string representation of entire record evaluate2(from + 1, record, buf, results); } else { List resolvedValues = record.get(ref); for (Object value : resolvedValues) { StringBuilder buf2 = new StringBuilder(buf); buf2.append(value.toString()); evaluate2(from + 1, record, buf2, results); } } } }
public Equals(CommandBuilder builder, Config config, Command parent, Command child, MorphlineContext context) { super(builder, config, parent, child, context); this.entrySet = new Configs().getEntrySet(config); for (Map.Entry<String, Object> entry : entrySet) { if (!(entry.getValue() instanceof Collection)) { entry.setValue(new FieldExpression(entry.getValue().toString(), getConfig())); } } this.renderedConfig = config.root().render(); }
@Override protected boolean doProcess(Record record) { for (Map.Entry<String, Object> entry : entrySet) { String fieldName = entry.getKey(); List values = record.get(fieldName); Object entryValue = entry.getValue(); Collection results; if (entryValue instanceof Collection) { results = (Collection)entryValue; } else { results = ((FieldExpression) entryValue).evaluate(record); } if (!values.equals(results)) { if (LOG.isDebugEnabled()) { LOG.debug("Equals command failed because {} does not match values: {} for command: {}", new Object[]{results, values, renderedConfig}); } return false; } } return super.doProcess(record); }
/** Returns the values of a {@link Record} referred to by the given field expression */ public List evaluate(Record record) { // fast path (not functionally necessary): if (fields.size() == 1) { Object first = fields.get(0); if (first instanceof String) { return Collections.singletonList(first); } else { String ref = ((Field) first).getName(); if (ref.length() != 0) { List resolvedValues = record.get(ref); return resolvedValues; } } } // slow path: ArrayList<Object> results = new ArrayList<Object>(1); evaluate2(0, record, new StringBuilder(), results); return results; }
public Contains(CommandBuilder builder, Config config, Command parent, Command child, MorphlineContext context) { super(builder, config, parent, child, context); this.entrySet = new Configs().getEntrySet(config); for (Map.Entry<String, Object> entry : entrySet) { if (!(entry.getValue() instanceof Collection)) { entry.setValue(new FieldExpression(entry.getValue().toString(), getConfig())); } } this.renderedConfig = config.root().render(); }
@Override protected boolean doProcess(Record record) { Object[] resolvedArgs = new Object[expressions.length]; for (int i = 0; i < expressions.length; i++) { resolvedArgs[i] = expressions[i].evaluate(record); } log(format, resolvedArgs); return super.doProcess(record); }
/** Returns the values of a {@link Record} referred to by the given field expression */ public List evaluate(Record record) { // fast path (not functionally necessary): if (fields.size() == 1) { Object first = fields.get(0); if (first instanceof String) { return Collections.singletonList(first); } else { String ref = ((Field) first).getName(); if (ref.length() != 0) { List resolvedValues = record.get(ref); return resolvedValues; } } } // slow path: ArrayList<Object> results = new ArrayList<Object>(1); evaluate2(0, record, new StringBuilder(), results); return results; }
public Equals(CommandBuilder builder, Config config, Command parent, Command child, MorphlineContext context) { super(builder, config, parent, child, context); this.entrySet = new Configs().getEntrySet(config); for (Map.Entry<String, Object> entry : entrySet) { if (!(entry.getValue() instanceof Collection)) { entry.setValue(new FieldExpression(entry.getValue().toString(), getConfig())); } } this.renderedConfig = config.root().render(); }
@Override protected boolean doProcess(Record record) { for (Map.Entry<String, Object> entry : entrySet) { String fieldName = entry.getKey(); List values = record.get(fieldName); Object entryValue = entry.getValue(); Collection results; if (entryValue instanceof Collection) { results = (Collection)entryValue; } else { results = ((FieldExpression) entryValue).evaluate(record); } boolean found = false; for (Object result : results) { if (values.contains(result)) { found = true; break; } } if (!found) { if (LOG.isDebugEnabled()) { LOG.debug("Contains command failed because it could not find any of {} in values: {} for command: {}", new Object[]{results, values, renderedConfig}); } return false; } } return super.doProcess(record); }
public Contains(CommandBuilder builder, Config config, Command parent, Command child, MorphlineContext context) { super(builder, config, parent, child, context); this.entrySet = new Configs().getEntrySet(config); for (Map.Entry<String, Object> entry : entrySet) { if (!(entry.getValue() instanceof Collection)) { entry.setValue(new FieldExpression(entry.getValue().toString(), getConfig())); } } this.renderedConfig = config.root().render(); }
@Override protected boolean doProcess(Record record) { for (Map.Entry<String, Object> entry : entrySet) { String fieldName = entry.getKey(); List values = record.get(fieldName); Object entryValue = entry.getValue(); Collection results; if (entryValue instanceof Collection) { results = (Collection)entryValue; } else { results = ((FieldExpression) entryValue).evaluate(record); } boolean found = false; for (Object result : results) { if (values.contains(result)) { found = true; break; } } if (!found) { if (LOG.isDebugEnabled()) { LOG.debug("Contains command failed because it could not find any of {} in values: {} for command: {}", new Object[]{results, values, renderedConfig}); } return false; } } return super.doProcess(record); }
public LogCommand(CommandBuilder builder, Config config, Command parent, Command child, MorphlineContext context) { super(builder, config, parent, child, context); this.format = getConfigs().getString(config, "format"); List<String> argList = getConfigs().getStringList(config, "args", Collections.<String>emptyList()); this.expressions = new FieldExpression[argList.size()]; for (int i = 0; i < argList.size(); i++) { this.expressions[i] = new FieldExpression(argList.get(i), getConfig()); } validateArguments(); }
@Override @SuppressWarnings("unchecked") protected boolean doProcess(Record record) { for (Map.Entry<String, Object> entry : entrySet) { String fieldName = entry.getKey(); prepare(record, fieldName); Object entryValue = entry.getValue(); Collection results; if (entryValue instanceof Collection) { results = (Collection)entryValue; } else { results = ((FieldExpression) entryValue).evaluate(record); } putAll(record, fieldName, results); } // pass record to next command in chain: return super.doProcess(record); }
public LogCommand(CommandBuilder builder, Config config, Command parent, Command child, MorphlineContext context) { super(builder, config, parent, child, context); this.format = getConfigs().getString(config, "format"); List<String> argList = getConfigs().getStringList(config, "args", Collections.<String>emptyList()); this.expressions = new FieldExpression[argList.size()]; for (int i = 0; i < argList.size(); i++) { this.expressions[i] = new FieldExpression(argList.get(i), getConfig()); } validateArguments(); }