/Prototipo/PrototipoMemoria/src/java/memoria/dataAccess/dao/ExcelDao.java

http://prototipomemoria.googlecode.com/ · Java · 99 lines · 75 code · 12 blank · 12 comment · 5 complexity · 667e86c6c108ff53989c6b4fa44ef288 MD5 · raw file

  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. package memoria.dataAccess.dao;
  6. import java.io.IOException;
  7. import java.util.List;
  8. import java.io.File;
  9. import java.util.ArrayList;
  10. import java.util.Date;
  11. import java.util.Map;
  12. import java.util.logging.Level;
  13. import java.util.logging.Logger;
  14. import jxl.*;
  15. import jxl.read.biff.BiffException;
  16. import memoria.commons.dataAccess.query.QueryParams;
  17. import memoria.commons.dataAccess.query.VisualQuery;
  18. import memoria.commons.entities.EntidadPunto;
  19. import memoria.commons.entities.Escuela;
  20. import memoria.commons.structures.AbstractGeographicElement;
  21. import memoria.commons.structures.coordinates.Coordinate;
  22. import memoria.commons.structures.GeoReferenced;
  23. import memoria.commons.structures.Point;
  24. import memoria.commons.structures.coordinates.LatLonCoordinate;
  25. import memoria.dataAccess.IRepositoryDao;
  26. import memoria.dataAccess.SpatialDTO;
  27. import memoria.utils.coordinate.*;
  28. /**
  29. *
  30. * @author diego
  31. */
  32. public class ExcelDao implements IRepositoryDao {
  33. //Patron Singleton
  34. private static ExcelDao instance;
  35. public static IRepositoryDao getInstance(){
  36. if (instance == null)
  37. instance = new ExcelDao();
  38. return instance;
  39. }
  40. private String fileUrl;
  41. public List<GeoReferenced> getData(VisualQuery params) {
  42. try {
  43. Workbook workbook = Workbook.getWorkbook(new File(fileUrl));
  44. Sheet sheet = workbook.getSheet(0);
  45. List<GeoReferenced> results = new ArrayList<GeoReferenced>();
  46. for(int i = 1; i <sheet.getRows(); i++){
  47. EntidadPunto entidadPunto = null;
  48. try {
  49. Cell id = sheet.getCell(0, i);
  50. Cell lat = sheet.getCell(1, i);
  51. Cell lon = sheet.getCell(2, i);
  52. String nombre = "";
  53. try {
  54. nombre = sheet.getCell(3, i).getContents();
  55. } catch (Exception e) {
  56. //Logger.getLogger(ExcelDao.class.getName()).log(Level.SEVERE, "Error al leer nombre", e);
  57. }
  58. String descripcion = "";
  59. try {
  60. descripcion = sheet.getCell(4, i).getContents();
  61. } catch (Exception e) {
  62. //Logger.getLogger(ExcelDao.class.getName()).log(Level.SEVERE, "Error al leer descripcion", e);
  63. }
  64. double[] latlong = CoordinateConversion.utm2LatLon("21 A " + lat.getContents() + " " + lon.getContents());
  65. LatLonCoordinate coordenadas = new LatLonCoordinate(latlong[0], latlong[1]);
  66. //System.out.println(latlong[0]+";"+latlong[1]);
  67. Point pi = new Point(Long.parseLong(id.getContents()), coordenadas);
  68. entidadPunto = new EntidadPunto( nombre, descripcion,pi);
  69. results.add(entidadPunto);
  70. } catch (Exception e) {
  71. Logger.getLogger(ExcelDao.class.getName()).log(Level.SEVERE, "Error al leer entidad", e);
  72. }
  73. }
  74. if ( params.getFiltro() != null)
  75. return params.getFiltro().filter(results);
  76. return results;
  77. } catch (IOException ex) {
  78. Logger.getLogger(ExcelDao.class.getName()).log(Level.SEVERE, null, ex);
  79. } catch (BiffException ex) {
  80. Logger.getLogger(ExcelDao.class.getName()).log(Level.SEVERE, null, ex);
  81. }
  82. return null;
  83. }
  84. public void setInitParams(Map<String, String> params) {
  85. this.fileUrl = params.get("URL");
  86. }
  87. }