package org.springframework.roo.addon.web.mvc.i18n.components; import java.util.Locale; /** * Convenience class for I18n implementations. Offers equals and hashCode method * implementations based on Locale (only!). Offers also toString(). * * @author Stefan Schmidt * @since 1.1 */ public abstract class AbstractLanguage implements I18n { private String localePrefix; private String language; public AbstractLanguage() { this.localePrefix = this.getLocale().getLanguage(); this.language = this.getLanguage(); } /** * equals compares locale only! */ @Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof I18n)) { return false; } final Locale thisLocale = getLocale(); final Locale other = ((I18n) obj).getLocale(); if (thisLocale == null) { if (other != null) { return false; } } else if (!thisLocale.equals(other)) { return false; } return true; } /** * hashCode uses locale only! */ @Override public int hashCode() { final Locale locale = getLocale(); final int prime = 31; int result = 1; result = prime * result + (locale == null ? 0 : locale.hashCode()); return result; } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("Locale: ").append(getLocale()); sb.append("Language label: ").append(getLanguage()); return sb.toString(); } public String getLocalePrefix() { return localePrefix; } public void setLocalePrefix(String localePrefix) { this.localePrefix = localePrefix; } public String getLanguage() { return language; } public void setLanguage(String language) { this.language = language; } }