1 package ecar.servlet.importaLocal;
2
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.FileNotFoundException;
6 import java.io.IOException;
7 import java.io.InputStream;
8 import java.util.ArrayList;
9 import java.util.Date;
10 import java.util.HashMap;
11 import java.util.List;
12 import java.util.Map;
13
14 import javax.servlet.http.HttpServletRequest;
15 import javax.servlet.http.HttpServletResponse;
16
17 import org.apache.poi.hpsf.IllegalPropertySetDataException;
18 import org.apache.poi.hssf.usermodel.HSSFCell;
19 import org.apache.poi.hssf.usermodel.HSSFRow;
20 import org.apache.poi.hssf.usermodel.HSSFSheet;
21 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
22
23 import ecar.dao.LocalItemDao;
24 import ecar.exception.ECARException;
25 import ecar.pojo.LocalGrupoLgp;
26 import ecar.pojo.LocalItemLit;
27 import ecar.util.Dominios;
28
29 public class ImportarLocalIBGE {
30
31
32 public String importaDadosIBGE(String xml, HttpServletRequest request,
33 HttpServletResponse response) throws IOException, ECARException {
34
35 String mensagem = "";
36 try {
37
38 File file = new File(new ecar.dao.ConfiguracaoDao(request).getConfiguracao().getRaizUpload()+"/cidades/cidades_ibge.xls");
39
40 InputStream myxls = new FileInputStream(file);
41
42
43 HSSFWorkbook wb = new HSSFWorkbook(myxls);
44
45 ImportarLocalIBGE importarLocalIBGE = new ImportarLocalIBGE();
46
47 importarLocalIBGE.importaDados(wb, request);
48
49
50
51 mensagem = "Locais importados com sucesso!";
52
53 } catch(IllegalPropertySetDataException ex) {
54
55 mensagem = "Erro: " + ex.getMessage();
56 throw new FileNotFoundException(ex.getMessage());
57 } catch(FileNotFoundException fex) {
58
59 mensagem = "Erro: " + fex.getMessage();
60 throw new FileNotFoundException(fex.getMessage());
61 } catch(ECARException ecarEx) {
62
63 mensagem = "Erro: " + ecarEx.getMessage();
64 throw new FileNotFoundException(ecarEx.getMessage());
65 }
66
67 return mensagem;
68 }
69
70
71 private void importaDados(HSSFWorkbook pWB, HttpServletRequest request)
72 throws ECARException {
73
74 LocalItemDao localItemDao = new LocalItemDao(request);
75
76
77 List<LocalItemLit> listaLocais = null;
78
79 Map<Long, List<LocalItemLit>> mapLocais = new HashMap<Long, List<LocalItemLit>>();
80
81
82 HSSFSheet sheet = pWB.getSheetAt(0);
83
84
85 int numeroLinhas = sheet.getPhysicalNumberOfRows();
86
87
88 HSSFRow row = null;
89 HSSFCell cell = null;
90
91 try {
92 for(int i = 4; i < numeroLinhas; i++) {
93
94
95 row = sheet.getRow(i);
96 listaLocais = new ArrayList<LocalItemLit>();
97
98 String linha ="";
99
100
101
102 LocalItemLit localItem = new LocalItemLit();
103 LocalGrupoLgp localGrupoLgp = new LocalGrupoLgp();
104 localGrupoLgp.setCodLgp(new Long(8));
105
106
107 int numeroColunas = 4;
108 Long codUF = null;
109
110
111
112
113 for(int j = 0; j < numeroColunas; j++) {
114
115 cell = row.getCell(Short.parseShort(""+j));
116
117
118 if(cell != null && cell.getCellType() != HSSFCell.CELL_TYPE_BLANK) {
119
120
121 if(!cell.getCellStyle().getWrapText()) {
122 switch (j) {
123
124
125 case 0:
126 linha += "-" + cell.toString();
127 break;
128
129
130 case 1:
131 Double db = new Double(cell.toString());
132 codUF = new Long(db.longValue());
133 linha += "-" + cell.toString();
134 break;
135
136
137 case 2:
138 linha += "-" + cell.toString();
139 localItem.setCodIbgeLit(cell.toString());
140 break;
141
142
143 case 3:
144 if(cell.toString().endsWith("*")) {
145 linha += "-" + cell.toString().substring(0,cell.toString().indexOf('*')-1);
146 localItem.setIdentificacaoLit(cell.toString().substring(0,cell.toString().indexOf('*')));
147 } else {
148 linha += "-" + cell.toString();
149 localItem.setIdentificacaoLit(cell.toString());
150 }
151 break;
152 }
153 }
154
155 }
156 }
157
158
159 if( localItem.getIdentificacaoLit() != null && !localItem.getIdentificacaoLit().equals("") &&
160 localItem.getCodIbgeLit() != null && !localItem.getCodIbgeLit().equals("") ) {
161
162
163 localItem.setLocalGrupoLgp(localGrupoLgp);
164 localItem.setIndAtivoLit(Dominios.ATIVO);
165 localItem.setDataInclusaoLit(new Date());
166
167
168 if(mapLocais.containsKey(codUF)) {
169 listaLocais = mapLocais.get(codUF);
170 listaLocais.add(localItem);
171 mapLocais.put(codUF, listaLocais);
172 } else {
173 listaLocais.add(localItem);
174 mapLocais.put(codUF, listaLocais);
175 }
176 }
177
178 }
179
180 localItemDao.salvar(mapLocais);
181
182 } catch(ECARException ecarEx) {
183 throw new ECARException(ecarEx.getMessage());
184 }
185 }
186
187 }