/**
* CopyRight by Chinamobile
*
* RecordParseDefault.java
*/
package com.chinamobile.bcbsp.partition;
import java.util.StringTokenizer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.io.Text;
import com.chinamobile.bcbsp.Constants;
import com.chinamobile.bcbsp.api.RecordParse;
import com.chinamobile.bcbsp.api.Vertex;
import com.chinamobile.bcbsp.util.BSPJob;
/**
* RecordParseDefault
*
* This class is used to parse a record as a HeadNode object.
*/
public class RecordParseDefault extends RecordParse {
// For Log
@SuppressWarnings("unused")
private static final Log LOG = LogFactory.getLog(RecordParseDefault.class);
private Class<? extends Vertex<?, ?, ?>> vertexClass;
/**
* This method is used to parse a record as a Vertex object.
*
* @param recordReader
* @param headNode
* @return a Vertex object
*/
@SuppressWarnings("unchecked")
@Override
public Vertex recordParse(String key, String value) {
Vertex vertex = null;
try {
vertex = vertexClass.newInstance();
vertex.fromString(key + Constants.KV_SPLIT_FLAG + value);
} catch (Exception e) {
LOG.error("RecordParse", e);
return null;
}
return vertex;
}
/**
* This method is used to parse a record and obtain VertexID .
* @param recordReader
* @return the vertex id
*/
@Override
public Text getVertexID(Text key) {
try {
StringTokenizer str = new StringTokenizer(key.toString(),
Constants.SPLIT_FLAG);
if(str.countTokens()!=2) return null;
return new Text(str.nextToken());
} catch (Exception e) {
return null;
}
}
/**
* This method is used to initialize the RecordParseDefault.
*
* @param job
*/
@Override
public void init(BSPJob job) {
this.vertexClass = job.getVertexClass();
}
}