Buscando artículos sobre "Java"
9-marzo-2013
admin

MongoDB, Spark y FreeMarker

Ejemplo de uso de MongoDB, Spark y FreeMarker. Además, se utilizará Maven para incluir las dependencias necesarias para ello.

En primer lugar se necesita el driver de Java, ya que es la tecnología sobre la que está implementado el framework Spark y será el encargado de interactuar o explotar la base de datos.

              
	org.mongodb	
	mongo-java-driver
	2.10.1      
    

Un ejemplo de uso de este driver puede ser:

        MongoClient client = new MongoClient( new ServerAddress("localhost", 27017));
        DB data = client.getDB("course");
        DBCollection col = data.getCollection("hello");
        DBObject doc = col.findOne();

Spark Web Application Framework

     
            spark
            spark
            0.9.9.4-SNAPSHOT
     
      
	import static spark.Spark.*;
	import spark.*;

	public class HelloWorld {

	   public static void main(String[] args) {
	      	get(new Route("/hello") {
        		 @Override
		         public Object handle(Request request, Response response) {
        		    return "Hello World!";
	        	 }
      		});
	   }
	}

Para probarlo si estás usando IntelliJ IDEA basta lanzar con run y luego en el navegador http://localhost:4567/hello.


Uso de plantillas con Freemarker

   
      org.freemarker
      freemarker
      [2.3.19,2.4)
   

Ejemplo de plantilla. Se puede observar que hay una variable ${name}. Ésta variable se rellenará mediante el framework de Spark.

< html >
< head >
  < title >Welcome!

< body >
  < h1 >Hello ${name}


        final Configuration configuration = new Configuration();
	configuration.setClassForTemplateLoading(HelloWorldSparkFreemarkerStyle.class, "/");
	Spark.get(new Route("/") {
            
		@Override
		public Object handle(final Request request, final Response response) {
			StringWriter writer = new StringWriter();
			try {
				Template helloTemplate = configuration.getTemplate("hello.ftl");
				Map helloMap = new HashMap();
				helloMap.put("name", "Freemarker");
				helloTemplate.process(helloMap, writer);
                
			} catch (Exception e) {
				halt(500);
				e.printStackTrace();
			}
			return writer;
		}
        });

Podría utilizarse el acceso a la BD mediante el driver de java para obtener cualquier información y posteriormente poder mostrarla en una jsp mediante un plantilla freemaker.


25-febrero-2013
admin

Depurar con Logs en Android

Android proporciona un API de logging (la clase android.util.Log).

En Android, todos los mensajes de log llevarán asociada la siguiente información:
– Fecha/Hora del mensaje.
– Criticidad. Nivel de gravedad del mensaje (se detalla más adelante).
– PID. Código interno del proceso que ha introducido el mensaje.
– Tag. Etiqueta identificativa del mensaje (se detalla más adelante).
– Mensaje. El texto completo del mensaje.

Los mensajes de log se van a clasificar por su criticidad:
– Error
– Warning
– Info
– Debug
– Verbose

public class LogsAndroid extends Activity {
 
    private static final String LOGS = "LogsAppAndroid";
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        Log.e(LOGS , "Mensaje de error");
        Log.w(LOGS , "Mensaje de warning");
        Log.i(LOGS , "Mensaje de información");
        Log.d(LOGS , "Mensaje de depuración");
        Log.v(LOGS , "Mensaje de verbose");
    }
}

Para ver los mensajes de log hay que ir a la vista llamada LogCat en el eclipse.

24-febrero-2013
admin

Evitar reinicio automático de la activity

Cuando por ejemplo se gira la pantalla del dispositivo android se reinicia la actividad. Esto pasa porque el método onCreate es llamado por defecto, según el ciclo de la vida de una aplicación Android. Podemos evitar que ello ocurra, colocando la siguiente etiqueta dentro del fichero Android Manifest.xml de nuestra aplicación (en la etiqueta activity de nuestra actividad):

Para verisones anteriores al API 13
android:configChanges=»orientation|keyboard|keyboardHidden»

Para versiones posteriores al API 13
android:configChanges=»orientation|keyboard|keyboardHidden|screenSize»

23-febrero-2013
admin

Comprobar conexión a internet en un dispositivo Android

En primer lugar se deben dar permisos para conectarse a internet y para consultar el estado de la conexión en el Manifest.



A continuación se puede realizar la comprobación tal que así:

ConnectivityManager cm = (ConnectivityManager) 
                       this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
     //Hay conexión.
}else{
     //No hay conexión.
}

Esto es bastante útil cuando se usa por ejemplo el componente WebView para cargar alguna página web.

23-enero-2013
admin

String vs StringBuffer vs StringBuilder

En Java tenemos distintas formas para realizar la concatenación de las cadenas de texto (tipo String). Las tres formas más habituales son: el uso del operador de suma, usaar StringBuffer y usar StringBuilder.

El operador suma está sobrecargado en la clase String, y es la forma más básica de concatenar dos cadenas de caracteres. Al concatener dos String con el operador suma, se crea un nuevo String resultante, con lo que constantemente estamos creando objetos nuevos. Lo cuál hace que no se la mejor opción.

String var1 = "Hola, ";
String var2 = "mundo";
String holamundo = var1 + var2;

La clase StringBuffer es una secuencia de caracteres mutable; es decir, es una clase que nos permite concatenar String de una manera simple y muy eficiente.
Los métodos de StringBuffer son sincronizados, por lo cual la podemos usar de manera segura en un ambiente de multihilos.

StringBuffer buffer = new StringBuffer();
buffer.append("Hola, ");
buffer.append("mundo");
String holamundo = buffer.toString();

La clase StringBuilder es una clase que aparece con el JDK 5, y es la clase recomendada para la concatenación de String en la mayoría de los casos. Su uso es idéntico al StringBuffer (tienen el mismo API). Los métodos de StringBuilder no son sincronizados, por lo que tiene mejor rendimiento que StringBuffer cuando solo hay un único hilo.

StringBuilder builder = new StringBuilder();
builder.append("Hola, ");
builder.append("mundo");
String holamundo = builder.toString();

Fuente

16-enero-2013
admin

Consultar un Servicio Web en Android utilizando la librería KSOAP

Se va a utilizar para el ejemplo el servicio web implementado en la entrada anterior (Recordar que se creó un servicio web con wsdl en php utilizando la librería nusoap).

1 – Descargar la librería Ksoap aquí.

2 – Copiarla en la carpeta libs de tu proyecto Android. Añadirla al «Build path» y seleccionarla en “Order and Export”.

3 – Ahora ya se puede utilizar. Y esto sería un ejemplo de utilización:

    private static final String SOAP_ACTION = "getNombre";
    private static final String METHOD_NAME = "getNombre";
    private static final String NAMESPACE = "http://disastercode.com.es/ws/nusoap";
    private static final String URL = "http://disastercode.com.es/ws/servicioWsdl.php?wsdl";
        
    private void pruebaWS(){
    	String res = "";
    	SoapObject soapclient = new SoapObject(NAMESPACE,METHOD_NAME);
    	soapclient.addProperty("dni","99999999N");
    	 
    	SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    	envelope.setOutputSoapObject(soapclient);
    	HttpTransportSE httpTransportSE = new HttpTransportSE(URL);
    	
    	try {
    		httpTransportSE.call(SOAP_ACTION, envelope);
    		res = envelope.getResponse().toString();
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    	//TODO en la variable res tienes el valor devuelto por el ws
    }

14-noviembre-2012
admin

Plugin para el eclipse que genera aplicación automaticamente

Sotilizator

En GitHub he creado un repositorio donde comparto un plugin para el eclipse que he implementado y que facilita el desarrollo aplicaciones J2EE https://github.com/roberto-pf/Sotilizator. El plugin consigue implementar toda la lógica de negocio de una aplicación que utiliza: Struts + Spring + hibernate + JQuery.

Qué es el Sotilizator?
Se trata de un plugin para el eclipse (probado en su versión Helios). La finalidad de este plugin es la creación de una aplicación web de forma automática y con unas determinadas características a partir de un esquema de una Base de Datos.
Estas características son:
1 – La aplicación resultante estará realizada empleando un MVC en J2EE con Struts 1.3, inyección de dependencias con Spring 3.0, hibernate 3.2.6 para el acceso a datos para la parte de la lógica de negocio. Mientras que para la parte de la vista se empleará jquery junto a las tag-libraries de struts. Además, de DWR para interactuar con el servidor desde el cliente.
2 – Se generará un fichero pom.xml para que a través de MAVEN se puedan obtener las dependencias.
3 – Se generará un fichero build.xml donde estarán las tareas Ant necesarias para el despliegue de la aplicación en Tomcat, JBoss y OAS.
4 – La aplicación resultante será capaz de construir las tareas CRUD de las tablas automáticamente. A partir del esquema de la BD obtendrá los campos y su tipo.
5 – Las capas que contendrá la aplicación son las siguientes:

        VO: Objetos que hace referencias a las tablas.
	DAO: Capa que realiza el acceso a la BD. 
	Manager: Capa sobre la que se aplican las transacciones.
	Delegate: Capa que se encarga de relacionar la parte de la vista 
                  con la lógica de negocio.
	Action: Aquí deberán ir las diferentes acciones que luego el 
                controlador mapea para interactuar con la vista.

Esquema de la lógica de negocio

Nota: Para más información consultar manuales del usuario y del programador: https://github.com/roberto-pf/Sotilizator/tree/master/Readme

2-mayo-2012
admin

Utilizar Print When Expresion de iReports

Supongamos que tenemos una plantilla de un informe realizada con ireport. Y que hay un label cuyo contenido no queremos que se muestre siempre (p.e. solamente cuando el valor de un parámetro, llamado campo, pasado al informe contiene la cadena «prueba»).


Lo único que hay que hacer es utilizar la propiedad Print When Expresion de la etiqueta label. Colocando en ella lo siguiente:

$P{campo}.equals("prueba")?Boolean.TRUE:Boolean.FALSE


1-mayo-2012
admin

Paginación de informes con iReport (Evaluation Time)

Supongamos que tenemos un informe realizado con ireport que nos genera un documento de 100 páginas. Y queremos que en el pie de página de cada hoja nos vaya marcando el número de página de la siguiente manera:

Página 1 de 100
Página 2 de 100
Página 3 de 100
….
Página 100 de 100


La solución seria utilizar una variable que nos proporciona el propio ireport: $V{PAGE_NUMBER}. Y jugar con el ámbito de ejecución (propiedad Evaluation Time).


Así se podría hacer:
– Label con el contenido «Página »
– Text con el valor «$V{PAGE_NUMBER}» (poniendo el campo Evaluation Time en now)
– Label con el contenido » de »
– Text con el valor «$V{PAGE_NUMBER}» (poniendo el campo Evaluation Time en report)


21-abril-2012
admin

Ordenar un HashMap

Ejemplo de ordenación de un Map mediante keys. Tener en cuenta que las claves no deben ser repetidas, en otro caso este ejemplo no funcionará correctamente.

Map miMap= new HashMap();
miMap.put("2", "valor2");
miMap.put("1", "valor1");
miMap.put("4", "valor4");
miMap.put("3", "valor3");

Map mapOrdenado = new TreeMap(miMap);


Páginas:«12345»

Categorias

Linkedin