Changeset 189

Show
Ignore:
Timestamp:
12/26/07 22:00:29 (1 year ago)
Author:
chris
Message:

Add conversion to and lookup from Amsterdam transliteration (consonants).

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • lex/trunk/src/com/qwirx/lex/hebrew/HebrewEnglishDatabase.java

    r188 r189  
    33import java.io.IOException; 
    44import java.io.InputStream; 
     5import java.util.ArrayList; 
    56import java.util.HashMap; 
     7import java.util.List; 
    68import java.util.Map; 
    79 
     
    5355        public String getFullMeaning() { return m_FullMeaning; } 
    5456        public String getTranslationInAV() { return m_TranslationInAV; } 
     57        public String getAmsterdamString() 
     58        { 
     59            String in = m_CALUnpointedAscii; 
     60            StringBuffer out = new StringBuffer(); 
     61            for (int i = 0; i < in.length(); i++) 
     62            { 
     63                char c = in.charAt(i); 
     64                switch (c) 
     65                { 
     66                case ')': out.append('>'); break; 
     67                case 'b': out.append('B'); break; 
     68                case 'g': out.append('G'); break; 
     69                case 'd': out.append('D'); break; 
     70                case 'h': out.append('H'); break; 
     71                case 'w': out.append('W'); break; 
     72                case 'v': out.append('W'); break; // bug in data? 
     73                case 'z': out.append('Z'); break; 
     74                case 'x': out.append('X'); break; 
     75                case 'T': out.append('V'); break; 
     76                case 'f': out.append('V'); break; // bug in data? 
     77                case 'y': out.append('J'); break; 
     78                case 'k': out.append('K'); break; 
     79                case 'l': out.append('L'); break; 
     80                case 'm': out.append('M'); break; 
     81                case 'M': out.append('M'); break; // bug in data? 
     82                case 'n': out.append('N'); break; 
     83                case 's': out.append('S'); break; 
     84                case '(': out.append('<'); break; 
     85                case 'p': out.append('P'); break; 
     86                case 'c': out.append('Y'); break; 
     87                case 'q': out.append('Q'); break; 
     88                case 'r': out.append('R'); break; 
     89                case '&': out.append('F'); break; 
     90                case '$': out.append('C'); break; 
     91                case 't': out.append('T'); break; 
     92                case '@': out.append(' '); break; 
     93                case ' ': out.append(' '); break; 
     94                default: 
     95                    throw new IllegalArgumentException("No translation for " + 
     96                        c + " to Amsterdam"); 
     97                } 
     98            } 
     99            return out.toString(); 
     100        } 
     101        public String toString() 
     102        { 
     103            return "<@" + m_StrongsNum + ">"; 
     104        } 
    55105    } 
    56106     
    57107    private Map<Integer, Entry> m_StrongsNumToEntryMap =  
    58108        new HashMap<Integer, Entry>(); 
     109    private Map<String, List<Entry>> m_AmsterdamToEntryMap =  
     110        new HashMap<String, List<Entry>>(); 
    59111     
    60112    private HebrewEnglishDatabase() throws IOException 
     
    73125            Entry entry = new Entry(parse[i]); 
    74126            m_StrongsNumToEntryMap.put(entry.getStrongsNum(), entry); 
     127             
     128            String amsterdam = entry.getAmsterdamString(); 
     129            List<Entry> matches = m_AmsterdamToEntryMap.get(amsterdam); 
     130            if (matches == null) 
     131            { 
     132                matches = new ArrayList<Entry>(); 
     133                m_AmsterdamToEntryMap.put(amsterdam, matches); 
     134            } 
     135            matches.add(entry); 
    75136        } 
    76137    } 
     
    79140    { 
    80141        return m_StrongsNumToEntryMap.get(strongsNum); 
     142    } 
     143     
     144    public List<Entry> getMatches(String amsterdam) 
     145    { 
     146        return m_AmsterdamToEntryMap.get(amsterdam); 
    81147    } 
    82148     
  • lex/trunk/test/com/qwirx/lex/HebrewEnglishDatabaseTest.java

    r188 r189  
    11package com.qwirx.lex; 
    22 
    3 import java.io.InputStream
     3import java.util.List
    44 
    55import junit.framework.TestCase; 
    66 
    7 import com.qwirx.csv.CommaSeparatedValueParser; 
    87import com.qwirx.lex.hebrew.HebrewEnglishDatabase; 
    98 
     
    131130        assertEquals("{<b>a green plant</b> }", entry.getFullMeaning()); 
    132131        assertEquals("fruit.", entry.getTranslationInAV()); 
     132         
     133        List<HebrewEnglishDatabase.Entry> matches = dict.getMatches(">B"); 
     134        assertEquals(4, matches.size()); 
     135        assertEquals(matches.toString(), 1, matches.get(0).getStrongsNum()); 
     136        assertEquals(matches.toString(), 2, matches.get(1).getStrongsNum()); 
     137        assertEquals(matches.toString(), 3, matches.get(2).getStrongsNum()); 
     138        assertEquals(matches.toString(), 4, matches.get(3).getStrongsNum()); 
    133139 
    134140        for (int i = 1; i < 8675; i++)