1 16 package org.outerj.daisy.frontend; 17 18 import org.apache.excalibur.source.SourceResolver; 19 import org.apache.excalibur.source.Source; 20 import org.apache.avalon.framework.logger.Logger; 21 import org.apache.avalon.framework.service.ServiceManager; 22 import org.outerj.daisy.repository.LocaleHelper; 23 24 import java.util.List ; 25 import java.util.ArrayList ; 26 import java.util.Locale ; 27 import java.io.InputStream ; 28 import java.io.BufferedReader ; 29 import java.io.InputStreamReader ; 30 31 34 public class AvailableLocales { 35 private ServiceManager serviceManager; 36 private Logger logger; 37 38 public AvailableLocales(ServiceManager serviceManager, Logger logger) { 39 this.serviceManager = serviceManager; 40 this.logger = logger; 41 } 42 43 public List getLocales() throws Exception { 44 SourceResolver sourceResolver = null; 45 Source source = null; 46 InputStream is = null; 47 try { 48 sourceResolver = (SourceResolver)serviceManager.lookup(SourceResolver.ROLE); 49 source = sourceResolver.resolveURI("resources/conf/locales.txt"); 50 is = source.getInputStream(); 51 return readLocales(is); 52 } finally { 53 if (is != null) { 54 try { 55 is.close(); 56 } catch (Throwable e) { 57 logger.error("Error closing locales.txt input stream.", e); 58 } 59 } 60 if (source != null) 61 sourceResolver.release(source); 62 if (sourceResolver != null) 63 serviceManager.release(sourceResolver); 64 } 65 } 66 67 private List readLocales(InputStream inputStream) throws Exception { 68 List locales = new ArrayList (); 69 BufferedReader reader = new BufferedReader (new InputStreamReader (inputStream)); 70 String line = reader.readLine(); 71 while (line != null) { 72 if (line.length() > 0) { 73 if (line.charAt(0) != '#') { 74 line = line.trim(); 75 Locale locale = LocaleHelper.parseLocale(line); 76 locales.add(locale); 77 } 78 } 79 line = reader.readLine(); 80 } 81 return locales; 82 } 83 } 84 | Popular Tags |