OpenCSV: trabajando con CSV de forma sencilla con Java

OpenCSV (http://opencsv.sourceforge.net ) es una librería Java que permite trabajar con CSVs de forma muy sencilla, tanto para leer como para escribirlos.

Ofrece estas clases:

· CSVReader: da Operaciones para leer el fichero CSV como una lista de arrays de String.

· CSVWriter: para escribir a un fichero CSV

· CsvToBean: lee el CSV y lo convierte a un Bean conforme a una MappingStrategy.

· MappingStrategy: es un interfaz que define el mapeo entre los datos CSV y la clase Java. Se implementa por HeaderColumnNameMappingStrategy, ColumnPositionMappingStrategy y HeaderColumnNameTranslateMappingStrategy

Para usar OpenCSV simplemente importamos su dependencia Maven:

Veamos algunos ejemplos:

Escribir un fichero CSV:


String csv = "/tmp/employee.csv";

CSVWriter writer = new CSVWriter(new FileWriter(csv));

String[] header= new String[]{"Name","Age","Salary","Address"};

writer.writeNext(header);

List<String[]> allData = new ArrayList<String[]>();

for(int i=0;i<3;i++)

{

String[] data = new String[]{"Blogger"+i,"20"+i,"20.0002",i+" World Wide Web"};

allData.add(data);

}

writer.writeAll(allData);

writer.close();

Leer un fichero CSV:

</pre>
<pre>CSVReader csvReader = new CSVReader(new FileReader("/tmp/employee.csv"));</pre>
<pre> List<String[]> allData = csvReader.readAll();</pre>
<pre> for(String[] data : allData)</pre>
<pre> {</pre>
<pre> for(String s : data)</pre>
<pre> {</pre>
<pre> System.out.print(s+";");</pre>
<pre> }</pre>
<pre> System.out.println();</pre>
<pre> }</pre>
<pre>csvReader.close();</pre>
<pre>

Leer un fichero CSV y mapearlo a un Bean:

</pre>
<pre>Map<String, String> mapping = new HashMap<String, String>();</pre>
<pre>mapping.put("Name", "name");</pre>
<pre>mapping.put("Age", "age");</pre>
<pre>mapping.put("Salary", "salary");</pre>
<pre>mapping.put("address", "Address");</pre>
<pre>HeaderColumnNameTranslateMappingStrategy<Employee> strategy = new HeaderColumnNameTranslateMappingStrategy<Employee>();</pre>
<pre>strategy.setType(Employee.class);</pre>
<pre>strategy.setColumnMapping(mapping);</pre>
<pre>CSVReader csvReader = new CSVReader(new FileReader("/tmp/employee.csv"));</pre>
<pre>CsvToBean<Employee> csvToBean = new CsvToBean<Employee>();</pre>
<pre>List<Employee> list = csvToBean.parse(strategy, csvReader);</pre>
<pre>for(Employee e : list)</pre>
<pre>{</pre>
<pre>System.out.println(e);</pre>
<pre>}</pre>
<pre>

Artículo original: http://kveeresham.blogspot.com.es/2014/09/csv-operations-using-opencsv.html

Los números de 2014

Los duendes de las estadísticas de WordPress.com prepararon un informe sobre el año 2014 de este blog.

Aquí hay un extracto:

El Museo del Louvre tiene 8.5 millones de visitantes por año. Este blog fue visto cerca de 490.000 veces en 2014. Si fuese una exposición en el Museo del Louvre, se precisarían alrededor de 21 días para que toda esa gente la visitase.

Haz click para ver el reporte completo.

Varios proyectos Raspberry Pi de 2014

Sin duda que la Raspberry ha sido una gran revolución y ha permitido que casi cualquiera pueda construir sus propios prototipos o experimentos…y si no veamos estos ejemplos:

Raspberry Eye

Esta cutre-versión de las Google Glass tiene un coste aproximado de 100 $ y usa 8 componentes, el Raspberry muestra información usando un espejo semitransparente.

Podéis verla en funcionamiento en el vídeo.

MeArm robot arm

Es un brazo robótico open-source controlado con una Raspberry que sale por 80 $ y consta de 7 componentes (incluidos 4 servos).

Juego arcade Vintage

Se basa en el emulador de juegos PiMame, algunos botones y un joystick…sólo se requiere eso, una Raspberry y mucho mucho tiempo!

Dashy: Un constructor de Dashboard sobre AngularJS

Dashy es un dashboard contruido sobre AngularJS que permite visualizar y combinar datos desde una gran cantidad de fuentes y construir un cuadro de mandos de forma muy sencilla.

Podéis ver una demo en http://dashy.tropicalseo.net (username: admin / password: pass)

Desde la que se pueden crear Dashboards a medida:

E ir añadiendo gadgets como estos:

Hasta construir dashboards como este (http://dashy.tropicalseo.net/#/dashboard/77) donde los gadgets pueden moverse

A nivel técnico Dashy:

· Desarrollado sobre AngularJS y SlimFramework

· Tema basado en Bootstrap

· Arquitectura REST

· Fácilmente adaptable

· Permite añadir nuevas fuentes de datos

· Documentación sobre cómo instalar, crear nuevos gadgets,…: http://dashy.tropicalseo.net/documentation/