il codice posso postartelo, è una semplice stored procedures che interroga una tabella chiamata Titoli per prendere le informazioni al suo interno:
codice:
public void creaTitoliXML() throws IOException, JDOMException, TransformerConfigurationException, TransformerException, SQLException{
String sql="{ call MonXMLTitoli }";
callStat = cCon.prepareCall(sql);
cRecordSet=callStat.executeQuery();
//creo elemento Programmazione
Element elementoRadice= new Element("Programmazione");
while(cRecordSet.next()){
//creo elemento Titolo
Element elementoTitolo=new Element("Titolo");
elementoTitolo.setAttribute("IdTit",cRecordSet.getString("Id_Titolo"));
elementoTitolo.setAttribute("Descr",cRecordSet.getString("Titolo"));
elementoTitolo.setAttribute("Locandina",cRecordSet.getString("Locandina"));
elementoTitolo.setAttribute("VO",cRecordSet.getString("LOriginale"));
elementoTitolo.setAttribute("VM",cRecordSet.getString("VM"));
elementoTitolo.setAttribute("TreD",cRecordSet.getString("tred"));
elementoTitolo.setAttribute("Dig",cRecordSet.getString("digitale"));
elementoTitolo.setAttribute("Durata",cRecordSet.getString("Durata"));
elementoTitolo.setAttribute("Trailer",cRecordSet.getString("DescFilmato"));
elementoTitolo.setAttribute("Trama",cRecordSet.getString("Trama"));
elementoTitolo.setAttribute("Regia",cRecordSet.getString("Regia"));
elementoTitolo.setAttribute("Attori",cRecordSet.getString("Attori"));
elementoTitolo.setAttribute("Genere",cRecordSet.getString("Genere"));
//aggiungo elemento Titoli ad elemento padre Programmazione
elementoRadice.addContent(elementoTitolo);
}
cRecordSet.close();
callStat.close();
Document doc = new Document(elementoRadice);
try {
FileOutputStream out = new FileOutputStream("./EasyMonitor/XML/Titoli.xml");
XMLOutputter serializer = new XMLOutputter();
serializer.output(doc, out);
out.flush();
out.close();
}
catch (IOException e) {
String mex=e.getMessage();
FileLog fl=new FileLog();
fl.scriviLog(mex);
Runtime r=Runtime.getRuntime();
Process p=r.exec("javaw Starter");
return;
}
}
ecco qui il codice che mi genera l'XML. Ho anche notato che l'errore me lo presenta soltanto dalle ore 00:00 (e qualche secondo) alle 08:00 (e sempre qualche altro secondo). il mio programma sta attivo 24 su 24 su un server in ufficio, e deve generare costantemente questi xml. l'errore si verifica ogni mattina in quell'intervallo di tempo. ti posto anche la stored:
codice:
IF CONVERT(CHAR(5),GETDATE(),108) > '08:00' THEN
Select DISTINCT Titoli.Id_Titolo,Titolo,Titoli.Durata,Locandina,Loriginale,VM,tred,digitale,Filmati.DescFilmato,Trama,Regia,Attori,Genere
from
Titoli
inner join
Filmati
On
Titoli.Id_Filmato=Filmati.Id_Filmato
inner join
Eventi
on
Titoli.Id_Titolo=Eventi.Id_Titolo
Where
((DATAEVENTO = CONVERT(CHAR(10),GetDate(),115) AND CONVERT(CHAR(5),ORAEVENTO,108) >= '08:00')
OR
(DATAEVENTO=CONVERT(CHAR(10),DATEADD(day,1,getdate()),115) AND CONVERT(CHAR(5),ORAEVENTO,108) < '08:00'))
ORDER BY Titoli.Titolo
ELSE
Select DISTINCT Titoli.Id_Titolo,Titolo,Titoli.Durata,Locandina,Loriginale,VM,tred,digitale,Filmati.DescFilmato,Trama,Regia,Attori,Genere
from
Titoli
inner join
Filmati
On
Titoli.Id_Filmato=Filmati.Id_Filmato
inner join
Eventi
on
Titoli.Id_Titolo=Eventi.Id_Titolo
Where
((DATAEVENTO = CONVERT(CHAR(10),DATEADD(day,-1,getdate()),115) AND CONVERT(CHAR(5),ORAEVENTO,108) >= '08:00')
OR
(DATAEVENTO=CONVERT(CHAR(10),DATEADD(day,1,getdate()),115) AND CONVERT(CHAR(5),ORAEVENTO,108) < '08:00'))
ORDER BY Titoli.Titolo
END IF
magari cosi a occhio ti salta qualcosa che ho trattato male o tralasciato!