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..

Javi2EE comentado Abril 20, 2016

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

Alex_Numpaque comentado Abril 20, 2016

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

<[email protected] language="java" contentType="text/html" pageEncoding="UTF-8"%>
<[email protected] import="java.util.List"%>
<[email protected] import="com.ccs.clases.beanCategoria" %>
<[email protected] import="com.ccs.dao.CategoriasDaoImplementacion" %>
<[email protected] 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());
        }
    }

bl4z3r comentado Abril 20, 2016

@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.

Alex_Numpaque comentado Abril 20, 2016

@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..

Alex_Numpaque comentado Abril 20, 2016

@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 Puntos6410

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

Alex_Numpaque comentado Abril 20, 2016

muchisisimas gracias @Javi2EE

Javi2EE comentado Abril 20, 2016

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

Alex_Numpaque comentado Abril 20, 2016

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

Javi2EE comentado Abril 20, 2016

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 ingresa o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

  • leog.1992 ganó una medalla hace 19 horas

    Renovador - Received Buena Respuesta badge in resp…
  • leog.1992 ganó una medalla hace 19 horas

    Medallista - Received total of 10 badges
  • leog.1992 ganó una medalla hace 19 horas

    Buena Respuesta - Recibido +1 votos en respuesta
  • sagrario ganó una medalla hace 19 horas

    Buena Pregunta - Recibido +1 votos en pregunta
  • leog.1992 respondió hace 1 día

    ticket en java con mysql
  • leog.1992 ganó una medalla hace 1 día

    Antepasado - Primera visita hace más de 365 días
  • leog.1992 ganó una medalla hace 1 día

    Veterano - Primera visita hace más de 180 días
  • Leonardo-Tadei ganó una medalla hace 1 día

    Buena Respuesta - Recibido +1 votos en respuesta
  • nico140 ganó una medalla hace 3 días

    Buena Pregunta - Recibido +1 votos en pregunta

¿Eres Usuario Apple?

...

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

Conecta