miércoles, 27 de julio de 2011

COMUNICADO DE PRENSA - Denuncia por la realización del Plan Puebla - Panamá


miércoles 27 de julio de 2011
DENUNCIA PÚBLICA NACIONAL E INTERNACIONAL
En nombre del “desarrollo”, pretenden despojarnos de nuestros territorios” Nosotros y nosotras, representantes y autoridades comunitarias de Pojom, Bella Linda, Ixquisis, Nuevo San Mateo y demás comunidades aledañas del municipio de San Mateo Ixtatan, Huehuetenango, Guatemala, así como organizaciones sociales acompañantes, a la opinión pública nacional e internacional;

MANIFESTAMOS:
La zona norte de Huehuetenango habitada por los pueblos Q´anjob´al, Chuj y Akateko, desde el año 2005, en el marco de la implementación del Plan Puebla Panamá, ahora llamado Proyecto Mesoamerica, ha sido escenario de presiones permanentes por parte del gobierno y empresas nacionales y transnacionales para la construcción de Hidroeléctricas, minería, petróleo, transgénicos, monocultivos y megacarreteras.

En el caso especifico de los proyectos hidroeléctricos Pojom I, Pojom II y Bella Linda de San Mateo Ixtatan; las empresas Hidralia, Energía de capital español y Producciones de Desarrollo Hídrico –PDH-; en complicidad con el alcalde municipal; aprovechándose de la situación de pobreza y abandono en que se encuentran las 29 comunidades de esta región; por medio de engaños, manipulaciones, compra y soborno a líderes comunitarios, intimidaciones y enfrentamientos entre vecinos, promesas falsas de solución a sus necesidades como la falta de energía eléctrica, pretenden imponer la construcción de estos proyectos, violando el derecho a la consulta y el libre consentimiento, así como el derecho histórico y la libre determinación de los pueblos originarios sobre sus bienes naturales; manifestados en la consulta comunitaria realizada el 21 de mayo del año 2009 donde 20,780 personas rechazaron rotundamente la implementación
de megaproyectos en sus territorios.

El alcalde municipal, la empresa y sus asesores; han emprendido una campaña de descalificación e intimidación a los lideres y lideresas comunitarias, así como a las organizaciones defensoras de derechos humanos que acompañan este proceso, calificándolos como grupos desestabilizadores, “guerrilleros”, que obstaculizan el “desarrollo” y públicamente han proclamado que se instalarán los proyectos a la fuerza si es necesario, pese a la oposición de la gran mayoría de las comunidades. Ante esta situación;

DENUNCIAMOS Y EXIGIMOS:
La irresponsabilidad del señor alcalde municipal de San Mateo Ixtatan, las empresas nacionales y
transnacionales por no respetar las decisiones de las comunidades, y los espacios de decisión como el Consejo Municipal de Desarrollo –COMUDE- .

Que cesen las manipulaciones, intimidaciones y todo tipo de coacción para imponer los proyectos
hidroeléctricos.

A las personas que promueven estos proyectos, los responsabilizamos sobre cualquier acto violento y atentado contra la vida de los lideres y lideresas defensoras de Derechos Humanos.

Responsabilizamos también a las autoridades municipales y el gobierno central, en caso de que la
conflictividad social en la región se profundice, así como también las consecuencias de los discursos de confrontación y campaña de descalificación hacia defensores y defensoras de derechos humanos, que tienen como objetivo crear condiciones para justificar la criminalización de la lucha en defensa del territorio.

Respetar nuestro derecho legítimo a la consulta como mecanismo propio y el procedimiento iniciado después de la visita a las hidroeléctricas de la región, para plantear propuestas alternativos de solución a sus problemas, dándoles el tiempo necesario para su formulación sin ningún tipo de presión.

Que el gobierno central, frene la concesión de nuestros bienes naturales, anule las licencias autorizadas en la zona, sin previa información, ni consulta a las comunidades.

Pedimos a las instituciones y organizaciones nacionales e internacionales de Derechos Humanos, su solidaridad y acompañamiento a las comunidades para velar por la seguridad, integridad y la libre emisión del pensamiento en el proceso de búsqueda de soluciones pacificas a la problemática.

San Mateo Ixtatán, Huehuetenango, Guatemala, julio de 2011
Organizaciones comunitarias, COCODES, Alcaldes comunitarios del municipio de San Mateo Ixtatán, Asamblea de los pueblos de Huehuetenango por la Defensa del Territorio -ADH-; Consejo de los Pueblos de Occidente –CPO- Consejo Mayor Mam, Asociación CEIBA, Fundación Guillermo Toriello, ASEDE, CUC, ASECSA, Asociación Ixmucane, ASDITOJ.

miércoles, 8 de junio de 2011

1. Configuración de Beans en Spring

Cuando yo empecé con Spring lo miraba muy complicado y hasta cierto punto confuso, pero tirarme al agua directamente con un par de proyectos y googleando un poco he aprendido bastante. En el transcurso de mi aprendizaje en muy rara ocasión mirabla algo concreto, además empecé usando la versión 3 de Spring, la cual con la versión 2.5 varía considerablemente en muchas cosas. La ayuda que proporciona la página de Spring está bastante entendible.

En este post quiero mostrar como configurar nuestros beans con Spring. He utilizado Netbeans 6.9.1 como IDE de desarrollo y un proyecto de Maven para la gestión de dependencias.  La versión de Spring que he utilizado es las 3.0.2.RELEASE.

Para configurar spring se utiliza uno o varios archivos xml, en este caso he creado el archivo applicationContext.xml, la estructura inicial del xml debe de ser la siguiente:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- Definición de Beans -- >
</beans>

Configuración de un bean

Suponiendo que se tiene el siguiente bean:

public class BasicBean {

    private int id;
    private String name;
    private String description;

    public BasicBean() {
       this.id = 0;
       this.name = "";
       this.description = "";
    }

    public BasicBean(int id, String name, String description) {
       this.id = id;
       this.name = name;
       this.description = description;
    }

    @Override
    public String toString() {
       StringBuilder builder = new StringBuilder();
       builder.append("BasicBean(id={").append(this.id)
               .append("}, name={\"").append(this.name)
               .append("\"}, description={\"").append(this.description)
               .append("\"})");
       return builder.toString();
    }
    // setters and getters
}

Hay varias formas de configurar este bean dentro del xml anterior:

  • La forma normal, por decirlo de esa manera, es la siguiente:
    <bean name="basicBeanConf1" class="gt.edu.guatejug.springtutoriala.beans.BasicBean">
       <property name="id"><value>1</value></property>
       <property name="name"><value>Bean Name 1</value></property>
       <property name="description"><value>Description form bean with id 1</value></property>
    </bean>
    

    En donde name, es el nombre que identifica al bean y debe de ser único, en el atributo class, se le indica el tipo de dato del bean.

    Dentro del tag <property>, van todas las propiedades del bean que tienen setters y getters implementados, con el atributo type se le puede indicar el tipo de dato de la propiedad, si no se le ingresa, Spring automaticamente determina el tipo de dato y dentro de este tag, el tag <value> que indica el valor de la propiedad.

  • La forma corta de configurar un bean es la siguiente:
    <bean name="basicBeanConf2" class="gt.edu.guatejug.springtutoriala.beans.BasicBean">
       <property name="id" value="2" />
       <property name="name" value="Bean Name 2" />
       <property name="description" value="Description for bean with id 2" />
    </bean> 
    Ya no se utiliza el tag value, para poner el valor se utiliza como atributo del tag property.
  • Otra forma de configurar un bean es haciendo uso del equema p, esta forma de configurar beans aparece desde la versión 2.0.

    Primero que nada se debe de declarar el esquema en el nodo raiz del xml de la siguiente forma:

    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:p="http://www.springframework.org/schema/p"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    <!-- Definición de Beans -- >
    </beans>

    Teniendo hecho lo anterior, para configurar un bean podemos hacer lo siguiente:

    <bean name="basicBeanConf3" class="gt.edu.guatejug.springtutoriala.beans.BasicBean"
         p:id="3" p:name="Bean Name 3" p:description="Description for bean with id 3"/>
    
    Todas las declaraciones se hacen desde que se declara el bean sin necesidad de utilizar otros tag.

    Los atributos del bean se mandan a llamar despues de p: y son los mismos como se declaran en el bean.
  • Tambien se puede llamar a un constructor cuando se crea un bean, se hace de la siguiente forma:

    <bean name="basicBeanConf4" class="gt.edu.guatejug.springtutoriala.beans.BasicBean">
            <constructor-arg>
                    <value>4</value>
            </constructor-arg>
            <constructor-arg>
                    <value>Bean Name 4</value>
            </constructor-arg>
            <constructor-arg>
                    <value>Description for bean with id 4</value>
            </constructor-arg>
    </bean>
    
    Spring automaticamente, detectar el constructor adecuado conforme la configuración que se hizo. En otro post explicaré mas a detalles la llamada a los constructures de un bean.

Corriendo el demo

Basta de configuraciones, ahora para probar lo que se explicó anteriormente he utilizado una clase con el metodo main, con el siguiente código:
public static void main( String[] args ){
 ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

 BasicBean basicBean = (BasicBean) context.getBean("basicBeanConf1");
 System.out.println(basicBean.toString());

 basicBean = (BasicBean) context.getBean("basicBeanConf2");
 System.out.println(basicBean.toString());

 basicBean = (BasicBean) context.getBean("basicBeanConf3");
 System.out.println(basicBean.toString());

 basicBean = (BasicBean) context.getBean("basicBeanConf4");
 System.out.println(basicBean.toString());

}

En la línea 2, se inicializa indicando el archivo xml que contiene los beans. Esto varía dependiendo el contexto en el que se está utilizando Spring.

Al ejecutar el código aparece en consola lo siguiente:
BasicBean(id={1}, name={"Bean Name 1"}, description={"Description for bean with id 1"})
BasicBean(id={2}, name={"Bean Name 2"}, description={"Description for bean with id 2"})
BasicBean(id={3}, name={"Bean Name 3"}, description={"Description for bean with id 3"})
BasicBean(id={4}, name={"Bean Name 4"}, description={"Description for bean with id 4"})

Esto es solo un pequeño ejemplo de como configurar beans con Spring 3. Para descargar el código fuente de este ejemplo, pulse AQUÍ.

miércoles, 1 de junio de 2011

Reunión No. 7 de Guatejug

Bueno, ya vamos por la séptima reunión de Guatejug y en cada reunión gente nueva llega y eso indica que se va por buen camino, se han hablado de muchos temas bastante interesantes, ahora toca hablar sobre:

  • Reporteadores en Java
  • JPA

En esta reunión se definen las próximas charlas.

lunes, 30 de mayo de 2011

Interfaz “java.util.List”

Esta interfaz se utiliza en muchas ocasiones cuando se programa en Java, independientemente que se esté desarrollando en mas de alguna ocasión se es utilizada.

Ésta interfaz tiene muchas características y también las clases que la implementan, ya se tienen clases que algún comportamieno en particular y también se puede implementar una lista haciendo uso de la interfaz y/o heredando el comportamiento de otras clases y hacer cambios conforme a ciertos requerimientos.

A diferencia de java.util.Set, java.util.List permite el ingreso de elementos duplicados evaluados con lo funcion equals().

En definicion, una lista es una colección ordenada de elementos, también conocida como “secuencia”, las clases que implementan ésta interfaz tiene el control de la posición en donde están insertado los elementos.

Las clases que implementan esta interfaz son las siguientes:
  • AbstractList

    Esta clase abstracta provee la estructura de una lista, se utiliza para realizar una lista de acceso aleatorio (como un arreglo).

    Se deben de implementar, obligatoriamente, los métodos get (int) y size (). Pero, para implementar una lista modificable se deben de implementar, adicionalmente, los métodos set(int, E). Y si la lista es de tipo variable se deben de implementar los métodos add(int, E) y remove(int).

    No se debe de proveer una implementación para iterar, ya que en está clase ya está implementado.
  • AbstractSequencialList

    Esta clase abstracta que hereda de la clase AbstractList, varia en que el acceso ya no es aleatorio si no que es un acceso secuencial (como un LinkedList).

    Además, obligatoriamente, se debe implementar el iterador de la lista, especificamente los métodos ListIterator(E) y size(). Para una lista no modificable, se debe de implementar los métodos hastNext, next, hasPrevious, previous e index.

    Para una lista modificable, se debe implementar el método set(int, E). Y para una lista de tamaño variable, se debe de implementar los métodos remove y add.
  • ArrayList

    Hereda de la clase AbstractList, es una implementación de una lista de tamaño variable. Permite todo tipo de elementos e incluso valores nulos, es casi equivalente a la clase Vector pero con la diferencia que ArrayList no es sincronizada (lo cual se debe de tener cuidado a la hora de trabajar concurrentemente).

    Tiene una capacidad de almacenamiento, con cada elemento ingresado la capacidad crece automaticamente.
  • AttributeList

    Hereda de la clase ArrayList, se encuentra dentro del paquete javax.management, se diferencia de la clase padre en que solo permite elementos de tipo javax.management.Attribute que es una implementación de un bean de manera general.
  • CopyOnWriteArrayList

    Esta clase es muy eficiente cuando se trabaja concurrentemente. Los métodos para cambiar la lista no están suportados (remove, set y add) por lo cual se genera una excepción.

    Permite todo tipo de elementos incluidos valores nulos.
  • LinkedList

    Hereda de la clase AbstractSequencialList. Permite todo tipo de elementos incluidos valores nulos, provee los métodos para obtener (get), remover (remove) e insertar (insert) elementos al inicio y al final de la lista.

    Estas operaciones permiten vincular listas que pueden ser utilizada como pilas, colas y doble listas.
  • RoleList

    Hereda de la clase ArrayList, es parecida a la clase AttributeList, con la diferencia que permite solo elementos de tipo javax.management.relation.Role, que encapsulan un nombre y un listado de relaciones.
  • RoleUnresolvedList

    Parecida a la anterior, pero permite solo elementos de tipo javax.management.relation.RoleUnresolved, que tiene una funcionalidad parecida a la clase Role.
  • Stack

    Es una lista que representa el comportamiento de una pila (LIFO) y hereda de la clase Vector pero tiene otros métodos que permiten su comportamiento.
  • Vector

    Ésta clase se parece mucho a ArrayList con la diferencia que está sincronizada. Esta clase actualmente se encuentra obsoleta y para manejar la sincronización se recomienda usar ArrayList haciendo uso de Collection.synchronizedList.

Ésto es un pequeño resumen y definición de la interface java.util.List, si me he confundido en algo, se agradecerá hacerlo saber.

Referencias


martes, 29 de marzo de 2011

GuateJUG - Reunión No. 3

Siguiendo el buen paso, se realizará la tercera reunión de GuateJUG, en la imagen se muestra la información.