/** * @version $Id: DicService.java 997 2013-10-28 14:50:11Z yukihiro-kinjo $ * * 2013/10/28 14:51:29 * @author yukihiro-kinjo * * Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved. */ package com.tida_okinawa.corona.io.dam.hibernate; import java.util.ArrayList; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Session; import com.tida_okinawa.corona.io.IoActivator; import com.tida_okinawa.corona.io.bean.DicCommonBean; import com.tida_okinawa.corona.io.bean.DicFlucBean; import com.tida_okinawa.corona.io.bean.DicPatternBean; import com.tida_okinawa.corona.io.bean.DicSynonymBean; import com.tida_okinawa.corona.io.bean.DicTableBean; import com.tida_okinawa.corona.io.model.dic.DicType; import com.tida_okinawa.corona.io.model.dic.ICoronaDic; import com.tida_okinawa.corona.io.model.dic.IDicItem; import com.tida_okinawa.corona.io.model.dic.IDicName; import com.tida_okinawa.corona.io.model.dic.abstraction.DicName; import com.tida_okinawa.corona.io.service.IDicService; /** * @author yukihiro-kinjo */ public class DicService implements IDicService { private static DicService instance = new DicService(); private DicService() { /* このクラスはシングルトン */ } /** * DicServiceのインスタンスを取得する * * @return このクラス(DicService)のインスタンスを取得する */ public static DicService getInstance() { return instance; } @Override public DicType getDicType(int dicId) { String hql = "from DicTableBean where dicId=:searchDicId"; //$NON-NLS-1$ try { Session session = IoService.getInstance().getSession(); DicTableBean result = (DicTableBean) session.createQuery(hql).setInteger("searchDicId", dicId).uniqueResult(); //$NON-NLS-1$ if (result != null) { return DicType.valueOf(result.getDicType()); } return null; } catch (HibernateException e) { return null; } } @Override public IDicItem getItem(int itemId, DicType type) { switch (type) { case SPECIAL: case COMMON: case CATEGORY: case JUMAN: return getDicCommonItem(itemId); case FLUC: return getDicFlucItem(itemId); case SYNONYM: return getDicSynonymItem(itemId); case PATTERN: return getDicPatternItem(itemId); default: throw new IllegalArgumentException(); } } private static IDicItem getDicCommonItem(int itemId) { try { String hql = "from DicCommonBean where itemId=:itemId"; //$NON-NLS-1$ Session session = IoService.getInstance().getSession(); DicCommonBean result = (DicCommonBean) session.createQuery(hql).setInteger("itemId", itemId).uniqueResult(); //$NON-NLS-1$ if (result != null && result.getDicId() > 0) { ICoronaDic dic = IoActivator.getService().getDictionary(result.getDicId()); if (dic != null) { return dic.getItem(itemId); } } return null; } catch (HibernateException e) { return null; } } private static IDicItem getDicFlucItem(int itemId) { try { String hql = "from DicFlucBean where flucId=:itemId"; //$NON-NLS-1$ Session session = IoService.getInstance().getSession(); DicFlucBean result = (DicFlucBean) session.createQuery(hql).setInteger("itemId", itemId).uniqueResult(); //$NON-NLS-1$ if (result != null && result.getDicId() > 0) { ICoronaDic dic = IoActivator.getService().getDictionary(result.getDicId()); if (dic != null) { return dic.getItem(itemId); } } return null; } catch (HibernateException e) { return null; } } private static IDicItem getDicSynonymItem(int itemId) { try { String hql = "from DicSynonymBean where synonymId=:itemId"; //$NON-NLS-1$ Session session = IoService.getInstance().getSession(); DicSynonymBean result = (DicSynonymBean) session.createQuery(hql).setInteger("itemId", itemId).uniqueResult(); //$NON-NLS-1$ if (result != null && result.getDicId() > 0) { ICoronaDic dic = IoActivator.getService().getDictionary(result.getDicId()); if (dic != null) { return dic.getItem(itemId); } } return null; } catch (HibernateException e) { return null; } } private static IDicItem getDicPatternItem(int itemId) { try { String hql = "from DicPatternBean where id=:itemId"; //$NON-NLS-1$ Session session = IoService.getInstance().getSession(); DicPatternBean result = (DicPatternBean) session.createQuery(hql).setInteger("itemId", itemId).uniqueResult(); //$NON-NLS-1$ if (result != null && result.getDicId() > 0) { ICoronaDic dic = IoActivator.getService().getDictionary(result.getDicId()); if (dic != null) { return dic.getItem(itemId); } } return null; } catch (HibernateException e) { return null; } } /** #177 パターン自動生成(係り受け抽出) */ @Override public IDicName[] getDicName(DicType type) { List<IDicName> dicNames = new ArrayList<IDicName>(100); String hql = "from DicTableBean as dt where dt.dicType=:dtype"; //$NON-NLS-1$ try { Session session = IoService.getInstance().getSession(); @SuppressWarnings("unchecked") List<DicTableBean> result = session.createQuery(hql).setInteger("dtype", type.getIntValue()).list(); //$NON-NLS-1$ for (DicTableBean item : result) { if (item.isInactive() != true) { dicNames.add(new DicName(item.getDicId(), item.getDicName(), item.isInactive())); } } return dicNames.toArray(new IDicName[dicNames.size()]); } catch (HibernateException e) { return new IDicName[0]; } } }