/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.hortonworks.amuise.cdrstorm.storm.spouts;
import backtype.storm.spout.Scheme;
import backtype.storm.tuple.Fields;
import com.hortonworks.amuise.cdrstorm.storm.bolts.LoggingBolt;
import com.hortonworks.amuise.cdrstorm.storm.utils.CDRStormContext;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import org.apache.log4j.Logger;
/**
*
* @author adammuise
*/
public class CDRScheme implements Scheme {
Properties globalconfigs;
private static final Logger logger = Logger.getLogger(CDRScheme.class);
public CDRScheme() {
CDRStormContext ctx = new CDRStormContext();
this.globalconfigs = ctx.config;
}
@Override
public List<Object> deserialize(byte[] bytes) {
List<Object> cdrvals = new ArrayList<Object>();
logger.debug("CDRScheme Bytes.toString: " + bytes.toString());
try {
String payload = new String(bytes, "UTF-8");
logger.debug("CDRScheme payload (from Stirng constructor): " + payload);
String[] items = payload.split("\\|");
for (String item : items) {
cdrvals.add(item);
}
} catch (Exception e) {
return cdrvals;
}
return cdrvals;
}
@Override
public Fields getOutputFields() {
List<String> predefinedCDRScheme = new ArrayList<String>();
String[] cdrFields = globalconfigs.getProperty("cdr.schema").split(",");
for (String field : cdrFields) {
predefinedCDRScheme.add(field);
}
Fields cdrSchemeFields = new Fields(predefinedCDRScheme);
return cdrSchemeFields;
}
}