package com.formulasearchengine.mathosphere.basex.types;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamConverter;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
import java.util.ArrayList;
import java.util.List;
/**
* Stores formula in Ntcir format.
* Created by jjl4 on 6/24/15.
*/
@XStreamAlias("formula")
public class Formula {
@XStreamAlias("id")
@XStreamAsAttribute
private String id;
@XStreamAlias("for")
@XStreamAsAttribute
private String queryFormulaID;
@XStreamAlias("xref")
@XStreamAsAttribute
private String filename;
//This is a string so that "" strings are deserialized correctly
@XStreamAlias("score")
@XStreamAsAttribute
private String score;
@XStreamAlias("qvar")
@XStreamImplicit
private List<Qvar> qvars;
public Formula( String id, String queryFormulaID, String filenameAndFormulaID, Integer score ) {
this.id = id;
this.queryFormulaID = queryFormulaID;
this.filename = filenameAndFormulaID;
//Null assignment makes attribute disappear
this.score = score == null ? null : String.valueOf( score );
qvars = new ArrayList<>();
}
public void addQvar( Qvar qvar ) {
qvars.add( qvar );
}
public void setQvars( List<Qvar> qvars ) {
this.qvars = new ArrayList<>( qvars );
}
public List<Qvar> getQvars() {
return new ArrayList<>( qvars );
}
public void setScore( Integer score ) {
this.score = score == null ? "" : String.valueOf( score );
}
public Integer getScore() {
return score != null && score.isEmpty() ? null : Integer.valueOf( score ).intValue();
}
public String getId() {
return id;
}
public void setId( String id ) {
this.id = id;
}
public String getFor() {
return queryFormulaID;
}
public void setFor( String queryFormulaID ) {
this.queryFormulaID = queryFormulaID;
}
public String getXref() {
return filename;
}
public void setXref( String filename ) {
this.filename = filename;
}
}