package mediawiki.task.config.nt2;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;
import org.json.JSONException;
import org.json.JSONObject;
import mediawiki.MediaWikiConnection;
import mediawiki.MediaWikiRequest;
import mediawiki.WikidataQuery;
import mediawiki.info.Article;
import mediawiki.info.Project;
import mediawiki.info.wikibase.Property;
import mediawiki.info.wikibase.Reference;
import mediawiki.info.wikibase.Sitelink;
import mediawiki.info.wikibase.snaks.ItemSnak;
import mediawiki.request.CategoryMemberRequest;
import mediawiki.request.LinkshereRequest;
import mediawiki.request.TemplateEmbeddedInRequest;
import mediawiki.request.wikibase.GetSitelinkRequest;
public class NormdatenTask2Configuration {
public static final NormdatenTask2Configuration ENWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("Category:Pages using authority control with parameters",0),
new Reference(new Property(143), new ItemSnak(328)),
"Authority control", "Normdaten"
);
public static final NormdatenTask2Configuration ENWIKI2 = new NormdatenTask2Configuration(
new CategoryMemberRequest("Category:VIAF not on Wikidata",0),
new Reference(new Property(143), new ItemSnak(328)),
"Authority control", "Normdaten"
);
public static final NormdatenTask2Configuration FRWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("Catégorie:Page utilisant le modèle Autorité avec un paramètre local",0),
new Reference(new Property(143), new ItemSnak(8447)),
"Autorité","Authority control","Normdaten"
);
public static final NormdatenTask2Configuration MKWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("Категорија:Страници со нормативна контрола со параметри",0),
new Reference(new Property(143), new ItemSnak(842341)),
"Нормативна контрола","Authority control","Normdaten"
);
public static final NormdatenTask2Configuration DAWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("Kategori:Sider med autoritetsdata med parametre",0),
new Reference(new Property(143), new ItemSnak(181163)),
"Autoritetsdata","Normdata","Authority control","Normdaten"
);
public static final NormdatenTask2Configuration DEWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Vorlage:Normdaten",0),
new Reference(new Property(143), new ItemSnak(48183)),
"Normdaten"
);
public static final NormdatenTask2Configuration CAWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("Categoria:Pàgines utilitzant control d'autoritats amb paràmetres",0),
new Reference(new Property(143), new ItemSnak(199693)),
"autoritat","Authority control","Normdaten"
);
public static final NormdatenTask2Configuration ITWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("Categoria:Voci con template Controllo di autorità con parametri",0),
new Reference(new Property(143), new ItemSnak(11920)),
"Controllo di autorità","Authority control","Normdaten"
);
public static final NormdatenTask2Configuration PLWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("Kategoria:Kontrola autorytatywna z parametrami",0),
new Reference(new Property(143), new ItemSnak(1551807)),
"Kontrola autorytatywna","Authority control","Normdaten"
);
public static final NormdatenTask2Configuration JAWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("Category:典拠管理をパラメータで指定しているページ",0),
new Reference(new Property(143), new ItemSnak(177837)),
"Normdaten","Authority control"
);
public static final NormdatenTask2Configuration HUWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("Kategória:Nemzetközi katalógusok sablont paraméterekkel hívó lapok",0),
new Reference(new Property(143), new ItemSnak(53464)),
"Nemzetközi katalógusok","Normdaten","Authority control"
);
public static final NormdatenTask2Configuration KOWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("분류:매개 변수를 가진 전거 통제 틀을 사용하는 문서",0),
new Reference(new Property(143), new ItemSnak(17985)),
"Authority control","전거 정보","전거 통제","전거 제어","Normdaten"
);
public static final NormdatenTask2Configuration ELWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Πρότυπο:Authority control", 0),
new Reference(new Property(143), new ItemSnak(11918)),
"Authority control"
);
public static final NormdatenTask2Configuration BEWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Шаблон:Вонкавыя спасылкі", 0),
new Reference(new Property(143), new ItemSnak(877583)),
"бібліяінфармацыя","Вонкавыя спасылкі","Нарматыўны кантроль","Authority control","Normdaten"
);
public static final NormdatenTask2Configuration CSWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Šablona:Autoritní data", 0),
new Reference(new Property(143), new ItemSnak(191168)),
"Autoritní data"
);
public static final NormdatenTask2Configuration FAWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("رده:صفحههای با دادههای کتابخانهای دارای پارامتر", 0),
new Reference(new Property(143), new ItemSnak(48952)),
"مستند کردن","دادههای کتابخانهای","Authority control","Normdaten"
);
public static final NormdatenTask2Configuration SVWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Mall:Auktoritetsdata", 0),
new Reference(new Property(143), new ItemSnak(169514)),
"Auktoritetsdata","Katalogreferenser"
);
public static final NormdatenTask2Configuration ENWIKISOURCE = new NormdatenTask2Configuration(
new CategoryMemberRequest("Category:Pages using authority control with parameters", 102),
new Reference(new Property(143), new ItemSnak(15156406)),
"Authority control"
);
public static final NormdatenTask2Configuration BNWIKISOURCE = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("টেমপ্লেট:নিয়ন্ত্রক কর্তৃপক্ষ", 100, 102),
new Reference(new Property(143), new ItemSnak(20726423)),
"নিয়ন্ত্রক কর্তৃপক্ষ","Authority control"
);
public static final NormdatenTask2Configuration PTWIKISOURCE = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Predefinição:Controle de autoridade", 100, 102),
new Reference(new Property(143), new ItemSnak(19826831)),
"Controle de autoridade"
);
public static final NormdatenTask2Configuration UKWIKISOURCE = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Шаблон:Authority control", 100, 102),
new Reference(new Property(143), new ItemSnak(20726429)),
"Authority control"
);
public static final NormdatenTask2Configuration RUWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Шаблон:Внешние ссылки", 0),
new Reference(new Property(143), new ItemSnak(206855)),
"Внешние ссылки","Нормативный контроль","Авторитетный контроль","Authority control","Normdaten","Библиоинформация"
);
public static final NormdatenTask2Configuration RUWIKISOURCE = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Шаблон:Внешние ссылки"),
new Reference(new Property(143), new ItemSnak(15634506)),
"Внешние ссылки","Нормативный контроль","Авторитетный контроль","Authority control","Normdaten","Библиоинформация"
);
public static final NormdatenTask2Configuration ROWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("Categorie:Pagini ce folosesc informații bibliotecare cu parametri",0),
new Reference(new Property(143), new ItemSnak(199864)),
"Informații bibliotecare","Authority control","Normdaten"
);
public static final NormdatenTask2Configuration ZHWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("Category:頁面調用帶參數規範控制模板",0),
new Reference(new Property(143), new ItemSnak(30239)),
"Authority control","Normdaten","规范控制","權威控制"
);
public static final NormdatenTask2Configuration VIWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Bản mẫu:Kiểm soát tính nhất quán",0),
new Reference(new Property(143), new ItemSnak(200180)),
"Kiểm soát tính nhất quán","Authority control"
);
public static final NormdatenTask2Configuration SIMPLEWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Template:Authority control",0),
new Reference(new Property(143), new ItemSnak(200183)),
"Authority control"
);
public static final NormdatenTask2Configuration BGWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Шаблон:Нормативен контрол",0),
new Reference(new Property(143), new ItemSnak(11913)),
"Нормативен контрол","Authority control"
);
public static final NormdatenTask2Configuration LVWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Veidne:Autoritatīvā vadība",0),
new Reference(new Property(143), new ItemSnak(728945)),
"Autoritatīvā vadība","Authority control","Autoritatīvā veidne"
);
public static final NormdatenTask2Configuration PTWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Predefinição:Controle de autoridade",0),
new Reference(new Property(143), new ItemSnak(11921)),
"Controle de autoridade","Controlo de autoria","Authority control","Normdaten"
);
public static final NormdatenTask2Configuration ARWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("قالب:ضبط استنادي",0),
new Reference(new Property(143), new ItemSnak(199700)),
"ضبط استنادي","Authority control"
);
public static final NormdatenTask2Configuration IDWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Templat:Normdaten",0),
new Reference(new Property(143), new ItemSnak(155214)),
"Normdaten","Authority control"
);
public static final NormdatenTask2Configuration SLWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Predloga:Normativna kontrola",0),
new Reference(new Property(143), new ItemSnak(14380)),
"Normativna kontrola","Authority control"
);
public static final NormdatenTask2Configuration NNWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Mal:Autoritetsdata",0),
new Reference(new Property(143), new ItemSnak(2349453)),
"Autoritetsdata","Normdaten","Authority control"
);
public static final NormdatenTask2Configuration CYWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Nodyn:Authority control",0),
new Reference(new Property(143), new ItemSnak(848525)),
"Authority control"
);
public static final NormdatenTask2Configuration NDSWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Vörlaag:Normdaten",0),
new Reference(new Property(143), new ItemSnak(4925786)),
"Normdaten"
);
public static final NormdatenTask2Configuration ILOWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Plantilia:Turay a panagtengngel",0),
new Reference(new Property(143), new ItemSnak(8563685)),
"Turay a panagtengngel"
);
public static final NormdatenTask2Configuration BNWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("টেমপ্লেট:কর্তৃপক্ষ নিয়ন্ত্রণ",0),
new Reference(new Property(143), new ItemSnak(427715)),
"কর্তৃপক্ষ নিয়ন্ত্রণ","নিয়ন্ত্রক কর্তৃপক্ষ","Authority control","নিয়ন্ত্রণ কর্তৃপক্ষ"
);
public static final NormdatenTask2Configuration SCOWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("Category:Pages using authority control with parameters", 0),
new Reference(new Property(143), new ItemSnak(1444686)),
"Authority control"
);
public static final NormdatenTask2Configuration MSWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("Templat:Kawalan kewibawaan",0),
new Reference(new Property(143), new ItemSnak(845993)),
"Kawalan kewibawaan","Authority control"
);
public static final NormdatenTask2Configuration HIWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("साँचा:Authority control",0),
new Reference(new Property(143), new ItemSnak(722040)),
"Authority control","आधिकारिक नियंत्रण","मानक विशिष्टताएं","मानक विशिष्टताएँ"
);
public static final NormdatenTask2Configuration THWIKI = new NormdatenTask2Configuration(
new TemplateEmbeddedInRequest("แม่แบบ:Authority control",0),
new Reference(new Property(143), new ItemSnak(565074)),
"Authority control"
);
public static final NormdatenTask2Configuration ALSWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("Kategorie:Wikipedia:Artikel mit lokaler Normdateneinbindung",0),
new Reference(new Property(143), new ItemSnak(1211233)),
"Normdaten"
);
public static final NormdatenTask2Configuration BARWIKI = new NormdatenTask2Configuration(
new CategoryMemberRequest("Kategorie:Wikipedia:Artikel mit lokaler Normdateneinbindung",0),
new Reference(new Property(143), new ItemSnak(1961887)),
"Normdaten"
);
public static final NormdatenTask2Configuration CAWIKI_TAXON = new NormdatenTask2Configuration(
new CategoryMemberRequest("Categoria:Bases de dades taxonòmiques amb paràmetres exportables a Wikidata",0),
new Reference(new Property(143), new ItemSnak(199693)),
"Bases de dades taxonòmiques","BDT"
);
static {
CAWIKI_TAXON.setLowerCaseMode(true);
CAWIKI.setKeepEmpty(true);
FRWIKI.setSummary("Les valeurs des paramètres de {{Autorité}} ont été transférées vers Wikidata");
HUWIKI.setSummary("nemzetközi katalógusok a Wikidatából");
FAWIKI.setSummary("انتقال دادههای کتابخانهای به ویکیداده");
CSWIKI.setSummary("Autoritní data přesunuta na Wikidata");
}
public NormdatenTask2Configuration(MediaWikiRequest<List<Article>> r, Reference ref, String...t) {
this.request = r;
this.template = t;
this.reference = ref;
}
public static NormdatenTask2Configuration forProject(MediaWikiConnection wikidata, MediaWikiConnection wikipedia, Integer...ns) throws Exception {
Project project = wikipedia.getProject();
Sitelink template = wikidata.request(new GetSitelinkRequest("Q3907614",project));
Sitelink category = wikidata.request(new GetSitelinkRequest("Q19949591",project));
Integer source = new WikidataQuery("STRING[1800:\""+wikipedia.getProject()+"\"]").request().get(0);
List<Article> aliases = wikipedia.request(new LinkshereRequest(template.getTitle(), true));
String[] templates = new String[aliases.size()+1];
templates[0] = template.getTitleWithoutNamespace();
for(int i = 0; i < aliases.size(); i++)
templates[i+1] = aliases.get(i).getTitleWithoutNamespace();
MediaWikiRequest<List<Article>> mwr = (
category == null ?
new TemplateEmbeddedInRequest(template.getTitle(), ns) :
new CategoryMemberRequest(category.getTitle(), ns)
);
return new NormdatenTask2Configuration(mwr, new Reference(new Property(143), new ItemSnak(source)), templates);
}
private MediaWikiRequest<List<Article>> request;
private String[] template;
private Reference reference;
private boolean keepEmpty = false;
private boolean lowerCaseMode = false;
private String summary = null;
public MediaWikiRequest<List<Article>> getRequest() {
return request;
}
public String getTemplate() {
return template[0];
}
public String[] getTemplates(){
return template;
}
public void setRequest(MediaWikiRequest<List<Article>> request) {
this.request = request;
}
public void setTemplate(String template) {
this.template = new String[]{template};
}
public Reference getReference() {
return reference;
}
public void setReference(Reference reference) {
this.reference = reference;
}
public boolean isKeepEmpty() {
return keepEmpty;
}
public void setKeepEmpty(boolean keepEmpty) {
this.keepEmpty = keepEmpty;
}
public boolean isLowerCaseMode() {
return lowerCaseMode;
}
public void setLowerCaseMode(boolean lowerCaseMode) {
this.lowerCaseMode = lowerCaseMode;
}
public String getSummary() {
return summary == null ? getTemplate()+" moved to Wikidata" : summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
private static JSONObject config = null;
public static JSONObject getConfigurationFile() throws IOException, JSONException {
if(config != null)
return config;
InputStream in = NormdatenTask2Configuration.class.getResourceAsStream("authoritycontrol.json");
StringBuffer b = new StringBuffer();
while(in.available() > 0){
byte[] buffer = new byte[1024];
in.read(buffer);
b.append(new String(buffer));
}
in.close();
config = new JSONObject(b.toString());
return config;
}
public static Property getProperty(String prop) throws JSONException, IOException {
return new Property(getConfigurationFile().getJSONObject(prop).getInt("property"));
}
public static String getPattern(String prop) throws JSONException, IOException {
return getConfigurationFile().getJSONObject(prop).getString("pattern");
}
public static String getFormatter(String prop) throws JSONException, IOException {
return getConfigurationFile().getJSONObject(prop).getString("formatter");
}
@Override
public String toString() {
return super.toString()+"["+getRequest()+","+Arrays.toString(getTemplates())+","+getReference()+"]";
}
}