Synonyms.java

package sk.iway.iwcm.system.fulltext.lucene;

import static sk.iway.iwcm.system.fulltext.cdb.CdbUtils.encode;

import java.nio.ByteBuffer;

import io.github.duckasteroid.cdb.Cdb;
import sk.iway.iwcm.Cache;
import sk.iway.iwcm.system.fulltext.cdb.CdbCacheListener;
import sk.iway.iwcm.system.fulltext.cdb.CdbFactory;
import sk.iway.iwcm.system.fulltext.cdb.CdbUtils;

/**
 *  Synonyms.java
 *
 *@Title        webjet7
 *@Company      Interway s.r.o. (www.interway.sk)
 *@Copyright    Interway s.r.o. (c) 2001-2011
 *@author       $Author: jeeff thaber $
 *@version      $Revision: 1.3 $
 *@created      Date: 5.5.2011 14:12:42
 *@modified     $Date: 2004/08/16 06:26:11 $
 */
public class Synonyms
{
	protected Synonyms() {
		//utility class
	}

	/**
	 * Get the base word from synonym order
	 * @param language
	 * @param form
	 * @param offset
	 * @param length
	 * @return
	 */
	public static char[] get(String language, char[] form,int offset,int length)
	{
		try
		{
			Cache c = Cache.getInstance();
			CdbCacheListener.init();
			String CACHE_KEY = "Lucene.Synonyms." + language+"."+Thread.currentThread().getId();
			Cdb cdb = (Cdb)c.getObject(CACHE_KEY);
			if (cdb == null)
			{
				cdb = (Cdb)new CdbFactory(language,CdbFactory.Type.SYNONYMS).makeObject();
				c.setObjectSeconds(CACHE_KEY, cdb, 5*60, false);
			}

			ByteBuffer bytes = cdb.find(ByteBuffer.wrap(encode(form, offset, length)));
			if (bytes != null && bytes.hasArray())
			{
				return CdbUtils.decode(bytes.array());
			}
		}
		catch (Exception e)
		{
			sk.iway.iwcm.Logger.error(e);
		}
		return null;
	}
}