package com.java214.fenxiao.action;
import com.java214.fenxiao.entities.Article;
import com.java214.fenxiao.entities.ArticleCate;
import com.java214.fenxiao.entities.Config;
import com.java214.fenxiao.service.IArticleCateService;
import com.java214.fenxiao.service.IArticleService;
import com.java214.fenxiao.service.IConfigService;
import com.java214.fenxiao.utils.BjuiJson;
import com.java214.fenxiao.utils.BjuiPage;
import com.java214.fenxiao.utils.FreemarkerUtils;
import com.java214.fenxiao.utils.PageModel;
import freemarker.template.Configuration;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONException;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
@Controller("articleAction")
@Scope("prototype")
public class ArticleAction extends BaseAction
{
  private static final long serialVersionUID = 1L;
  @Resource(name="articleService")
  private IArticleService<Article> articleService;
  @Resource(name="articleCateService")
  private IArticleCateService<ArticleCate> articleCateService;
  @Resource(name="configService")
  private IConfigService<Config> configService;
  private Article article;
  public void list()
  {
    String key = this.request.getParameter("key");
    int count = 0;
    if (("".equals(key)) || (key == null)) {
      count = this.articleService.getTotalCount("select count(*) from Article where deleted=0", new Object[0]);
      key = "";
    } else {
      count = this.articleService.getTotalCount("from Article where title like '%" + key + "%' and deleted=0", new Object[0]);
    }
    this.page = new BjuiPage(this.pageCurrent, this.pageSize);
    this.page.setTotalCount(count);
    List list = this.articleService.list("from Article where deleted=0 order by id desc", this.page.getStart(), this.page.getPageSize(), new Object[0]);
    this.cfg = new Configuration();
    this.cfg.setServletContextForTemplateLoading(this.request.getServletContext(), 
      "WEB-INF/templates/admin");
    Map root = new HashMap();
    root.put("list", list);
    root.put("page", this.page);
    FreemarkerUtils.freemarker(this.request, this.response, "articleList.ftl", this.cfg, root);
  }
  public void add() {
    List<ArticleCate> articleCatelist = this.articleCateService.list("from ArticleCate where deleted=0");
    String zNodes = "";
    for (ArticleCate articleCate : articleCatelist) {
      zNodes = zNodes + "<li data-id='" + articleCate.getId() + "' data-pid='" + articleCate.getFatherId() + "' data-tabid='" + articleCate.getId() + "'>" + articleCate.getName() + "</li>";
    }
    this.cfg = new Configuration();
    this.cfg.setServletContextForTemplateLoading(this.request.getServletContext(), 
      "WEB-INF/templates/admin");
    Map root = new HashMap();
    root.put("zNodes", zNodes);
    FreemarkerUtils.freemarker(this.request, this.response, "articleAdd.ftl", this.cfg, root);
  }
  public void save()
  {
    String callbackData = "";
    try {
      if (this.article.getArticleCate().getId().intValue() == 0) {
        callbackData = BjuiJson.json("300", "请选择栏目", "", "", "", "", "", "");
      } else if ("".equals(this.article.getContent())) {
        callbackData = BjuiJson.json("300", "请输入内容", "", "", "", "", "", "");
      } else {
        this.article.setDeleted(false);
        this.article.setCreateDate(new Date());
        boolean result = this.articleService.saveOrUpdate(this.article);
        if (result)
          callbackData = BjuiJson.json("200", "添加成功", "", "", "", "true", "", "");
        else
          callbackData = BjuiJson.json("300", "添加失败", "", "", "", "", "", "");
      }
    }
    catch (JSONException e) {
      e.printStackTrace();
    } catch (Exception e) {
      e.printStackTrace();
    }
    PrintWriter out = null;
    try {
      out = this.response.getWriter();
    } catch (IOException e) {
      e.printStackTrace();
    }
    out.print(callbackData);
    out.flush();
    out.close();
  }
  public void info()
  {
    String callbackData = "";
    String idStr = this.request.getParameter("id");
    try {
      PrintWriter out = this.response.getWriter();
      if ((idStr == null) || ("".equals(idStr))) {
        callbackData = BjuiJson.json("300", "参数错误", "", "", "", "", "", "");
        out.print(callbackData);
        out.flush();
        out.close();
      } else {
        int id = 0;
        try {
          id = Integer.parseInt(idStr);
        }
        catch (Exception e) {
          callbackData = BjuiJson.json("300", "参数错误", "", "", "", "", "", "");
          out.print(callbackData);
          out.flush();
          out.close();
        }
        Article findArticle = (Article)this.articleService.findById(Article.class, id);
        if (findArticle == null)
        {
          callbackData = BjuiJson.json("300", "文章不存在", "", "", "", "", "", "");
          out.print(callbackData);
          out.flush();
          out.close();
        }
        else {
          List<ArticleCate> articleCatelist = this.articleCateService.list("from ArticleCate where deleted=0");
          String zNodes = "";
          for (ArticleCate articleCate : articleCatelist) {
            zNodes = zNodes + "<li data-id='" + articleCate.getId() + "' data-pid='" + articleCate.getFatherId() + "' data-tabid='" + articleCate.getId() + "'>" + articleCate.getName() + "</li>";
          }
          this.cfg = new Configuration();
          this.cfg.setServletContextForTemplateLoading(this.request.getServletContext(), 
            "WEB-INF/templates/admin");
          Map root = new HashMap();
          root.put("article", findArticle);
          root.put("zNodes", zNodes);
          FreemarkerUtils.freemarker(this.request, this.response, "articleEdit.ftl", this.cfg, root);
        }
      }
    } catch (JSONException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public void update() {
    String callbackData = "";
    try {
      PrintWriter out = this.response.getWriter();
      if (this.article == null) {
        callbackData = BjuiJson.json("300", "参数错误", "", "", "", "", "", "");
      } else {
        Article findArticle = (Article)this.articleService.findById(Article.class, this.article.getId().intValue());
        this.article.setCreateDate(findArticle.getCreateDate());
        this.article.setVersion(findArticle.getVersion());
        this.article.setDeleted(findArticle.isDeleted());
        boolean result = this.articleService.saveOrUpdate(this.article);
        if (result) {
          callbackData = BjuiJson.json("200", "修改成功", "", "", "", "true", "", "");
        }
        else {
          callbackData = BjuiJson.json("300", "修改失败", "", "", "", "", "", "");
        }
      }
      out.print(callbackData);
      out.flush();
      out.close();
    } catch (JSONException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public void delete() {
    String callbackData = "";
    String idStr = this.request.getParameter("id");
    try {
      PrintWriter out = this.response.getWriter();
      if ((idStr == null) || ("".equals(idStr))) {
        callbackData = BjuiJson.json("300", "参数错误", "", "", "", "", "", "");
      } else {
        int id = 0;
        try {
          id = Integer.parseInt(idStr);
        }
        catch (Exception e) {
          callbackData = BjuiJson.json("300", "参数错误", "", "", "", "", "", "");
        }
        Article findArticle = (Article)this.articleService.findById(Article.class, id);
        if (findArticle == null)
        {
          callbackData = BjuiJson.json("300", "文章不存在", "", "", "", "", "", "");
        }
        else try {
            boolean result = this.articleService.delete(findArticle);
            if (result)
              callbackData = BjuiJson.json("200", "删除成功", "", "", "", "", "", "");
            else
              callbackData = BjuiJson.json("300", "删除失败", "", "", "", "", "", "");
          }
          catch (JSONException e) {
            e.printStackTrace();
          }
      }
      out.print(callbackData);
      out.flush();
      out.close();
    } catch (JSONException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public void indexArticleList() {
    String idStr = this.request.getParameter("id");
    String key = this.request.getParameter("key");
    String pStr = this.request.getParameter("p");
    Config config = (Config)this.configService.findById(Config.class, 1);
    int p = 1;
    if ((pStr != null) && (!"".equals(pStr))) {
      p = Integer.parseInt(pStr);
    }
    int count = 0;
    String countHql = "select count(*) from Article where deleted=0 and status=1";
    if ((idStr != null) && (!"".equals(idStr))) {
      countHql = countHql + " and articleCate.id=" + idStr;
    }
    if ((key != null) && (!"".equals(key))) {
      try {
        key = new String(key.getBytes("ISO-8859-1"), "utf-8");
      } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
      }
      countHql = countHql + " and title like '%" + key + "%'";
    }
    count = this.articleService.getTotalCount(countHql, new Object[0]);
    PageModel pageModel = new PageModel();
    pageModel.setAllCount(count);
    pageModel.setCurrentPage(p);
    List list = null;
    ArticleCate articleCate = null;
    String hql = "from Article where deleted=0 and status=1";
    if ((idStr != null) && (!"".equals(idStr))) {
      hql = hql + " and articleCate.id=" + idStr;
      articleCate = (ArticleCate)this.articleCateService.findById(ArticleCate.class, Integer.parseInt(idStr));
    }
    if ((key != null) && (!"".equals(key))) {
      hql = hql + " and title like '%" + key + "%'";
    }
    hql = hql + " order by id desc";
    list = this.articleService.list(hql, pageModel.getStart(), pageModel.getPageSize(), new Object[0]);
    this.cfg = new Configuration();
    this.cfg.setServletContextForTemplateLoading(this.request.getServletContext(), 
      "WEB-INF/templates/index");
    Map root = new HashMap();
    root.put("articleList", list);
    root.put("articleCate", articleCate);
    root.put("page", pageModel.getPageStr("list.do?id=" + idStr + "&p="));
    root.put("config", config);
    FreemarkerUtils.freemarker(this.request, this.response, this.ftlFileName, this.cfg, root);
  }
  public void indexArticle() {
    String callbackData = "";
    String idStr = this.request.getParameter("id");
    PrintWriter out = null;
    try {
      out = this.response.getWriter();
    } catch (IOException e1) {
      e1.printStackTrace();
    }
    if ((idStr == null) || ("".equals(idStr))) {
      callbackData = "参数错误";
      out.print(callbackData);
      out.flush();
      out.close();
    } else {
      int id = 0;
      try {
        id = Integer.parseInt(idStr);
      }
      catch (Exception e) {
        callbackData = "参数错误";
        out.print(callbackData);
        out.flush();
        out.close();
      }
      Article findArticle = (Article)this.articleService.findById(Article.class, id);
      if (findArticle == null)
      {
        callbackData = "文章不存在";
        out.print(callbackData);
        out.flush();
        out.close();
      } else {
        Config config = (Config)this.configService.findById(Config.class, 1);
        this.cfg = new Configuration();
        this.cfg.setServletContextForTemplateLoading(this.request.getServletContext(), 
          "WEB-INF/templates/index");
        Map root = new HashMap();
        root.put("article", findArticle);
        root.put("config", config);
        FreemarkerUtils.freemarker(this.request, this.response, this.ftlFileName, this.cfg, root);
      }
    }
  }
  public Article getArticle() {
    return this.article;
  }
  public void setArticle(Article article) {
    this.article = article;
  }
}
/* Location:           D:\360安全浏览器下载\WeFenxiao_A5\WeFenxiao_V1.0.1\WEB-INF\classes\
 * Qualified Name:     com.java214.fenxiao.action.ArticleAction
 * JD-Core Version:    0.6.0
 */