@Override public double value(int attIndex) { Class<?> c = tuple.getSchema().getColumnType(attIndex); double value = -1; if (ObviousWekaUtils.isNumeric(c)) { return Double.valueOf(tuple.get(attIndex).toString()); } else if (ObviousWekaUtils.isString(c)) { return Double.valueOf(attribute(attIndex).indexOfValue( tuple.getString(attIndex))); } else if (ObviousWekaUtils.isDate(c)) { return tuple.getDate(attIndex).getTime(); } return value; }
@Override public int addRow(Tuple tuple) { Schema tupleSchema = tuple.getSchema(); for (int i = 0; i < tupleSchema.getColumnCount(); i++) { if (!tupleSchema.getColumnName(i).equals(schema.getColumnName(i)) || !tupleSchema.getColumnType(i).equals(schema.getColumnType(i))) { return -1; } } Instance inst = new Instance(schema.getColumnCount()); for (int i = 0; i < tuple.getSchema().getColumnCount(); i++) { Attribute att = instances.attribute(i); if (att.isNumeric()) { inst.setValue(att, Double.parseDouble(tuple.get(i).toString())); } else if (att.isString() || att.isNominal()) { inst.setValue(att, tuple.getString(i)); } else if (att.isDate()) { try { inst.setValue(att, att.parseDate(tuple.getDate(i).toString())); } catch (ParseException e) { e.printStackTrace(); } } } instances.add(inst); return getRowCount(); }