/* * Map and oceanographical data visualisation * Copyright (C) 1999 P�ches et Oc�ans Canada * 2000 Institut de Recherche pour le D�veloppement * * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details (http://www.gnu.org/). * * * Contacts: * FRANCE: Surveillance de l'Environnement Assist�e par Satellite * Institut de Recherche pour le D�veloppement / US-Espace * mailto:seasnet@teledetection.fr * * CANADA: Observatoire du Saint-Laurent * Institut Maurice-Lamontagne * mailto:osl@osl.gc.ca */ package org.deegree.model.csct.units.resources; // Utilitaires import java.util.Enumeration; import java.util.NoSuchElementException; /** * Liste de ressources s'adaptant � la langue de l'utilisateur. Cette classe s'apparente * � la classe {@link java.util.ListResourceBundle} standard du Java, except� qu'elle est * l�g�rement plus �conome en m�moire. * * @version 1.0 * @author Martin Desruisseaux */ public class SymbolResources extends java.util.ResourceBundle { /** * Table des ressources adapt�es * � la langue de l'utilisateur. */ final Object[] map; /** * Construit la table des ressources. * * @param contents Liste des cl�s et des valeurs qui y sont associ�es. Cette liste consiste en un * tableau d'objets. Les objets se trouvant aux index pairs (0, 2, 4...) sont les cl�s, et les * objets se trouvant aux index impairs sont les valeurs (voyez la description de cette classe * pour des exemples). * * @throws IllegalArgumentException Si une cl� a �t� r�p�t�e deux fois. */ protected SymbolResources(final Object[] contents) throws IllegalArgumentException { map=contents; for (int i=0; i<contents.length; i+=2) { final String key=contents[i].toString(); for (int j=i; (j+=2)<contents.length;) { if (key.equals(contents[j])) throw new IllegalArgumentException("Duplicated key: "+key); } } } /** * Renvoie un �num�rateur qui balayera toutes * les cl�s que poss�de cette liste de ressources. */ public final Enumeration getKeys() { return new Enumeration() { private int i=0; public boolean hasMoreElements() {return i<map.length;} public Object nextElement() { if (i<map.length) { final int i=this.i; this.i += 2; return map[i]; } throw new NoSuchElementException(); } }; } /** * Renvoie la ressource associ�e � une cl� donn�e. Cette m�thode est d�finie * pour r�pondre aux exigences de la classe {@link java.util.ResourceBundle} * et n'a g�n�ralement pas besoin d'�tre appell�e directement. * * @param key Cl� d�signant la ressouce d�sir�e (ne doit pas �tre <code>null</code>). * @return La ressource demand�e, ou <code>null</code> si aucune ressource n'est * d�finie pour cette cl�. */ protected final Object handleGetObject(final String key) { for (int i=0; i<map.length; i+=2) if (key.equals(map[i])) return map[i+1]; return null; } }