PlanoClassificacaoController.java 6.63 KB
package br.com.centralit.controller;

import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
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.PlanoClassificacao;
import br.com.centralit.api.service.PlanoClassificacaoService;
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 22/10/2015 - 10:07:13
 * 
 * @version 1.0.0
 * 
 * @author rogerio.costa
 * 
 */
@Controller
@RequestMapping("/rest/planoClassificacao")
public class PlanoClassificacaoController extends GenericController<PlanoClassificacao> {

	/** Atributo planoClassificacaoService. */
	private PlanoClassificacaoService planoClassificacaoService;

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

		super(planoClassificacaoService);

		this.planoClassificacaoService = planoClassificacaoService;
	}

	/**
	 * <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 listar a entidade<code>PlanoClassificacao</code> que não contem parent, ou sejá o primeiro nó da arvore
	 * 
	 * @author rogerio.costa
	 * 
	 * @param idOrganizacao
	 * 
	 * @return Collection<PlanoClassificacao>
	 */
	@RequestMapping(value = "/findParent", method = RequestMethod.GET, produces = "application/json")
	@ResponseBody
	public ResponseBodyWrapper findParent(@RequestParam(value = "idOrganizacao") Long idOrganizacao) {

		ResultResponseVH<Collection<PlanoClassificacao>> resultResponseVH = new ResultResponseVH<Collection<PlanoClassificacao>>(this.planoClassificacaoService.findParent(idOrganizacao));

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, ViewsEcm.PlanoClassificacaoParent.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 listar a entidade<code>PlanoClassificacao</code> que não contem parent, ou sejá o primeiro nó da arvore
	 * 
	 * @author rogerio.costa
	 * 
	 * @param idOrganizacao
	 * 
	 * @return Collection<PlanoClassificacao>
	 */
	@RequestMapping(value = "/findChildrens", method = RequestMethod.GET, produces = "application/json")
	@ResponseBody
	public ResponseBodyWrapper findChildrens(@RequestParam(value = "idPlanoClassificacao") Long idPlanoClassificacao) {

		ResultResponseVH<Collection<PlanoClassificacao>> resultResponseVH = new ResultResponseVH<Collection<PlanoClassificacao>>(this.planoClassificacaoService.findChildrens(idPlanoClassificacao));

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, ViewsEcm.PlanoClassificacaoParent.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 listar recursivo
	 * 
	 * @author rogerio.costa
	 * 
	 * @param nome
	 * @return
	 */
	@RequestMapping(value = "/findTree", method = RequestMethod.GET, produces = "application/json")
	@ResponseBody
	public ResponseBodyWrapper findTree(@RequestParam(value = "nome") String nome) {

		ResultResponseVH<Collection<PlanoClassificacao>> resultResponseVH = new ResultResponseVH<Collection<PlanoClassificacao>>(this.planoClassificacaoService.findTree(nome));

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, ViewsEcm.PlanoClassificacaoAutocompleteRecursive.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 listar ultimo nivel ou que possua a opção "permitirUsarComoClassificacao"
	 * 
	 * @author rogerio.costa
	 * 
	 * @param codigoNome
	 * 
	 * @return Collection<PlanoClassificacao>
	 */
	@RequestMapping(value = "/findAssuntoAutoComplete", method = RequestMethod.GET, produces = "application/json")
	@ResponseBody
	public ResponseBodyWrapper findAssuntoAutoComplete(@RequestParam(value = "codigoNome") String codigoNome) {

		ResultResponseVH<Collection<PlanoClassificacao>> resultResponseVH = new ResultResponseVH<Collection<PlanoClassificacao>>(this.planoClassificacaoService.findAssuntoAutoComplete(codigoNome));

		ResponseBodyWrapper responseBody = new ResponseBodyWrapper(resultResponseVH, ViewsEcm.PlanoCLassificacaoAutoComplete.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 rogerio.costa
	 * 
	 * @param pessoaVH
	 * @return
	 * @throws Exception
	 */
	@RequestMapping(method = RequestMethod.POST, produces = "application/json", value = "/atualizarTemporalidadeDestinacao")
	@ResponseBody
	public void atualizarTemporalidadeDestinacao() throws Exception {

		this.planoClassificacaoService.atualizarTemporalidadeDestinacao();

	}

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

		return ViewsEcm.PlanoClassificacaoListView.class;
	}

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

		return ViewsEcm.PlanoClassificacaoEditView.class;
	}

	@Override
	public Class<ViewsEcm.PlanoCLassificacaoAutoComplete> getAutoCompleteView() {

		return ViewsEcm.PlanoCLassificacaoAutoComplete.class;
	}
}