1 package org.ocltf.translation.library; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 import org.apache.commons.logging.Log; 7 import org.apache.commons.logging.LogFactory; 8 import org.ocltf.common.ComponentContainer; 9 import org.ocltf.utils.ExceptionUtils; 10 11 /*** 12 * Finds LibraryTranslations by library and name. 13 * 14 * @author Chad Brandon 15 */ 16 public class LibraryTranslationFinder { 17 18 private static Log logger = LogFactory.getLog(LibraryTranslationFinder.class); 19 20 private LibraryTranslationFinder() {} 21 22 protected static Map libraryTranslations = new HashMap(); 23 24 /*** 25 * Finds the library with the specified libraryName. 26 * @param libraryName 27 * @return Library - returns the Library found or null if none is found. 28 */ 29 protected static Library findLibrary(String libraryName) { 30 return (Library)ComponentContainer.instance().findComponent(libraryName); 31 } 32 33 /*** 34 * Finds the LibraryTranslation with the specified translationName. 35 * @param translation the name of the translation to find. 36 * @return LibraryTranslation - returns the LibraryTranslation found or null if none is found. 37 */ 38 public static LibraryTranslation findLibraryTranslation(String translation) { 39 String methodName = "findLibraryTranslation"; 40 ExceptionUtils.checkEmpty(methodName, "translation", translation); 41 42 LibraryTranslation libraryTranslation = 43 (LibraryTranslation)libraryTranslations.get(translation); 44 45 if (libraryTranslation == null) { 46 char libSeparator = '.'; 47 int index = translation.indexOf(libSeparator); 48 if (index == -1) { 49 throw new IllegalArgumentException(methodName + 50 " - libraryTranslation (" + translation 51 + ") must contain the character '" + libSeparator 52 + "' in order to seperate the library name from the translation" 53 + " name (must be in the form: <library name>.<translation name>)"); 54 } 55 String libraryName = translation.substring(0, index); 56 Library library = findLibrary(libraryName); 57 int translationLength = translation.length(); 58 59 String translationName = 60 translation.substring(index + 1, translationLength); 61 62 if (library != null) { 63 libraryTranslation = library.getLibraryTranslation(translationName); 64 if (libraryTranslation == null) { 65 if (logger.isErrorEnabled()) { 66 logger.error("ERROR! no translation (" 67 + translationName + ") found within library --> " + libraryName); 68 } 69 } 70 } 71 } 72 return libraryTranslation; 73 } 74 75 }