@Override
  public BaseEntity restore(final BaseEntity model) throws ServiceException, LogicException {
    CatalogoServicoDTO catalogoServicoDto = null;
    final CatalogoServicoDao dao = this.getDao();
    try {
      catalogoServicoDto = (CatalogoServicoDTO) dao.restore(model);
      final ServContratoCatalogoServDTO servContratoCatalogoServDTO =
          new ServContratoCatalogoServDTO();
      // SERVCONTRATOCATALOGOSERVICO
      servContratoCatalogoServDTO.setIdCatalogoServico(catalogoServicoDto.getIdCatalogoServico());
      catalogoServicoDto.setColServicoContrato(
          new ArrayList(
              this.getServContratoCatalogoServDao().findByIdCatalogo(servContratoCatalogoServDTO)));

      final InfoCatalogoServicoDTO infoCatalogoServicoDTO = new InfoCatalogoServicoDTO();
      infoCatalogoServicoDTO.setIdCatalogoServico(catalogoServicoDto.getIdCatalogoServico());
      catalogoServicoDto.setColInfoCatalogoServico(
          new ArrayList(
              this.getInfoCatalogoServicoDao().findByIdInfoCatalogo(infoCatalogoServicoDTO)));
    } catch (final Exception e) {
      e.printStackTrace();
      throw new ServiceException(e);
    }
    return catalogoServicoDto;
  }
  @Override
  public void update(final BaseEntity model) throws ServiceException, LogicException {
    final CatalogoServicoDTO catalogoServicoDto = (CatalogoServicoDTO) model;
    final CatalogoServicoDao catalogoServicodao = this.getDao();

    final ServContratoCatalogoServDao servContratoCatalogoServDao =
        new ServContratoCatalogoServDao();
    final InfoCatalogoServicoDao infoCatalogoServicoDao = new InfoCatalogoServicoDao();

    final TransactionControler tc = new TransactionControlerImpl(catalogoServicodao.getAliasDB());

    try {
      this.validaCreate(model);
      catalogoServicodao.setTransactionControler(tc);
      infoCatalogoServicoDao.setTransactionControler(tc);
      servContratoCatalogoServDao.setTransactionControler(tc);

      tc.start();

      catalogoServicodao.update(catalogoServicoDto);
      servContratoCatalogoServDao.deleteByIdServContratoCatalogo(catalogoServicoDto);
      if (catalogoServicoDto.getColServicoContrato() != null
          && !catalogoServicoDto.getColServicoContrato().isEmpty()) {
        ServContratoCatalogoServDTO item = null;
        // varre a lista de serviços
        for (int i = 0; i < catalogoServicoDto.getColServicoContrato().size(); i++) {
          item = catalogoServicoDto.getColServicoContrato().get(i);
          item.setIdCatalogoServico(catalogoServicoDto.getIdCatalogoServico());
          // grava cada item da lista
          servContratoCatalogoServDao.create(item);
        }
      }

      infoCatalogoServicoDao.deleteByIdInfoCatalogo(catalogoServicoDto);
      if (catalogoServicoDto.getColInfoCatalogoServico() != null
          && !catalogoServicoDto.getColInfoCatalogoServico().isEmpty()) {

        InfoCatalogoServicoDTO item = null;
        // varre a lista de serviços
        for (int i = 0; i < catalogoServicoDto.getColInfoCatalogoServico().size(); i++) {
          item = catalogoServicoDto.getColInfoCatalogoServico().get(i);
          item.setIdCatalogoServico(catalogoServicoDto.getIdCatalogoServico());
          // grava cada item da lista
          infoCatalogoServicoDao.create(item);
        }
      }

      tc.commit();

    } catch (final Exception e) {
      e.printStackTrace();
      this.rollbackTransaction(tc, e);
    } finally {
      try {
        tc.close();
      } catch (final Exception e) {
        e.printStackTrace();
      }
    }
  }