blob: ed659ce8d769dbda8f5a9c93afcd6965e2fb4223 [file] [log] [blame]
/*
* 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;
}
}