zemberek-ooo-1.0_rc2-nolibs/lib/ 40755 0 0 0 11107577374 13616 5ustar 0 0 zemberek-ooo-1.0_rc2-nolibs/resources/ 40755 0 0 0 11107577376 15064 5ustar 0 0 zemberek-ooo-1.0_rc2-nolibs/resources/xcu/ 40755 0 0 0 11107577376 15663 5ustar 0 0 zemberek-ooo-1.0_rc2-nolibs/resources/xml/ 40755 0 0 0 11107577376 15664 5ustar 0 0 zemberek-ooo-1.0_rc2-nolibs/src/ 40755 0 0 0 11107577374 13637 5ustar 0 0 zemberek-ooo-1.0_rc2-nolibs/src/net/ 40755 0 0 0 11107577374 14425 5ustar 0 0 zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ 40755 0 0 0 11107577375 16232 5ustar 0 0 zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ooo/ 40755 0 0 0 11107577375 17026 5ustar 0 0 zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ooo/hyphenator/ 40755 0 0 0 11107577375 21207 5ustar 0 0 zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ooo/spellchecker/ 40755 0 0 0 11107577375 21472 5ustar 0 0 zemberek-ooo-1.0_rc2-nolibs/build.xml100644 0 0 24533 11107577376 15017 0ustar 0 0 zemberek-ooo-1.0_rc2-nolibs/compile.properties100644 0 0 144 11107577376 16674 0ustar 0 0 # ----- Compile Control Flags ----- compile.debug=on compile.deprecation=off compile.optimize=off zemberek-ooo-1.0_rc2-nolibs/openoffice.properties100644 0 0 554 11107577376 17366 0ustar 0 0 # Needed properties for location of OpenOffice-App and OpenOffice-SDK # OOo home; enter the full path to the OpenOffice installation openoffice.dir=/usr #openoffice.root.dir openoffice.program.dir=${openoffice.root.dir}/program #openoffice.sdk.bin.dir=${openoffice.sdk.dir}/windows/bin # OOo host configuration openoffice.hostname=localhost openoffice.port=8100 zemberek-ooo-1.0_rc2-nolibs/resources/xcu/ZemberekSpellChecker.xcs100644 0 0 573 11107577376 22515 0ustar 0 0 zemberek-ooo-1.0_rc2-nolibs/resources/xcu/ZemberekSpellChecker.xcu100644 0 0 545 11107577376 22516 0ustar 0 0 %origin% zemberek-ooo-1.0_rc2-nolibs/resources/xml/description.xml100644 0 0 1355 11107577376 21032 0ustar 0 0 Zemberek Turkish Spell Checker Zemberek Türkçe İmla Denetimi Zemberek Project zemberek-ooo-1.0_rc2-nolibs/resources/xml/manifest.xml100644 0 0 1427 11107577376 20315 0ustar 0 0 zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ooo/OneInstanceFactory.java100644 0 0 15350 11107577375 23550 0ustar 0 0 /************************************************************************* * * $RCSfile: OneInstanceFactory.java,v $ * * $Revision: 1.3 $ * * last change: $Author: mdakin $ $Date: 2006/12/06 19:46:38 $ * * The Contents of this file are made available subject to the terms of * the BSD license. * * Copyright (c) 2003 by Sun Microsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Sun Microsystems, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *************************************************************************/ package net.zemberek.ooo; import java.lang.reflect.Constructor; import com.sun.star.beans.XPropertySet; import com.sun.star.lang.XInitialization; import com.sun.star.lang.XMultiServiceFactory; import com.sun.star.lang.XServiceInfo; import com.sun.star.lang.XSingleServiceFactory; import com.sun.star.uno.UnoRuntime; import com.sun.star.uno.XInterface; // // purpose of this class is to provide a service factory that instantiates // the services only once (as long as this factory itself exists) // and returns only reference to that instance. // @SuppressWarnings("unchecked") public class OneInstanceFactory implements XSingleServiceFactory, XServiceInfo { Class aMyClass; String aSvcImplName; String[] aSupportedSvcNames; XInterface xInstantiatedService; XMultiServiceFactory xMultiFactory; public OneInstanceFactory( Class aMyClass, String aSvcImplName, String[] aSupportedSvcNames, XMultiServiceFactory xMultiFactory ) { this.aMyClass = aMyClass; this.aSvcImplName = aSvcImplName; this.aSupportedSvcNames = aSupportedSvcNames; this.xMultiFactory = xMultiFactory; xInstantiatedService = null; } //********************** // XSingleServiceFactory //********************** public Object createInstance() throws com.sun.star.uno.Exception, com.sun.star.uno.RuntimeException { if (xInstantiatedService == null) { //!! the here used services all have exact one constructor!! Constructor [] aCtor = aMyClass.getConstructors(); if(aCtor == null){ System.out.println("Oops.. no constructor found?"); } else{ System.out.println("Gelen Constructor sayisi: " + aCtor.length); try { xInstantiatedService = (XInterface) aCtor[0].newInstance( (java.lang.Object[]) null ); } catch(java.lang.Exception e){ e.printStackTrace(); System.out.println("Hata. Servis yüklenemedi."); //throw new com.sun.star.uno.RuntimeException("Zemberek Servisi yüklenemedi. ", e); } // } catch (IllegalArgumentException e) { // e.printStackTrace(); // } catch (InstantiationException e) { // e.printStackTrace(); // } catch (IllegalAccessException e) { // e.printStackTrace(); // } catch (InvocationTargetException e) { // e.printStackTrace(); // } } //!! workaround for services not always being created //!! via 'createInstanceWithArguments' XInitialization xIni = (XInitialization) UnoRuntime.queryInterface( XInitialization.class, createInstance()); if (xIni != null) { Object[] aArguments = new Object[]{ null, null }; if (xMultiFactory != null) { XPropertySet xPropSet = (XPropertySet) UnoRuntime.queryInterface( XPropertySet.class , xMultiFactory.createInstance( "com.sun.star.linguistic2.LinguProperties" ) ); aArguments[0] = xPropSet; } xIni.initialize( aArguments ); } } return xInstantiatedService; } public Object createInstanceWithArguments( Object[] aArguments ) throws com.sun.star.uno.Exception, com.sun.star.uno.RuntimeException { if (xInstantiatedService == null) { XInitialization xIni = (XInitialization) UnoRuntime.queryInterface( XInitialization.class, createInstance()); if (xIni != null) xIni.initialize( aArguments ); } return xInstantiatedService; } //************* // XServiceInfo //************* public boolean supportsService( String aServiceName ) throws com.sun.star.uno.RuntimeException { boolean bFound = false; int nCnt = aSupportedSvcNames.length; for (int i = 0; i < nCnt && !bFound; ++i) { if (aServiceName.equals( aSupportedSvcNames[i] )) bFound = true; } return bFound; } public String getImplementationName() throws com.sun.star.uno.RuntimeException { return aSvcImplName; } public String[] getSupportedServiceNames() throws com.sun.star.uno.RuntimeException { return aSupportedSvcNames; } }; zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ooo/PropChgHelper.java100644 0 0 14533 11107577375 22516 0ustar 0 0 /************************************************************************* * * $RCSfile: PropChgHelper.java,v $ * * $Revision: 1.1 $ * * last change: $Author: mdakin $ $Date: 2005/01/08 09:49:34 $ * * The Contents of this file are made available subject to the terms of * the BSD license. * * Copyright (c) 2003 by Sun Microsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Sun Microsystems, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *************************************************************************/ package net.zemberek.ooo; import com.sun.star.linguistic2.XLinguServiceEventBroadcaster; import com.sun.star.linguistic2.XLinguServiceEventListener; import com.sun.star.linguistic2.LinguServiceEvent; import com.sun.star.beans.XPropertySet; import com.sun.star.beans.XPropertyChangeListener; import com.sun.star.beans.PropertyChangeEvent; import com.sun.star.lang.EventObject; import com.sun.star.uno.XInterface; import java.util.ArrayList; @SuppressWarnings("unchecked") public class PropChgHelper implements XPropertyChangeListener, XLinguServiceEventBroadcaster { XInterface xEvtSource; String[] aPropNames; XPropertySet xPropSet; ArrayList aLngSvcEvtListeners; public PropChgHelper( XInterface xEvtSource, String[] aPropNames ) { this.xEvtSource = xEvtSource; this.aPropNames = aPropNames; xPropSet = null; aLngSvcEvtListeners = new ArrayList(); } public XInterface GetEvtSource() { return xEvtSource; } public XPropertySet GetPropSet() { return xPropSet; } public String[] GetPropNames() { return aPropNames; } public void LaunchEvent( LinguServiceEvent aEvt ) { int nCnt = aLngSvcEvtListeners.size(); for (int i = 0; i < nCnt; ++i) { XLinguServiceEventListener xLstnr = (XLinguServiceEventListener) aLngSvcEvtListeners.get(i); if (xLstnr != null) xLstnr.processLinguServiceEvent( aEvt ); } } public void AddAsListenerTo( XPropertySet xPropertySet ) { // do not listen any longer to the old property set (if any) RemoveAsListener(); // set new property set to be used and register as listener to it xPropSet = xPropertySet; if (xPropSet != null) { int nLen = aPropNames.length; for (int i = 0; i < nLen; ++i) { if (aPropNames[i].length() != 0) { try { xPropSet.addPropertyChangeListener( aPropNames[i], (XPropertyChangeListener) this ); } catch( Exception e ) { } } } } } public void RemoveAsListener() { if (xPropSet != null) { int nLen = aPropNames.length; for (int i = 0; i < nLen; ++i) { if (aPropNames[i].length() != 0) { try { xPropSet.removePropertyChangeListener( aPropNames[i], (XPropertyChangeListener) this ); } catch( Exception e ) { } } } xPropSet = null; } } // __________ interface methods __________ //*************** // XEventListener //*************** public void disposing( EventObject aSource ) throws com.sun.star.uno.RuntimeException { if (aSource.Source == xPropSet) { RemoveAsListener(); } } //************************ // XPropertyChangeListener //************************ public void propertyChange( PropertyChangeEvent aEvt ) throws com.sun.star.uno.RuntimeException { // will be overloaded in derived classes } //****************************** // XLinguServiceEventBroadcaster //****************************** public boolean addLinguServiceEventListener( XLinguServiceEventListener xListener ) throws com.sun.star.uno.RuntimeException { boolean bRes = false; if (xListener != null) { bRes = aLngSvcEvtListeners.add( xListener ); } return bRes; } public boolean removeLinguServiceEventListener( XLinguServiceEventListener xListener ) throws com.sun.star.uno.RuntimeException { boolean bRes = false; if (xListener != null) { int nIdx = aLngSvcEvtListeners.indexOf( xListener ); if (nIdx != -1) { aLngSvcEvtListeners.remove( nIdx ); bRes = true; } } return bRes; } }; zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ooo/ZemberekClient.java100644 0 0 10233 11107577375 22710 0ustar 0 0 /* * Created on 21.A�u.2005 * */ package net.zemberek.ooo; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; public class ZemberekClient { private static int ZEMBEREK_SERVER_PORT = 10444; private static int SOCKET_READ_TIMEOUT = 2000; // 2sn. InputStream stream = null; OutputStream os = null; InputStreamReader reader = null; Socket socket = null; public ZemberekClient() throws Exception{ connect(); } public byte[] mesajKodla(String mesaj){ try { byte[] govde = mesaj.getBytes("UTF-8"); String boy = "" + (govde.length); byte[] boyBuffer = boy.getBytes(); // toplam mesaj boyumuz "boy + boşluk + UTf-8 kodlanmış Stringin byte hali" �eklinde byte[] mesajBytes = new byte[govde.length + boyBuffer.length + 1]; System.arraycopy(boyBuffer, 0, mesajBytes, 0, boyBuffer.length); mesajBytes[boyBuffer.length] = ' '; System.arraycopy(govde, 0, mesajBytes, boyBuffer.length+1, govde.length); return mesajBytes; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return null; } public void connect() throws Exception{ socket = new Socket(); // 250ms de bağlanamazsak bağlantı yok kabul ediyoruz. socket.connect(new InetSocketAddress((InetAddress)null, ZEMBEREK_SERVER_PORT), 250); socket.setTcpNoDelay(true); socket.setSoTimeout(SOCKET_READ_TIMEOUT); socket.setSoLinger(false, 0); stream = socket.getInputStream(); os = socket.getOutputStream(); reader = new InputStreamReader(socket.getInputStream(),"UTF-8"); } private static byte[] temp = new byte[10]; public String readMessage() throws Exception{ boolean boyOkundu = false; int mesajBoy = 0; int idx = 0; // Start timeout timer char[] buffer = new char[1000]; while(true){ char c = (char)reader.read(); if (false == boyOkundu) { byte read = (byte)c; if (read >= '0' && read <= '9') { if (idx > 6) throw new Exception("Mesaj boyu çok büyük!. "); temp[idx++] = (byte)(read); } else{ if (idx > 0) { String boyString = new String(temp, 0, idx); mesajBoy = Integer.parseInt(boyString); boyOkundu = true; idx =0; continue; }else{ throw new Exception("Mesaj formatı hatalı"); } } } else{ buffer[idx++] = c; if (idx == mesajBoy) { String mesaj = new String(buffer,0,idx); //System.out.println("Alinan UTF-8 mesaj:" + mesaj); // + " Hex: " + HexConverter.byteArrayToHexString(mesajBytes, " ")); return mesaj; } } } } public void disconnect(){ try { if(socket != null){ if(stream != null) stream.close(); if(os != null) os.close(); socket.close(); } } catch (Exception e) { e.printStackTrace(); } } public void sendMessage(byte[] message) throws IOException{ os.write(message); os.flush(); //System.out.println("Mesaj gonderildi."); } public static void main(String[] args) { try { ZemberekClient client = new ZemberekClient(); byte[] kodlanmisMesaj = client.mesajKodla("* merhaba"); client.sendMessage(kodlanmisMesaj); String res = client.readMessage(); System.out.println(res); } catch (Exception e) { e.printStackTrace(); } } } zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ooo/ZemberekLibrary.java100644 0 0 7617 11107577375 23072 0ustar 0 0 /* * Created on 07.Oca.2005 * */ package net.zemberek.ooo; import net.zemberek.araclar.TimeTracker; import net.zemberek.erisim.Zemberek; import net.zemberek.islemler.HeceIslemleri; import net.zemberek.tr.yapi.TurkiyeTurkcesi; /** * @author MDA */ public class ZemberekLibrary { private static Zemberek zemberek; private static boolean initialized = false; private boolean useServer = false; private boolean checkZemberekServer = false; private ZemberekClient client; static private HeceIslemleri heceleyici = null; public ZemberekLibrary() { initialize(); } public synchronized void initialize() { if (initialized == true) return; if(checkZemberekServer == false){ loadZemberekLibrary(); initialized = true; return; } // Şimdilik sadece yerel kütüphane yüklensin. useServer = false; loadZemberekLibrary(); // // // Önce Zemberek Server'e bağlanmaya çalışıyoruz. // try { // client = new ZemberekClient(); // denetle("merhaba"); // useServer = true; // initialized = true; // } catch (Exception e1) { // e1.printStackTrace(); // System.out.println("Zemberek sunucusuna bağlanılamadı. Zemberek kütüphanesi yükleniliyor."); // useServer = false; // loadZemberekLibrary(); // } } private void loadZemberekLibrary() { try { TimeTracker.startClock("z"); zemberek = new Zemberek(new TurkiyeTurkcesi()); heceleyici = zemberek.heceleyici(); System.out.println("Zemberek kütüphanesi yüklenme süresi: " + TimeTracker.getElapsedTimeString("z")); initialized = true; } catch (RuntimeException e) { e.printStackTrace(); System.out.println("Runtime Exception! oops.."); } } public boolean denetle(String kelime) { if (useServer == true) { try { String kodlanmisMesaj = "* " + kelime; client.sendMessage(client.mesajKodla(kodlanmisMesaj)); String cevap = client.readMessage(); // cevabı değerlendir. if (cevap.equals("*")) return true; else return false; } catch (Exception e) { e.printStackTrace(); useServer = false; client.disconnect(); loadZemberekLibrary(); return denetle(kelime); } } else { return zemberek.kelimeDenetle(kelime); } } public String[] oner(String kelime) { if (useServer == true) { try { String kodlanmisMesaj = "& " + kelime; client.sendMessage(client.mesajKodla(kodlanmisMesaj)); String cevap = client.readMessage(); // cevabı değerlendir. return onerileriGetir(cevap); //if(cevap.equals("*")) return true; } catch (Exception e) { e.printStackTrace(); useServer = false; client.disconnect(); loadZemberekLibrary(); return oner(kelime); } } else { return zemberek.oner(kelime); } } private String[] onerileriGetir(String cevap) { int start = cevap.indexOf('('); int end = cevap.lastIndexOf(')'); if (start == -1 || end == -1 || end <= start) { return null; } String hamOneriler = cevap.substring(start + 1, end); return hamOneriler.split(","); } public static int[] hecele(String kelime) { if(initialized == false) return null; kelime = zemberek.dilBilgisi().alfabe().ayikla(kelime); return heceleyici.heceIndeksleriniBul(kelime); } } zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ooo/hyphenator/PropChgHelper_Hyph.java100644 0 0 6754 11107577375 25655 0ustar 0 0 /************************************************************************* * * $RCSfile: PropChgHelper_Hyph.java,v $ * * $Revision: 1.2 $ * * last change: $Author: mdakin $ $Date: 2005/08/07 09:50:49 $ * * The Contents of this file are made available subject to the terms of * the BSD license. * * Copyright (c) 2003 by Sun Microsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Sun Microsystems, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *************************************************************************/ package net.zemberek.ooo.hyphenator; import net.zemberek.ooo.PropChgHelper; import com.sun.star.beans.PropertyChangeEvent; import com.sun.star.linguistic2.LinguServiceEvent; import com.sun.star.linguistic2.LinguServiceEventFlags; import com.sun.star.uno.XInterface; public class PropChgHelper_Hyph extends PropChgHelper { public PropChgHelper_Hyph( XInterface xEvtSource, String[] aPropNames ) { super( xEvtSource, aPropNames ); } //************************ // XPropertyChangeListener //************************ public void propertyChange( PropertyChangeEvent aEvt ) throws com.sun.star.uno.RuntimeException { { short nLngSvcFlags = 0; if (aEvt.PropertyName.equals( "IsIgnoreControlCharacters" )) { // nothing to be done } else if (aEvt.PropertyName.equals( "IsUseDictionaryList" ) || aEvt.PropertyName.equals( "IsGermanPreReform" ) || aEvt.PropertyName.equals( "HyphMinLeading" ) || aEvt.PropertyName.equals( "HyphMinTrailing" ) || aEvt.PropertyName.equals( "HyphMinWordLength" )) { nLngSvcFlags = LinguServiceEventFlags.HYPHENATE_AGAIN; } if (nLngSvcFlags != 0) { LinguServiceEvent aEvent = new LinguServiceEvent( GetEvtSource(), nLngSvcFlags ); LaunchEvent( aEvent ); } } } }; zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ooo/hyphenator/TurkishHyphenator.java100644 0 0 45721 11107577375 25673 0ustar 0 0 /************************************************************************* * * $RCSfile: TurkishHyphenator.java,v $ * * $Revision: 1.4 $ * * last change: $Author: mdakin $ $Date: 2005/08/07 10:10:56 $ * * The Contents of this file are made available subject to the terms of * the BSD license. * * Copyright (c) 2003 by Sun Microsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Sun Microsystems, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *************************************************************************/ package net.zemberek.ooo.hyphenator; // uno import java.util.ArrayList; import net.zemberek.ooo.OneInstanceFactory; import net.zemberek.ooo.ZemberekLibrary; import com.sun.star.beans.PropertyValue; import com.sun.star.beans.XPropertySet; import com.sun.star.lang.IllegalArgumentException; import com.sun.star.lang.Locale; import com.sun.star.lang.XInitialization; import com.sun.star.lang.XMultiServiceFactory; import com.sun.star.lang.XServiceDisplayName; import com.sun.star.lang.XServiceInfo; import com.sun.star.lang.XSingleServiceFactory; import com.sun.star.lib.uno.helper.ComponentBase; import com.sun.star.linguistic2.XHyphenatedWord; import com.sun.star.linguistic2.XHyphenator; import com.sun.star.linguistic2.XLinguServiceEventBroadcaster; import com.sun.star.linguistic2.XLinguServiceEventListener; import com.sun.star.linguistic2.XPossibleHyphens; import com.sun.star.uno.AnyConverter; import com.sun.star.uno.Exception; import com.sun.star.uno.UnoRuntime; @SuppressWarnings("unchecked") public class TurkishHyphenator extends ComponentBase implements XHyphenator, XLinguServiceEventBroadcaster, XInitialization, XServiceDisplayName, XServiceInfo { public static Locale turkishLocale = new Locale("tr", "TR", ""); public static Locale emptyLocale = new Locale(); PropChgHelper_Hyph aPropChgHelper; ArrayList aEvtListeners; boolean bDisposing; public TurkishHyphenator() { // names of relevant properties to be used String[] aProps = new String[] { "IsIgnoreControlCharacters", "IsUseDictionaryList", "IsGermanPreReform", "HyphMinLeading", "HyphMinTrailing", "HyphMinWordLength" }; aPropChgHelper = new PropChgHelper_Hyph( (XHyphenator) this, aProps ); aEvtListeners = new ArrayList();; bDisposing = false; } private boolean IsEqual( Locale aLoc1, Locale aLoc2 ) { return aLoc1.Language.equals( aLoc2.Language ) && aLoc1.Country .equals( aLoc2.Country ) && aLoc1.Variant .equals( aLoc2.Variant ); } private boolean GetValueToUse( String aPropName, boolean bDefaultVal, PropertyValue[] aProps ) { boolean bRes = bDefaultVal; try { // use temporary value if supplied for (int i = 0; i < aProps.length; ++i) { if (aPropName.equals( aProps[i].Name )) { Object aObj = aProps[i].Value; if (AnyConverter.isBoolean( aObj )) { bRes = AnyConverter.toBoolean( aObj ); return bRes; } } } // otherwise use value from property set (if available) XPropertySet xPropSet = aPropChgHelper.GetPropSet(); if (xPropSet != null) // should always be the case { Object aObj = xPropSet.getPropertyValue( aPropName ); if (AnyConverter.isBoolean( aObj )) bRes = AnyConverter.toBoolean( aObj ); } } catch (Exception e) { bRes = bDefaultVal; } return bRes; } private short GetValueToUse( String aPropName, short nDefaultVal, PropertyValue[] aProps ) { short nRes = nDefaultVal; try { // use temporary value if supplied for (int i = 0; i < aProps.length; ++i) { if (aPropName.equals( aProps[i].Name )) { Object aObj = aProps[i].Value; if (AnyConverter.isShort( aObj )) { nRes = AnyConverter.toShort( aObj ); return nRes; } } } // otherwise use value from property set (if available) XPropertySet xPropSet = aPropChgHelper.GetPropSet(); if (xPropSet != null) // should always be the case { Object aObj = xPropSet.getPropertyValue( aPropName ); if (AnyConverter.isShort( aObj )) nRes = AnyConverter.toShort( aObj ); } } catch (Exception e) { nRes = nDefaultVal; } return nRes; } // __________ interface methods __________ //***************** //XSupportedLocales //***************** public Locale[] getLocales() throws com.sun.star.uno.RuntimeException { Locale aLocales[] = { new Locale( "tr", "TR", "" ) }; return aLocales; } public boolean hasLocale( Locale aLocale ) throws com.sun.star.uno.RuntimeException { boolean bRes = false; if ( IsEqual( aLocale, turkishLocale)) bRes = true; return bRes; } //*********** //XHyphenator //*********** public XHyphenatedWord hyphenate( String aWord, Locale aLocale, short nMaxLeading, PropertyValue[] aProperties ) throws com.sun.star.uno.RuntimeException, IllegalArgumentException { if (IsEqual( aLocale, new Locale() ) || aWord.length() == 0) return null; // linguistic is currently not allowed to throw exceptions // thus we return null fwhich means 'word cannot be hyphenated' if (!hasLocale( aLocale )) return null; // get values of relevant properties that may be used. //! The values for 'IsIgnoreControlCharacters' and 'IsUseDictionaryList' //! are handled by the dispatcher! Thus there is no need to access //! them here. short nHyphMinLeading = GetValueToUse( "HyphMinLeading", (short)2, aProperties ); short nHyphMinTrailing = GetValueToUse( "HyphMinTrailing", (short)2, aProperties ); short nHyphMinWordLen = GetValueToUse( "HyphMinWordLength", (short)5, aProperties ); XHyphenatedWord xRes = null; if (aWord.length() >= nHyphMinWordLen) { String aHyphenatedWord = aWord; short nHyphenationPos = -1; short nHyphenPos = -1; //System.out.println("hyphenate called for : " + aWord + " Len: " + aWord.length()); //System.out.println("MaxLeading: " + nMaxLeading + " Min Leading: " + nHyphMinLeading + " Trailing: " + nHyphMinTrailing); if (IsEqual( aLocale, turkishLocale) ){ int[] heceIndeksleri = ZemberekLibrary.hecele(aWord); if(heceIndeksleri != null){ if(heceIndeksleri.length > 1){ int i = 0; while(i aWord.length() - nHyphMinTrailing ){ maxLimit = aWord.length() - nHyphMinTrailing ; } if(i < heceIndeksleri.length && heceIndeksleri[i] < maxLimit){ while(i= aWord.length() - nHyphMinTrailing)) { xRes = new XHyphenatedWord_impl(aWord, aLocale, nHyphenationPos, aHyphenatedWord, nHyphenPos); } } return xRes; } public XHyphenatedWord queryAlternativeSpelling( String aWord, Locale aLocale, short nIndex, PropertyValue[] aProperties ) throws com.sun.star.uno.RuntimeException, IllegalArgumentException { if (IsEqual( aLocale, emptyLocale) || aWord.length() == 0) return null; // linguistic is currently not allowed to throw exceptions // thus we return null which means 'word cannot be hyphenated' if (!hasLocale( aLocale )) return null; // get values of relevant properties that may be used. //! The values for 'IsIgnoreControlCharacters' and 'IsUseDictionaryList' //! are handled by the dispatcher! Thus there is no need to access //! them here. short nHyphMinLeading = GetValueToUse( "HyphMinLeading", (short)2, aProperties ); short nHyphMinTrailing = GetValueToUse( "HyphMinTrailing", (short)2, aProperties ); short nHyphMinWordLen = GetValueToUse( "HyphMinWordLength", (short)5, aProperties ); XHyphenatedWord xRes = null; return xRes; } public XPossibleHyphens createPossibleHyphens( String aWord, Locale aLocale, PropertyValue[] aProperties ) throws com.sun.star.uno.RuntimeException, IllegalArgumentException { if (IsEqual( aLocale, emptyLocale ) || aWord.length() == 0) return null; // linguistic is currently not allowed to throw exceptions // thus we return null which means 'word cannot be hyphenated' if (!hasLocale( aLocale )) return null; // get values of relevant properties that may be used. //! The values for 'IsIgnoreControlCharacters' and 'IsUseDictionaryList' //! are handled by the dispatcher! Thus there is no need to access //! them here. short nHyphMinLeading = GetValueToUse( "HyphMinLeading", (short)2, aProperties ); short nHyphMinTrailing = GetValueToUse( "HyphMinTrailing", (short)2, aProperties ); short nHyphMinWordLen = GetValueToUse( "HyphMinWordLength", (short)5, aProperties ); XPossibleHyphens xRes = null; //System.out.println("createPossibleHyphens called for : " + aWord + " Len: " + aWord.length()); if (IsEqual( aLocale, turkishLocale) ){ int[] heceIndeksleri = ZemberekLibrary.hecele(aWord); if(heceIndeksleri != null){ if(heceIndeksleri.length == 1){ short aPos[] = new short[]{(short) 3}; xRes = new XPossibleHyphens_impl(aWord, aLocale, aWord, aPos); } short aPos[] = new short[heceIndeksleri.length]; for(int i=0; iJavaLoader *

* @return returns a XSingleServiceFactory for creating the component * @param implName the name of the implementation for which a service is desired * @param multiFactory the service manager to be used if needed * @param regKey the registryKey * @see com.sun.star.comp.loader.JavaLoader */ public static XSingleServiceFactory __getServiceFactory( String aImplName, XMultiServiceFactory xMultiFactory, com.sun.star.registry.XRegistryKey xRegKey ) { XSingleServiceFactory xSingleServiceFactory = null; if( aImplName.equals( _aSvcImplName ) ) { xSingleServiceFactory = new OneInstanceFactory( TurkishHyphenator.class, _aSvcImplName, getSupportedServiceNames_Static(), xMultiFactory ); } return xSingleServiceFactory; } /** * Writes the service information into the given registry key. * This method is called by the JavaLoader *

* @return returns true if the operation succeeded * @param xRegKey the registryKey * @see com.sun.star.comp.loader.JavaLoader */ public static boolean __writeRegistryServiceInfo( com.sun.star.registry.XRegistryKey xRegKey ) { boolean bResult = true; String[] aServices = getSupportedServiceNames_Static(); int i, nLength = aServices.length; for( i = 0; i < nLength; ++i ) { bResult = bResult && com.sun.star.comp.loader.FactoryHelper.writeRegistryServiceInfo( _aSvcImplName, aServices[i], xRegKey ); } return bResult; } } zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ooo/hyphenator/XHyphenatedWord_impl.java100644 0 0 7435 11107577375 26256 0ustar 0 0 /************************************************************************* * * $RCSfile: XHyphenatedWord_impl.java,v $ * * $Revision: 1.1 $ * * last change: $Author: mdakin $ $Date: 2005/01/11 20:30:03 $ * * The Contents of this file are made available subject to the terms of * the BSD license. * * Copyright (c) 2003 by Sun Microsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Sun Microsystems, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *************************************************************************/ package net.zemberek.ooo.hyphenator; import com.sun.star.lang.Locale; public class XHyphenatedWord_impl implements com.sun.star.linguistic2.XHyphenatedWord { String aWord; String aHyphenatedWord; short nHyphenPos; short nHyphenationPos; Locale aLang; boolean bIsAltSpelling; public XHyphenatedWord_impl( String aWord, Locale aLang, short nHyphenationPos, String aHyphenatedWord, short nHyphenPos ) { this.aWord = aWord; this.aLang = aLang; this.nHyphenationPos = nHyphenationPos; this.aHyphenatedWord = aHyphenatedWord; this.nHyphenPos = nHyphenPos; this.bIsAltSpelling = (aWord != aHyphenatedWord); //!! none of these cases should ever occur! //!! values provided only for safety if (this.aWord == null) this.aWord = new String(); if (this.aLang == null) this.aLang = new Locale(); if (this.aHyphenatedWord == null) this.aHyphenatedWord = new String(); } // XHyphenatedWord public String getWord() throws com.sun.star.uno.RuntimeException { return aWord; } public Locale getLocale() throws com.sun.star.uno.RuntimeException { return aLang; } public short getHyphenationPos() throws com.sun.star.uno.RuntimeException { return nHyphenationPos; } public String getHyphenatedWord() throws com.sun.star.uno.RuntimeException { return aHyphenatedWord; } public short getHyphenPos() throws com.sun.star.uno.RuntimeException { return nHyphenPos; } public boolean isAlternativeSpelling() throws com.sun.star.uno.RuntimeException { return bIsAltSpelling; } }; zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ooo/hyphenator/XPossibleHyphens_impl.java100644 0 0 7137 11107577375 26447 0ustar 0 0 /************************************************************************* * * $RCSfile: XPossibleHyphens_impl.java,v $ * * $Revision: 1.1 $ * * last change: $Author: mdakin $ $Date: 2005/01/11 20:30:03 $ * * The Contents of this file are made available subject to the terms of * the BSD license. * * Copyright (c) 2003 by Sun Microsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Sun Microsystems, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *************************************************************************/ package net.zemberek.ooo.hyphenator; import com.sun.star.lang.Locale; public class XPossibleHyphens_impl implements com.sun.star.linguistic2.XPossibleHyphens { String aWord; String aHyphWord; short[] aOrigHyphenPos; Locale aLang; public XPossibleHyphens_impl( String aWord, Locale aLang, String aHyphWord, short[] aOrigHyphenPos) { this.aWord = aWord; this.aLang = aLang; this.aHyphWord = aHyphWord; this.aOrigHyphenPos = aOrigHyphenPos; //!! none of these cases should ever occur! //!! values provided only for safety if (this.aWord == null) this.aWord = new String(); if (this.aLang == null) this.aLang = new Locale(); if (this.aHyphWord == null) this.aHyphWord = new String(); // having no hyphenation positions is OK though. // still for safety an empty existing array has to be provided. if (this.aOrigHyphenPos == null) this.aOrigHyphenPos = new short[]{}; } // XPossibleHyphens public String getWord() throws com.sun.star.uno.RuntimeException { return aWord; } public Locale getLocale() throws com.sun.star.uno.RuntimeException { return aLang; } public String getPossibleHyphens() throws com.sun.star.uno.RuntimeException { return aHyphWord; } public short[] getHyphenationPositions() throws com.sun.star.uno.RuntimeException { return aOrigHyphenPos; } }; zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ooo/spellchecker/PropChgHelper_Spell.java100644 0 0 10434 11107577375 26315 0ustar 0 0 /************************************************************************* * * $RCSfile: PropChgHelper_Spell.java,v $ * * $Revision: 1.2 $ * * last change: $Author: mdakin $ $Date: 2005/08/07 09:50:50 $ * * The Contents of this file are made available subject to the terms of * the BSD license. * * Copyright (c) 2003 by Sun Microsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Sun Microsystems, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *************************************************************************/ package net.zemberek.ooo.spellchecker; import net.zemberek.ooo.PropChgHelper; import com.sun.star.beans.PropertyChangeEvent; import com.sun.star.linguistic2.LinguServiceEvent; import com.sun.star.linguistic2.LinguServiceEventFlags; import com.sun.star.uno.XInterface; public class PropChgHelper_Spell extends PropChgHelper { public PropChgHelper_Spell( XInterface xEvtSource, String[] aPropNames ) { super( xEvtSource, aPropNames ); } //************************ // XPropertyChangeListener //************************ public void propertyChange( PropertyChangeEvent aEvt ) throws com.sun.star.uno.RuntimeException { { short nLngSvcFlags = 0; boolean bSCWA = false; // SPELL_CORRECT_WORDS_AGAIN ? boolean bSWWA = false; // SPELL_WRONG_WORDS_AGAIN ? boolean bVal = ((Boolean) aEvt.NewValue).booleanValue(); if (aEvt.PropertyName.equals( "IsIgnoreControlCharacters" )) { // nothing to be done } else if (aEvt.PropertyName.equals( "IsUseDictionaryList" )) { bSCWA = bSWWA = true; } else if (aEvt.PropertyName.equals( "IsSpellUpperCase" )) { bSCWA = false == bVal; // FALSE->TRUE change? bSWWA = !bSCWA; // TRUE->FALSE change? } else if (aEvt.PropertyName.equals( "IsSpellWithDigits" )) { bSCWA = false == bVal; // FALSE->TRUE change? bSWWA = !bSCWA; // TRUE->FALSE change? } else if (aEvt.PropertyName.equals( "IsSpellCapitalization" )) { bSCWA = false == bVal; // FALSE->TRUE change? bSWWA = !bSCWA; // TRUE->FALSE change? } if (bSCWA) nLngSvcFlags |= LinguServiceEventFlags.SPELL_CORRECT_WORDS_AGAIN; if (bSWWA) nLngSvcFlags |= LinguServiceEventFlags.SPELL_WRONG_WORDS_AGAIN; if (nLngSvcFlags != 0) { LinguServiceEvent aEvent = new LinguServiceEvent( GetEvtSource(), nLngSvcFlags ); LaunchEvent( aEvent ); } } } }; zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ooo/spellchecker/TurkishSpellChecker.java100644 0 0 34666 11107577375 26407 0ustar 0 0 /************************************************************************* * * $RCSfile: TurkishSpellChecker.java,v $ * * $Revision: 1.4 $ * * last change: $Author: mdakin $ $Date: 2006/12/06 19:46:38 $ * * The Contents of this file are made available subject to the terms of * the BSD license. * * Copyright (c) 2003 by Sun Microsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Sun Microsystems, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *************************************************************************/ package net.zemberek.ooo.spellchecker; // uno import net.zemberek.ooo.OneInstanceFactory; import net.zemberek.ooo.ZemberekLibrary; import com.sun.star.beans.PropertyValue; import com.sun.star.beans.XPropertySet; import com.sun.star.lang.IllegalArgumentException; import com.sun.star.lang.Locale; import com.sun.star.lang.XInitialization; import com.sun.star.lang.XMultiServiceFactory; import com.sun.star.lang.XServiceDisplayName; import com.sun.star.lang.XServiceInfo; import com.sun.star.lang.XSingleServiceFactory; import com.sun.star.lib.uno.helper.ComponentBase; import com.sun.star.linguistic2.SpellFailure; import com.sun.star.linguistic2.XLinguServiceEventBroadcaster; import com.sun.star.linguistic2.XLinguServiceEventListener; import com.sun.star.linguistic2.XSpellAlternatives; import com.sun.star.linguistic2.XSpellChecker; import com.sun.star.uno.AnyConverter; import com.sun.star.uno.Exception; import com.sun.star.uno.UnoRuntime; public class TurkishSpellChecker extends ComponentBase implements XSpellChecker, XLinguServiceEventBroadcaster, XInitialization, XServiceDisplayName, XServiceInfo { PropChgHelper_Spell aPropChgHelper; boolean bDisposing; private ZemberekLibrary zemberek = null; public static Locale turkishLocale = new Locale("tr", "TR", ""); public static Locale emptyLocale = new Locale(); public TurkishSpellChecker() { // names of relevant properties to be used String[] aProps = new String[] { "IsIgnoreControlCharacters", "IsUseDictionaryList", "IsSpellUpperCase", "IsSpellWithDigits", "IsSpellCapitalization" }; aPropChgHelper = new PropChgHelper_Spell( (XSpellChecker) this, aProps ); bDisposing = false; if(zemberek == null){ zemberek = new ZemberekLibrary(); } System.out.println("OOo Türkçe yazım denetleyicisi Zemberek yuklendi!"); } private boolean IsEqual( Locale aLoc1, Locale aLoc2 ) { return aLoc1.Language.equals( aLoc2.Language ) && aLoc1.Country .equals( aLoc2.Country ) && aLoc1.Variant .equals( aLoc2.Variant ); } private boolean GetValueToUse( String aPropName, boolean bDefaultVal, PropertyValue[] aProps ) { boolean bRes = bDefaultVal; try { // use temporary value if supplied for (int i = 0; i < aProps.length; ++i) { if (aPropName.equals( aProps[i].Name )) { Object aObj = aProps[i].Value; if (AnyConverter.isBoolean( aObj )) { bRes = AnyConverter.toBoolean( aObj ); return bRes; } } } // otherwise use value from property set (if available) XPropertySet xPropSet = aPropChgHelper.GetPropSet(); if (xPropSet != null) // should always be the case { Object aObj = xPropSet.getPropertyValue( aPropName ); if (AnyConverter.isBoolean( aObj )) bRes = AnyConverter.toBoolean( aObj ); } } catch (Exception e) { bRes = bDefaultVal; } return bRes; } private boolean IsUpper( String aWord, Locale aLocale ) { java.util.Locale aLang = new java.util.Locale( aLocale.Language, aLocale.Country, aLocale.Variant ); return aWord.equals( aWord.toUpperCase( aLang ) ); } private boolean HasDigits( String aWord ) { int nLen = aWord.length(); for (int i = 0; i < nLen; ++i) { if (Character.isDigit( aWord.charAt(i) )) return true; } return false; } private short GetSpellFailure( String aWord, Locale aLocale, PropertyValue[] aProperties ) { short nRes = -1; if (IsEqual( aLocale, turkishLocale )){ if(zemberek != null){ if(!zemberek.denetle(aWord)){ nRes = SpellFailure.SPELLING_ERROR; } } } return nRes; } private XSpellAlternatives GetProposals( String aWord, Locale aLocale, PropertyValue[] aProperties ) { short nType = SpellFailure.SPELLING_ERROR; String[] aProposals = null; if (IsEqual( aLocale, turkishLocale)){ if(zemberek != null){ aProposals = zemberek.oner(aWord); if(aProposals == null){ nType = SpellFailure.SPELLING_ERROR; aProposals = new String[1]; } } } // always return a result if word is incorrect, // proposals may be empty though. return new XSpellAlternatives_impl( aWord, aLocale, nType, aProposals ); } // __________ interface methods __________ //***************** //XSupportedLocales //***************** public Locale[] getLocales() throws com.sun.star.uno.RuntimeException { Locale aLocales[] = { turkishLocale }; return aLocales; } public boolean hasLocale( Locale aLocale ) throws com.sun.star.uno.RuntimeException { boolean bRes = false; if ( IsEqual( aLocale, turkishLocale )) bRes = true; return bRes; } //************* //XSpellChecker //************* public boolean isValid( String aWord, Locale locale, PropertyValue[] aProperties ) throws com.sun.star.uno.RuntimeException, IllegalArgumentException { // Eğer locale tanımsızsa dön if (IsEqual( locale, emptyLocale ) || aWord.length() == 0) return true; if (!hasLocale( locale )) return true; // get values of relevant properties that may be used. //! The values for 'IsIgnoreControlCharacters' and 'IsUseDictionaryList' //! are handled by the dispatcher! Thus there is no need to access //! them here. boolean bIsSpellWithDigits = GetValueToUse( "IsSpellWithDigits", false, aProperties ); boolean bIsSpellUpperCase = GetValueToUse( "IsSpellUpperCase", false, aProperties ); boolean bIsSpellCapitalization = GetValueToUse( "IsSpellCapitalization", true, aProperties ); short nFailure = GetSpellFailure( aWord, locale, aProperties ); if (nFailure != -1) { // postprocess result for errors that should be ignored if ( (!bIsSpellUpperCase && IsUpper( aWord, locale )) || (!bIsSpellWithDigits && HasDigits( aWord )) || (!bIsSpellCapitalization && nFailure == SpellFailure.CAPTION_ERROR) ) nFailure = -1; } return nFailure == -1; } public XSpellAlternatives spell( String aWord, Locale aLocale, PropertyValue[] aProperties ) throws com.sun.star.uno.RuntimeException, IllegalArgumentException { if (IsEqual( aLocale, emptyLocale ) || aWord.length() == 0) return null; // linguistic is currently not allowed to throw exceptions // thus we return null fwhich means 'word cannot be spelled' if (!hasLocale( aLocale )) return null; XSpellAlternatives xRes = null; if (!isValid( aWord, aLocale, aProperties )) { xRes = GetProposals( aWord, aLocale, aProperties ); } return xRes; } //***************************** //XLinguServiceEventBroadcaster //***************************** public boolean addLinguServiceEventListener ( XLinguServiceEventListener xLstnr ) throws com.sun.star.uno.RuntimeException { boolean bRes = false; if (!bDisposing && xLstnr != null) bRes = aPropChgHelper.addLinguServiceEventListener( xLstnr ); return bRes; } public boolean removeLinguServiceEventListener( XLinguServiceEventListener xLstnr ) throws com.sun.star.uno.RuntimeException { boolean bRes = false; if (!bDisposing && xLstnr != null) bRes = aPropChgHelper.removeLinguServiceEventListener( xLstnr ); return bRes; } //******************** // XServiceDisplayName //******************** public String getServiceDisplayName( Locale aLocale ) throws com.sun.star.uno.RuntimeException { return "Zemberek Yaz\u0131m Denetleyicisi"; } //**************** // XInitialization //**************** public void initialize( Object[] aArguments ) throws com.sun.star.uno.Exception, com.sun.star.uno.RuntimeException { int nLen = aArguments.length; if (2 == nLen) { XPropertySet xPropSet = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, aArguments[0]); // start listening to property changes aPropChgHelper.AddAsListenerTo( xPropSet ); } } //************* // XServiceInfo //************* public boolean supportsService( String aServiceName ) throws com.sun.star.uno.RuntimeException { String[] aServices = getSupportedServiceNames_Static(); int i, nLength = aServices.length; boolean bResult = false; for( i = 0; !bResult && i < nLength; ++i ) bResult = aServiceName.equals( aServices[ i ] ); return bResult; } public String getImplementationName() throws com.sun.star.uno.RuntimeException { return _aSvcImplName; } public String[] getSupportedServiceNames() throws com.sun.star.uno.RuntimeException { return getSupportedServiceNames_Static(); } // __________ static things __________ public static String _aSvcImplName = "net.zemberek.ooo.spellchecker.TurkishSpellChecker"; public static String[] getSupportedServiceNames_Static() { String[] aResult = { "com.sun.star.linguistic2.SpellChecker" }; return aResult; } private static XMultiServiceFactory xMultiFactory; /** * Returns a factory for creating the service. * This method is called by the JavaLoader *

* @return returns a XSingleServiceFactory for creating the component * @param aImplName the name of the implementation for which a service is desired * @param xMultiFactoryTmp the service manager to be used if needed * @param xRegKey the registryKey * @see com.sun.star.comp.loader.JavaLoader */ public static XSingleServiceFactory __getServiceFactory(String aImplName, XMultiServiceFactory xMultiFactoryTmp, com.sun.star.registry.XRegistryKey xRegKey) { xMultiFactory = xMultiFactoryTmp; XSingleServiceFactory xSingleServiceFactory = null; if (aImplName.equals(_aSvcImplName)) { xSingleServiceFactory = new OneInstanceFactory( TurkishSpellChecker.class, _aSvcImplName, getSupportedServiceNames_Static(), xMultiFactory); } return xSingleServiceFactory; } /** * Writes the service information into the given registry key. * This method is called by the JavaLoader *

* @return returns true if the operation succeeded * @param xRegKey the registryKey * @see com.sun.star.comp.loader.JavaLoader */ public static boolean __writeRegistryServiceInfo( com.sun.star.registry.XRegistryKey xRegKey ) { boolean bResult = true; String[] aServices = getSupportedServiceNames_Static(); int i, nLength = aServices.length; for( i = 0; i < nLength; ++i ) { bResult = bResult && com.sun.star.comp.loader.FactoryHelper.writeRegistryServiceInfo( _aSvcImplName, aServices[i], xRegKey ); } return bResult; } } zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ooo/spellchecker/XSpellAlternatives_impl.java100644 0 0 7220 11107577375 27245 0ustar 0 0 /************************************************************************* * * $RCSfile: XSpellAlternatives_impl.java,v $ * * $Revision: 1.1 $ * * last change: $Author: mdakin $ $Date: 2005/01/11 20:30:04 $ * * The Contents of this file are made available subject to the terms of * the BSD license. * * Copyright (c) 2003 by Sun Microsystems, Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of Sun Microsystems, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * *************************************************************************/ package net.zemberek.ooo.spellchecker; import com.sun.star.lang.Locale; public class XSpellAlternatives_impl implements com.sun.star.linguistic2.XSpellAlternatives { String aWord; Locale aLanguage; String[] aAlt; // list of alternatives, may be empty. short nType; // type of failure public XSpellAlternatives_impl( String aWord, Locale aLanguage, short nFailureType, String[] aAlt ) { this.aWord = aWord; this.aLanguage = aLanguage; this.aAlt = aAlt; this.nType = nFailureType; //!! none of these cases should ever occur! //!! values provided only for safety if (this.aWord == null) this.aWord = new String(); if (this.aLanguage == null) this.aLanguage = new Locale(); // having no alternatives is OK though. // still for safety an empty existing array has to be provided. if (this.aAlt == null) this.aAlt = new String[]{}; } // XSpellAlternatives public String getWord() throws com.sun.star.uno.RuntimeException { return aWord; } public Locale getLocale() throws com.sun.star.uno.RuntimeException { return aLanguage; } public short getFailureType() throws com.sun.star.uno.RuntimeException { return nType; } public short getAlternativesCount() throws com.sun.star.uno.RuntimeException { return (short) aAlt.length; } public String[] getAlternatives() throws com.sun.star.uno.RuntimeException { return aAlt; } }; eEventListener ( XLinguServiceEventListener xLstnr ) throws com.sun.star.uno.RuntimeException { boolean bRes = false; if (!bDisposing && xLstnr != null) bRes = aPropChgHelper.addLinguServiceEventListener( xLstnr ); return bRes; } public boolean removeLinguServiceEventListener( XLinguServiceEventListener xLstnr ) throws com.sun.star.uno.RuntimeException { boolean bRes = false; if (!bDisposing && xLstnr != null) bRes = aPropChgHelper.removeLinguServiceEventListener( xLstnr ); return bRes; } //******************** // XServiceDisplayName //******************** public String getServiceDisplayName( Locale aLocale ) throws com.sun.star.uno.RuntimeException { return "Zemberek Yaz\u0131m Denetleyicisi"; } //**************** // XInitialization //**************** public void initialize( Object[] aArguments ) throws com.sun.star.uno.Exception, com.sun.star.uno.RuntimeException { int nLen = aArguments.length; if (2 == nLen) { XPropertySet xPropSet = (XPropertySet)UnoRuntime.queryInterface( XPropertySet.class, aArguments[0]); // start listening to property changes aPropChgHelper.AddAsListenerTo( xPropSet ); } } //************* // XServiceInfo //************* public boolean supportsService( String aServiceName ) throws com.sun.star.uno.RuntimeException { String[] aServices = getSupportedServiceNames_Static(); int i, nLength = aServices.length; boolean bResult = false; for( i = 0; !bResult && i < nLength; ++i ) bResult = aServiceName.equals( aServices[ i ] ); return bResult; } public String getImplementationName() throws com.sun.star.uno.RuntimeException { return _aSvcImplName; } public String[] getSupportedServiceNames() throws com.sun.star.uno.RuntimeException { return getSupportedServiceNames_Static(); } // __________ static things __________ public static String _aSvcImplName = "net.zemberek.ooo.spellchecker.TurkishSpellChecker"; public static String[] getSupportedServiceNames_Static() { String[] aResult = { "com.sun.star.linguistic2.SpellChecker" }; return aResult; } private static XMultiServiceFactory xMultiFactory; /** * Returns a factory for creating the service. * This method is called by the JavaLoader *

* @return returns a XSingleServiceFactory for creating the component * @param aImplName the name of the implementation for which a service is desired * @param xMultiFactoryTmp the service manager to be used if needed * @param xRegKey the registryKey * @see com.sun.star.comp.loader.JavaLoader */ public static XSingleServiceFactory __getServiceFactory(String aImplName, XMultiServiceFactory xMultiFactoryTmp, com.sun.star.registry.XRegistryKey xRegKey) { xMultiFactory = xMultiFactoryTmp; XSingleServiceFactory xSingleServiceFactory = null; if (aImplName.equals(_aSvcImplName)) { xSingleServiceFactory = new OneInstanceFactory( TurkishSpellChecker.class, _aSvcImplName, getSupportedServiceNames_Static(), xMultiFactory); } return xSingleServiceFactory; } /** * Writes the service information into the given registry key. * This method is called by the JavaLoader *

* @return returns true if the operation succeeded * @param xRegKey the registryKey * @see com.sun.star.comp.loader.JavaLoader */ public static boolean __writeRegistryServiceInfo( com.sun.star.registry.XRegistryKey xRegKey ) { boolean bResult = true; String[] aServices = getSupportedServiceNames_Static(); int i, nLength = aServices.length; for( i = 0; i < nLength; ++i ) { bResult = bResult && com.sun.star.comp.loader.FactoryHelper.writeRegistryServiceInfo( _aSvcImplName, aServices[i], xRegKey ); } return bResult; } } zemberek-ooo-1.0_rc2-nolibs/src/net/zemberek/ooo/spellchecker/XSpellAlternatives_impl.java100644 0 0 7220 11107577375 27245 0ustar 0 0