package org.sifarish.util;
/*
* Sifarish: Recommendation Engine
* Author: Pranab Ghosh
*
* Licensed under the Apache License, Version 2.0 (the "License"); you
* may not use this file except in compliance with the License. You may
* obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
import java.io.Serializable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Regex based field extractor
* @author pranab
*
*/
public class FieldExtractor implements Serializable {
private String name;
private int ordinal;
private int srcOrdinal;
private String pattern;
private Pattern patternObj;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getOrdinal() {
return ordinal;
}
public void setOrdinal(int ordinal) {
this.ordinal = ordinal;
}
public int getSrcOrdinal() {
return srcOrdinal;
}
public void setSrcOrdinal(int srcOrdinal) {
this.srcOrdinal = srcOrdinal;
}
public String getPattern() {
return pattern;
}
public void setPattern(String pattern) {
this.pattern = pattern;
patternObj = Pattern.compile(pattern);
}
public Pattern getPatternObj() {
return patternObj;
}
public boolean allSrcFields() {
return srcOrdinal == -1;
}
public String findMatch(String data){
String match = null;
Matcher matcher = patternObj.matcher(data);
if (matcher.find() && matcher.groupCount() >= 1) {
match = matcher.group(1).trim();
}
return match;
}
}