package mediawiki.info.wikibase; import java.util.HashSet; import javat.xml.Element; import mediawiki.XMLRepresented; import mediawiki.info.Project; public class Sitelink implements XMLRepresented { private Project site; private String title; private HashSet<String> badges = new HashSet<>(); @Deprecated public Sitelink(String site, String title){ setSite(site); setTitle(title); } public Sitelink(Project site, String title, String...badges){ this.site = site; setTitle(title); addBadges(badges); } public Sitelink(Element e) throws Exception { convert(e); } public String getSite() { return site.getSite(); } public String getTitle() { return title; } public String getTitleWithoutNamespace(){ return title.substring(title.indexOf(':')+1); } public void setSite(String site) { this.site.setSite(site); } public void setSite(Project project) { this.site = project; } public void setTitle(String title) { this.title = title; } public Project getProject(){ return site; } public String getLanguage(){ return site.getLanguage(); } public String getURLSuffix(){ return site.getURLSuffix(); } public String getURLPrefix(){ return site.getURLPrefix(); } public void addBadge(String base) { badges.add(base); } public void addBadges(String...b) { for(String s : b) addBadge(s); } public boolean hasBadge(String base) { return badges.contains(base); } public boolean hasBadges() { return ! badges.isEmpty(); } public String[] getBadges() { return badges.toArray(new String[badges.size()]); } @Override public void convert(Element element) throws Exception { setSite(new Project(element.getAttribute("site").getValue())); setTitle(element.getAttribute("title").getValue()); if(element.getChildren("badges").size() == 1){ Element badges = element.getChildren("badges").get(0); for(Element b : badges.getChildren("badge")) { addBadge(b.getText()); } } } @Override public String toString() { return super.toString()+"["+getProject()+":"+getTitle()+"]"; } }