Vistas de página en total

miércoles, 11 de febrero de 2015

Mostrar las imagenes que almacenamos en la DB con un dataGrid de Primefaces

Primero que nada deberan haber revisado el post de subir imagenes al servidor con primefaces almacenando la ruta en la BD para poder mostrarla, primero que nada me costo trabajo hacer que se muestren las imagenes ya que no las tengo en el proyecto almacenadas sino en el disco duro necesitamos crear el archivo en este caso la imagen con una clase que extienda de HttpServlet para pasarle un parametro que contrenda la ruta de la imagen que queremos mostrar y con esa ruta que cree la imagen para su visualizacion.

En una variable String almacenamos la ruta del archivo mediente un parametro:

String file = request.getParameter("file");

Mediante un BufferedInputStream que crea una matriz indefinida a medida que lee los bytes de flujo de la imagen que se mostrara y mediante el FileInputStream que se encarga de crear el objeto o la imagen en este caso, retomamos lo que trate de decir haremos que se cree la imagen y despues que se obtengan los bytes para luego mostrarlo en el dataGrid que se encarga de cargarlo mediente los byte, recordemos que el file que recibe es del string que obtiene la ruta completa de la imagen y la linea quedaria asi:

 BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));

Esto solo fue para obtener la imagen de la ruta ahora vamos a contener el contenido en este caso el tamaño que se lee en bytes que esta almacenada en la variable "in" de BufferedInputStream, crearemos un arreglo de bytes y le pasamos los bytes de la imagen seleccionada al arreglo mediente el metodo available que devuelve una estimación del número de bytes que se pueden leer de este flujo de entrada sin bloquear por la siguiente invocación de un método para el flujo de entrada. Despues leemos los bytes y cerramos el codigo seria de esta forma:

byte[] bytes = new byte[in.available()];
 in.read(bytes);
 in.close();

Por ultimo escribimos en el Response de HttpServlet para escribirlo o en este caso mostrar la imagen:

 response.getOutputStream().write(bytes);

  El codigo de la clase la muestro a continuacion:

public class DynamicImageServlet extends HttpServlet {


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


        try {


            // Obtenemos la imagen
            String file = request.getParameter("file");
            System.out.println("Ruta-->" + file);
            BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));
            

            // Obtenemos el contenido de la imagen
            byte[] bytes = new byte[in.available()];
            in.read(bytes);
            in.close();
            

            // Escribimos el contenido de la imagen
            response.getOutputStream().write(bytes);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


Y en nuestro xhtml donde vayamos a mostrar las imagenes pondriamos en nuestro dataGrid el valor de donde obtendra la imagen en mi caso es una lista ya que puede haber mas de una imagen en mi BD el metodo para obtener todos las rutas de las imagenes la debemos tener en el ManagedBean declaramos la variable de tipo List del mismo tipo de la Clase donde estan las imagenes almacenadas en la BD:

private List<Imagen> listResource;

y agregamos los getters y setters:

public List<Imagen> getListResource() {
        return listResource;
    }

    public void setListResource(List<Imagen> listResource) {
        this.listResource = listResource;
    }


Y nuestra lista se manda como valor en el DataGrid, en la parte de p:graphicImage se manda el valor de la imagen "images/dynamic/?file" en donde file es el parametro donde creamos la clase que puse anteriormente

<p:dataGrid var="mag" value="#{managedBeanViewResources.listResource}" columns="6" rows="12" paginator="true" id="dataResource" paginatorTemplate="{CurrentPageReport}  {FirstPageLink}{PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  rowsPerPageTemplate="12,16,20" lazy="true" emptyMessage="Ninguna Imagen encontrada" >
                        <f:facet name="header">
                            Banco de imagenes
                        </f:facet>
                            <h:panelGrid columns="1" style="padding: 5px;">
                                <p:commandLink update=":formListAll:resourceDetail" oncomplete="PF('resourceDialog').show()" title="Imagen">
                                    <p:graphicImage id="listImagen" value="images/dynamic/?file=#{mag.ruta}" rendered="#{mag.ocultar == 'No'}" style="height: 150px; width: 205px"/>
                                    <f:setPropertyActionListener value="#{mag}" target="#{managedBeanViewResources.resource}" />
                                </p:commandLink>
                            </h:panelGrid>
                    </p:dataGrid>


martes, 6 de enero de 2015

FileUpload de primefaces con jsf, Hibernate y postgresSQL

En este blog se aprenderá a utilizar el componente de primefaces que es fileupload que es para subir archivos al servidor con la diferencia de que solo se subirán imágenes y los datos de la imagen así como la ruta de la imagen se almacene en la BD que tenemos en postgres de acuerdo, ojo como lo he mencionado antes hay que tener previos conocimientos en java y los frameworks que se están utilizando para los ejercicios y lecciones.

Haremos que se cree una carpeta como el blog anterior que se llamara de acuerdo al año en el que estamos porque así me pidieron el sistema xD, y dentro de ella otras carpetas con diferentes tipos de niveles de educación y de acuerdo al nivel seleccionado se almacenara la imagen y los datos de la misma en la BD para después mostrarlos en consultas, pero solo nos enfocaremos mientras en la subida de archivos al servidor de acuerdo.

Tendremos un formulario el cual se encargara de registrar los datos de la imagen que subiremos al servidor con fileupload este es nuestro cogido del formulario:

<p:accordionPanel dynamic="true" cache="true">
                    <p:tab title="Subir Archivos Modo Simple">
                        <h:form id="tehry" enctype="multipart/form-data">
                            <p:growl id="growl" showDetail="true"/>
                            <p:fileUpload value="#{managedBeanFileImagesUpload.file}" mode="simple" update="growl"/>
                            <h:panelGrid columns="2">
                            <p:outputLabel value="Etiquetas" for="txtEtiqueta"/>
                            <p:inputText id="txtEtiqueta" label="Etiquetas" placeholder="Etiquetas" title="Ejem. escuela, basico, secundaria" value="#{managedBeanFileImagesUpload.getResource().etiquetas}"/>
                            <p:outputLabel for="perfile" value="Nivel Edicativo" />
                            <p:selectOneMenu id="perfile" value="#{managedBeanFileImagesUpload.nivel}" style="width:125px">
                                <f:selectItem itemLabel="Pre-escolar" />
                                <f:selectItem itemLabel="Primaria"/>
                                <f:selectItem itemLabel="Secundaria" />
                                <f:selectItem itemLabel="Media Superior" />
                            </p:selectOneMenu>    
                            <p:outputLabel value="Año Foto" for="txtFoto"/>
                            <p:inputText id="txtFoto" label="Año Foto" placeholder="2014/2" value="#{managedBeanFileImagesUpload.getResource().anio}"/>
                            </h:panelGrid>
                            <h:commandButton value="Subir" action="#{managedBeanFileImagesUpload.upload()}" actionListener="#{managedBeanFileImagesUpload.registerUser()}"/>
                        </h:form>
                    </p:tab>
                </p:accordionPanel> 


el bean de este formulario debe quedar asi:

package com.inee.bean;
import com.inee.dao.ResourceDAO;
import com.inee.models.Video;
import com.inee.util.HibernateUtil;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.primefaces.model.UploadedFile;
/**
 *
 * @author By Davho
 */
@ManagedBean
@RequestScoped
public class ManagedBeanFileImagesUpload implements Serializable {
    private String destino = "C:\\INEE\\BankImage\\";
    private UploadedFile file;
    private Session session;
    private Transaction transaction;
    private String nivel;
    private Video resource;
    File  carpeta, preescolar1, primaria1, secundaria1, media1;
    String dir1;
    Calendar fecha;
    String nombre1;
    String preescolar = "\\Pre-escolar\\";
    String primaria = "\\Primaria\\";
    String secundaria = "\\Secundaria\\";
    String media = "\\Media Superior\\";
    /*en el constructor se inicializa lo que es el instancia miento del modelo, se obtendra la fecha que servira para nombrar la carpeta principal y dentro de ella se crean las demas y con el mkdir es para verificar que la carpeta no exista si existe no la crea, sino existe la creara de acuerdo*/
    public ManagedBeanFileImagesUpload() {
        resource = new Video();
        fecha = Calendar.getInstance();
        int año = fecha.get(Calendar.YEAR);
        nombre1 = Integer.toString(año);
        carpeta = new File(destino + nombre1);
        if(carpeta.mkdir() == true){
            preescolar1 = new File(carpeta + preescolar);
            primaria1 = new File(carpeta + primaria);
            secundaria1 = new File(carpeta + secundaria);
            media1 = new File(carpeta + media);
            preescolar1.mkdir();
            primaria1.mkdir();
            secundaria1.mkdir();
            media1.mkdir();
        }
    }
 
/*metodo para copear la imagen seleccionada a la carpeta preescolar */  

        public void transferirPreescolar(String fileName, InputStream in) {
        try {

//se encarga de crear al archivo (imagen)
            OutputStream o = new FileOutputStream(new File(destino+nombre1+preescolar + fileName));

            int reader = 0;
            byte[] bytes = new byte [(int) getFile().getSize()];
            while((reader = in.read(bytes)) != -1){
                o.write(bytes, 0, reader);
            }
            in.close();
            o.flush();
            o.close();
         
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }    
    }
        /*metodo para copear la imagen seleccionada a la carpeta primaria */

        public void transferirPrimaria(String fileName, InputStream in) {
        try {
            OutputStream o = new FileOutputStream(new File(destino+nombre1+primaria+ fileName));
            int reader = 0;
            byte[] bytes = new byte [(int) getFile().getSize()];
            while((reader = in.read(bytes)) != -1){
                o.write(bytes, 0, reader);
            }
            in.close();
            o.flush();
            o.close();
         
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }    
    }
        /*metodo para copear la imagen seleccionada a la carpeta secundaria */

        public void transferirSecundaria(String fileName, InputStream in) {
        try {
            OutputStream o = new FileOutputStream(new File(destino+nombre1+secundaria + fileName));
            int reader = 0;
            byte[] bytes = new byte [(int) getFile().getSize()];
            while((reader = in.read(bytes)) != -1){
                o.write(bytes, 0, reader);
            }
            in.close();
            o.flush();
            o.close();
         
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }    
    }
        

/*metodo para copear la imagen seleccionada a la carpeta media superior */

        public void transferirMedia(String fileName, InputStream in) {
        try {
            OutputStream o = new FileOutputStream(new File(destino+nombre1+media + fileName));
            int reader = 0;
            byte[] bytes = new byte [(int) getFile().getSize()];
            while((reader = in.read(bytes)) != -1){
                o.write(bytes, 0, reader);
            }
            in.close();
            o.flush();
            o.close();
         
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }    
    }
    /*metodo para obtener el archivo seleccionado*/
    public void upload() throws Exception {

//variable para validar extencion del archivo
        String txtValidador;

//si obtenemos un archivo
        if(getFile() != null){

//variable con el nombre del archivo seleccionado
            String ext = getFile().getFileName();

//verificamos la extencion del archivo que sea verdadera
            if(ext != null){
                txtValidador = ext.substring(ext.indexOf(".")+1);
            }else{
                txtValidador = "null";
            }
            /*verificamos que la extencion del archivo sea jpg para este ejemplo si es verdadero proseguimos*/
            if(txtValidador.equals("jpg")){

/*creamos un switch para obtener el nivel seleccionado del formulario y de acuerdo al nivel mandar a crear o almacenar la imagen a la carpeta predestinada */
                switch (getNivel()) {
                    case "Secundaria":
                        try {
                            transferirSecundaria(getFile().getFileName(), getFile().getInputstream());
                            FacesContext context = FacesContext.getCurrentInstance();
                            context.addMessage(null, new FacesMessage("Datos de la Foto", "Archivo: " + getFile().getFileName() + " subido al servidor \n\n Tipo de Archivo: " +
                                getFile().getContentType() + "\n\n Tamaño del archivo: " + getFile().getSize() +
                                " bytes , con destino a: " +destino+nombre1+secundaria+getFile().getFileName()));
                        }catch (Exception e) {
                            Logger.getLogger(ManagedBeanFileImagesUpload.class.getName()).log(Level.SEVERE, null, e);
                            FacesContext context = FacesContext.getCurrentInstance();
                            context.addMessage(null, new FacesMessage("Error","No se subio el archivo"));
                        }
                        break;
                    case "Media Superior":
                        try {
                            transferirMedia(getFile().getFileName(), getFile().getInputstream());
                            FacesContext context = FacesContext.getCurrentInstance();
                            context.addMessage(null, new FacesMessage("Datos de la Foto", "Archivo: " + getFile().getFileName() + " subido al servidor \n\n Tipo de Archivo: " +
                                getFile().getContentType() + "\n\n Tamaño del archivo: " + getFile().getSize() +
                                " bytes , con destino a: " +destino+nombre1+media+getFile().getFileName()));
                        }catch (Exception e) {
                            Logger.getLogger(ManagedBeanFileImagesUpload.class.getName()).log(Level.SEVERE, null, e);
                            FacesContext context = FacesContext.getCurrentInstance();
                            context.addMessage(null, new FacesMessage("Error","No se subio el archivo"));
                        }
                        break;
                    case "Primaria":
                        try {
                            transferirPrimaria(getFile().getFileName(), getFile().getInputstream());
                            FacesContext context = FacesContext.getCurrentInstance();
                            context.addMessage(null, new FacesMessage("Datos de la Foto", "Archivo: " + getFile().getFileName() + " subido al servidor \n\n Tipo de Archivo: " +
                                getFile().getContentType() + "\n\n Tamaño del archivo: " + getFile().getSize() +
                                " bytes , con destino a: " +destino+nombre1+primaria+getFile().getFileName()));
                        }catch (Exception e) {
                            Logger.getLogger(ManagedBeanFileImagesUpload.class.getName()).log(Level.SEVERE, null, e);
                            FacesContext context = FacesContext.getCurrentInstance();
                            context.addMessage(null, new FacesMessage("Error","No se subio el archivo"));
                        }
                        break;
                    default:
                        try {
                            transferirPreescolar(getFile().getFileName(), getFile().getInputstream());
                            FacesContext context = FacesContext.getCurrentInstance();
                            context.addMessage(null, new FacesMessage("Datos de la Foto", "Archivo: " + getFile().getFileName() + " subido al servidor \n\n Tipo de Archivo: " +
                                getFile().getContentType() + "\n\n Tamaño del archivo: " + getFile().getSize() +
                                " bytes , con destino a: " +destino+nombre1+preescolar+getFile().getFileName()));
                        }catch (Exception e) {
                            Logger.getLogger(ManagedBeanFileImagesUpload.class.getName()).log(Level.SEVERE, null, e);
                            FacesContext context = FacesContext.getCurrentInstance();
                            context.addMessage(null, new FacesMessage("Error","No se subio el archivo"));
                        }
                        break;
                }
            }else{

/*sino hay archivo seleccionado manda un mensaje*/
                FacesContext context = FacesContext.getCurrentInstance();
                context.addMessage(null, new FacesMessage("Error", "No hay archivo seleccionado"));
            }
        }else{

/*si el archivo no es la extencion que se pide manda un mensaje de error*/
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("Error", "Solo con extencion jg"));
        }
     
    }
    

/*metodo para registrar los datos de la imagen asi como el nivel educativo, la ruta de la imagen, las etiquetas que se le dan a la imagen y el año en  que se tomaron o se suben al servidor*/
    public void registerUser(){

//inicializamos las variables para ocupar con hibernate
        this.session = null;
        this.transaction = null;
     
        try {             

//abrimos sesión
             session = HibernateUtil.getSessionFactory().openSession();

//comenzamos la transacción
             transaction = session.beginTransaction(); 

//instan-ciamos el objeto DAO
             ResourceDAO rDAO = new ResourceDAO(); 

//se crear un siwtch y de acuerdo al nivel seleccionado almacena la ruta y el nivel a la BD          
             switch (getNivel()) {
                    case "Secundaria":
                        resource.setRuta(destino+nombre1+secundaria+getFile().getFileName());
                        resource.setNivel("Secundaria");
                        break;
                    case "Media Superior":
                        resource.setRuta(destino+nombre1+media+getFile().getFileName());
                        resource.setNivel("Media Superior");
                        break;
                    case "Primaria":
                        resource.setRuta(destino+nombre1+primaria+getFile().getFileName());
                        resource.setNivel("Primaria");
                        break;
                    default:
                        resource.setRuta(destino+nombre1+preescolar+getFile().getFileName());
                        resource.setNivel("Preescolar");
                        break;
                }

//accedemos al metodo de registrar con el objeto instan ciado anteriormente
             rDAO.registerResource(session, resource);

//se manda mensaje de exito
             FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Exito", "Datos insertados Exitosamente"));
             transaction.commit();
             resource = new Video();
        } catch (Exception e) {
            if(transaction != null){
                transaction.rollback();
            }
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Error Fatal", "Contacte con su administrador "+e.getMessage()));
        }finally{
            if(session != null){
                session.close();
            }
        }
    }
    

//getters y setters
    public UploadedFile getFile() {
        return file;
    }
    public void setFile(UploadedFile file) {
        this.file = file;
    }
    public String getDestino() {
        return destino;
    }
    public void setDestino(String destino) {
        this.destino = destino;
    }
    public Video getResource() {
        return resource;
    }
    public void setResource(Video resource) {
        this.resource = resource;
    }
    public File getCarpeta() {
        return carpeta;
    }
    public void setCarpeta(File carpeta) {
        this.carpeta = carpeta;
    }
    public String getNivel() {
        return nivel;
    }
    public void setNivel(String nivel) {
        this.nivel = nivel;
    }
    public String getDir1() {
        return dir1;
    }
    public void setDir1(String dir1) {
        this.dir1 = dir1;
    }
    public Calendar getFecha() {
        return fecha;
    }
    public void setFecha(Calendar fecha) {
        this.fecha = fecha;
    }
    public String getNombre1() {
        return nombre1;
    }
    public void setNombre1(String nombre1) {
        this.nombre1 = nombre1;
    }
    public String getPreescolar() {
        return preescolar;
    }
    public void setPreescolar(String preescolar) {
        this.preescolar = preescolar;
    }
    public String getPrimaria() {
        return primaria;
    }
    public void setPrimaria(String primaria) {
        this.primaria = primaria;
    }
    public String getSecundaria() {
        return secundaria;
    }
    public void setSecundaria(String secundaria) {
        this.secundaria = secundaria;
    }
    public String getMedia() {
        return media;
    }
    public void setMedia(String media) {
        this.media = media;
    }
}


la interfaz del dao queda asi:

public interface FrondEndResource {
    public boolean registerUsers(Session session, Recurso resource) throws Exception;
 
}


El dao queda de la siguiente forma implementando el método de la interfaz:

public class RecursoDAO implements FrondEndResource{
    @Override
    public boolean registerUsers(Session session, Recurso resource) throws Exception {
        session.save(resource);
        return true;
    }
 
}

el modelo y pojo creados por hibernate queda asi:

public class Video  implements java.io.Serializable {

     private int id;
     private String nivel;
     private String anio;
     private String etiquetas;
     private String ruta;
    public Video() {
    }
    public Video(int id) {
        this.id = id;
    }
    public Video(int id, String nivel, String anio, String etiquetas, String ruta) {
       this.id = id;
       this.nivel = nivel;
       this.anio = anio;
       this.etiquetas = etiquetas;
       this.ruta = ruta;
    }
 
    public int getId() {
        return this.id;
    }
 
    public void setId(int id) {
        this.id = id;
    }
    public String getNivel() {
        return this.nivel;
    }
 
    public void setNivel(String nivel) {
        this.nivel = nivel;
    }
    public String getAnio() {
        return this.anio;
    }
 
    public void setAnio(String anio) {
        this.anio = anio;
    }
    public String getEtiquetas() {
        return this.etiquetas;
    }
 
    public void setEtiquetas(String etiquetas) {
        this.etiquetas = etiquetas;
    }
    public String getRuta() {
        return this.ruta;
    }
 
    public void setRuta(String ruta) {
        this.ruta = ruta;
    }


////////

<hibernate-mapping>
    <class name="com.inee.models.Video" table="video" schema="public" optimistic-lock="version">
        <id name="id" type="int">
            <column name="id" />
            <generator class="identity" />
        </id>
        <property name="nivel" type="string">
            <column name="nivel" length="69" />
        </property>
        <property name="anio" type="string">
            <column name="anio" length="25" />
        </property>
        <property name="etiquetas" type="string">
            <column name="etiquetas" length="75" />
        </property>
        <property name="ruta" type="string">
            <column name="ruta" length="2999" />
        </property>
    </class>
</hibernate-mapping>

la configuracion de postgres con hibernate para la conexion a la BD ya la eh comentado en blogs anteriores y al igual que la ingenieria inversa necesaria y la aplicacion queda asi:






Crear una carpeta elijiendo la ruta especifica en Java

Hola hoy retomare un poco lo del blog anterior de crear carpeta en aquel ejemplo se creo la carpeta dentro del mismo formulario hoy haré lo mismo con la diferencia de que se creara de acuerdo a la ruta que le demos ok, así que no explicare nada ya que lo explicado este en el blog anterior solo daré el código:

Crearemos una carpeta que contendra dentro de ella otras carpetas de acuerdo y la llamare a la carpeta principal de acuerdo al año en el que estamos:

public static void main(String[] args) {
        Calendar fecha = Calendar.getInstance();
        int año = fecha.get(Calendar.YEAR);
        String nombre1 = Integer.toString(año);
        File carpeta, carpeta1, carpeta2, carpeta3, carpeta4;
        //variable
        //String nombre;
        //le asignamos un valor a la variable nombre para la carpeta mediante JOptionPane que muestre una ventana
        //nombre = JOptionPane.showInputDialog("Nombre a la Carpeta");
        //se instancia la carpeta y se le asgina el nombre
        carpeta = new File("C:\\Users\\dell 6410\\Desktop\\" + nombre1);
        //se verifica si la carpeta existe o no y la crea en caso de que no exista  
            carpeta1 = new File(carpeta + "\\Pre-escolar");
            carpeta2 = new File(carpeta + "\\Primaria");
            carpeta3 = new File(carpeta + "\\Secundaria");
            carpeta4 = new File(carpeta + "\\Media Superior");
            carpeta1.mkdir();
            carpeta2.mkdir();
            carpeta3.mkdir();
            carpeta4.mkdir();
            String dir = carpeta1.getPath();
            System.out.println(carpeta.getPath());
        System.out.println(dir);
        System.out.println(carpeta2.getPath());
        System.out.println(carpeta3.getPath());
        System.out.println(carpeta4.getPath());    
    }


Como se ve en la consola de salida de Netbeans mande a imprimir la direccion de las carpetas creadas:


Verificamos que se haya creado y las demás también:




martes, 30 de diciembre de 2014

Almacenar archivos al servidor y guardar los datos con MySQL y PostgreSQL

Aquí utilizaremos el framework jsf, hibernate, primefaces básicamente sera crear un formulario para que el usuario pueda guardar en este caso una imagen ya que en el proyecto en el cual estoy me piden esto y bueno a mi punto de vista me costo trabajo y que mejor que guardarlo y tenerlo presente jeje.

Como decía se almacenara la imagen en el servidor en la ruta especifica y en este caso los datos se almacenaran en la BD que seria la ruta, nivel educativo, año, y etiquetas para esto primefaces nos facilita de alguna manera esto ok  el formulario que pida la información del archivo ojo son 2 proyectos diferentes

Creamos la configuración de Hibernate en MySQL:

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/ejem?zeroDateTimeBehavior=convertToNull</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">061090</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.show_sql">true</property>
//esto se genera automaticamente despues de crear los pojos
    <mapping resource="com/davho/models/Recurso.hbm.xml"/>
  </session-factory>
</hibernate-configuration>


Creamos la configuración de Hibernate en PostgreSQL:

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
    <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
    <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/ejem</property>
    <property name="hibernate.connection.username">postgres</property>
    <property name="hibernate.connection.password">061090</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.show_sql">true</property>
//esto se genera automaticamente despues de crear los pojos
    <mapping resource="com/davho/models/Video.hbm.xml"/>
  </session-factory>
</hibernate-configuration>


Despues de esto se hace la reingenieria inversa para filtrar las tablas de la BD que vamos a usar que se hace mediante el asistente ok ojo para el postgres el match-schema debe ser publico sino no filtrara las tablas de la BD debe quedar asi match-schema="public"

Despues creamos los pojos de ambos proyectos y se creara tambien los modelos una vez realizado esto en mi caso creo los interfaces para implementarlos en el DAO necesario y deben quedar asi, para ambos:

public interface FrondEndResource {
    public boolean registerResource(Session session, Recurso resource) throws Exception;
}

el Dao para este caso en ambos proyectos seria:

public class RecursoDAO implements FrondEndResource{
    @Override
    public boolean registerUsers(Session session, Recurso resource) throws Exception {
        session.save(resource);
        return true;
    }
   
}


y bueno finalmente el ManagedBean para el caso de MySQL seria asi:

ManagedBean
@RequestScoped
public class ManagedBeanResource{
    private Session session;
    private Transaction transaction;
    private Recurso recurso;
    private String destino = "C:\\INEE\\BankImage\\";
    private UploadedFile file;
    private Recurso resource;
   
    public ManagedBeanResource() {
        recurso = new Recurso();
        recurso.setId(null);
    }
   
    /*metodo para registrar los datos del archivo en la base de datos de MySQL*/
    public void registerUser(){
        /*inicializamos para asegurarnos*/
        this.session = null;
        this.transaction = null;
     
        try {            
             //abrimos sesion de conexcion
             session = HibernateUtil.getSessionFactory().openSession();
             //creamos la transaccion y la comenzamos
             transaction = session.beginTransaction();
             /*instanciamos los objetos*/
             /*creamos el dao que utilizaremos*/
             RecursoDAO rDAO = new RecursoDAO();
             recurso.setRuta(destino+getFile().getFileName());
             rDAO.registerUsers(session, recurso);
             FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Exito", "Datos insertados Exitosamente"));
             transaction.commit();//cerrar transaccion
             //esta forma limpiamos el formulario sin usar el js
             recurso = new Recurso();
             recurso.setId(null);
        } catch (Exception e) {
            //verificamos sino hay ya una transaccion ya definida
            if(transaction != null){
                //si lo hay haremos que todo se revierta en la BD y que como estaba antes de utilizar este metodo
                transaction.rollback();
            }
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Error Fatal", "Contacte con su administrador "+e.getMessage()));
        }finally{
            //verificamos sino hay ya una session ya definida
            if(session != null){
                //si lo hay cerramos la session
                session.close();
            }
        }
     
    }
    /*metodo que sirve para crear el archivo seleccionado mediante un flujo de bytes y almacenarlo en la ruta y con el nombre */
    public void transferir(String fileName, InputStream in) {
        try {
            //creamos el arhivo que saldra de la aplicacion
            OutputStream o = new FileOutputStream(new File(destino + fileName));
            //iniciamos un valor
            int reader = 0;
            //recibimos el tamaño del archivo que se va a crear
            byte[] bytes = new byte [(int) getFile().getSize()];
            //generamos un ciclo while que cree el archivo mientras el tamaño no sea menor a -1 byte
            while((reader = in.read(bytes)) != -1){
                //guardamos o escribimos el archivo
                o.write(bytes, 0, reader);
            }
            in.close();
            o.flush();
            o.close();
           
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
       
    }
   
    /*metodo encargado de seleccionar el archivo y restringuiendo que solo sea jpg*/
    public void upload() throws Exception {
        //variable de validar extencion
        String txtValidador;
        //condicional si se obtuvo o no un archivo
        if(getFile() != null){
            //si hay archivo guardar el nombre del archivo en una variable
            String ext = getFile().getFileName();
            //si se obtuve o no el nombre del archivo seleccionado
            if(ext != null){
                //si se obtuvo la variable de extencion obtendra mediante un substring del nombre del archivo que despues del (".") seleccione los caracteres
                txtValidador = ext.substring(ext.indexOf(".")+1);
            }else{
                //sino obtuvo el nombre del archivo se le asigna null
                txtValidador = "null";
            }
            //validar si despues del (".") la extencion permitida sea jpg
            if(txtValidador.equals("jpg")){
                //si es asi genereamos un try catch porque accederemos a algo que esta afuera de la maquina virtual de java
                try {
                    //mandamos a llamar el metodo con los parametros de entrada que pide
                    transferir(getFile().getFileName(), getFile().getInputstream());
                //si falla    
                } catch (Exception e) {
                    //mandamos un mensaje de error
                    Logger.getLogger(ManagedBeanResource.class.getName()).log(Level.SEVERE, null, e);
                    FacesContext context = FacesContext.getCurrentInstance();
                    context.addMessage(null, new FacesMessage("Error","No se subio el archivo"));
                }
             //despues de transferir el archivo mostramos los datos de dicho archivo en un FacesContext para visualizarlo
             FacesContext context = FacesContext.getCurrentInstance();
             context.addMessage(null, new FacesMessage("Exito", "Archivo: " + getFile().getFileName() + " subido al servidor \n\n Tipo de Archivo: " +
                     getFile().getContentType() + "\n\n Tamaño del archivo: " + getFile().getSize() + " bytes , con destino a: " +destino+getFile().getFileName()));  
            }else{
                //mandar mensaje de error si no se selecciono un jpg
                FacesContext context = FacesContext.getCurrentInstance();
                context.addMessage(null, new FacesMessage("Error", "Solo archivos con extencion .jpg"));
            }
        }else{
            //mandar mensaje de que no se selecciono ningun archivo
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("Error", "No hay archivo seleccionado"));
        }
       
    }
   
    public UploadedFile getFile() {
        return file;
    }
    public void setFile(UploadedFile file) {
        this.file = file;
    }
    public String getDestino() {
        return destino;
    }
    public void setDestino(String destino) {
        this.destino = destino;
    }
    public Recurso getResource() {
        return resource;
    }
    public void setResource(Recurso resource) {
        this.resource = resource;
    }
   
    public Recurso getRecurso() {
        return recurso;
    }
    public void setRecurso(Recurso recurso) {
        this.recurso = recurso;
    }
}

y el ManagedBean para PostgreSQL seria:

@ManagedBean
@RequestScoped
public class ManagedBeanResource{
    private Session session;
    private Transaction transaction;
    private Video recurso;
    private String destino = "C:\\INEE\\BankImage\\";
    private UploadedFile file;
    private Video resource;
   
    public ManagedBeanResource() {
        recurso = new Video();
    }
   
    public void registerUser(){
        /*inicializamos para asegurarnos*/
        this.session = null;
        this.transaction = null;
     
        try {            
             //abrimos sesion de conexcion
             session = HibernateUtil.getSessionFactory().openSession();
             //creamos la transaccion y la comenzamos
             transaction = session.beginTransaction();
             /*instanciamos los objetos*/
             /*creamos el dao que utilizaremos*/
             RecursoDAO rDAO = new RecursoDAO();
             recurso.setRuta(destino+getFile().getFileName());
             rDAO.registerUsers(session, recurso);
             FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Exito", "Datos insertados Exitosamente"));
             transaction.commit();//cerrar transaccion
             //esta forma limpiamos el formulario sin usar el js
             recurso = new Video();
        } catch (Exception e) {
            //verificamos sino hay ya una transaccion ya definida
            if(transaction != null){
                //si lo hay haremos que todo se revierta en la BD y que como estaba antes de utilizar este metodo
                transaction.rollback();
            }
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, "Error Fatal", "Contacte con su administrador "+e.getMessage()));
        }finally{
            //verificamos sino hay ya una session ya definida
            if(session != null){
                //si lo hay cerramos la session
                session.close();
            }
        }
     
    }
   
     /*metodo que sirve para crear el archivo seleccionado mediante un flujo de bytes y almacenarlo en la ruta y con el nombre */
    public void transferir(String fileName, InputStream in) {
        try {
            //creamos el arhivo que saldra de la aplicacion
            OutputStream o = new FileOutputStream(new File(destino + fileName));
            //iniciamos un valor
            int reader = 0;
            //recibimos el tamaño del archivo que se va a crear
            byte[] bytes = new byte [(int) getFile().getSize()];
            //generamos un ciclo while que cree el archivo mientras el tamaño no sea menor a -1 byte
            while((reader = in.read(bytes)) != -1){
                //guardamos o escribimos el archivo
                o.write(bytes, 0, reader);
            }
            in.close();
            o.flush();
            o.close();
           
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
       
    }
   
    /*metodo encargado de seleccionar el archivo y restringuiendo que solo sea jpg*/
    public void upload() throws Exception {
        //variable de validar extencion
        String txtValidador;
        //condicional si se obtuvo o no un archivo
        if(getFile() != null){
            //si hay archivo guardar el nombre del archivo en una variable
            String ext = getFile().getFileName();
            //si se obtuve o no el nombre del archivo seleccionado
            if(ext != null){
                //si se obtuvo la variable de extencion obtendra mediante un substring del nombre del archivo que despues del (".") seleccione los caracteres
                txtValidador = ext.substring(ext.indexOf(".")+1);
            }else{
                //sino obtuvo el nombre del archivo se le asigna null
                txtValidador = "null";
            }
            //validar si despues del (".") la extencion permitida sea jpg
            if(txtValidador.equals("jpg")){
                //si es asi genereamos un try catch porque accederemos a algo que esta afuera de la maquina virtual de java
                try {
                    //mandamos a llamar el metodo con los parametros de entrada que pide
                    transferir(getFile().getFileName(), getFile().getInputstream());
                //si falla    
                } catch (Exception e) {
                    //mandamos un mensaje de error
                    Logger.getLogger(ManagedBeanResource.class.getName()).log(Level.SEVERE, null, e);
                    FacesContext context = FacesContext.getCurrentInstance();
                    context.addMessage(null, new FacesMessage("Error","No se subio el archivo"));
                }
             //despues de transferir el archivo mostramos los datos de dicho archivo en un FacesContext para visualizarlo
             FacesContext context = FacesContext.getCurrentInstance();
             context.addMessage(null, new FacesMessage("Exito", "Archivo: " + getFile().getFileName() + " subido al servidor \n\n Tipo de Archivo: " +
                     getFile().getContentType() + "\n\n Tamaño del archivo: " + getFile().getSize() + " bytes , con destino a: " +destino+getFile().getFileName()));  
            }else{
                //mandar mensaje de error si no se selecciono un jpg
                FacesContext context = FacesContext.getCurrentInstance();
                context.addMessage(null, new FacesMessage("Error", "Solo archivos con extencion .jpg"));
            }
        }else{
            //mandar mensaje de que no se selecciono ningun archivo
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage("Error", "No hay archivo seleccionado"));
        }
       
    }
   
    public UploadedFile getFile() {
        return file;
    }
    public void setFile(UploadedFile file) {
        this.file = file;
    }
    public String getDestino() {
        return destino;
    }
    public void setDestino(String destino) {
        this.destino = destino;
    }
    public Video getResource() {
        return resource;
    }
    public void setResource(Video resource) {
        this.resource = resource;
    }
   
    public Video getRecurso() {
        return recurso;
    }
    public void setRecurso(Video recurso) {
        this.recurso = recurso;
    }
   
}





Como crear una carpeta directamente de java muy fácil!!!!

Bueno aquí daré un pequeño tema para la creación de carpetas donde mandaremos algunos archivos en mi caso en el proyecto donde estoy era necesario crear carpetas para subir los archivos ubicando las directamente en la carpeta especifica bueno es algo muy simple ok:

Necesitaremos utilizar la biblioteca IO de java para usar esta clase File que contiene 2 atributos importantes que debo mencionar y que a mi punto de vista resalta mas.

1. mkdir: se encarga de verificar si existe o no el archivo ("Carpeta") en caso de que no la crea
2. mkdis: es básicamente lo mismo pero con la diferencia de que si existe o no lo creara.

En este caso solo utilizare la primera MKDIR, en este caso no le daré una ruta especifica de donde quiero crear la carpeta sino mas bien que la cree dentro del mismo proyecto.

En la imagen veremos que dentro del proyecto estas las carpetas creadas de manera automática.


Ahora ejecutamos el proyecto para crear una carpeta, asignamos un nombre y verificamos que se haya creado.




Aquí esta el código:

public static void main(String[] args) {
        //variable
        String nombre;
        //le asignamos un valor a la variable nombre para la carpeta mediante JOptionPane que muestre una ventana
        nombre = JOptionPane.showInputDialog("Nombre a la Carpeta");
        //se instancia la carpeta y se le asgina el nombre
        File carpeta = new File(nombre);
        //se verifica si la carpeta existe o no y la crea en caso de que no exista
        carpeta.mkdir();
    }