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; } }