package br.com.boardnaveia.action;
import java.io.InputStream;
import java.util.List;
import org.apache.commons.io.IOUtils;
import br.com.boardnaveia.action.helper.BaseAction;
import br.com.boardnaveia.constant.CanalNoticia;
import br.com.boardnaveia.constant.IndiceNoticia;
import br.com.boardnaveia.dao.INoticiaDAO;
import br.com.boardnaveia.dao.bean.Noticia;
public class NoticiaAction extends BaseAction {
private static final long serialVersionUID = -18371519294965829L;
private String codigo;
private String titulo;
private String descricao;
private String arquivo;
private String canalNoticia;
private InputStream stream;
private List<CanalNoticia> canais = CanalNoticia.getList();
private INoticiaDAO noticiaDAO;
private IndiceNoticia indice;
public String gravar() throws Exception {
if(validacao())
return INPUT;
InputStream inputStream = IOUtils.toInputStream(getArquivo(), "ISO-8859-1");
Noticia noticia = new Noticia(IOUtils.toByteArray(inputStream));
noticia.setTitulo(getTitulo());
noticia.setDescricao(getDescricao());
noticia.setLogin(getUsuario().getEmail());
noticia.setCanal(CanalNoticia.getCanal(getCanalNoticia()));
noticiaDAO.gravar(noticia);
setCodigo(noticia.getCodigo().toString());
return SUCCESS;
}
public String detalhe(){
Noticia noticia = noticiaDAO.pesquisar(Noticia.class, Long.parseLong(getCodigo()));
setCodigo(noticia.getCodigo().toString());
setTitulo(noticia.getTitulo());
setDescricao(noticia.getDescricao());
return "detalhe";
}
public String arquivo(){
Noticia noticia = noticiaDAO.pesquisar(Noticia.class, Long.parseLong(getCodigo()));
setStream(noticia.getInputStream());
return "arquivo";
}
public String avancar(){
getIndice().aumentar();
Noticia noticia = carregarNoticiaIndice();
setCodigo(noticia.getCodigo().toString());
setTitulo(noticia.getTitulo());
return div();
}
public String retroceder(){
getIndice().diminuir();
Noticia noticia = carregarNoticiaIndice();
setCodigo(noticia.getCodigo().toString());
setTitulo(noticia.getTitulo());
return div();
}
public String carregar(){
if(isEmpty(getCodigo())){
Noticia noticia = carregarNoticiaIndice();
if(noticia != null){
setCodigo(noticia.getCodigo().toString());
setTitulo(noticia.getTitulo());
}
}
return SUCCESS;
}
public String div(){
if(isEmpty(getCodigo())){
indice.aumentar();
Noticia noticia = carregarNoticiaIndice();
if(noticia != null) {
setCodigo(noticia.getCodigo().toString());
setTitulo(noticia.getTitulo());
}
}
return "div";
}
public String formulario(){
return INPUT;
}
private Noticia carregarNoticiaIndice(){
Noticia noticia = noticiaDAO.pesquisarIndice(getIndice().getPosicao());
if(noticia == null && getIndice().getPosicao().compareTo(0) > 0) {
getIndice().zerar();
return carregarNoticiaIndice();
}
return noticia;
}
private boolean validacao() {
clearFieldErrors();
if(isEmpty(getArquivo()))
addFieldError("arquivo", "O arquivo da not�cia � obrigat�rio.");
if(isEmpty(getCanalNoticia()))
addFieldError("canalNoticia", "O canal da not�cia � obrigat�rio.");
if(isEmpty(getTitulo()))
addFieldError("titulo", "O titulo da not�cia � obrigat�rio.");
if(isEmpty(getDescricao()))
addFieldError("descricao", "A descri��o da not�cia � obrigat�ria.");
return hasFieldErrors();
}
public String getCodigo() {
return codigo;
}
public void setCodigo(String codigo) {
this.codigo = codigo;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public String getArquivo() {
return arquivo;
}
public void setArquivo(String arquivo) {
this.arquivo = arquivo;
}
public String getCanalNoticia() {
return canalNoticia;
}
public void setCanalNoticia(String canalNoticia) {
this.canalNoticia = canalNoticia;
}
public InputStream getStream() {
return stream;
}
public void setStream(InputStream stream) {
this.stream = stream;
}
public List<CanalNoticia> getCanais() {
return canais;
}
public void setCanais(List<CanalNoticia> canais) {
this.canais = canais;
}
public INoticiaDAO getNoticiaDAO() {
return noticiaDAO;
}
public void setNoticiaDAO(INoticiaDAO noticiaDAO) {
this.noticiaDAO = noticiaDAO;
}
public IndiceNoticia getIndice() {
return indice;
}
public void setIndice(IndiceNoticia indice) {
this.indice = indice;
}
}