com.inkubator.sms.gateway.dao.impl.ModemDefinitionDaoImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.inkubator.sms.gateway.dao.impl.ModemDefinitionDaoImpl.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.inkubator.sms.gateway.dao.impl;

import com.inkubator.datacore.dao.impl.IDAOImpl;
import com.inkubator.sms.gateway.dao.ModemDefinitionDao;
import com.inkubator.sms.gateway.entity.ModemDefinition;
import java.util.List;
import org.apache.lucene.search.Query;
import org.hibernate.Criteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.hibernate.search.FullTextQuery;
import org.hibernate.search.FullTextSession;
import org.hibernate.search.Search;
import org.hibernate.search.SearchFactory;
import org.hibernate.search.query.dsl.QueryBuilder;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Repository;

/**
 *
 * @author Deni Husni FR
 */
@Repository(value = "modemDefinitionDao")
@Lazy
public class ModemDefinitionDaoImpl extends IDAOImpl<ModemDefinition> implements ModemDefinitionDao {

    @Override
    public Class<ModemDefinition> getEntityClass() {
        return ModemDefinition.class;
    }

    @Override
    public Long getTotalByModemId(String modemId) {
        Criteria criteria = getCurrentSession().createCriteria(getEntityClass());
        criteria.add(Restrictions.eq("modemId", modemId));
        return (Long) criteria.setProjection(Projections.rowCount()).uniqueResult();
    }

    @Override
    public long getTotalByModemIdAndNotId(String modemId, Long id) {
        Criteria criteria = getCurrentSession().createCriteria(getEntityClass());
        criteria.add(Restrictions.like("modemId", modemId, MatchMode.ANYWHERE));
        criteria.add(Restrictions.ne("id", id));
        return (Long) criteria.setProjection(Projections.rowCount()).uniqueResult();
    }

    @Override
    public List<ModemDefinition> getAllByFullText(String param) {
        FullTextSession fullTextSession = Search.getFullTextSession(getCurrentSession());
        SearchFactory searchFactory = fullTextSession.getSearchFactory();
        QueryBuilder mythQB = searchFactory.buildQueryBuilder().forEntity(getEntityClass()).get();
        Query luceneQuery;
        if (param != null && !param.equalsIgnoreCase("")) {
            String parameter = param + "*";
            System.out.println(" nilai paramnya " + parameter);
            luceneQuery = mythQB.keyword().onField("model").andField("manufacture").andField("comId")
                    .andField("pinNumber").andField("smscNumber").andField("pricePerSms").andField("modemId")
                    .andField("currentValue").andField("baudRate").matching(parameter).createQuery();
        } else {
            luceneQuery = mythQB.all().createQuery();
        }
        FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery(luceneQuery, getEntityClass());
        return fullTextQuery.list();
    }

    @Override
    public ModemDefinition getByFullText(Long id) {
        FullTextSession fullTextSession = Search.getFullTextSession(getCurrentSession());
        SearchFactory searchFactory = fullTextSession.getSearchFactory();
        QueryBuilder mythQB = searchFactory.buildQueryBuilder().forEntity(getEntityClass()).get();
        Query luceneQuery = mythQB.keyword().onField("id").matching(id).createQuery();
        FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery(luceneQuery, ModemDefinition.class);
        return (ModemDefinition) fullTextQuery.uniqueResult();
    }

}