/*
* 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 java.util.List;
/**
* Information about languages.
*/
public class Language implements Comparable<Language> {
private final String code;
private final String name;
/**
* @param languages List of languages.
* @param code Language code;
* @return Language exist ?
*/
public static boolean isLanguageCode(List<Language> languages, String code) {
if ((languages == null) || (code == null)) {
return false;
}
for (Language language : languages) {
if ((language != null) &&
areCodesEqual(code, language.getCode())) {
return true;
}
}
return false;
}
/**
* @param code Language code.
* @param name Language name.
*/
public Language(String code, String name) {
this.code = code;
this.name = name;
}
/**
* @return Language code.
*/
public String getCode() {
return code;
}
/**
* @return Language name.
*/
public String getName() {
return name;
}
/**
* Compare language codes.
*
* @param code1 First language code.
* @param code2 Second language code.
* @return True if language codes are equal.
*/
public static boolean areCodesEqual(String code1, String code2) {
if (code1 == null) {
return (code2 == null);
}
if (code2 == null) {
return false;
}
if (code1.equals(code2)) {
return true;
}
if ((code1.length() == 0) || (code2.length() == 0)) {
return false;
}
if (code1.length() != code2.length()) {
return false;
}
code1 = Character.toUpperCase(code1.charAt(0)) + code1.substring(1);
code2 = Character.toUpperCase(code2.charAt(0)) + code2.substring(1);
return code1.equals(code2);
}
/* (non-Javadoc)
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo(Language lg) {
int compare;
// Code
compare = code.compareTo(lg.code);
if (compare != 0) {
return compare;
}
// Name
compare = name.compareTo(lg.name);
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;
}
Language lg = (Language) o;
boolean equals = true;
equals &= code.equals(lg.code);
equals &= name.equals(lg.name);
return equals;
}
/* (non-Javadoc)
* @see java.lang.Object#hashCode()
*/
@Override
public int hashCode() {
int hash = 7;
hash = 31 * hash + code.hashCode();
hash = 31 * hash + name.hashCode();
return hash;
}
}