package mediawiki.request.wikibase;
import java.util.ArrayList;
import javat.xml.Document;
import javat.xml.Element;
import mediawiki.MediaWikiConnection;
import mediawiki.MediaWikiPostRequest;
import mediawiki.MediaWikiRequest;
import mediawiki.info.wikibase.Claim;
import mediawiki.info.wikibase.Property;
import mediawiki.info.wikibase.Snak;
import mediawiki.info.wikibase.Statement;
public class GetSpecificStatementRequest extends MediaWikiRequest<ArrayList<Statement>> {
private Snak snak = null;
public GetSpecificStatementRequest(String base, Property property) {
setProperty("entity", base);
setProperty("property", property.toString());
}
public GetSpecificStatementRequest(String base, Claim attribute) {
this(base, attribute.getProperty());
setSnak(attribute.getSnak());
}
@Override
public ArrayList<Statement> request(MediaWikiConnection c) throws Exception {
MediaWikiPostRequest p = new MediaWikiPostRequest(c);
p.putData(getProperties());
p.putData("action", "wbgetclaims");
Document d = p.requestDocument();
ArrayList<Statement> r = new ArrayList<>();
if(d.getRootElement().getChildren("claims").get(0).getChildren("property").size() == 0){
return r;
}
for(Element e : d.getRootElement().getChildren("claims").get(0).getChildren("property").get(0).getChildren("claim")){
Statement s = new Statement(e);
if(snak == null || s.getClaim().getSnak().equals(snak)){
r.add(s);
}
}
return r;
}
public Snak getSnak() {
return snak;
}
public void setSnak(Snak entity) {
this.snak = entity;
}
}