001    /*
002     * StringLoader
003     * 
004     * Copyright (c) 2003 Marco Schmidt.
005     * All rights reserved.
006     */
007    
008    package net.sourceforge.jiu.apps;
009    
010    import java.io.BufferedReader;
011    import java.io.IOException;
012    import java.io.InputStream;
013    import java.io.InputStreamReader;
014    import java.util.Vector;
015    
016    /**
017     * This class loads a {@link Strings} resource from a text file.
018     * The text file must contain one  
019     * @author Marco Schmidt
020     * @since 0.12.0
021     */
022    public class StringLoader
023    {
024            private BufferedReader in;
025            private Integer langCode;
026            /**
027             * The directory of language resource files, default:
028             * <code>/resources/lang/</code>.
029             */
030            public static String resourceDirectory = "/resources/lang/";
031    
032            public StringLoader()
033            {
034                    this(Strings.determineSuitableIsoCode());
035            }
036    
037            public StringLoader(String iso639Code)
038            {
039                    InputStream input = getClass().getResourceAsStream(resourceDirectory + iso639Code + ".txt");
040                    in = new BufferedReader(new InputStreamReader(input));
041                    langCode = Strings.findLanguageCode(iso639Code);
042            }
043    
044            public Strings load() throws IOException
045            {
046                    Vector list = new Vector();
047                    String line;
048                    while ((line = in.readLine()) != null)
049                    {
050                            list.addElement(line);
051                    }
052                    if (list.size() < 1)
053                    {
054                            return null;
055                    }
056                    String[] data = new String[list.size()];
057                    for (int i = 0; i < list.size(); i++)
058                    {
059                            data[i] = (String)list.elementAt(i);
060                    }
061                    in.close();
062                    return new Strings(langCode, data);
063            }
064    }