@Override public void init(Instances structure, Environment env) { super.init(structure, env); for (ExpressionNode n : m_children) { n.init(structure, env); } }
/** * Initialize with respect to the incoming instance format * * @param data the incoming instance format */ protected void init(Instances data) { m_indexOfTrueStep = -1; m_indexOfFalseStep = -1; m_connectedFormat = data; if (m_downstream == null) { return; } if (m_downstream[0] != null && ((BeanCommon) m_downstream[0]).getCustomName().equals(m_customNameOfTrueStep)) { m_indexOfTrueStep = 0; } if (m_downstream[0] != null && ((BeanCommon) m_downstream[0]).getCustomName().equals(m_customNameOfFalseStep)) { m_indexOfFalseStep = 0; } if (m_downstream[1] != null && ((BeanCommon) m_downstream[1]).getCustomName().equals(m_customNameOfTrueStep)) { m_indexOfTrueStep = 1; } if (m_downstream[1] != null && ((BeanCommon) m_downstream[1]).getCustomName().equals(m_customNameOfFalseStep)) { m_indexOfFalseStep = 1; } if (m_env == null) { m_env = Environment.getSystemWide(); } try { if (m_expressionString != null && m_expressionString.length() > 0) { m_root = new BracketNode(); m_root.parseFromInternal(m_expressionString); } if (m_root != null) { m_root.init(data, m_env); } } catch (Exception ex) { ex.printStackTrace(); stop(); m_busy = false; } }
@Override public void init(Instances structure, Environment env) { super.init(structure, env); m_resolvedLhsName = m_lhsAttributeName; m_resolvedRhsOperand = m_rhsOperand; try { m_resolvedLhsName = m_env.substitute(m_resolvedLhsName); m_resolvedRhsOperand = m_env.substitute(m_resolvedRhsOperand); } catch (Exception ex) { } Attribute lhs = null; // try as an index or "special" label first if (m_resolvedLhsName.toLowerCase().startsWith("/first")) { lhs = structure.attribute(0); } else if (m_resolvedLhsName.toLowerCase().startsWith("/last")) { lhs = structure.attribute(structure.numAttributes() - 1); } else { // try as an index try { int indx = Integer.parseInt(m_resolvedLhsName); indx--; lhs = structure.attribute(indx); } catch (NumberFormatException ex) { } } if (lhs == null) { lhs = structure.attribute(m_resolvedLhsName); } if (lhs == null) { throw new IllegalArgumentException( "Data does not contain attribute " + "\"" + m_resolvedLhsName + "\""); } m_lhsAttIndex = lhs.index(); if (m_rhsIsAttribute) { Attribute rhs = null; // try as an index or "special" label first if (m_resolvedRhsOperand.toLowerCase().equals("/first")) { rhs = structure.attribute(0); } else if (m_resolvedRhsOperand.toLowerCase().equals("/last")) { rhs = structure.attribute(structure.numAttributes() - 1); } else { // try as an index try { int indx = Integer.parseInt(m_resolvedRhsOperand); indx--; rhs = structure.attribute(indx); } catch (NumberFormatException ex) { } } if (rhs == null) { rhs = structure.attribute(m_resolvedRhsOperand); } if (rhs == null) { throw new IllegalArgumentException( "Data does not contain attribute " + "\"" + m_resolvedRhsOperand + "\""); } m_rhsAttIndex = rhs.index(); } else if (m_operator != ExpressionType.CONTAINS && m_operator != ExpressionType.STARTSWITH && m_operator != ExpressionType.ENDSWITH && m_operator != ExpressionType.REGEX && m_operator != ExpressionType.ISMISSING) { // make sure the operand is parseable as a number (unless missing has // been specified - equals only) if (lhs.isNominal()) { m_numericOperand = lhs.indexOfValue(m_resolvedRhsOperand); if (m_numericOperand < 0) { throw new IllegalArgumentException( "Unknown nominal value '" + m_resolvedRhsOperand + "' for attribute '" + lhs.name() + "'"); } } else { try { m_numericOperand = Double.parseDouble(m_resolvedRhsOperand); } catch (NumberFormatException e) { throw new IllegalArgumentException( "\"" + m_resolvedRhsOperand + "\" is not parseable as a number!"); } } } if (m_operator == ExpressionType.REGEX) { m_regexPattern = Pattern.compile(m_resolvedRhsOperand); } }