package wordik.magneto.db; import java.util.ArrayList; import java.util.List; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class MSRLang { /** Unique language identifier. */ private int _id; /** Two (or more) letter language code, e.g. 'en', 'ru'. */ private String code; /** Language name, e.g. 'English', 'Russian'. */ private String name; /** Number of meanings (with semantic relations) of words of this language, * in the table mean_semrel_XX, where XX is a language code. */ private int n_meaning; // SELECT COUNT(*) FROM mean_semrel_en; /** Number of semantic relations (for this language) in the table mean_semrel_XX, * where XX is a language code. */ private int n_sem_rel; private final static MSRLang[] NULL_MSRLANG_ARRAY = new MSRLang[0]; private MSRLang(int __id, String _name,String _code,int _n_meaning,int _n_sem_rel) { _id = __id; name = _name; code = _code; n_meaning = _n_meaning; n_sem_rel = _n_sem_rel; } /** Gets language code. */ public String getCode() { return code; } /** Gets language name. */ public String getName() { return name; } /** Gets number of semantic relations. */ public int getNumberOfSemanticRelations() { return n_sem_rel; } /** Gets number of semantic relations. */ public int getNumberOfMeanings() { return n_meaning; } /** Reads all data from the table "lang". * * @param db * @return */ public static MSRLang[] getAllLang(SQLiteDatabase db) { //Cursor c = db.query("SELECT name,code,n_meaning,n_sem_rel FROM lang;", null); // select * from lang order by n_sem_rel DESC limit 17; // select * from lang order by name limit 17; Cursor c = db.query("lang", new String[] { "_id", "name", "code", "n_meaning", "n_sem_rel"}, null, null, null, null, "name"); //"n_sem_rel DESC"); List<MSRLang> list = new ArrayList<MSRLang>(); if (c.moveToFirst()) { do { int i_id = c.getColumnIndexOrThrow("_id"); int i_name = c.getColumnIndexOrThrow("name"); int i_code = c.getColumnIndexOrThrow("code"); int i_meaning = c.getColumnIndexOrThrow("n_meaning"); int i_sem_rel = c.getColumnIndexOrThrow("n_sem_rel"); int _id = c.getInt(i_id); String name = c.getString(i_name); String code = c.getString(i_code); int n_meaning = c.getInt(i_meaning); int n_sem_rel = c.getInt(i_sem_rel); list.add(new MSRLang(_id, name, code, n_meaning, n_sem_rel)); } while (c.moveToNext()); } if (c != null && !c.isClosed()) { c.close(); } return( (MSRLang[])list.toArray(NULL_MSRLANG_ARRAY) ); } /** Gets array of text lines in the form: * "Language name, code, number of semantic relations" (header). * The first line is a header. */ public static String[] getLangCodeStatistics(MSRLang[] langs) { String lines[] = new String[langs.length + 1]; lines[0] = "Language name, code, number of semantic relations"; for(int i=0; i < langs.length; i++) { MSRLang l = langs[i]; lines[i+1]= l.name + " " + l.code + " " + l.n_sem_rel; // + " " + l.n_meaning; } return lines; } }