DocumentoGedController.java 6.05 KB
package br.com.centralit.controller;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import br.com.centralit.api.framework.json.ViewsEcm;
import br.com.centralit.api.model.DocumentoGed;
import br.com.centralit.api.service.DocumentoGedService;
import br.com.centralit.framework.controller.GenericController;
import br.com.centralit.framework.json.ResponseBodyWrapper;
import br.com.centralit.framework.view.ResultResponseVH;

/**
 * <p>
 * <img src="http://centralit.com.br/images/logo_central.png">
 * </p>
 * 
 * <p>
 * <b>Company: </b> Central IT - Governança Corporativa -
 * </p>
 * 
 * <p>
 * <b>Title: </b>
 * </p>
 * 
 * <p>
 * <b>Description: </b>
 * </p>
 * 
 * <p>
 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
 * </p>
 * 
 * <p>
 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
 * </p>
 * 
 * @since 25/04/2016 - 09:18:05
 * 
 * @version 1.0.0
 * 
 * @author rogerio.costa
 * 
 */
@Controller
@RequestMapping("/rest/documentoGed")
public class DocumentoGedController extends GenericController<DocumentoGed> {

	/** Atributo documentoGedService. */
	private DocumentoGedService documentoGedService;

	/**
	 * Responsável pela criação de novas instâncias desta classe.
	 * 
	 * @param documentoGedService
	 */
	@Autowired
	public DocumentoGedController( DocumentoGedService documentoGedService ) {

		super(documentoGedService);
		this.documentoGedService = documentoGedService;
	}

	/**
	 * 
	 * <p>
	 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
	 * </p>
	 * 
	 * <p>
	 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
	 * </p>
	 * 
	 * Método responsável por
	 * 
	 * @author andre.silva
	 * 
	 * @param idDocumento
	 * @return
	 */
	@RequestMapping(value = "/findByIdDocumentoTodasVersoes", method = RequestMethod.GET, produces = "application/json")
	@ResponseBody
	public ResponseBodyWrapper findByIdDocumentoTodasVersoes(@RequestParam(value = "idDocumento") String idDocumento) {

		ResultResponseVH<Collection<DocumentoGed>> resultResponseVH = new ResultResponseVH<Collection<DocumentoGed>>(this.documentoGedService.findByIdDocumentoTodasVersoes(Long.parseLong(idDocumento)));

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, ViewsEcm.DocumentoGedEdit.class);

		return responseBody;
	}

	/**
	 * 
	 * <p>
	 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
	 * </p>
	 * 
	 * <p>
	 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
	 * </p>
	 * 
	 * Método responsável por
	 * 
	 * @author andre.silva
	 * 
	 * @param idDocumento
	 * @return
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	@RequestMapping(value = "/validaQuantidadeVersoes", method = RequestMethod.GET, produces = "application/json")
	@ResponseBody
	public ResponseBodyWrapper countDocumentos(@RequestParam(value = "idDocumento") String idDocumento) {

		ResultResponseVH resultResponseVH = new ResultResponseVH(this.documentoGedService.validaQuantidadeVersoes(Long.parseLong(idDocumento)));

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, ViewsEcm.DocumentoGedEdit.class);

		return responseBody;
	}

	/**
	 * 
	 * <p>
	 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
	 * </p>
	 * 
	 * <p>
	 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
	 * </p>
	 * 
	 * Método responsável por
	 * 
	 * @author andre.silva
	 * 
	 * @param idDocumento
	 * @return
	 */
	@SuppressWarnings({ "rawtypes", "unchecked" })
	@RequestMapping(value = "/removerDocumento", method = RequestMethod.GET, produces = "application/json")
	@ResponseBody
	public ResponseBodyWrapper removerDocumento(@RequestParam(value = "idDocumento") String idDocumento) {

		ResultResponseVH resultResponseVH = new ResultResponseVH(this.documentoGedService.removerDocumento(Long.parseLong(idDocumento)));

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, ViewsEcm.DocumentoGedEdit.class);

		return responseBody;
	}

	/**
	 * 
	 * <p>
	 * <b>Iniciativa(s):</b> <a href="LINK_PORTAL">NUMERO_INICIATIVA</a>
	 * </p>
	 * 
	 * <p>
	 * <b>Regra(s) de negócio:</b> <a href="LINK_PORTAL">NUMERO_REGRA_DE_NEGOCIO</a>
	 * </p>
	 * 
	 * Método responsável por
	 * 
	 * @author andre.silva
	 * 
	 * @param idProcesso
	 * @return
	 */
	@RequestMapping(value = "/findByProcessoSigilo", method = RequestMethod.GET, produces = "application/json")
	@ResponseBody
	public ResponseBodyWrapper findByProcessoSigilo(@RequestParam(value = "idProcesso") String idProcesso) {

		ResultResponseVH<Collection<DocumentoGed>> resultResponseVH = new ResultResponseVH<Collection<DocumentoGed>>(this.documentoGedService.findByProcessoSigilo(Long.parseLong(idProcesso)));

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, ViewsEcm.DocumentoGedEdit.class);

		return responseBody;
	}

	@Override
	public Class<ViewsEcm.DocumentoGedEdit> getEditView() {

		return ViewsEcm.DocumentoGedEdit.class;
	}

	@Override
	public Class<ViewsEcm.DocumentoGedList> getListView() {

		return ViewsEcm.DocumentoGedList.class;
	}
	
	@RequestMapping(value = "/{id}", method = RequestMethod.GET)
	@ResponseBody
	public ResponseBodyWrapper getObject(@PathVariable("id") Long id) {
		ResultResponseVH<DocumentoGed> resultResponseVH = new ResultResponseVH<DocumentoGed>(genericService.getReference(id));
		List<DocumentoGed> list = new ArrayList<DocumentoGed>();
		list.add(resultResponseVH.getPayload());
		this.documentoGedService.montarTresAssinantesPorDocumento(list);
		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, this.getEditView());
		return responseBody;
	}
}