top.sj.dao.impl.ArticlesDaoImpl.java Source code

Java tutorial

Introduction

Here is the source code for top.sj.dao.impl.ArticlesDaoImpl.java

Source

/*
 * Project Name: SJBlog
 * Class Name: ArticlesDaoImpl.java
 * 
 * Copyright  2011-2016 SteveJrong  All Rights Reserved.
 * 
 * Licensed under the SteveJrong
 * 
 * https://www.steve.jrong.top/
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package top.sj.dao.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import top.sj.dao.ArticlesDao;
import top.sj.entity.SjArticles;
import top.sj.tool.CalendarTool;
import top.sj.util.ArchiveArticlesInfoEntity;

/**
 * ?
 * 
 * Create User: SteveJrong
 * Create Date: 2016217 ?3:23:07
 * Modify User: SteveJrong
 * Modify Date: 2016217 ?3:23:07
 * Modify Remark: 
 * 
 * @author SteveJrong
 * @version 1.0
 */
public class ArticlesDaoImpl extends HibernateDaoSupport implements ArticlesDao {

    /**
     * ??5??
     */
    @SuppressWarnings("unchecked")
    @Override
    public List<SjArticles> getArticlesBriefInfoOfTopFive() {
        List<SjArticles> articles = null;
        try {
            articles = super.getHibernateTemplate().executeFind(new HibernateCallback<List<SjArticles>>() {
                public List<SjArticles> doInHibernate(Session session) {
                    return session.createCriteria(SjArticles.class).setCacheable(true).addOrder(Order.desc("AId"))
                            .list().subList(0, 5);
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getMessage());
        }

        return articles;
    }

    /**
     * ????
     */
    @SuppressWarnings("unchecked")
    @Override
    public List<SjArticles> getRecentUpdatesLinkInfo() {
        List<SjArticles> articles = null;
        try {
            articles = super.getHibernateTemplate().executeFind(new HibernateCallback<List<SjArticles>>() {
                public List<SjArticles> doInHibernate(Session session) {
                    return session.createCriteria(SjArticles.class).setCacheable(true).addOrder(Order.desc("AId"))
                            .list().subList(0, 6);
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getMessage());
        }
        return articles;
    }

    /**
     * ????
     */
    @SuppressWarnings("rawtypes")
    @Override
    public List<ArchiveArticlesInfoEntity> getAccordingToDateForArchiveArticleInfo() {
        final List<ArchiveArticlesInfoEntity> archiveArticlesInfoEntities = new ArrayList<ArchiveArticlesInfoEntity>();
        try {
            super.getHibernateTemplate().executeFind(new HibernateCallback() {
                @SuppressWarnings("unchecked")
                public Object doInHibernate(Session session) {
                    List<Object> resultCollection = session.createSQLQuery(
                            "SELECT COUNT(*),DATE_FORMAT(A_CREATEDATE,'%Y-%m') AS a_month FROM sj_articles GROUP BY a_month")
                            .list();

                    for (int i = 0; i < resultCollection.size(); i++) {
                        Object[] item = (Object[]) resultCollection.toArray()[i];
                        archiveArticlesInfoEntities.add(
                                new ArchiveArticlesInfoEntity(new Integer(item[0].toString()), item[1].toString()));
                    }

                    return null;
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getMessage());
        }
        return archiveArticlesInfoEntities;
    }

    /**
     * ????
     */
    @Override
    public SjArticles getArticleDetailByArticleId(final Integer id) {
        SjArticles article = null;
        try {
            article = super.getHibernateTemplate().execute(new HibernateCallback<SjArticles>() {
                public SjArticles doInHibernate(Session session) {
                    return (SjArticles) session.createCriteria(SjArticles.class).setCacheable(true)
                            .add(Restrictions.eq("AId", id)).uniqueResult();
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getMessage());
        }
        return article;
    }

    /**
     * ??
     */
    @Override
    public Integer getAllArticlesOfGetAllCountSplitPage() {
        Integer totalCount = 0;
        try {
            totalCount = super.getHibernateTemplate().execute(new HibernateCallback<Integer>() {
                public Integer doInHibernate(Session session) {
                    return new Integer(session.createCriteria(SjArticles.class).setCacheable(true)
                            .setProjection(Projections.rowCount()).uniqueResult().toString());
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getMessage());
        }
        return totalCount;
    }

    /**
     * ??
     */
    @SuppressWarnings("unchecked")
    @Override
    public List<SjArticles> getAllArticlesSplitPage(final Integer pageIndex, final Integer pageSize) {
        List<SjArticles> articles = null;
        try {
            articles = super.getHibernateTemplate().executeFind(new HibernateCallback<List<SjArticles>>() {
                public List<SjArticles> doInHibernate(Session session) {
                    return session.createCriteria(SjArticles.class).setCacheable(true)
                            .setFirstResult((pageIndex - 1) * pageSize).setMaxResults(pageSize).list();
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getMessage());
        }
        return articles;
    }

    /**
     * ??
     */
    @Override
    public Integer getArticlesAccordingToCreateDateSOfGetAllCountSplitPage(final String datetimePartion) {
        Integer totalCount = 0;

        // ??
        final Date startDate = CalendarTool.getFirstDateTimeFromStringDateResourceAtThisMonth(datetimePartion);

        // ???
        final Date endDate = CalendarTool.getLastDateTimeFromStringDateResourceAtThisMonth(datetimePartion);

        try {
            totalCount = super.getHibernateTemplate().execute(new HibernateCallback<Integer>() {
                public Integer doInHibernate(Session session) {

                    return new Integer(session.createCriteria(SjArticles.class).setCacheable(true)
                            .add(Restrictions.between("ACreatedate", startDate, endDate))
                            .setProjection(Projections.rowCount()).uniqueResult().toString());
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getMessage());
        }
        return totalCount;
    }

    /**
     * ??
     */
    @SuppressWarnings("unchecked")
    @Override
    public List<SjArticles> getArticlesAccordingToCreateDateSplitPage(final Integer pageIndex,
            final Integer pageSize, String datetimePartion) {
        List<SjArticles> articles = null;
        // ??
        final Date startDate = CalendarTool.getFirstDateTimeFromStringDateResourceAtThisMonth(datetimePartion);

        // ???
        final Date endDate = CalendarTool.getLastDateTimeFromStringDateResourceAtThisMonth(datetimePartion);

        try {
            articles = super.getHibernateTemplate().executeFind(new HibernateCallback<List<SjArticles>>() {
                public List<SjArticles> doInHibernate(Session session) {
                    return session.createCriteria(SjArticles.class).setCacheable(true)
                            .add(Restrictions.between("ACreatedate", startDate, endDate))
                            .setFirstResult((pageIndex - 1) * pageSize).setMaxResults(pageSize).list();
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getMessage());
        }

        return articles;
    }

    /**
     * ??
     */
    @Override
    public Integer getArticlesAccordingToArticleTypeSOfGetAllCountSplitPage(final Integer articleType) {
        Integer totalCount = null;
        try {
            totalCount = super.getHibernateTemplate().execute(new HibernateCallback<Integer>() {
                public Integer doInHibernate(Session session) {
                    return new Integer(
                            session.createCriteria(SjArticles.class, "a").createAlias("a.sjArticletypes", "t")
                                    .setCacheable(true).add(Restrictions.eq("t.TId", articleType))
                                    .setProjection(Projections.rowCount()).uniqueResult().toString());
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getMessage());
        }
        return totalCount;
    }

    /**
     * ??
     */
    @SuppressWarnings("unchecked")
    @Override
    public List<SjArticles> getArticlesAccordingToArticleTypeSplitPage(final Integer pageIndex,
            final Integer pageSize, final Integer articleType) {
        List<SjArticles> sjArticles = null;
        try {
            sjArticles = super.getHibernateTemplate().executeFind(new HibernateCallback<List<SjArticles>>() {
                public List<SjArticles> doInHibernate(Session session) {
                    return session.createCriteria(SjArticles.class, "a").createAlias("a.sjArticletypes", "t")
                            .setCacheable(true).add(Restrictions.eq("t.TId", articleType))
                            .setFirstResult((pageIndex - 1) * pageSize).setMaxResults(pageSize).list();
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getMessage());
        }
        return sjArticles;
    }

    /**
     * ???Lucene
     */
    @SuppressWarnings("unchecked")
    @Override
    public List<SjArticles> getArticlesInfoByBuildLuceneIndexes() {
        List<SjArticles> articles = null;
        try {
            articles = super.getHibernateTemplate().executeFind(new HibernateCallback<List<SjArticles>>() {
                public List<SjArticles> doInHibernate(Session session) {
                    return session.createCriteria(SjArticles.class).setCacheable(true).addOrder(Order.desc("AId"))
                            .list();
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println(e.getMessage());
        }

        return articles;
    }
}