// Path: age-predictor-opennlp/src/main/java/opennlp/tools/util/featuregen/FeatureGenerator.java
// public interface FeatureGenerator {
// 
//     /**
//      * Extract features from given text fragments
//      *
//      * @param text             the text fragments to extract features from
//      * @param extraInformation optional extra information to be used by the feature generator
//      * @return a collection of features
//      */
//     Collection<String> extractFeatures(String[] text);
// }


import opennlp.tools.util.featuregen.FeatureGenerator;
import java.util.Collection;
import java.util.LinkedList;
import org.apache.spark.api.java.function.Function;
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.
 */

package edu.usc.irds.agepredictor.spark.authorage;




public class CreateEvents implements Function<String, EventWrapper> {
    private AgeClassifyContextGeneratorWrapper wrapper;
    
    public CreateEvents(String tok, String fg) {
	this.wrapper = new AgeClassifyContextGeneratorWrapper(tok, fg);
    }
    
    public CreateEvents(AgeClassifyContextGeneratorWrapper w) {
	this.wrapper = w;
    }
    
    @Override
    public EventWrapper call(String s) {
	String category;
	String text;

	try {
	    category = s.split("\t", 2)[0]; 
	    text = s.split("\t", 2)[1];
	} catch (Exception e) {
	    //not in correct format. ignore
	    return null;
	}

	//first tokenize the text
	String tokens[] = this.wrapper.getTokenizer().tokenize(text);
	
	//then extract features using all the feature generators
	Collection<String> context = new LinkedList<String>();
	
// Path: age-predictor-opennlp/src/main/java/opennlp/tools/util/featuregen/FeatureGenerator.java
// public interface FeatureGenerator {
// 
//     /**
//      * Extract features from given text fragments
//      *
//      * @param text             the text fragments to extract features from
//      * @param extraInformation optional extra information to be used by the feature generator
//      * @return a collection of features
//      */
//     Collection<String> extractFeatures(String[] text);
// }


// Path: age-predictor-cli/src/main/java/edu/usc/irds/agepredictor/spark/authorage/CreateEvents.java
import opennlp.tools.util.featuregen.FeatureGenerator;
import java.util.Collection;
import java.util.LinkedList;
import org.apache.spark.api.java.function.Function;

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.
 */

package edu.usc.irds.agepredictor.spark.authorage;




public class CreateEvents implements Function<String, EventWrapper> {
    private AgeClassifyContextGeneratorWrapper wrapper;
    
    public CreateEvents(String tok, String fg) {
	this.wrapper = new AgeClassifyContextGeneratorWrapper(tok, fg);
    }
    
    public CreateEvents(AgeClassifyContextGeneratorWrapper w) {
	this.wrapper = w;
    }
    
    @Override
    public EventWrapper call(String s) {
	String category;
	String text;

	try {
	    category = s.split("\t", 2)[0]; 
	    text = s.split("\t", 2)[1];
	} catch (Exception e) {
	    //not in correct format. ignore
	    return null;
	}

	//first tokenize the text
	String tokens[] = this.wrapper.getTokenizer().tokenize(text);
	
	//then extract features using all the feature generators
	Collection<String> context = new LinkedList<String>();
	
	FeatureGenerator[] featureGenerators = this.wrapper.getFeatureGenerators();