package mediawiki.request; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javat.xml.Document; import javat.xml.Element; import mediawiki.MediaWikiConnection; import mediawiki.MediaWikiRequest; import mediawiki.info.Article; public class GetTemplatesValuesRequest extends MediaWikiRequest<List<Map<String, String>>> { private String title; private String template; private boolean uppercasemode = false; public GetTemplatesValuesRequest(Article article, String template){ this(article.getTitle(), template); } public GetTemplatesValuesRequest(String title, String template){ this.title = title; this.template = template; } @Override public List<Map<String, String>> request(MediaWikiConnection c) throws Exception { List<Map<String, String>> res = new ArrayList<>(); String text = (String) c.request(new ContentRequest(title)); Document d = (Document) c.request(new ParseTemplatesRequest(text,title)); for(Element e : d.getRootElement().getChildren("template")){ if(e.getChildren("title").get(0).getText().trim().equalsIgnoreCase(template)){ HashMap<String, String> r = new HashMap<>(); int i = 1; for(Element e2 : e.getChildren("part")){ String key = e2.getChildren("name").get(0).getText().trim(); if(key.equals("")){ key = i+""; i++; } key = uppercasemode ? key.toUpperCase() : key; r.put(key, e2.getChildren("value").get(0).getText().trim()); } res.add(r); } } return res; } public boolean isUppercaseMode() { return uppercasemode; } public void setUppercaseMode(boolean uppercasemode) { this.uppercasemode = uppercasemode; } }