T-K-O-T

java sozluk kernel dictionary java

001: /*
002: * Dictionary.java
003: */
004:
005: package Kernel;
006:
007: import GUI.MainEntry;
008: import java.sql.CallableStatement;
009: import java.sql.ResultSet;
010: import java.sql.SQLException;
011: import java.sql.Statement;
012: import java.util.ArrayList;
013:
014: /**
015: * Veritabanından okuma yapan sınıftır. Kelimlerin anlamlarının ne olduğunu
016: * döndürür, bulamadığı takdirde, benzer kelimeleri gösterir.
017: * @author Ömer Faruk Nemutlu - http://www.tkot.tr.gg/
018: */
019: public class Dictionary implements Constants {
020:
021: /**
022: * Anlamı bulunacak kelimenin WordID'sini döndürür.
023: */
024: public static int find_word_id_to_translate( String word,
025: byte native_lang,
026: byte foreign_lang ) {
027:
028: // Database, kompleks sorgularda, ciddi oranda yavaşlamaktadır.
029: // Bu yüzden foreign_lang değişkeni henüz kullanılmamaktadır.
030: // İlerde programın birden çok dili destekleyeceği düşünülürse,
031: // foreign_key parametresi alabiliyor olması gerekmektedir.
032: int word_id = -1;
033: String sql_query_string =
034: "SELECT WordID " +
035: "FROM Vocabularies " +
036: "WHERE " +
037: "LanguageID = " + native_lang + " AND " +
038: "Word = '" + word + "'";
039:
040: ResultSet rs = null;
041: try {
042: Statement s = MainEntry.our_database_connection.
043: get_connection().createStatement( );
044:
045: rs = s.executeQuery( sql_query_string );
046:
047: while( rs.next( ) ) {
048: word_id = rs.getInt("WordID");
049: break;
050: }
051:
052: rs.close( );
053: s.close( );
054: rs = null;
055: s = null;
056:
057: }
058: catch( SQLException ex ) {
059: System.err.println( "ERROR: SQL Syntax error in 'Dictionary' class." );
060: System.err.println( ex.toString( ) );
061: }
062:
063: return word_id;
064: }
065:
066: /**
067: * Kendisine verilen harf grubuyla başlayan sonuçları döndürür.
068: * Örneğin, parametre olarak ( a, 1, 2 ) değişkenleri gönderilirse,
069: * a ile başlayan, Türkçe'den İngilizce'ye çevirisi olan kelimeler
070: * veritabanından çekilir.
071: */
072: public static ArrayList get_words_begin_with( String word,
073: byte native_lang,
074: byte foreign_lang )
075: {
076: // Database, kompleks sorgularda, ciddi oranda yavaşlamaktadır.
077: // Bu yüzden foreign_lang değişkeni henüz kullanılmamaktadır.
078: // İlerde programın birden çok dili destekleyeceği düşünülürse,
079: // foreign_key parametresi alabiliyor olması gerekmektedir.
080:
081: ArrayList results = new ArrayList( );
082: String sql_query_string =
083: "SELECT LIMIT 0 "+ ( LOWER_LIMIT_COUNT + UPPER_LIMIT_COUNT ) +
084: " Word " +
085: "FROM Vocabularies " +
086: "WHERE " +
087: "LanguageID = " + native_lang + " AND " +
088: "Word LIKE '" + word + "%' ";
089:
090: ResultSet rs = null;
091:
092: try {
093: Statement s = MainEntry.our_database_connection.
094: get_connection( ).createStatement( );
095:
096: rs = s.executeQuery( sql_query_string );
097:
098: while( rs.next( ) ) {
099: results.add( rs.getString( "Word" ).trim( ) );
100: }
101:
102: rs.close( );
103: s.close( );
104: rs = null;
105: s = null;
106: }
107: catch (SQLException ex) {
108: System.err.println( "ERROR: SQL Syntax error in 'Dictionary' class." );
109: System.err.println( ex.toString( ) );
110: }
111:
112: return results;
113: }
114:
115: /**
116: * İstenen kelime sözlükte bulunmadığı takdirde, SoundEx algoritması
117: * kullanılarak benzer kelimeler gösterilir. Aşağıda ki fonksiyon bu
118: * amaçla hazırlanmıştır.
119: */
120: public static String get_similar_words_by_sound_ex(
121: String word, byte native_lang, byte foreign_lang ) {
122:
123: // Database, kompleks sorgularda, ciddi oranda yavaşlamaktadır.
124: // Bu yüzden foreign_lang değişkeni henüz kullanılmamaktadır.
125: // İlerde programın birden çok dili destekleyeceği düşünülürse,
126: // foreign_key parametresi alabiliyor olması gerekmektedir.
127:
128: StringBuffer similar_words = new StringBuffer( );
129:
130: String sql_query_string =
131: "SELECT Word " +
132: "FROM Vocabularies " +
133: "WHERE " +
134: "LanguageID = " + native_lang + " AND " +
135: "DIFFERENCE( Word,'" + word + "' ) = 0";
136:
137: ResultSet rs = null;
138:
139: try {
140: Statement s = MainEntry.our_database_connection.
141: get_connection( ).createStatement( );
142:
143: rs = s.executeQuery( sql_query_string );
144:
145: similar_words.append( " Aradığınız kelime bulunamamıştır.nn" );
146: similar_words.append( " Dilerseniz aşağıda bulunan kelimelerden" );
147: similar_words.append( " birini seçebilirsiniz:nn " );
148:
149: while( rs.next( ) ) {
150: similar_words.append( rs.getString("Word").trim( ) + "; " );
151: }
152: if( similar_words.indexOf(";")>0 )
153: similar_words.delete( similar_words.lastIndexOf(";"),
154: similar_words.length( ) );
155: rs.close( );
156: s.close( );
157: rs = null;
158: s = null;
159:
160: }
161: catch (SQLException ex) {
162: System.err.println( "ERROR: SQL Syntax error in 'Dictionary' class." );
163: System.err.println( ex.toString( ) );
164: }
165:
166: return similar_words.toString( );
167:
168: }
169:
170: /**
171: * Hangi kelimenin anlamı gösterileceği saptandıktan sonra, kelime anlamı
172: * get_meanings( ) metoduyla gösterilir.
173: */
174: public static String get_meanings( int word_id, byte native_lang,
175: byte foreign_lang )
176: {
177: // Eğer hatalı bir kayıt numarası gelirse, boş sonuç döner.
178: if( word_id < 0 ) return null;
179:
180: String sql_query_string =
181: "SELECT T.Translation " +
182: "FROM Vocabularies V, Translations T " +
183: "WHERE V.WordID = T.WordID AND " +
184: "V.LanguageID = " + native_lang + " AND " +
185: "T.ForeignLangID = " + foreign_lang + " AND " +
186: "V.WordID = '" + word_id + "'";
187:
188: ResultSet rs = null;
189:
190: StringBuffer results = new StringBuffer( );
191:
192: try {
193: Statement s = MainEntry.our_database_connection.
194: get_connection( ).createStatement( );
195:
196: rs = s.executeQuery( sql_query_string );
197:
198: int i = 0;
199: while( rs.next( ) ) {
200: if( i++ < 10 ) results.append(" ");
201:
202: results.append( i + ". "+
203: rs.getString("Translation").trim( ) + "nn" );
204: }
205:
206: rs.close( );
207: s.close( );
208: rs = null;
209: s = null;
210: }
211: catch (SQLException ex) {
212: System.err.println( "ERROR: SQL Syntax error in 'Dictionary' class." );
213: System.err.println( ex.toString( ) );
214: }
215:
216: return results.toString( );
217: }
218:
219:
220: /**
221: * Alfabetik sırada verilecek kelimeler, bir ArrayList olarak geriye
222: * döner.
223: */
224: public static ArrayList get_words_in_alphabetic_order( int word_id,
225: byte language_id )
226: {
227:
228: ArrayList other_words_in_alphabet = new ArrayList( );
229:
230: LimitProcess interval = new LimitProcess( );
231: interval.configure( word_id, language_id );
232: int lower_limit = interval.get_lower_limit( );
233: int upper_limit = interval.get_upper_limit( );
234: interval = null;
235: String sql_query_string =
236: "SELECT Word " +
237: "FROM Vocabularies " +
238: "WHERE WordID >=" + lower_limit + " AND " +
239: "WordID <= " + upper_limit;
240:
241: ResultSet rs = null;
242:
243: StringBuffer results = new StringBuffer( );
244:
245: try {
246: Statement s = MainEntry.our_database_connection.
247: get_connection( ).createStatement( );
248:
249: rs = s.executeQuery( sql_query_string );
250:
251: int i = 0;
252: while( rs.next( ) ) {
253: other_words_in_alphabet.add(
254: rs.getString("Word").trim( ) );
255: }
256:
257: rs.close( );
258: s.close( );
259: rs = null;
260: s = null;
261: }
262: catch (SQLException ex) {
263: System.err.println( "ERROR: SQL Syntax error in 'Dictionary' class." );
264: System.err.println( ex.toString( ) );
265: }
266:
267: return other_words_in_alphabet;
268: }
269: }
 
Reklamı Sola Kaydır

Resim Galerisi

Galeri'ye Git

Sosyal Medya'da Biz!

Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol