Já passei o código para java, mas ele não está entrando no ciclo if (----------------->)!!! O que está errado???
[code]
package msi;
import java.io.;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.sql.Driver;
import java.sql.SQLException;
import java.util.;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Date;
public class Open
{
public static final long Tempo = 60000; //repete o código a cada 60000milissegundos = 1minuto
public static void lerficheiro(){
ArrayList<String> a= new ArrayList <String>();
String linha = null;
try {
File f = new File(“C:/msi”); //vai à pasta dos ficheiros
File[] lista = f.listFiles();
for(File arquivo : lista) {
FileReader reader = new FileReader(arquivo); // lê ficheiro
BufferedReader leitor = new BufferedReader(reader);
while ((linha = leitor.readLine()) != null) {
StringTokenizer st;
st = new StringTokenizer(linha, "\t"); //lê o ficheiro linha a linha
String t = "<CR>";
Pattern p = Pattern.compile(t);
Matcher m = p.matcher(linha); //procura string t e devolve a linha caso encontre
while (m.find()) {
String x = arquivo.getPath(); // mostra o nome do ficheiro onde está a palavra
System.out.println("" + x);
System.out.println(m.group());
BufferedReader rd = new BufferedReader(new FileReader(x));
LineNumberReader lineNumberReader = new LineNumberReader(rd);
String id = null;
String nome = null;
String prim = null;
String ult = null;
String dn = null;
String ano = null;
String mes = null;
String dia = null;
String fimdn = null;
String fimdt = null;
String fimt = null;
int sex = 0;
long idd = 0;
String nr = null;
String sala = null;
String mod = null;
String sd = null;
String dat = null;
String tim = null;
String hora = null;
String min = null;
String seg = null;
String p_dos = null;
String ty = null;
String sexo = null;
Pattern pattern = Pattern.compile("(.+) <([^>]+)>"); //retira os valores que estão entre < >
String line;
while ((line = lineNumberReader.readLine()) != null) {
Matcher matcher = pattern.matcher(line);
if (matcher.matches()) {
String chave = matcher.group(1); //lê a 1ª coluna---chaves
System.out.println(chave);
String valor = matcher.group(2); //lê a 2ª coluna---valores
System.out.println(valor);
if (chave.equals("PATIENT_ID")) {
id = valor;
} else if (chave.equals("PATIENT_NAME")) {
nome = valor;
int cont = nome.split(" ").length;
String s[] = nome.split("\\ ");
prim = s[0];
ult = s[cont-1]; //retira o primeiro e o ultimo nome
} else if (chave.equals("PATIENT_BIRTH_DATE")) {
dn = valor;
char[] letras = dn.toCharArray();
char primeira = dn.charAt(0);
char segunda = dn.charAt(1);
char terceira = dn.charAt(2);
char quarta = dn.charAt(3);
char priseg = dn.charAt(4);
char segseg = dn.charAt(5);
char priter = dn.charAt(6);
char segter = dn.charAt(7);
ano = (""+primeira+""+segunda+""+terceira+""+quarta+"");
mes = (""+priseg+""+segseg+"");
dia = (""+priter+""+segter+"");
fimdn = (""+dia+"-"+mes+"-"+ano+""); //forma data de nascimento de forma a ser lida em access
SimpleDateFormat sdf = new SimpleDateFormat ("dd-MM-yyyy");
Date datahj = new Date();
String dataform = sdf.format(datahj); //mostra a data de hoje
Date date =sdf.parse(fimdn);
Date dath =sdf.parse(dataform);
long diferenca = dath.getTime() - date.getTime();
long difseg = diferenca / 1000;
long difmin = difseg / 60;
long difhora = difmin / 60;
long difdia = difhora / 24;
long difano = difdia / 365;
idd = difano; // mostra a idade do paciente
if (difano<18){
ty = "infantil"; //devolve pediatrico quando idade é inferior a 18 anos
}else if (difano>=18){
ty = "adulto"; //devolve adulto quando idade igual ou superior a 18anos
}
} else if (chave.equals("PATIENT_SEX")){
sexo = valor;
if (valor.equals("M")){
sex = 0; //devolve 0 quando sexo é masculino
}
else if (valor.equals("F")){
sex = 1; //devolve 1 quando sexo é feminino
}
} else if (chave.equals("STUDY_ID")){
nr = valor;
} else if (chave.equals("SCHEDULED_STUDY_RESOURCE")){
sala = valor;
} else if (chave.equals("MODALITY")){
mod = valor;
} else if (chave.equals("STUDY_DESCRIPTION")){
sd = valor;
if (valor.contains("CEFALOMETRIA") && ty.equals("pediatrico")){
p_dos = "3331";
}else if (valor.contains("CEFALOMETRIA") && ty.equals("adulto")){
p_dos = "3332";
}else if (valor.contains("ORTOPANTOMOGRAFIA") && ty.equals("pediatrico")){
p_dos = "1111";
}else if (valor.contains("ORTOPANTOMOGRAFIA") && ty.equals("adulto")){
p_dos = "1112";
}// valores definidos para cefalometria pediatrico e adulto e para ortopantomografia pediatrico e adulto
} else if (chave.equals("SCHEDULED_STUDY_START_DATE")){
dat = valor;
char[] letras = dat.toCharArray();
char primeira = dat.charAt(0);
char segunda = dat.charAt(1);
char terceira = dat.charAt(2);
char quarta = dat.charAt(3);
char priseg = dat.charAt(4);
char segseg = dat.charAt(5);
char priter = dat.charAt(6);
char segter = dat.charAt(7);
ano = (""+primeira+""+segunda+""+terceira+""+quarta+"");
mes = (""+priseg+""+segseg+"");
dia = (""+priter+""+segter+"");
fimdt = (""+dia+"-"+mes+"-"+ano+""); //formula data de acordo com formato definido pelo access
} else if (chave.equals("SCHEDULED_STUDY_START_TIME")){
tim = valor;
char[] letras = tim.toCharArray();
char primeira = tim.charAt(0);
char segunda = tim.charAt(1);
char priseg = tim.charAt(2);
char segseg = tim.charAt(3);
char priter = tim.charAt(4);
char segter = tim.charAt(5);
hora = (""+primeira+""+segunda+"");
min = (""+priseg+""+segseg+"");
seg = (""+priter+""+segter+"");
fimt = (""+hora+":"+min+":"+seg+""); //formata hora de acordo com o formato definido pelo access
}
}//end if
} //end while
// conexão ACCESS
String caminho = "C:/user.mdb";
Driver d = (Driver)Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
Connection con = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + caminho);
Statement stm = con.createStatement();
ResultSet rsa = stm.executeQuery ("SELECT Id FROM PatientData WHERE Id = '"+nr+"'"); //query necessária tendo em conta a repetição de ficheiros no access
if (rsa.next()){
String resultadoa = rsa.getString("Id");
System.out.println(resultadoa);
Pattern p1a = Pattern.compile(resultadoa);
Matcher m1a = p1a.matcher(resultadoa);
while(m1a.find()){ // se encontrar o mesmo valor de id, elimina o ficheiro nesse instante, evitando assim que se gere erro com a query do insert
String aquia = arquivo.getAbsolutePath();
System.out.println(aquia);
arquivo.deleteOnExit();
System.out.println("Apaguei Access");
}
}else{
stm.executeUpdate(" INSERT INTO PatientData (Id, Surname, [First Name], [Date Of Birth], Sex, Age, Type, [Scheduled Study Resource], Modality, [P Dose], [Study Description], [Scheduled Study Start Date], [Scheduled Study Start Time]) VALUES ('"+nr+"','"+ult+"','"+prim+"','"+fimdn+"',"+sex+", '"+idd+"', '"+ty+"', '"+sala+"','"+mod+"',"+p_dos+",'"+sd+"','"+fimdt+"','"+fimt+"')");
System.out.println("Inseri Access");
//identifica ParamNr do paciente
ResultSet dapa = stm.executeQuery("SELECT ResumeNr FROM ResumeData WHERE InfoNr IN (SELECT InfoNr FROM MeasInfo WHERE PatNr IN (SELECT PatNr FROM PatientData WHERE Id = '"+nr+"'))");
--------------------------> if (dapa.next()){
String ia = dapa.getString(“ResumeNr”);
System.out.println(“Parametro”+ia);
stm.executeQuery("SELECT MAX(D1) AS DAP1 FROM MeasData WHERE ParamNr = '"+dapa+"'");
System.out.println("dapa"+dapa);
int DAP1 = stm.executeUpdate("SELECT MAX(D1) AS DAP1 FROM MeasData WHERE ParamNr = '"+dapa+"'");
System.out.println("D1"+DAP1);
stm.executeQuery("SELECT MAX(D2) AS DAP2 FROM MeasData WHERE ParamNr = '"+dapa+"'");
int DAP2 = stm.executeUpdate("SELECT MAX(D2) AS DAP2 FROM MeasData WHERE ParamNr = '"+dapa+"'");
System.out.println("D2"+DAP2);
stm.executeQuery("SELECT MAX(D3) AS DAP3 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP3 = stm.executeUpdate("SELECT MAX(D3) AS DAP3 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D3"+DAP3);
stm.executeQuery("SELECT MAX(D4) AS DAP4 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP4 = stm.executeUpdate("SELECT MAX(D4) AS DAP4 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D4"+DAP4);
stm.executeQuery("SELECT MAX(D5) AS DAP5 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP5 = stm.executeUpdate("SELECT MAX(D5) AS DAP5 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D5"+DAP5);
stm.executeQuery("SELECT MAX(D6) AS DAP6 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP6 = stm.executeUpdate("SELECT MAX(D6) AS DAP6 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D6"+DAP6);
stm.executeQuery("SELECT MAX(D7) AS DAP7 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP7 = stm.executeUpdate("SELECT MAX(D7) AS DAP7 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D7"+DAP7);
stm.executeQuery("SELECT MAX(D8) AS DAP8 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP8 = stm.executeUpdate("SELECT MAX(D8) AS DAP8 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D8"+DAP8);
stm.executeQuery("SELECT MAX(D9) AS DAP9 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP9 = stm.executeUpdate("SELECT MAX(D9) AS DAP9 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D9"+DAP9);
stm.executeQuery("SELECT MAX(D10) AS DAP10 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP10 = stm.executeUpdate("SELECT MAX(D10) AS DAP10 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D10"+DAP10);
stm.executeQuery("SELECT MAX(D11) AS DAP11 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP11 = stm.executeUpdate("SELECT MAX(D11) AS DAP11 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D11"+DAP11);
stm.executeQuery("SELECT MAX(D12) AS DAP12 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP12 = stm.executeUpdate("SELECT MAX(D12) AS DAP12 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D12"+DAP12);
stm.executeQuery("SELECT MAX(D13) AS DAP13 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP13 = stm.executeUpdate("SELECT MAX(D13) AS DAP13 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D13"+DAP13);
stm.executeQuery("SELECT MAX(D14) AS DAP14 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP14 = stm.executeUpdate("SELECT MAX(D14) AS DAP14 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D14"+DAP14);
stm.executeQuery("SELECT MAX(D15) AS DAP15 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP15 = stm.executeUpdate("SELECT MAX(D15) AS DAP15 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D15"+DAP15);
stm.executeQuery("SELECT MAX(D16) AS DAP16 FROM MeasData WHERE ParamNr = '"+ia+"'");
int DAP16 = stm.executeUpdate("SELECT MAX(D16) AS DAP16 FROM MeasData WHERE ParamNr = '"+ia+"'");
System.out.println("D16"+DAP16);
int[] vector = new int [15];
vector [0] = DAP1;
vector [1] = DAP2;
vector [2] = DAP3;
vector [3] = DAP4;
vector [4] = DAP5;
vector [5] = DAP6;
vector [6] = DAP7;
vector [7] = DAP8;
vector [8] = DAP9;
vector [9] = DAP10;
vector [10] = DAP11;
vector [11] = DAP12;
vector [12] = DAP13;
vector [13] = DAP14;
vector [14] = DAP15;
vector [15] = DAP16;
Arrays.sort(vector);
stm.executeQuery("UPDATE Parameter SET DAP = ("+vector [15]+") WHERE ParamNr = '"+ia+"'");
System.out.println("Actualização concluída");
}
ResultSet dosea = stm.executeQuery("SELECT DAP FROM Parameter WHERE ResumeNr IN (SELECT ResumeNr FROM ResumeData WHERE InfoNr IN (SELECT InfoNr FROM MeasInfo WHERE PatNr IN (SELECT PatNr FROM PatientData WHERE Id = '"+nr+"'");
String da = dosea.getString("DAP");
System.out.println("dose"+da);
}
con.close();
rd.close();
} //end while
} //end while
reader.close();
arquivo.delete(); // todos os ficheiros são elinimados após terem sido lidos e eviados para a base de dados
} //end for
mostrar(a);
} catch (Exception e) { //end try
e.printStackTrace();
} //end catch
} //end lerficheiro
public static void mostrar(ArrayList b)
{
for (int i=0; i<b.size(); i++)
{
System.out.println(b.get(i));
}
}
public static void main(String[] args)
{
System.out.println(“A iniciar…”);
Timer timer = null;
if(timer == null){
timer = new Timer();
TimerTask tarefa = new TimerTask(){
public void run(){
try{
System.out.println(“Continua…”);
lerficheiro();
}catch (Exception e){
e.printStackTrace();
}
}
};
timer.scheduleAtFixedRate(tarefa, Tempo, Tempo);
}
}
}