Pessoal,
Estou com um problema de null pointer, só que não sei o pq… não sei se é por causa da quantidade de registros… pois com menos ele roda…
package br.com.simcard;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import br.com.simcard.dao.PlanilhaGateDAO;
public class VerificarRegistroGate {
private static final int LINHA_INICIAL = 1;
private Workbook workbook;
private Sheet sheet;
public Date transformaData(String data) {
Date retorno = null;
SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
try {
retorno = formatador.parse(data);
} catch (ParseException ex) {
throw new RuntimeException(ex);
}
return retorno;
}
// CONTADOR DE REGISTROS
public int NumRegistros() {
int numReg = 0;
int soma = 0;
int linhas = sheet.getRows();
int pastas = workbook.getNumberOfSheets();
for (int i = 0; i < pastas; i++) {
this.sheet = workbook.getSheet(i);
linhas = sheet.getRows();
for (int j = LINHA_INICIAL; j < linhas; j++) {
soma = (linhas + numReg) - 1;
}
numReg = soma;
System.out.println(numReg);
}
return numReg;
}
public VerificarRegistroGate(File vr, String login) throws Exception,
IOException, BiffException, ClassNotFoundException, SQLException {
this.workbook = Workbook.getWorkbook(vr);
this.sheet = workbook.getSheet(0);
VerificadorGate(vr, login);
}
public void VerificadorGate(File vr, String login) {
int nuLinhas = sheet.getRows();
PlanilhaGateDAO dao = new PlanilhaGateDAO();
NomeArquivo nomeArq = new NomeArquivo();
nomeArq.setNome(vr.toString());
Calendar horaAtual = Calendar.getInstance();
horaAtual.set(Calendar.MILLISECOND, 0);
int QtdeErro = 0;
int QtdeAlt = 0;
int CodProc = 0;
// CONTA NÚMERO DE REGISTROS
nuLinhas = NumRegistros();
// INSERE PROCESSAMENTO
dao.insereProcessamento(21, (nuLinhas), login, nomeArq.getNome(),
horaAtual);
CodProc = dao.CodigoProcessamento();
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
this.sheet = workbook.getSheet(i);
nuLinhas = sheet.getRows();
System.out.println("Sheet: " + i);
for (int nuLinhaAtual = LINHA_INICIAL; nuLinhaAtual < nuLinhas; nuLinhaAtual++) {
Gate gate = carregarLinha(nuLinhaAtual);
// VERIFICA SE PLANILHA É VAZIA
if (gate.getDispositivo().equals("")
|| gate.getDispositivo().equals(null)) {
System.out.println("Campo Vazio");
dao.InsereLogErro(0, "0", nuLinhaAtual, CodProc);
QtdeErro++;
dao.QtdeErro(QtdeErro);
continue;
}
// VERIFICA SE O DISPOSITIVO EXISTE
if (!dao.existeDispositivo(gate.getDispositivo())) {
// VERIFICA SE O SIMCARD É NULO OU VAZIO
if (gate.getSimcard().equals(null)
|| gate.getSimcard().equals("")) {
// SE FOR...SÓ INSERE NA TB DISPOSITIVO
System.out.println("Chama insert só na Dispositivo");
dao.simCardInsereDisp(gate.getDispositivo(),
gate.getSimcard(), gate.getTecnologia(),
gate.getApnConfigurada(), gate.getIp(),
gate.getPorta(), gate.getFonte(),
gate.getImei(), nomeArq.getNome(), CodProc,
login, horaAtual);
QtdeAlt++;
} else {
// VERIFICA SE O DISPOSITIVO EXISTE NA TB DISPOSITIVO
// E O SIMCARD EXISTE NA TABELA DA TELECOM
if (!dao.existeDispositivo(gate.getDispositivo())
&& dao.existeSimCard(gate.getSimcard())) {
// SE NÃO EXISTE DISP E EXISTE SIMCARD...
// INSERE NA DISPOSITIVO E SIMCARD_DISPOSITIVO
System.out
.println("Chama insert na Dispositivo e na SIMCardDsipositivo");
dao.simCardInsereDispESimCard(
gate.getDispositivo(), gate.getSimcard(),
gate.getTecnologia(),
gate.getApnConfigurada(), gate.getIp(),
gate.getPorta(), gate.getFonte(),
gate.getImei(), nomeArq.getNome(), CodProc,
login, horaAtual);
QtdeAlt++;
} else {
// FAZER O INSERT NA SIMCARD (TELECOM)...DEPOIS...
System.out.println("Insere na SIMCARD TELECOM");
dao.simCardInsereTelecom(gate.getSimcard(),
gate.getFonte(), nomeArq.getNome(),
CodProc, login, horaAtual);
// ...INSERE NA DISPOSITIVO E SIMCARD_DISPOSITIVO
// E...
System.out
.println("Insere na DISPOSITIVO e SIMCARDDISPOSITIVO");
dao.simCardInsereDispESimCard(
gate.getDispositivo(), gate.getSimcard(),
gate.getTecnologia(),
gate.getApnConfigurada(), gate.getIp(),
gate.getPorta(), gate.getFonte(),
gate.getImei(), nomeArq.getNome(), CodProc,
login, horaAtual);
QtdeAlt++;
// ...GRAVA NA LOG ERRO COM O CÓDIGO 28
System.out
.println("Grava na LOG ERRO - COD 28 NÃO TINHA (FOI INSERIDO) REGISTRO NA TB SIMCARD TELECOM");
dao.InsereLogErro(28, gate.getSimcard(),
nuLinhaAtual, CodProc);
QtdeErro++;
}
}
// DISPOSITIVO EXISTE
} else {
// VERIFICA SE PRECISA DE UPDATE
if (!dao.simCardVerificaUpdateGate(gate.getDispositivo(),
gate.getSimcard(), gate.getTecnologia(),
gate.getApnConfigurada(), gate.getIp(),
gate.getPorta(), gate.getFonte(), gate.getImei(),
nuLinhaAtual, nomeArq.getNome(), CodProc, login,
horaAtual)) {
if ((gate.getSimcard() == null)
|| (gate.getSimcard() == "")) {
// GRAVA HISTORICO
System.out.println("Grava na Histórico");
dao.HistoricoGATE(gate.getSimcard(),
gate.getDispositivo(), gate.getFonte(),
nuLinhaAtual, nomeArq.getNome(), CodProc,
login);
// FAZ UPDATE
System.out.println("Faz UPDATE");
dao.simCardDispUpdateA(gate.getDispositivo(),
gate.getSimcard(), gate.getTecnologia(),
gate.getApnConfigurada(), gate.getIp(),
gate.getPorta(), gate.getFonte(),
gate.getImei(), nomeArq.getNome(), CodProc,
login, horaAtual);
QtdeAlt++;
continue;
}
// VERIFICA SE PRECISA INSERIR O SIMCARD NA TELECOM PARA
// A
// REGRA DO GATEWAY
if (!dao.existeSimCard(gate.getSimcard())) {
System.out
.println("Insere na SIMCARD TELECOM para realizar o update COM ERRO 28 GRAVADO NA LOG ERRO");
dao.simCardInsereTelecom(gate.getSimcard(),
gate.getFonte(), nomeArq.getNome(),
CodProc, login, horaAtual);
// GRAVA NA LOG ERRO COM O CÓDIGO 28
dao.InsereLogErro(28, gate.getSimcard(),
nuLinhaAtual, CodProc);
QtdeErro++;
if (!dao.existeDispositivoESimCard(gate
.getDispositivo())) {
// GRAVA HISTORICO
System.out.println("Grava na Histórico");
dao.HistoricoGATE(null, gate.getDispositivo(),
gate.getFonte(), nuLinhaAtual,
nomeArq.getNome(), CodProc, login);
// ... INSERE NA DISPOSITIVO E
// SIMCARD_DISPOSITIVO
// E...
System.out
.println("Insere na DISPOSITIVO e SIMCARDDISPOSITIVO");
dao.simCardInsereDispESimCard(
gate.getDispositivo(),
gate.getSimcard(),
gate.getTecnologia(),
gate.getApnConfigurada(), gate.getIp(),
gate.getPorta(), gate.getFonte(),
gate.getImei(), nomeArq.getNome(),
CodProc, login, horaAtual);
// ...FAZ UPDATE
System.out.println("Faz UPDATE");
dao.simCardDispUpdateA(gate.getDispositivo(),
gate.getSimcard(),
gate.getTecnologia(),
gate.getApnConfigurada(), gate.getIp(),
gate.getPorta(), gate.getFonte(),
gate.getImei(), nomeArq.getNome(),
CodProc, login, horaAtual);
QtdeAlt++;
} else {
// GRAVA HISTORICO
System.out.println("Grava na Histórico");
dao.HistoricoGATE(gate.getSimcard(),
gate.getDispositivo(), gate.getFonte(),
nuLinhaAtual, nomeArq.getNome(),
CodProc, login);
// FAZ UPDATE
System.out.println("Faz UPDATE");
dao.simCardDispUpdateA(gate.getDispositivo(),
gate.getSimcard(),
gate.getTecnologia(),
gate.getApnConfigurada(), gate.getIp(),
gate.getPorta(), gate.getFonte(),
gate.getImei(), nomeArq.getNome(),
CodProc, login, horaAtual);
QtdeAlt++;
}
} else {
if (!dao.existeDispositivoESimCard(gate
.getDispositivo())) {
// GRAVA HISTORICO
System.out.println("Grava na Histórico");
dao.HistoricoGATE(null, gate.getDispositivo(),
gate.getFonte(), nuLinhaAtual,
nomeArq.getNome(), CodProc, login);
// ... INSERE NA DISPOSITIVO E
// SIMCARD_DISPOSITIVO
// E...
System.out
.println("Insere na DISPOSITIVO e SIMCARDDISPOSITIVO");
dao.simCardInsereDispESimCard(
gate.getDispositivo(),
gate.getSimcard(),
gate.getTecnologia(),
gate.getApnConfigurada(), gate.getIp(),
gate.getPorta(), gate.getFonte(),
gate.getImei(), nomeArq.getNome(),
CodProc, login, horaAtual);
// ...FAZ UPDATE
System.out.println("Faz UPDATE");
dao.simCardDispUpdateA(gate.getDispositivo(),
gate.getSimcard(),
gate.getTecnologia(),
gate.getApnConfigurada(), gate.getIp(),
gate.getPorta(), gate.getFonte(),
gate.getImei(), nomeArq.getNome(),
CodProc, login, horaAtual);
QtdeAlt++;
} else {
// GRAVA HISTORICO
System.out.println("Grava na Histórico");
dao.HistoricoGATE(gate.getSimcard(),
gate.getDispositivo(), gate.getFonte(),
nuLinhaAtual, nomeArq.getNome(),
CodProc, login);
// FAZ UPDATE
System.out.println("Faz UPDATE");
dao.simCardDispUpdateA(gate.getDispositivo(),
gate.getSimcard(),
gate.getTecnologia(),
gate.getApnConfigurada(), gate.getIp(),
gate.getPorta(), gate.getFonte(),
gate.getImei(), nomeArq.getNome(),
CodProc, login, horaAtual);
QtdeAlt++;
}
}
} else {
System.out.println("Chama Próximo");
dao.QtdeAlterada(QtdeAlt);
dao.QtdeErro(QtdeErro);
}
}
dao.QtdeAlterada(QtdeAlt);
dao.QtdeErro(QtdeErro);
}
}
}
private Gate carregarLinha(int nuLinhaAtual) {
ValoresPlanilhaEnum planilhaEnum = null;
Gate linhaGate = new Gate();
Cell[] celulas = sheet.getRow(nuLinhaAtual);
for (int nuCelulaAtual = 0; nuCelulaAtual < celulas.length; nuCelulaAtual++) {
Cell celula = celulas[nuCelulaAtual];
GateCelulasEnum celulaGate = GateCelulasEnum
.obterCelulaGate(nuCelulaAtual);
switch (celulaGate) {
case SIMCARD:
linhaGate.setSimcard(celula.getContents());
break;
case DISPOSITIVO:
linhaGate.setDispositivo(celula.getContents());
break;
case TECNOLOGIA:
planilhaEnum = ValoresPlanilhaEnum.obtervALORPorDesc(celula
.getContents());
linhaGate.setTecnologia(planilhaEnum.getCodigo());
break;
case APN_CONFIGURADA:
planilhaEnum = ValoresPlanilhaEnum.obtervALORPorDesc(celula
.getContents());
linhaGate.setApnConfigurada(planilhaEnum.getCodigo());
break;
case IP:
linhaGate.setIp(celula.getContents());
break;
case PORTA:
linhaGate.setPorta(celula.getContents());
break;
case FONTE:
planilhaEnum = ValoresPlanilhaEnum.obtervALORPorDesc(celula
.getContents());
linhaGate.setFonte(planilhaEnum.getCodigo());
break;
case IMEI:
linhaGate.setImei(celula.getContents());
break;
}
}
return linhaGate;
}
}
ERRO:
java.lang.NullPointerException
at br.com.simcard.VerificarRegistroGate.carregarLinha(VerificarRegistroGate.java:349)
at br.com.simcard.VerificarRegistroGate.VerificadorGate(VerificarRegistroGate.java:89)
at br.com.simcard.VerificarRegistroGate.<init>(VerificarRegistroGate.java:59)
at br.com.simcard.Upload.anexos(Upload.java:34)
at servlet.br.com.simcard.ServletUpload.doPost(ServletUpload.java:76)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)