package ecologylab.bigsemantics.metametadata.fieldparsers;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import ecologylab.generic.Debug;
public class FieldParserForRegexSplit extends FieldParser
{
public static final String DEFAULT_KEY = "$0";
@Override
public List<Map<String, String>> getCollectionResult(FieldParserElement parserElement, String input)
{
List<Map<String, String>> rst = new ArrayList<Map<String, String>>();
try
{
if (input != null)
{
String[] parts = parserElement.getRegex().split(input);
int a = parserElement.getBeginIndex();
if (a == FieldParserElement.BAD_VALUE)
a = 0;
int b = parserElement.getEndIndex();
if (b == FieldParserElement.BAD_VALUE)
b = parts.length;
if (a < 0)
a += parts.length;
if (b <= 0)
b += parts.length;
for (int i = 0; i < parts.length; ++i)
{
if (a <= i && i < b)
{
Map<String, String> item = new HashMap<String, String>();
String value = parts[i];
if (value != null && parserElement.isTrim())
value = value.trim();
item.put(DEFAULT_KEY, parts[i]);
rst.add(item);
}
else
rst.add(null);
}
}
}
catch (Throwable e)
{
Debug.error(this, "field parser (regex_find) failed: " + e.getMessage());
e.printStackTrace();
}
return rst;
}
}