package com.cloudera.flume.reporter.builder;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.cloudera.flume.reporter.histogram.RegexGroupHistogramSink;
ReporterBuilder<RegexGroupHistogramSink> {
String fname;
this.fname = f;
}
Pattern p = Pattern.compile("(\\w+):(\\w+):(\\d+):(.*)");
@Override
public Collection<RegexGroupHistogramSink>
load()
throws IOException {
List<RegexGroupHistogramSink> l = new ArrayList<RegexGroupHistogramSink>();
RandomAccessFile raf = new RandomAccessFile(fname, "r");
String s = raf.readLine();
while (s != null) {
Matcher m = p.matcher(s);
if (!m.matches()) {
System.err.printf("Invalid regex group specification: %s\n", s);
continue;
}
String name = m.group(1);
int grp = Integer.parseInt(m.group(3));
Pattern regex = Pattern.compile(m.group(4));
RegexGroupHistogramSink rghs = new RegexGroupHistogramSink(name, regex,
grp);
l.add(rghs);
s = raf.readLine();
}
return l;
}
}