diff options
Diffstat (limited to 'src/plugins/devices.services/src/com/motorola/studio/android/devices/services/lang/model/Language.java')
-rw-r--r-- | src/plugins/devices.services/src/com/motorola/studio/android/devices/services/lang/model/Language.java | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/src/plugins/devices.services/src/com/motorola/studio/android/devices/services/lang/model/Language.java b/src/plugins/devices.services/src/com/motorola/studio/android/devices/services/lang/model/Language.java new file mode 100644 index 0000000..ed659ce --- /dev/null +++ b/src/plugins/devices.services/src/com/motorola/studio/android/devices/services/lang/model/Language.java @@ -0,0 +1,170 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.motorola.studio.android.devices.services.lang.model; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.runtime.FileLocator; + +import com.motorola.studio.android.common.log.StudioLogger; +import com.motorola.studio.android.devices.services.DeviceServicesPlugin; + +/** + * Language representation + * + * The list of languages has been downloaded from: + * http://www.loc.gov/standards/iso639-2/ascii_8bits.html + */ +public class Language +{ + + private static final String FILE_PATH = "resources/ISO-639-2_utf-8.txt"; + + private static List<Language> languageList = null; + + private static Map<String, Language> languageMap = null; + + private String name; + + private String id; + + /** + * Get the languages list + * + * @return the languages list + */ + public static List<Language> getLanguageList() + { + if (languageList == null) + { + loadLanguages(); + } + return languageList; + } + + /** + * Load languages from TXT file + */ + private static void loadLanguages() + { + languageList = new ArrayList<Language>(); + languageMap = new HashMap<String, Language>(); + + URL languagesURL = DeviceServicesPlugin.getDefault().getBundle().getResource(FILE_PATH); + + BufferedReader input = null; + try + { + + File file = new File(FileLocator.toFileURL(languagesURL).getPath()); + + input = new BufferedReader(new FileReader(file)); + + String line = null; + String[] lineParts = null; + String name = null; + String ID = null; + while ((line = input.readLine()) != null) + { + lineParts = line.split("\\|"); + ID = lineParts[2]; + name = lineParts[3]; + if (((ID != null) && (!ID.equals(""))) && ((name != null) && (!name.equals("")))) + { + Language language = new Language(name, ID); + languageList.add(language); + languageMap.put(name, language); + } + } + } + catch (Exception e) + { + StudioLogger.error("Change Language TmL Service: could not load languages list"); + } + finally + { + if (input != null) + { + try + { + input.close(); + } + catch (IOException e) + { + } + } + } + + } + + /** + * Get language ID from language name + * + * @param langName language name + * @return language ID + */ + public static String getIdFromName(String langName) + { + String id = null; + Language language = languageMap.get(langName); + if (language != null) + { + id = language.getId(); + } + return id; + } + + /** + * Constructs a new Language instance, based on the given name and id. + * @param name language name + * @param id language id + */ + public Language(String name, String id) + { + super(); + this.name = name; + this.id = id; + } + + public String getName() + { + return name; + } + + public void setName(String name) + { + this.name = name; + } + + public String getId() + { + return id; + } + + public void setId(String id) + { + this.id = id; + } + +} |