package nl.geozet.common;_x000D_
_x000D_
import java.io.FileNotFoundException;_x000D_
import java.io.IOException;_x000D_
import java.util.Collections;_x000D_
import java.util.List;_x000D_
import java.util.Properties;_x000D_
import java.util.Vector;_x000D_
_x000D_
import org.apache.log4j.Logger;_x000D_
_x000D_
/**_x000D_
 * Deze klasse levert de thema's of categorieen voro de applicatie. Deze zijn_x000D_
 * runtime configureerbaar middels de property file_x000D_
 * {@code core-datacategorieen.properties} zie ook de js pendant_x000D_
 * {@code Geozet.config.classificationInfo} in settings.js. De volgorde van de_x000D_
 * elementen wordt bepaald door de volgorde in de property file._x000D_
 * _x000D_
 * @author prinsmc@minlnv.nl_x000D_
 * @since 1.6_x000D_
 */_x000D_
public final class DataCategorieen { /* implements Enumeration<String[]> */_x000D_
    /** log4j logger. */_x000D_
    private static final Logger LOGGER = Logger_x000D_
            .getLogger(DataCategorieen.class);_x000D_
_x000D_
    /** de itemList. */_x000D_
    private static final List<String[]> ITEMLIST = new Vector<String[]>();_x000D_
_x000D_
    /** de itemKeys. */_x000D_
    private static final List<String> ITEMKEYS = new Vector<String>();_x000D_
_x000D_
    /** het pad naar de property file, relatief tav de class resource. */_x000D_
    private static final String INIT_FILE = "/core-datacategorieen.properties";_x000D_
_x000D_
    static {_x000D_
        /**_x000D_
         * runtime applicatie properties uit de file_x000D_
         * 'core-datacategorieen.properties' laden._x000D_
         */_x000D_
        final Properties props = new Properties();_x000D_
        try {_x000D_
            props.load(DataCategorieen.class.getResourceAsStream(INIT_FILE));_x000D_
        } catch (final FileNotFoundException e) {_x000D_
            LOGGER.fatal("Het initialisatie bestand (" + INIT_FILE_x000D_
                    + ") is niet gevonden.", e);_x000D_
            throw new ExceptionInInitializerError(e);_x000D_
        } catch (final IOException e) {_x000D_
            LOGGER.fatal("I/O fout tijden inlezen initialisatie bestand ("_x000D_
                    + INIT_FILE + ").", e);_x000D_
            throw new ExceptionInInitializerError(e);_x000D_
        }_x000D_
        // process properties content_x000D_
        final String csvString = props.getProperty("categorieen");_x000D_
        LOGGER.debug(csvString);_x000D_
        final String[] result = csvString.split(";");_x000D_
        for (final String element : result) {_x000D_
            ITEMLIST.add(element.split(":"));_x000D_
            ITEMKEYS.add(element.split(":")[0]);_x000D_
        }_x000D_
    }_x000D_
_x000D_
    /**_x000D_
     * Instantiates a new data categorieen, Private constructor voor deze_x000D_
     * utility klasse._x000D_
     */_x000D_
    private DataCategorieen() {_x000D_
        /* Private constructor voor deze utility klasse. */_x000D_
    }_x000D_
_x000D_
    /**_x000D_
     * Geeft de elementen in deze verzameling. Een element bestaat uit een_x000D_
     * {@code String[3] [key,class,desc]}_x000D_
     * _x000D_
     * @return de {@code List<String[]>} met [sleutel,klasse,beschrijving]_x000D_
     */_x000D_
    public static List<String[]> elements() {_x000D_
        return Collections.unmodifiableList((ITEMLIST));_x000D_
    }_x000D_
_x000D_
    /**_x000D_
     * geeft de sleutels in deze verzameling._x000D_
     * _x000D_
     * @return de {@code List<String>} met sleutels_x000D_
     */_x000D_
    public static List<String> keys() {_x000D_
        return Collections.unmodifiableList((ITEMKEYS));_x000D_
    }_x000D_
_x000D_
    /**_x000D_
     * geeft de sleutels van deze verzameling in een array._x000D_
     * _x000D_
     * @return het {@code String[]} met sleutels_x000D_
     */_x000D_
    public static String[] keysAsArray() {_x000D_
        return keys().toArray(new String[] {});_x000D_
    }_x000D_
}_x000D_

/* Private constructor voor deze utility klasse. */
package nl.geozet.common;_x000D_
_x000D_
import java.io.FileNotFoundException;_x000D_
import java.io.IOException;_x000D_
import java.util.Collections;_x000D_
import java.util.List;_x000D_
import java.util.Properties;_x000D_
import java.util.Vector;_x000D_
_x000D_
import org.apache.log4j.Logger;_x000D_
_x000D_
/**_x000D_
 * Deze klasse levert de thema's of categorieen voro de applicatie. Deze zijn_x000D_
 * runtime configureerbaar middels de property file_x000D_
 * {@code core-datacategorieen.properties} zie ook de js pendant_x000D_
 * {@code Geozet.config.classificationInfo} in settings.js. De volgorde van de_x000D_
 * elementen wordt bepaald door de volgorde in de property file._x000D_
 * _x000D_
 * @author prinsmc@minlnv.nl_x000D_
 * @since 1.6_x000D_
 */_x000D_
public final class DataCategorieen { /* implements Enumeration<String[]> */_x000D_
    /** log4j logger. */_x000D_
    private static final Logger LOGGER = Logger_x000D_
            .getLogger(DataCategorieen.class);_x000D_
_x000D_
    /** de itemList. */_x000D_
    private static final List<String[]> ITEMLIST = new Vector<String[]>();_x000D_
_x000D_
    /** de itemKeys. */_x000D_
    private static final List<String> ITEMKEYS = new Vector<String>();_x000D_
_x000D_
    /** het pad naar de property file, relatief tav de class resource. */_x000D_
    private static final String INIT_FILE = "/core-datacategorieen.properties";_x000D_
_x000D_
    static {_x000D_
        /**_x000D_
         * runtime applicatie properties uit de file_x000D_
         * 'core-datacategorieen.properties' laden._x000D_
         */_x000D_
        final Properties props = new Properties();_x000D_
        try {_x000D_
            props.load(DataCategorieen.class.getResourceAsStream(INIT_FILE));_x000D_
        } catch (final FileNotFoundException e) {_x000D_
            LOGGER.fatal("Het initialisatie bestand (" + INIT_FILE_x000D_
                    + ") is niet gevonden.", e);_x000D_
            throw new ExceptionInInitializerError(e);_x000D_
        } catch (final IOException e) {_x000D_
            LOGGER.fatal("I/O fout tijden inlezen initialisatie bestand ("_x000D_
                    + INIT_FILE + ").", e);_x000D_
            throw new ExceptionInInitializerError(e);_x000D_
        }_x000D_
        // process properties content_x000D_
        final String csvString = props.getProperty("categorieen");_x000D_
        LOGGER.debug(csvString);_x000D_
        final String[] result = csvString.split(";");_x000D_
        for (final String element : result) {_x000D_
            ITEMLIST.add(element.split(":"));_x000D_
            ITEMKEYS.add(element.split(":")[0]);_x000D_
        }_x000D_
    }_x000D_
_x000D_
    /**_x000D_
     * Instantiates a new data categorieen, Private constructor voor deze_x000D_
     * utility klasse._x000D_
     */_x000D_
    private DataCategorieen() {_x000D_
        /* Private constructor voor<SUF>*/_x000D_
    }_x000D_
_x000D_
    /**_x000D_
     * Geeft de elementen in deze verzameling. Een element bestaat uit een_x000D_
     * {@code String[3] [key,class,desc]}_x000D_
     * _x000D_
     * @return de {@code List<String[]>} met [sleutel,klasse,beschrijving]_x000D_
     */_x000D_
    public static List<String[]> elements() {_x000D_
        return Collections.unmodifiableList((ITEMLIST));_x000D_
    }_x000D_
_x000D_
    /**_x000D_
     * geeft de sleutels in deze verzameling._x000D_
     * _x000D_
     * @return de {@code List<String>} met sleutels_x000D_
     */_x000D_
    public static List<String> keys() {_x000D_
        return Collections.unmodifiableList((ITEMKEYS));_x000D_
    }_x000D_
_x000D_
    /**_x000D_
     * geeft de sleutels van deze verzameling in een array._x000D_
     * _x000D_
     * @return het {@code String[]} met sleutels_x000D_
     */_x000D_
    public static String[] keysAsArray() {_x000D_
        return keys().toArray(new String[] {});_x000D_
    }_x000D_
}_x000D_
