Archivo

Posts Tagged ‘Java’

Leer archivo properties desde el path donde se ejecuta el *.jar

abril 29, 2011 4 comentarios

Hola retomando las publicaciones por cuestiones de tiempo, he querido poner esto ya que es bastante útil al momento de realizar una aplicación que requiera parámetros de configuración que sean obtenidos de alguna fuente externa como un archivo de propiedades (*.properties), este método que se presenta más abajo hace la lectura de las propiedades de una archivo de este tipo *.properties que se encuentre junto al .*jar ejecutable de nuestra aplicación, esto quiere decir que los dos archivos tienen que estar dentro del mismo directorio. A mi me ha funcionado muy bien con este método lo que tendrían que hacer es ponerlo en una clase genérica y de allí si referenciarlo cada vez que sea necesario, este recibe el nombre del archivo de propiedades que queremos leer.

    public static Properties obtenerArchivoPropiedades(String arc) throws FileNotFoundException {
        Properties prop = null;
        try {
            CodeSource codeSource = funcionesUtilidad.class.getProtectionDomain().getCodeSource();
            File jarFile = new File(codeSource.getLocation().toURI().getPath());
            File jarDir = jarFile.getParentFile();

            if (jarDir != null && jarDir.isDirectory()) {
                File propFile = new File(jarDir, arc);
                prop = new Properties();
                prop.load(new BufferedReader(new FileReader(propFile.getAbsoluteFile())));
            }
        } catch (URISyntaxException ex) {
            Logger.getLogger(funcionesUtilidad.class.getName()).log(Level.SEVERE, null, ex);
        } catch (FileNotFoundException ex) {
            //System.err.println("No se encuentra el archivo: " + ex.getMessage());
            throw new FileNotFoundException("No se econtró el archivo de propiedades...");
        } catch (IOException ex) {
            Logger.getLogger(funcionesUtilidad.class.getName()).log(Level.SEVERE, null, ex);
        }
        return prop;
    }

Saludos

Christian Mora
@christmo

Anuncios

Cursos Vacacionales de JAVA!!!…

marzo 3, 2010 Los comentarios están cerrados

Cursos Vacacionales

Cursos Vacacionales

Ver temario del curso…


Categorías:IEEE, informatica, Java, Loja, NetBeans, UTPL Etiquetas: , , , ,

CRUD de usuarios en el servidor LDAP + JAVA

mayo 26, 2009 22 comentarios

En esta clase se va a realizar una clase completa para realizar una búsqueda, inserción, eliminación y modificación de los datos de los usuarios de un servidor LDAP desde el lenguaje de programación JAVA, al final de este post se pondrá el link para descargar el proyecto completo para que les quede como referencia de como es que yo lo hice, espero que les sirva, ojala puedan mejorar este código espero que lo compartan para poder ir aprendiendo todos…

import com.novell.ldap.LDAPAttribute;
import com.novell.ldap.LDAPAttributeSet;
import com.novell.ldap.LDAPConnection;
import com.novell.ldap.LDAPEntry;
import com.novell.ldap.LDAPException;
import com.novell.ldap.LDAPModification;
import com.novell.ldap.LDAPSearchResults;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* @author christian
*/

public class CRUD {
     private Conexion conLDAP = new Conexion();
     private LDAPConnection lc = new LDAPConnection();
     
     /**
     * Metodo paraañadir un nuevo usuario, la persona que realice esta
     * transaccion debe tener los permisos para
     * @param strUIDManager
     * @param strPass
     */

     public void Añadir(String strUIDManager, String strPass) {
          try {
               LDAPEntry usuario = Datos();
               lc = conLDAP.ConexionManager(strUIDManager, strPass);
               lc.add(usuario);
               conLDAP.CerrarConLDAP(lc);
               System.out.println("Usuario
               Ingresado Correctamente...");
          } catch(LDAPException ex) {
               if (ex.getResultCode() == 68) {
                    System.err.println("ERROR:El Usuario ya se encuentra ingresado...");
               }
              Logger.getLogger(CRUD.class.getName()).log(Level.SEVERE,null, ex);
          }
     }

     /**
     * Datos del  usuario a ser Ingresado
     * @return LDAPEntry
     */

     public LDAPEntry Datos() {
          LDAPAttributeSet setAtr = new LDAPAttributeSet();
          setAtr.add(new LDAPAttribute("objectclass", new String("person")));
          setAtr.add(new LDAPAttribute("objectclass", new String("organizationalPerson")));
          setAtr.add(new LDAPAttribute("objectclass", new String("inetOrgPerson")));
          setAtr.add(new LDAPAttribute("objectclass", new String("posixAccount")));
          setAtr.add(new LDAPAttribute("objectclass", new String("top")));
          setAtr.add(new LDAPAttribute("userpassword", new String("newpassword")));
          //setAtr.add(new LDAPAttribute("uidnumber", new String("555")));
          setAtr.add(new LDAPAttribute("givenname", new String("Jim")));
          //setAtr.add(new LDAPAttribute("loginshell", new String("/dev/null")));
          //setAtr.add(new LDAPAttribute("gecos", new String("arroyo carvache carlos")));
          setAtr.add(new LDAPAttribute("gidNumber", new String("100")));
          setAtr.add(new LDAPAttribute("sn", new String("Smith")));
          setAtr.add(new LDAPAttribute("cn", new String("Jim Smith")));
          setAtr.add(new LDAPAttribute("mail", new String("JSmith@Acme.com")));
          //setAtr.add(new LDAPAttribute("homeDirectory", new String("/public/centros/carroyo")));
          setAtr.add(new LDAPAttribute("telephonenumber", new String("1 801 555 1212")));
          String dn = "uid=jsmith,ou=People,o=utpl,c=ec";
          LDAPEntry newEntry = new LDAPEntry(dn, setAtr);
          return newEntry;
     }

     /**
     * Metodo para buscar un usuario dentro del servidor LDAP
     * Filtro es el username a buscar
     * @param LDAPConnection lc
     * @param String strFiltro
     */

     public void Buscar(String strUser, String strPass, String strFiltro) {
          String filtro;
          LDAPSearchResults searchResults;
          String searchBase = "o=utpl,c=ec";
          int searchScope = LDAPConnection.SCOPE_SUB;
          filtro = "(uid=" + strFiltro + ")";
          try {
               lc = conLDAP.ConexionUser(strUser, strPass);
               searchResults = lc.search(searchBase, searchScope, filtro, null, false);
               //Recorre Todos los Usuarios de la Base
               while (searchResults.hasMore()) {
                    LDAPEntry nextEntry = null;
                    try {
                         nextEntry = searchResults.next();
                    } catch (LDAPException e) {
                         System.out.println("Error: " + e.toString());
                         continue;
                    }
                    LDAPAttributeSet attributeSet = nextEntry.getAttributeSet();
                    Iterator allAttributes = attributeSet.iterator();
                    //Recore los atributos del usuario
                    while (allAttributes.hasNext()) {
                         LDAPAttribute attribute = (LDAPAttribute) allAttributes.next();
                         String attributeName = attribute.getName();
                         Enumeration allValues = attribute.getStringValues();
                         if (allValues != null) {
                              while (allValues.hasMoreElements()) {
                                   String value = (String) allValues.nextElement();
                                   System.out.println(attributeName + ":  " + value);
                              }
                         }
                    }
                    System.err.println("------------------------------");
               }
               conLDAP.CerrarConLDAP(lc);
          } catch (LDAPException ex) {
               Logger.getLogger(Buscar.class.getName()).log(Level.SEVERE,null, ex);
          }
     }

     /**
     * Metodo Para Eliminar un usuario mandando como parametro el "uid"
     * @param strUser
     * @param strPass
     * @param strUIDEliminar
     */

     public void EliminarPorUID(String strUser, String strPass, String strUIDEliminar){
          String dn = "uid="+ strUIDEliminar + ",ou=People,o=utpl,c=ec";
          try {
               lc = conLDAP.ConexionManager(strUser, strPass);
               lc.delete(dn);
               System.out.println("\nEntry: " + dn + " Fue Eliminado Correctamente...");
               conLDAP.CerrarConLDAP(lc);
          } catch (LDAPException e) {
               if (e.getResultCode() == LDAPException.NO_SUCH_OBJECT) {
                    System.err.println("Error: NO existe ese usuario...");
               } else if (e.getResultCode() == LDAPException.INSUFFICIENT_ACCESS_RIGHTS) {
                    System.err.println("Error: NO tiene permisos suficientes para realizar esta transaccion...");
               } else {
                    System.err.println("Error: " + e.toString());
               }
          }
     }

     /**
     * Enviar Usuario a Modificar
     * @param strUser
     * @param strAtributo
     */

     public void Modificar(String strUser,String strAtributo) {
          try {
               LDAPAttribute atrubuto;
               lc = conLDAP.ConexionManager("Manager", "ibmlnx");
               atrubuto = new LDAPAttribute("mail", strAtributo);
               String dn = "uid="+strUser+",ou=People,o=utpl,c=ec";
               lc.modify(dn, new LDAPModification (LDAPModification.REPLACE, atrubuto));
               System.out.println("Atributo Modificado OK...");
          } catch (LDAPException ex) {
               if (ex.getResultCode() ==  LDAPException.INSUFFICIENT_ACCESS_RIGHTS) {
               System.err.println("Error: NO tiene permisos suficientes para realizar esta transaccion...");
               }
          }
     }

     public boolean ValidarPassWord(String strUser, String strPass) {
          boolean correct = false;
          String dnc = "uid=+" + strUser + ",ou=People,o=utpl,c=ec";
          try {
               lc.bind(LDAPConnection.LDAP_V3, dnc, strPass.getBytes("UTF8"));
               LDAPAttribute attr = new LDAPAttribute("userPassword", strPass);
               correct = lc.compare(dnc, attr);
               System.err.println(correct ? "El Password es correcto" : "El Password NO es correcto.\n");
          } catch (LDAPException ex) {
               Logger.getLogger(CRUD.class.getName()).log(Level.SEVERE,null, ex);
          } catch (UnsupportedEncodingException ex) {
               Logger.getLogger(CRUD.class.getName()).log(Level.SEVERE,null, ex);
          }
          return correct;
     }
}

Vea también:

Conexión al servidor LDAP desde JAVA

Busqueda de usuarios en el servidor LDAP

CRUD de usuarios en el servidor LDAP

Descargar Proyecto JAVA – Netbeans

Categorías:Java, ldap, Linux Etiquetas: , ,

Busqueda de Usuarios en el Servidor LDAP + JAVA

mayo 26, 2009 5 comentarios

Continuando con el ejemplo anterior, una ves realizada la conexión en el servidor LDAP, desde nuestra clase java, vamos a probar una clase que nos permita realizar búsquedas de usuarios ingresados en este servidor.

Esta clase seria así:


package conexionldap;
import com.novell.ldap.*;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* @author christian
* Clase para Buscar Usuarios el Filtro es el usuario que se desea buscar.
*/

public class Buscar {

     private String searchBase = "o=utpl,c=ec";
     private int searchScope = LDAPConnection.SCOPE_SUB;
     private String filtro;
     private LDAPSearchResults searchResults;

     /**
     * Metodo para buscar un usuario dentro del servidor LDAP
     * @param LDAPConnection lc
     * @param String strFiltro
     */

     public Buscar(LDAPConnection lc, String strFiltro) {
          filtro = "(uid="+ strFiltro + ")";
          try {
               searchResults = lc.search(searchBase, searchScope, filtro, null, false);
               //Recorre Todos los Usuarios de la Base
               while (searchResults.hasMore()) {
                    LDAPEntry nextEntry = null;
                    try {
                         nextEntry = searchResults.next();
                    } catch (LDAPException e) {
                         System.out.println("Error: " + e.toString());
                         continue;
                    }
                    LDAPAttributeSet attributeSet = nextEntry.getAttributeSet();
                    Iterator allAttributes = attributeSet.iterator();
                    //Recore los atributos del usuario
                    while (allAttributes.hasNext()) {
                         LDAPAttribute attribute = (LDAPAttribute) allAttributes.next();
                         String attributeName = attribute.getName();
                         Enumeration allValues = attribute.getStringValues();
                         if (allValues != null) {
                              while (allValues.hasMoreElements()) {
                                   String value = (String) allValues.nextElement();
                                   System.out.println(attributeName + ":  " + value);
                              }
                         }
                    }
                    System.out.println("------------------------------");
                    lc.disconnect();
               }
          } catch (LDAPException ex) {
               Logger.getLogger(Buscar.class.getName()).log(Level.SEVERE,null, ex);
          }
     }
}

Vea también:

Conexión al servidor LDAP desde JAVA

Busqueda de usuarios en el servidor LDAP

CRUD de usuarios en el servidor LDAP

Descargar Proyecto JAVA – Netbeans

Categorías:Java, ldap, Linux Etiquetas: , ,

Conexión a Servidor LDAP desde JAVA

mayo 26, 2009 14 comentarios

Hola en en trabajo me pidieron realizar una conexión a un servidor LDAP desde una aplicación java, esto me pareció algo difícil en un principio ya que no tenía idea de como realizar algo parecido, con algunas sugerencias de parte de mi jefe decidimos usar la librería de novell para java jLDAP, esta librería es muy completa y permite realizar todas las posibles transacciones dentro de un servidor LDAP, novell también tiene bien documentado esto hasta con ejemplos todo el API esta aquí, una ves que te familiarizas con el código vas a ver que todo es muy fácil, pero es esta serie de posts vamos a ejemplificar como se podría hacer un CRUD dentro de nuestro servidor.

Para realizar la conexión aremos lo siguiente:


package conexionldap;
import com.novell.ldap.LDAPConnection;
import com.novell.ldap.LDAPException;
import java.io.UnsupportedEncodingException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* @author christian
* Clase de Conexion Servidor LDAP
*/

public class Conexion {

     private int ldapPort;
     private int ldapVersion;
     private LDAPConnection lc;
     private String login;
     private String ldapHost = "172.16.30.162";

     public Conexion() {
     }

     /**
     * Este método permite realizar la conexión al servidor de LDAP
     * Para el usuario manager
     * @param strManager
     * @param strPassword
     */

     public LDAPConnection ConexionManager(String strManager, String strPassword) {
          login = "cn=" + strManager + ",o=utpl,c=ec";
          System.out.println("" + login);
          ldapPort = LDAPConnection.DEFAULT_PORT;
          System.out.println("puerto: " + ldapPort);
          ldapVersion = LDAPConnection.LDAP_V3;
          System.out.println("Vesion: " + ldapVersion);
          System.out.println("HOST: " + ldapHost);
          try {
               lc = new LDAPConnection();
               lc.connect(ldapHost, ldapPort);
               System.out.println("====Conectado al Servidor LDAP====");
               lc.bind(ldapVersion, login, strPassword.getBytes("UTF8"));
               System.out.println("Autenticado en el servidor....");
          } catch (UnsupportedEncodingException ex) {
               Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE,null, ex);
          } catch (LDAPException ex) {
               Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE,null, ex);
          }
          return lc;
     }

     /**
     * Este metodo permite realizar la conexion al servidor de LDAP
     * Para el usuario manager
     * @param strUser
     * @param strPassword
     */

     public LDAPConnection ConexionUser(String strUser, String strPassword) {
          login = "uid=" + strUser + ",ou=People,o=utpl,c=ec";
          System.out.println("" + login);
          ldapPort = LDAPConnection.DEFAULT_PORT;
          System.out.println("puerto: " + ldapPort);
          ldapVersion = LDAPConnection.LDAP_V3;
          System.out.println("Vesion: " + ldapVersion);
          System.out.println("HOST: " + ldapHost);
          try {
               lc = new LDAPConnection();
               lc.connect(ldapHost, ldapPort);
               System.out.println("====Conectado al Servidor LDAP====");
               lc.bind(ldapVersion, login, strPassword.getBytes("UTF8"));
          } catch (UnsupportedEncodingException ex) {
               Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE,null, ex);
          } catch (LDAPException ex) {
               Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE,null, ex);
          }
          return lc;
     }

     public void CerrarConLDAP(LDAPConnection lc) {
          try {
               lc.disconnect();
               System.out.println("Conexion Cerrada Correctamente...");
          } catch (LDAPException ex) {
               Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE,null, ex);
          }

     }

}

Continuar:

Busqueda de usuarios en el servidor LDAP

CRUD de usuarios en el servidor LDAP

Descargar Proyecto JAVA – Netbeans

Categorías:Java, ldap, Linux, NetBeans Etiquetas: , ,

Leer un archivo properties desde un proyecto web + JSF

agosto 15, 2008 6 comentarios

Hola en este post voy a mostrar como se debe hacer para leer un archivo *.properties de java, puesto dentro de un proyecto web JSF, es interesante mencionar que la forma de llamar a estos archivos difiere un poco de como se lo hace comúnmente en un proyecto swing de escritorio común y corriente,  ya que en este solo se pone el path relativo desde el pack del proyecto y ya, pero en un proyecto web no funciona así, por eso he decidido mostrarlo a continuación, esta es la forma que descubrí para hacerlo y me funcionó, pero si existe una forma mejor o más optima de realizarlo res ruego comentarlo para así aprender todos algo más.

Dentro de nuestro proyecto web se nos crean comunmente las páginas jsp, y su contraparte en código java dentro de un paquete en la carpeta Source Packages, dentro de ese paquete vamos a colocar el archivo .properties, teniendo en cuenta que este se va a llamar igual que la clase que lo va a leer, (por ejemplo: En mi paquete tengo una clase llamada Reportes.java, dentro del mismo paquete pondré un archivo de propiedades llamado reportes.properties), el código para ller este archivo quedaria así:

  String nombrePROP = Reportes.class.getSimpleName().toLowerCase() + ".properties";
  Properties props = new Properties();
  props.load(Reportes.class.getResourceAsStream(nombrePROP));
  String strPathOrigen = props.getProperty("pathORI");
  String strPathXLS = props.getProperty("pathXLS");

Con esto ya podriamos leer las propiesades que se tenga dentro de nuestro archivo properties.

Ahora para poder poner las propiedades sacadas del archivos en variables globales, tendremos que hacer lo siguiente, fuera de cualquier método y dentro de la clase vamos a poner esto, como un método más.

 private static String strPathOrigen;
 private static String strPathXLS;

 static {
      try {
          String nombrePROP = Reportes.class.getSimpleName().toLowerCase() + ".properties";
          Properties props = new Properties();
          props.load(Reportes.class.getResourceAsStream(nombrePROP));
          strPathOrigen = props.getProperty("pathORI");
          strPathXLS = props.getProperty("pathXLS");
      } catch (IOException ex) {
          Logger.getLogger(Reportes.class.getName()).log(Level.SEVERE, null, ex);
      }
 }

Así todo lo que se saque del archivo properties se almacenará globalmente y se podrá usar dentro de toda la clase si es necesario.

Espero que les haya servido…

Saludos christmo…

Categorías:Java, JSF, NetBeans Etiquetas: ,

Descargar un archivo .XLS o .PDF con JSF

agosto 15, 2008 7 comentarios

Hola había tenido problemas al tratar de descargar un archivo desde el servidor, para que sea visualizado en los computadores clientes del sistema usando JSF, pero buscando un poco por allí pude encontrar como hacerlo, este método sirve para descargar archivos *.XLS y *.PDF con los que he probado, pero me imagino que debe funcionar para cualquier tipo de archivo, lo importante es reconocer que MIME Type tiene este archivo eso lo podremos encontrar en esta página.

File ficheroXLS = new File(strPathXLS);
FacesContext ctx = FacesContext.getCurrentInstance();
FileInputStream fis = new FileInputStream(ficheroXLS);
byte[] bytes = new byte[1000];
int read = 0;

if (!ctx.getResponseComplete()) {
   String fileName = ficheroXLS.getName();
   String contentType = "application/vnd.ms-excel";
   //String contentType = "application/pdf";
   HttpServletResponse response =
   (HttpServletResponse) ctx.getExternalContext().getResponse();

   response.setContentType(contentType);

   response.setHeader("Content-Disposition",
                      "attachment;filename=\"" + fileName + "\"");

   ServletOutputStream out = response.getOutputStream();

   while ((read = fis.read(bytes)) != -1) {
        out.write(bytes, 0, read);
   }

   out.flush();
   out.close();
   System.out.println("\nDescargado\n");
   ctx.responseComplete();
}

Saludos y espero que sea de utilidad para ustedes…

Categorías:Java, JSF, NetBeans Etiquetas: