package experiments.collective.entdoccentric;
import java.io.IOException;
import java.util.Iterator;
import experiments.collective.entdoccentric.StandardQueryDataObject.EntityObject;
import experiments.collective.entdoccentric.calbc.CalbCPubMedID;
import experiments.collective.entdoccentric.calbc.Entity;
/**
* Iteriert über den kleinen CalbC und liefert jedes Entity zur Evaluierung
*
* @author zwicklbauer
*
*/
public class CompleteCalbCSGeneration extends QueryDataGeneration {
private StandardQueryDataObject tempDataObject;
private CalbCPubMedID entry;
private Iterator<Entity> it;
public CompleteCalbCSGeneration() {
super();
it = null;
}
@Override
public StandardQueryDataObject hasNext() {
tempDataObject = null;
return extractDataObject();
}
private StandardQueryDataObject extractDataObject() {
String str = "";
String jsonString = "";
if (it == null) {
// Nächstes Dokument anfordern
try {
while ((str = bufferedReader.readLine()) != null) {
if (!str.equalsIgnoreCase("")) {
jsonString += str;
} else {
break;
}
}
entry = gson.fromJson(jsonString, CalbCPubMedID.class);
if (entry == null) {
return null;
}
it = entry.getEntityList().iterator();
} catch (IOException e) {
e.printStackTrace();
}
}
int id = 0;
tempDataObject = new StandardQueryDataObject(
Integer.parseInt(entry.getId()));
while (it.hasNext()) {
Entity ent = it.next();
EntityObject e = new EntityObject();
if (ent.isTitle()) {
e.setContext(extractText(ent.getPosition(), entry.getTitle()));
} else {
e.setContext(extractText(ent.getPosition(), entry.getAbs()));
}
e.setText(ent.getKeyword());
e.setQueryId(Integer.parseInt(entry.getId()) + id);
e.setResultLinks(setResultLinks(tempDataObject,
ent.getConceptList()));
tempDataObject.addEntity(e);
}
it = null;
return tempDataObject;
}
}