entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Creación de categorias hijas

Buenas tardes... Estoy creando directorios o categorias pero necesito ayuda no soy tan experto en java web jsp, puedo crear directorios estaticos pero necesito crear direcorios dinamicos que tan solo el usuario seleccione el nombre de la carpeta padre y se cree.. muchisimas gracias..

3votos

Javi2EE comentado

No entiendo muy bien tu pregunta, te refieres a crear carpetas desde java o a crear un árbol de categorías que se guarde en la base de datos? aparte añade algo de código que tengas ya hecho

1voto

Alex_Numpaque comentado

Es crear un arbol de categorias que exista tanto en la base de datos como en un servidor ubuntu

Mi servlet por post

@Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

            beanCategoria categoria = new beanCategoria();
            String nombreC = request.getParameter("txtNombreCat");
            categoria.setNcategoria(nombreC);
            categoria.setDescripcion(request.getParameter("txtDescripcion"));
            categoria.setIdcategoria_padre(Integer.parseInt(request.getParameter("txtCategoriaPadre")));

            dao.crearCategoria(categoria);
            crearF(nombreC);
            RequestDispatcher view  = request.getRequestDispatcher(INSERTAR);
            view.forward(request, response);
    }

    public void crearF(String nombreD){
        File folder = new File("/home/serverdocumentacion/SISTEMA/" +nombreD);
        folder.mkdir();

    }

mi formulario

<%@page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.util.List"%>
<%@page import="com.ccs.clases.beanCategoria" %>
<%@page import="com.ccs.dao.CategoriasDaoImplementacion" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Registro de Categorias</title>
    </head>
    <body>
        <form method="post" action="ControlRegistroCategoria">
            <table>
                <tr>
                    <td><label>Nombre de Categoria</label></td>
                    <td><input type="text" name="txtNombreCat" placeholder="Nombre de Categoria"></td>
                </tr>
                <tr>
                    <td><label>Descripcion</label></td>
                    <td><input type="text" name="txtDescripcion" placeholder="Descripcion"></td>
                </tr>                
                <tr>
                    <td><label>Categoria Padre</label></td>
                    <td>
                        <select>
                            <c:forEach items="${categorias}" var="categoria">
                                <option id="<c:out value="${categoria.idcategoria}">" value="<c:out value="${categoria.idcategoria}">"><c:out value="${categoria.ncategoria}"></option>
                            </c:forEach>
                        </select>
                    </td>
                </tr>
                <tr>
                    <td><label>Ruta</label></td>
                    <td><input type="text" name="txtRuta" readonly="readonly" placeholder="Ruta"></td>
                </tr>
            </table>
            <input type="submit" value="Guardar">
        </form>    
    </body>
</html>

mi bean

public class beanCategoria {

    int idcategoria;
    int idcategoria_padre;
    String ncategoria;
    String descripcion;
    int idusuario;
    String ruta;

    public beanCategoria() {
    }

    public beanCategoria(int idcategoria, int idcategoria_padre, String ncategoria, String descripcion, int idusuario, String ruta) {
        this.idcategoria = idcategoria;
        this.idcategoria_padre = idcategoria_padre;
        this.ncategoria = ncategoria;
        this.descripcion = descripcion;
        this.idusuario = idusuario;
        this.ruta = ruta;
    }

    public int getIdcategoria() {
        return idcategoria;
    }

    public void setIdcategoria(int idcategoria) {
        this.idcategoria = idcategoria;
    }

    public int getIdcategoria_padre() {
        return idcategoria_padre;
    }

    public void setIdcategoria_padre(int idcategoria_padre) {
        this.idcategoria_padre = idcategoria_padre;
    }

    public String getNcategoria() {
        return ncategoria;
    }

    public void setNcategoria(String ncategoria) {
        this.ncategoria = ncategoria;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public int getIdusuario() {
        return idusuario;
    }

    public void setIdusuario(int idusuario) {
        this.idusuario = idusuario;
    }

    public String getRuta() {
        return ruta;
    }

    public void setRuta(String ruta) {
        this.ruta = ruta;
    }

    @Override
    public String toString(){
        return "beanCategoria [idcategoria = "+ idcategoria + ", idcategoria_padre=" 
                + idcategoria_padre + ", ncategoria = " + ncategoria 
                + ", descripcion = " + descripcion + ", idUsuario = + "+ idusuario +", ruta = "+ruta+"]";
    }
}

y mi procesos en el dao

@Override
    public void crearCategoria(beanCategoria categoria) {
        String sql = "insert into categoria (idCategoria_padre,ncategoria,descripcion,ruta) values (?,?,?,?)";

        try {
            PreparedStatement preparedStatement = conn.prepareStatement(sql);
            preparedStatement.setInt(1, categoria.getIdcategoria_padre());
            preparedStatement.setString(2, categoria.getNcategoria());
            preparedStatement.setString(3, categoria.getDescripcion());
            preparedStatement.setString(4, categoria.getRuta());
            preparedStatement.executeUpdate();
            preparedStatement.close();
        } catch (SQLException e) {
            Logger.getLogger(CategoriasDaoImplementacion.class.getName()).log(Level.SEVERE, e.getMessage());
        }
    }

1voto

bl4z3r comentado

@Jhon_Numpaque ¿quieres hacer espejado en la base de datos de los directorios que manejas o indexar los directorio y, luego, meterlo en la base de datos? Sigue sin ser claro lo que quieres hacer y, ademas, pegaste el código sin formatear. Te recomiendo que te tomes tu tiempo para formular y formatear la pregunta, incluyendo todo las cosas que vos piensas que son necesarias para que nosotros podamos ayudarte.

0voto

Alex_Numpaque comentado

@bl4z3r lo que necesito es crear los datos de la carpeta en la base de datos y luego esta misma se cree en el servidor.. Me disculpo por no ser claro..

0voto

Alex_Numpaque comentado

@Javi2EE y @bl4z3r mi intencion es cuando se cree una categoria, en el servidor se cree una carpeta indicando la existencia de aquella categoria practicamente en un arbol de categorias, ya que estoy haciendo un sistema de gestion documental.. Muchisimas gracias por sus intervenciones..

1 Respuesta

3votos

Javi2EE Puntos6630

Buenas, mas o menos lo tienes bien planteado lo unico es que si quieres que la jerarquia de carpetas en el servidor refleje correctamente la realidad tienes que ser mas consciente del manejo de rutas a la hora de crear la carpeta, me refiero a que cuando has recibido los parametros en los cuales te viene la id de la categoría padre, tienes que traer de la base de datos la url de esa categoria.

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
     beanCategoria categoria = new beanCategoria();
     String nombreC = request.getParameter("txtNombreCat");
     categoria.setNcategoria(nombreC);
     categoria.setDescripcion(request.getParameter("txtDescripcion"));
    categoria.setIdcategoria_padre(Integer.parseInt(request.getParameter("txtCategoriaPadre")));

//tienes que añadir esto
beanCategoria categoriaPadre = dao.find(categoria.getIdcategoria_padre());
    categoria.setRuta(categoriaPadre.getRuta()+"/"+categoria.getNcategoria());
        try{
           crearF(categoria);
}catch(IOException ex){
//aqui controlamos la excepcion para decidir que hacer
}
// aqui lo suyo es crear primero la carpeta en el servidor, ya que puede lanzar IOexception, en ese caso no se debe guardar en la base de datos
dao.crearCategoria(categoria);
        RequestDispatcher view  = request.getRequestDispatcher(INSERTAR);
        view.forward(request, response);
}

public void crearF(beanCategoria categoria){ 
    File folder = new File(categoria.getRuta());
    folder.mkdir();

}

Para que este sistema valla bien se supone que tienes que tener creada una categoría base principal que tiene como ruta la carpeta de tu servidor desde donde quieras que se cree el resto del árbol.

Ten en cuenta que una vez creado el objeto File podemos invocar dos metodos:

mkdir(), que crea solo el utlimo directorio y asume que la ruta existe.
mkdirs(), creara todos los directorios necesarios para la ruta que le pasemos.

Espero que eso te ayude, si te da algun error añade la traza del error a tu pregunta.
Un saludo

0voto

Alex_Numpaque comentado

muchisisimas gracias @Javi2EE

0voto

Javi2EE comentado

De nada Jhon, si es la solución no olvides marcarla, además intenta no publicar como respuestas nada que no lo sea, utiliza para este tipo de cosas los comentarios.
Un saludo

0voto

Alex_Numpaque comentado

@Javi2EE el metodo find() es la consulta de la categoria padre??..

1voto

Javi2EE comentado

si ese método recibe como parámetro la id, realiza la consulta en la base de datos y devuelve la categoría que corresponde

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta