/*
* WPCleaner: A tool to help on Wikipedia maintenance tasks.
* Copyright (C) 2013 Nicolas Vervelle
*
* See README.txt file for licensing information.
*/
package org.wikipediacleaner.api.data;
import org.wikipediacleaner.api.HttpUtils;
/**
* Information about interwiki.
*/
public class Interwiki implements Comparable<Interwiki> {
private final String prefix;
private final boolean local;
private final String language;
private final String url;
private final String urlWithoutProtocol;
/**
* @param prefix Interwiki prefix.
* @param local Interwiki local.
* @param language Interwiki language.
* @param url Interwiki URL.
*/
public Interwiki(String prefix, boolean local, String language, String url) {
this.prefix = prefix;
this.local = local;
this.language = language;
this.url = url;
int colonIndex = (url != null) ? url.indexOf(':') : -1;
this.urlWithoutProtocol = ((colonIndex < 0) || (url == null)) ? null : url.substring(colonIndex + 1);
}
/**
* Test if an URL matches an article.
*
* @param test URL to be tested.
* @return Article if the URL matches an article.
*/
public String isArticleUrl(String test) {
if ((test == null) || (urlWithoutProtocol == null)) {
return null;
}
String result = HttpUtils.getArticleFromUrl(test, urlWithoutProtocol);
if (result != null) {
return result;
}
return null;
}
/**
* @return Interwiki prefix.
*/
public String getPrefix() {
return prefix;
}
/**
* @return Interwiki local.
*/
public boolean getLocal() {
return local;
}
/**
* @return Interwiki language.
*/
public String getLanguage() {
return language;
}
/**
* @return Interwiki URL.
*/
public String getURL() {
return url;
}
/* (non-Javadoc)
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo(Interwiki iw) {
int compare;
// Prefix
compare = prefix.compareTo(iw.prefix);
if (compare != 0) {
return compare;
}
return compare;
}
/* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if ((o == null) || (o.getClass() != getClass())) {
return false;
}
Interwiki iw = (Interwiki) o;
boolean equals = true;
equals &= prefix.equals(iw.prefix);
equals &= (local == iw.local);
equals &= (language == null) ? (iw.language == null) : language.equals(iw.language);
equals &= (url == null) ? (iw.url == null) : url.equals(iw.url);
return equals;
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
int hash = 7;
hash = 31 * hash + prefix.hashCode();
return hash;
}
}