public Collection<Servicio> obtenerServiciosUsuario(Integer idusuario) throws DAOException {
    log.info("obtenerServiciosUsuario(" + idusuario + ")");
    Connection cons = null;
    PreparedStatement stmt = null;
    PreparedStatement stmt2 = null;
    ResultSet result = null;
    Collection<Servicio> servicios = new ArrayList<Servicio>();
    Servicio servicio = null;
    try {
      String query =
          "SELECT cvus.idservicio,cvus.columna,cvus.posicion,cvus.estado,cvus.visible,"
              + "cvsm.nombre,cvsm.permiso_minimizar,cvsm.permiso_eliminar "
              + "FROM cv_servicio_maestro cvsm, cv_servicio_usuario cvus "
              + "WHERE cvsm.idservicio=cvus.idservicio AND cvsm.estado='1' AND cvus.estado='1' "
              + "AND cvus.idusuario=? "
              + "ORDER BY cvus.columna,cvus.posicion";
      cons = dataSource.getConnection();
      stmt = cons.prepareStatement(query);
      stmt.setInt(1, idusuario);
      result = stmt.executeQuery();

      if (!result.isBeforeFirst()) {
        query =
            "INSERT INTO cv_servicio_usuario(idusuario,idservicio,columna,posicion,visible,estado) "
                + "SELECT ?,idservicio,columna,posicion,1,estado "
                + "FROM cv_servicio_maestro;";
        stmt2 = cons.prepareStatement(query);
        stmt2.setInt(1, idusuario);
        stmt2.executeUpdate();
        result = stmt.executeQuery();
      }

      while (result.next()) {
        servicio = new Servicio();
        servicio.setId(result.getString("idservicio"));
        servicio.setNombre(result.getString("nombre"));
        servicio.setColumna(result.getInt("columna"));
        servicio.setPosicion(result.getInt("posicion"));
        servicio.setEstado(result.getInt("estado"));
        servicio.setVisible(result.getInt("visible"));
        servicio.setPermisoMinimizar(result.getInt("permiso_minimizar"));
        servicio.setPermisoEliminar(result.getInt("permiso_eliminar"));

        servicios.add(servicio);
      }

    } catch (SQLException e) {
      throw new DAOException(e.toString());
    } catch (Exception e) {
      throw new DAOException(e.toString());
    } finally {
      closeResultSet(result);
      closeStatement(stmt2);
      closeStatement(stmt);
      closeConnection(cons);
    }
    return servicios;
  }
 public Collection<Servicio> obtenerServiciosGestionar() throws DAOException {
   log.info("obtenerServiciosGestionar()");
   Connection cons = null;
   PreparedStatement stmt = null;
   ResultSet result = null;
   Collection<Servicio> servicios = new ArrayList<Servicio>();
   Servicio servicio = null;
   try {
     String query =
         "SELECT idservicio,nombre,columna,posicion,permiso_minimizar,permiso_eliminar,estado "
             + "FROM cv_servicio_maestro ORDER BY columna,posicion";
     cons = dataSource.getConnection();
     stmt = cons.prepareStatement(query);
     result = stmt.executeQuery();
     while (result.next()) {
       servicio = new Servicio();
       servicio.setId(result.getString("idservicio"));
       servicio.setNombre(result.getString("nombre"));
       servicio.setColumna(result.getInt("columna"));
       servicio.setPosicion(result.getInt("posicion"));
       servicio.setPermisoMinimizar(result.getInt("permiso_minimizar"));
       servicio.setPermisoEliminar(result.getInt("permiso_eliminar"));
       servicio.setEstado(result.getInt("estado"));
       servicios.add(servicio);
     }
   } catch (SQLException e) {
     throw new DAOException(e.toString());
   } catch (Exception e) {
     throw new DAOException(e.toString());
   } finally {
     closeResultSet(result);
     closeStatement(stmt);
     closeConnection(cons);
   }
   return servicios;
 }
  public void grabarPortal(Integer idusuario, Collection<Servicio> servicios) throws DAOException {
    log.info("grabarPortal(" + idusuario + ", " + servicios + ")");
    Connection cons = null;
    PreparedStatement stmt = null;
    try {
      String query =
          "update cv_servicio_usuario set columna=?, posicion=? where idusuario=? and idservicio=?";
      cons = dataSource.getConnection();
      cons.setAutoCommit(false);
      stmt = cons.prepareStatement(query);
      stmt.setInt(3, idusuario);

      for (Servicio servicio : servicios) {
        stmt.setInt(1, servicio.getColumna());
        stmt.setInt(2, servicio.getPosicion());
        stmt.setString(4, servicio.getId());
        if (stmt.executeUpdate() != 1) {
          throw new DAOException(
              "No se pudo actualizar: " + servicio.getId() + "-" + servicio.getPosicion());
        }
      }
      cons.commit();
    } catch (SQLException e) {
      log.error(e);
      throw new DAOException(e.toString());
    } catch (Exception e) {
      log.error(e);
      throw new DAOException(e.toString());
    } finally {
      try {
        cons.rollback();
      } catch (SQLException e) {
      }
      closeStatement(stmt);
      closeConnection(cons);
    }
  }