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()+"]";
}
}