package storm.applications.spout.parser;
import com.google.common.collect.ImmutableList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import storm.applications.util.stream.StreamValues;
/**
*
* @author mayconbordin
*/
public class SmartPlugParser extends Parser {
private static final Logger LOG = LoggerFactory.getLogger(SmartPlugParser.class);
private static final int ID_FIELD = 0;
private static final int TIMESTAMP_FIELD = 1;
private static final int VALUE_FIELD = 2;
private static final int PROPERTY_FIELD = 3;
private static final int PLUG_ID_FIELD = 4;
private static final int HOUSEHOLD_ID_FIELD = 5;
private static final int HOUSE_ID_FIELD = 6;
@Override
public List<StreamValues> parse(String input) {
String[] fields = input.split(",");
if (fields.length != 7)
return null;
try{
String id = fields[ID_FIELD];
long timestamp = Long.parseLong(fields[TIMESTAMP_FIELD]);
double value = Double.parseDouble(fields[VALUE_FIELD]);
int property = Integer.parseInt(fields[PROPERTY_FIELD]);
String plugId = fields[PLUG_ID_FIELD];
String householdId = fields[HOUSEHOLD_ID_FIELD];
String houseId = fields[HOUSE_ID_FIELD];
StreamValues values = new StreamValues(id, timestamp, value, property,
plugId, householdId, houseId);
values.setMessageId(id);
return ImmutableList.of(values);
} catch (NumberFormatException ex) {
LOG.warn("Error parsing numeric value", ex);
}
return null;
}
}