Eclipse y Team Foundation Server

Junio 22, 2010 :: Posted by - Emilio Torrens :: Category - , , ,

image Que estés usando Eclipse para unos proyectos y Visual Studio para otros no es escusa para no usar Team Foundation Server para el seguimiento de los proyectos y como Repositorio de Código ya que puedes usar “Microsoft Visual Studio Team Explorer Everywhere 2010†con Eclipse.

Para instalarlo en Eclipse solo tienes que seguir estos pasos:

  • Descargarlo desde aquí, descargas el archivo (TFSEclipsePlugin-UpdateSiteArchive-10.0.0.zip)
  • En Eclipse vas a Help/Install New Software
  • Opción Add, y Opción Archive donde  seleccionas el archivo zip que has descargado.
  • Marcas la opción “Team Explorer Everywhereâ€
  • Next, next y reinicias Eclipse

Listo, ya lo tienes instalado:)

En el menú contextual de los proyectos te aparecerá una nueva opción “Teamâ€, para agregar el proyecto la primera vez utilizas la opción “Shareâ€, una vez agregado tendrás el mismo menú que en Visual Studio

La primera vez que agregues un proyecto te pedirá un serial, marcas la opción “Use a full-featured trial version of Microsoft Visual Studio Team Explorer Everywhereâ€

Programando para Android

Junio 02, 2010 :: Posted by - Emilio Torrens :: Category - , ,

Un par de cositas a tener en cuenta cuando programamos para Android con el Eclipse.

Se te generara una clase que hereda de Activity que es donde esta el meollo, allí tenemos acceso a todos los objetos de la aplicación y es donde pondremos el código.

   1: public class MyAppActivity extends Activity {

   2:     /** Called when the activity is first created. */       

   3:     

   4:     @Override

   5:     public void onCreate(Bundle savedInstanceState) {

   6:         

   7:         super.onCreate(savedInstanceState);

   8:         setContentView(R.layout.main);

   9:     }

  10: }

Los nombres (formularios, imágenes, controles en los formularios … ) son únicos para toda la aplicación, se genera una clase R.java donde tendrás campos estáticos con todos los Ids agrupados en clases:

  • layout, los ids de los formularios
  • string, los ids de los recursos
  • drawable, los ids de las imágenes
  • id, los ids de los controles.

Para cargar los formularios usaremos el método setContentView pasándole el id del formulario que tenemos en la clase R.java

   1: private void OnClickForm2() {

   2:     setContentView(R.layout.form2);

   3: }

Para acceder a los controles utilizaremos el método FindViewById, usando los ids de la clase R.java, nos devolverá un objeto y hacemos cast al control.

   1: TextView textoCabecera = (TextView) findViewById(R.id.TextoCabecera);

Para capturar los eventos en los controles tienes que hacerlo después de cargar el layout, accediendo al control por el Id.

   1: setContentView(R.layout.main);                

   2:  

   3: try

   4: {                

   5:     this.Boton1 = (Button)this.findViewById(R.id.Boton1);

   6:     this.Boton1.setOnClickListener(new OnClickListener(){

   7:         @Override

   8:         public void onClick(View v) {

   9:             OnClickBoton1();

  10:         }

  11:       });

  12:         

  13:     this.Boton2 = (Button)this.findViewById(R.id.Boton2);

  14:     this.Boton2.setOnClickListener(new OnClickListener(){

  15:         @Override

  16:         public void onClick(View v) {

  17:             OnClickBoton2();

  18:         }

  19:       });

  20: }

  21: catch(Exception ex)

  22: {

  23:     

  24: }

Y por ultimo, enviar notificaciones al usuario, aquí dejo un método para eso, lo único a tener en cuenta es el NOTIF_ID que es global y se incrementa después de cada notificación.

   1: public void Notify(String title, String text, int iconID)

   2: {

   3:     String ns = Context.NOTIFICATION_SERVICE;

   4:     NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

   5:     int icon = iconID;

   6:     CharSequence tickerText = title;

   7:     long when = System.currentTimeMillis();

   8:  

   9:     Notification notification = new Notification(icon, tickerText, when);

  10:     

  11:     Context context = getApplicationContext();

  12:     CharSequence contentTitle = title;

  13:     CharSequence contentText = text;

  14:     Intent notificationIntent = new Intent(this, WindConditionsActivity.class);

  15:     PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

  16:  

  17:     notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

  18:             

  19:     mNotificationManager.notify(NOTIF_ID, notification);

  20:     

  21:     NOTIF_ID++;

  22: }

Ahora no tengo mucho tiempo para programar Android, pero bueno a medida que descubra cosas nuevas las iré publicando :)

Android y Eclipse

Mayo 21, 2010 :: Posted by - Emilio Torrens :: Category - , ,

Desarrollar aplicaciones para Android con Eclipse es relativamente sencillo, solo hay que preparar el entorno y leer un poco aquí , sigue estos pasos para preparar el entorno.

1-  Necesitas el Eclipse, si no lo tienes bájalo desde aquí (Yo uso Eclipse IDE for Java EE Developers)
2-  Necesitas el SDK de Android, bájalo desde aquí
3-  Necesitas el Plugin de Android para Eclipse, mas abajo pone como instalarlo.

image Para instalar el SDK de Android, descomprimes lo que te hayas bajado directamente donde quieras que este el SDK (ya que el Manager te bajara allí los archivos) y ejecutas el SDK Setup.exe, vas a Paquetes Disponibles le das a Actualizar Todo y listo.

El único problema que me encontré en este paso fue con la conexión https, si te falla tienes que ir a Settins y marcar “Force https// … Sourcesâ€.

Para instalar el plugin en Eclipse, en Eclipse vas a “Help/Install New Software†y le das a “Add†una vez allí en Nombre pon el que quieras y en location:
https://dl-ssl.google.com/android/eclipse/ aceptas, instalas todo y listo.

Una vez instalado el plugin solo hay que configurar el path donde tienes el SDK, para eso vas a “Windows/Preferences/Androidâ€, le pones el path donde tienes el SDK y le das a “Applyâ€.

Y ya esta, lo tienes listo, en “File/New/Other†ya te aparecerá la opción para crear nuevos Proyectos de Android.

image image image image

XFire y Eclipse

Febrero 16, 2010 :: Posted by - Emilio Torrens :: Category - , ,

XFire te permite generar el código necesario para un cliente de webservice a partir de su WSDL

image  Para usarlo con Eclipse debes instalar el Plugin, para eso vas al menú Help/Install New Software le das a Add en Name le pones XFire y en location le pones esta dirección “http://dist.codehaus.org/xfire/update/â€, Ok, Finish y ya lo tienes instalado.

image  Para usarlo vas al proyecto, New/Other, buscas el Wizard de XFire y allí solo tienes que poner la dirección del WSDL y donde quieres que te genere el código y listo.

Con estos pocos pasos ya tienes todas las clases necesarias para acatar el servicio, además con XFire no he tenido problemas con los WSDL de ningún servicio.

Es importante que añadas commons-httpclient-3.0.jar y commons-codec.jar al proyecto ya que XFire las necesita.

Generando clases en Java desde WSDL autogenerados (asmx)

Abril 14, 2009 :: Posted by - Emilio Torrens :: Category - ,

Tenemos un par de Clientes que usan Java y tienen que consumir los servicios web de nuestras aplicaciones (asmx), hemos tenido muchos problemas generando las clases desde Eclipse o el Intellij IDEA desde el wsdl autogenerado de los asmx.

Al final hemos encontrado la solución, usar el XFIRE, usando ese framework de Java no hemos tenido problemas

Aquí hay un quickstart de cómo utilizar el plugin en el Eclipse:

http://xfire.codehaus.org/Eclipse+Plugin

Documentación:

http://xfire.codehaus.org/User’s+Guide

Hay una nueva versión que se llama CXF

http://cxf.apache.org/

Aunque no la hemos probado, así que para ir sobre seguro usa o recomienda usar XFIRE

Un poco de Java

Enero 27, 2009 :: Posted by - Emilio Torrens :: Category -

Tenia algunos problemas con un cliente que consumía un servicio mío mandando XML por HTTP-POST, el IIS bloqueaba sus peticiones y no había manera de ver porque, así que me hice un cliente exacto al suyo para poder debugear el tema.

Por si os sirve, aquí os dejo el código Java:

import java.io.*;
import java.net.*;
import java.util.Properties;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;

public static String POST(String sURL, String sData)
   {
        try
        {
            URL url = new URL(sURL);
            URLConnection urlc = url.openConnection();
            urlc.setRequestProperty("Content-Type",    "application/x-www-form-urlencoded");
            urlc.setDoOutput(true);
            OutputStream os = urlc.getOutputStream();

            byte[] postData = sData.getBytes();
            os.write(postData);

            os.flush();
            os.close();

            InputStream is = urlc.getInputStream();

            return parseISToString(is);

        }
        catch(IOException ex)
        {
            return ex.getMessage();
        }
   }

   public static String parseISToString(java.io.InputStream is)
   {

        java.io.DataInputStream din = new java.io.DataInputStream(is);
        StringBuffer sb = new StringBuffer();

        try
        {
            String line = null;
            while((line=din.readLine()) != null)
            {
                sb.append(line+"\n");
            }
            return sb.toString();
        }
        catch(Exception ex)
        {
            return ex.getMessage();
        }

   }