Package com.appspot.finajjarane.framework.service.impl

Source Code of com.appspot.finajjarane.framework.service.impl.ArticleServiceImpl

/**
* @author Fayçal INAJJARANE
*/
package com.appspot.finajjarane.framework.service.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.appspot.finajjarane.framework.dao.IArticleDao;
import com.appspot.finajjarane.framework.entities.Article;
import com.appspot.finajjarane.framework.generic.ApplicationConstants;
import com.appspot.finajjarane.framework.generic.Utils;
import com.appspot.finajjarane.framework.models.ArticleModel;
import com.appspot.finajjarane.framework.service.IArticleService;
import com.google.appengine.api.datastore.Category;
import com.google.appengine.api.datastore.Text;

@Service
public class ArticleServiceImpl implements IArticleService {

  @Autowired
  IArticleDao articleDao;

  @Override
  public boolean articleCreateNew(ArticleModel articleModel) throws Exception {

    Article article = ArticleModelToArticle(articleModel);
    return articleDao.add(article);

  }

  @Override
  public boolean articleUpdate(ArticleModel articleModel) throws Exception {
    Article article = ArticleModelToArticle(articleModel);
    try {
      articleDao.merge(article);
      return true;
    } catch (Exception e) {
      return false;
    }

  }

  @Override
  public boolean articleRemove(Long articleId) throws Exception {
    return this.articleDao.removeByKey(articleId);
  }

  @Override
  public List<ArticleModel> getArticlesList(final int page, final int maxPerPage, final String langthrows Exception{

    List<ArticleModel> articlesToReturn = new ArrayList<ArticleModel>();
    List<Article> articles = this.articleDao.getLimitedList(page, maxPerPage, lang, "publishedDate", "DESC");

    if(null==articles){
      return articlesToReturn;
    }

    for(Article article : articles){
      String articleBody = article.getBody().getValue();
      if(articleBody.length()>100){
        article.setBody(new Text(articleBody.substring(0, ApplicationConstants.NBR_CHARS_SHORT_ARTICLE) + "..."));
      }
      articlesToReturn.add(ArticleToArticleModel(article));
    }
    return articlesToReturn;
  }

  @Override
  public ArticleModel getArticle(Long idthrows Exception{

    Article article = this.articleDao.findByKey(id);
    return ArticleToArticleModel(article);

  }

  @Override
  public List<ArticleModel> getArticlesAll()  throws Exception{
    List<Article> articles = this.articleDao.findAll();
    List<ArticleModel> articleModels = new ArrayList<ArticleModel>();

    for(Article article : articles){
      articleModels.add(ArticleToArticleModel(article));
    }

    return articleModels;
  }



  //###################### UTILITY METHODS #######################

  /**
   * Utility method to convert Article to ArticleModel
   * @param article
   * @return ArticleModel
   */
  private ArticleModel ArticleToArticleModel(Article article){

    ArticleModel articleModel = new ArticleModel();
    List<String> tagsModels = new ArrayList<String>();

    for(Category tag : article.getTags()){
      tagsModels.add(tag.getCategory());
    }

    articleModel.setId(article.getId());
    articleModel.setTitle(article.getTitle());
    articleModel.setBody(article.getBody().getValue());
    articleModel.setTags(tagsModels);
    articleModel.setLang(article.getLang());
    articleModel.setImageSmall(article.getImageSmall());
    articleModel.setImageCarousel(article.getImageCarousel());
    articleModel.setPublishedDate(Utils.dateToDateDetailsModel(article.getPublishedDate(),article.getLang()));

    return articleModel;

  }


  /**
   * Utility method to convert ArticleModel to Article
   * @param articleModel
   * @return Article
   */
  private Article ArticleModelToArticle(ArticleModel articleModel){

    Article article = new Article();
    List<Category> tags = new ArrayList<Category>();


    for(String tagModel : articleModel.getTags()){
      if(null==tagModel || tagModel.isEmpty()){
        continue;
      }
      tags.add(new Category(tagModel));
    }

    article.setId(articleModel.getId());
    article.setTitle(articleModel.getTitle());
    article.setTags(tags);
    article.setBody(new Text(articleModel.getBody()));
    article.setLang(articleModel.getLang());
    article.setPublishedDate(new Date());
    article.setImageSmall(articleModel.getImageSmall());
    article.setImageCarousel(articleModel.getImageCarousel());


    return article;

  }

  @Override
  public int getArticlesCount(final String langthrows Exception{
    return this.articleDao.getEntriesCount("id",lang);
  }

}
TOP

Related Classes of com.appspot.finajjarane.framework.service.impl.ArticleServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.