001    // Copyright 2004, 2005 The Apache Software Foundation
002    //
003    // Licensed under the Apache License, Version 2.0 (the "License");
004    // you may not use this file except in compliance with the License.
005    // You may obtain a copy of the License at
006    //
007    //     http://www.apache.org/licenses/LICENSE-2.0
008    //
009    // Unless required by applicable law or agreed to in writing, software
010    // distributed under the License is distributed on an "AS IS" BASIS,
011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012    // See the License for the specific language governing permissions and
013    // limitations under the License.
014    
015    package org.apache.hivemind.util;
016    
017    import java.io.File;
018    import java.util.Locale;
019    
020    
021    /**
022     * Used by {@link org.apache.hivemind.util.FileResource}
023     * to locate localizations of a given file.
024     *
025     * @author Howard Lewis Ship
026     */
027    public class LocalizedFileResourceFinder
028    {
029        public String findLocalizedPath(String path, Locale locale)
030        {
031            int dotx = path.lastIndexOf('.');
032            String basePath;
033            String suffix;
034            if (dotx >= 0)
035            {
036                basePath = path.substring(0, dotx);
037                suffix = path.substring(dotx);
038            }
039            else
040            {
041                // Resource without extension
042                basePath = path;
043                suffix = "";
044            }
045            LocalizedNameGenerator g = new LocalizedNameGenerator(basePath, locale, suffix);
046    
047            while (g.more())
048            {
049                String candidate = g.next();
050    
051                File f = new File(candidate);
052    
053                if (f.exists())
054                    return candidate;
055            }
056    
057            return path;
058        }
059    }