package it.acxent.pg; import it.acxent.common.StatusMsg; import it.acxent.db.ApplParmFull; import it.acxent.db.DBAdapter; import it.acxent.db.ResParm; import it.acxent.db.WcString; import it.acxent.dm.FaceDetectionMethod; import it.acxent.face.FotoI; import it.acxent.util.ScaleImage; import it.acxent.util.SimpleDateFormat; import it.acxent.util.Timer; import it.acxent.util.UploadFile; import it.acxent.util.UploadFileBeanInterface; import it.acxent.util.UploadFileCallable; import it.acxent.util.Vectumerator; import java.io.File; import java.io.Serializable; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Time; import java.sql.Timestamp; import java.util.Calendar; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; public class Foto extends _PgAdapter implements Serializable, UploadFileBeanInterface, FotoI { private String thFotoRidotta; private String thFotoRidottaTN; private String thPercorsoRemoto; public static final String SEP_PETTORALE = ","; private long id_foto; private String file; private long impression; private Date dataUltimaVisual; private long id_gara; private long id_puntoFoto; private PuntoFoto puntoFoto; private String pettorali; private long flgFotoInviata; private long flgPettoraleInviato; private long id_fotoExport; private String pettoraliOld; class ThreadCreaPreview extends Thread { private PuntoFoto puntoFoto; public ThreadCreaPreview(PuntoFoto puntoFoto) { this.puntoFoto = puntoFoto; if (!Foto.isThreadAttivo()) { Foto.threadInvioFotoWww = true; start(); } } public void run() { boolean debug = false; String TAG_THREAD_MSG = "CREAZIONE PREVIEW"; Timer timer = new Timer(); timer.start(); ResParm rp = new ResParm(true); StringBuffer err = new StringBuffer(); int i = 0; int se1 = 10; int se2 = 100; int fotoInviate = 0, fotoErrate = 0; try { StatusMsg.updateMsgByTag(Foto.this.getApFull(), "CREAZIONE PREVIEW", "...inizio ..."); Foto.threadInvioFotoWwwMsg = "Attenzione! Thread CREAZIONE PREVIEW in esecuzione!!! "; if (debug) System.out.println("CREAZIONE PREVIEW " + Foto.threadInvioFotoWwwMsg); if (this.puntoFoto.getId_puntoFoto() > 0L) { Foto foto = new Foto(this.puntoFoto.getApFull()); FotoCR fotoCR = new FotoCR(); fotoCR.setId_puntoFoto(this.puntoFoto.getId_puntoFoto()); Vectumerator vec = foto.findByCR(fotoCR, 0, 0); while (vec.hasMoreElements()) { Foto row = (Foto)vec.nextElement(); String fotoRidotta = row.getFileNameRidottaPercorsoCompleto(); String fileNameRidotta = row.getFileNameReale(); String dirRidotte = row.getDirRidottaPercorsoCompleto(); StatusMsg.updateMsgByTag(Foto.this.getApFull(), "CREAZIONE PREVIEW", row.getFileNamePercorsoCompleto() + " --> " + row.getFileNamePercorsoCompleto() + "#" + dirRidotte); Foto.creaRiduzioniPerWeb(this.puntoFoto.getGara(), row.getFileNamePercorsoCompleto(), dirRidotte, false); i++; StatusMsg.updateMsgByTag(Foto.this.getApFull(), "CREAZIONE PREVIEW", "create " + i + " riduzioni su " + vec.getTotNumberOfRecords()); if (se1 > 0 && i % se1 == 0) System.out.print("."); if (se2 > 0 && i % se2 == 0) System.out.println("" + i + " su " + i); } } else { err.append("ERRORE!! punto foto INESISTENTE"); err.append("\n"); } } catch (Exception e) { err.append("ERRORE!! " + e.getMessage()); err.append("\n"); } rp.setMsg("craete " + i + " preview"); timer.stop(); SimpleDateFormat dfMS = new SimpleDateFormat("HH:mm:ss "); System.out.println("CREAZIONE PREVIEW DURATA: " + timer.getDurataHourMin() + "Risultato import:\n" + rp.getMsg() + "\n\nCREAZIONE PREVIEW WWW concluso\n****************"); System.out.println("CREAZIONE PREVIEW **************************************** ERRORI EXPORT FOTO SU WWW ****************************************"); Foto.threadInvioFotoWwwMsg = "DURATA: " + timer.getDurataHourMin() + " Risultato invio:\n" + rp.getMsg() + "\n\nCREAZIONE PREVIEW WWW concluso\n****************"; StatusMsg.updateMsgByTag(Foto.this.getApFull(), "CREAZIONE PREVIEW", "CREAZIONE PREVIEW concluso: DURATA: " + timer.getDurataHourMin() + " Risultato invio:\n" + rp.getMsg()); try { sleep(10000L); } catch (Exception e) {} StatusMsg.deleteMsgByTag(Foto.this.getApFull(), "CREAZIONE PREVIEW"); Foto.threadInvioFotoWww = false; } } class ThreadInvioFotoDa3PianoAWww extends Thread { private long id_gara; private boolean soloFoto; public ThreadInvioFotoDa3PianoAWww(long l_id_gara, boolean l_soloFoto) { this.id_gara = l_id_gara; this.soloFoto = l_soloFoto; if (!Foto.isThreadAttivo()) { Foto.threadInvioFotoWww = true; start(); } } public void run() { boolean debug = false; String TAG_THREAD_MSG = "INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww"; Timestamp start = new Timestamp(Calendar.getInstance().getTimeInMillis()); ResParm rp = new ResParm(true); StringBuffer err = new StringBuffer(); StringBuilder sb = new StringBuilder(); int i = 0; int se1 = 10; int se2 = 100; int fotoInviate = 0, fotoErrate = 0; int fotoTrovata = 0, fotoNuova = 0; try { StatusMsg.updateMsgByTag(Foto.this.getApFull(), "INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww", "...invio foto ..."); Foto.threadInvioFotoWwwMsg = "Attenzione! Thread INVIO FOTO 3piano-->www in esecuzione!!! "; if (debug) System.out.println("INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww " + Foto.threadInvioFotoWwwMsg); Gara gara = new Gara(Foto.this.getApFull()); gara.findByPrimaryKey(this.id_gara); if (gara.getId_gara() > 0L) { Gara garaR = new Gara(Foto.this.getApRemoto()); garaR.findByPrimaryKey(gara.getCodGara()); if (garaR.getId_gara() > 0L) { UploadFile uf = new UploadFile(); String urlServletRicevente = Foto.this.getApFull().getParm("RECEIVE_FILE_SERVLET").getTesto(); Foto foto = new Foto(Foto.this.getApFull()); Vectumerator vec = foto.findFotoOPettoraleNonInviatoByGara(this.id_gara); i = 0; while (vec.hasMoreElements()) { rp = new ResParm(true); Foto currentFoto = (Foto)vec.nextElement(); Foto fotoR = null; if (currentFoto.getFlgPettoraleInviato() == 0L || currentFoto.getId_fotoExport() == 0L) { if (debug) System.out.println("INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww Invio PETTORALE foto " + i + " su " + vec.getTotNumberOfRecords()); if (currentFoto.getId_fotoExport() > 0L) { fotoR = new Foto(_PgAdapter.apRemoto); fotoR.findByPrimaryKey(currentFoto.getId_fotoExport()); fotoR.setPettorali(currentFoto.getPettorali()); rp = fotoR.save(); if (rp.getStatus()) Foto.syncAggiornaPettoraleInviato(currentFoto, 0L, 1L, null, 3L); fotoTrovata++; } else { fotoR = (Foto)currentFoto.clone(); fotoR.setFlgFotoInviata(0L); fotoR.setFlgPettoraleInviato(0L); fotoR.setDBState(0); fotoR.setApFull(_PgAdapter.apRemoto); fotoR.setId_gara(garaR.getId_gara()); fotoR.setId_puntoFoto(currentFoto.getPuntoFoto().getId_puntoFotoExport()); fotoR.setId_foto(0L); rp = fotoR.save(); if (rp.getStatus()) Foto.syncAggiornaPettoraleInviato(currentFoto, fotoR.getId_foto(), 1L, null, 1L); fotoNuova++; } StatusMsg.updateMsgByTag(Foto.this.getApFull(), "INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww", "aggiorno foto puntofoto " + currentFoto.getPuntoFoto().getDescrizione() + " " + i + " su " + vec.getTotNumberOfRecords() + " - Nuove foto:" + fotoNuova + " Foto aggiornata (pettorali): " + fotoTrovata); Foto.threadInvioFotoWwwMsg = "Aggiornamento foto del puntofoto " + currentFoto.getPuntoFoto().getDescrizione() + " " + i + " su " + vec.getTotNumberOfRecords() + " - Nuove foto:" + fotoNuova + " Foto aggiornata (pettorali): " + fotoTrovata; if (debug) System.out.println("INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww " + Foto.threadInvioFotoWwwMsg); } else { fotoR = new Foto(_PgAdapter.apRemoto); fotoR.findByPrimaryKey(currentFoto.getId_fotoExport()); } String fotoSorgente = currentFoto.getFileNamePercorsoCompleto(); if (currentFoto.getId_fotoExport() > 0L) { PuntoFoto puntoFotoR = new PuntoFoto(Foto.this.getApRemoto()); puntoFotoR.findByPrimaryKey(fotoR.getId_puntoFoto()); i++; if (currentFoto.getFlgFotoInviata() == 0L) { StatusMsg.updateMsgByTag(Foto.this.getApFull(), "INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww", "Invio foto " + i + " su " + vec.getTotNumberOfRecords() + ": " + currentFoto.getFileName()); if (debug) System.out.println("INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww Invio foto " + i + " su " + vec.getTotNumberOfRecords() + ": " + currentFoto.getFileName()); if (currentFoto.getPuntoFoto().getId_puntoFoto() > 0L) { String fotoRidotta = currentFoto.getFileNameRidottaPercorsoCompleto(); String fileName = currentFoto.getFileNameReale(); String dirRidotte = currentFoto.getDirRidottaPercorsoCompleto(); File dirRidotteF = new File(dirRidotte); if (!dirRidotteF.exists()) dirRidotteF.mkdirs(); String fotoRidottaTN = dirRidotte + "tn_" + dirRidotte; System.out.println("threadInvioFotoWwwMsg fotoridotta: " + fotoRidotta + " foto ridotta tn: " + fotoRidottaTN); String percorsoRemoto = puntoFotoR.getPathCompletoFoto() + puntoFotoR.getPathCompletoFoto(); if (new File(fotoRidotta).exists() && new File(fotoRidottaTN).exists()) { rp.setStatus(true); } else { rp = Foto.creaRiduzioniPerWeb(currentFoto.getPuntoFoto().getGara(), fotoSorgente, dirRidotte, false); } if (rp.getStatus()) { Foto.threadInvioFotoWwwMsg = "Invio foto " + i + " su " + vec.getTotNumberOfRecords() + ": " + fotoRidotta + " su percorso remoto" + percorsoRemoto; if (debug) System.out.println("INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww " + Foto.threadInvioFotoWwwMsg); System.out.println("INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww TEST FTP Transferimento di " + fotoRidotta + "-->" + percorsoRemoto + fileName + " via ftp in corso.."); System.out.println("INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww TEST TN FTP Transferimento di " + fotoRidottaTN + "-->" + percorsoRemoto + fileName + " via ftp in corso.."); rp.append(uf.transferFile(urlServletRicevente, fotoRidotta, percorsoRemoto)); rp.append(uf.transferFile(urlServletRicevente, fotoRidottaTN, percorsoRemoto)); if (rp.getStatus()) { currentFoto.setFlgFotoInviata(1L); currentFoto.save(); fotoInviate++; continue; } fotoErrate++; if (debug) System.out.println("INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww ERRORE!! Foto " + fotoSorgente + " NON TRASFERITA: " + rp.getMsg()); err.append("ERRORE!! Foto " + fotoSorgente + " NON TRASFERITA: " + rp.getMsg()); err.append("\n"); continue; } fotoErrate++; err.append("ERRORE!! Foto " + fotoSorgente + " NON RIDOTTA: (" + fotoRidotta + ") " + rp.getMsg()); err.append("\n"); continue; } err.append("ERRORE!! Foto " + fotoSorgente + " SENZA PUNTO FOTO CON ID " + currentFoto.getId_puntoFoto() + "!! HAI CANCELLATO UN PUNTOFOTO SENZA RESETTARE L'INDICIZZAZIONE!"); err.append("\n"); } continue; } err.append("ERRORE!! Foto " + fotoSorgente + " con il suo punto foto non e' stato esporato. id_fotoExport=0 "); err.append("\n"); } } else { err.append("ERRORE!! GARA remota " + gara.getCodGara() + " NON TROVATA"); err.append("\n"); } } else { err.append("ERRORE!! GARA " + this.id_gara + " INESISTENTE"); err.append("\n"); } } catch (Exception e) { err.append("ERRORE!! " + e.getMessage()); err.append("\n"); } rp.setMsg("INVIATE " + fotoInviate + "- FOTO ERRATE: " + fotoErrate); Timestamp stop = new Timestamp(Calendar.getInstance().getTimeInMillis()); SimpleDateFormat dfMS = new SimpleDateFormat("HH:mm:ss "); System.out.println("INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww DURATA: " + dfMS.format(new Time(stop.getTime() - start.getTime() - 3600000L)) + "Risultato import:\n" + rp.getMsg() + "\n\nINVIO FOTO WWW concluso\n****************"); System.out.println("INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww **************************************** ERRORI EXPORT FOTO SU WWW ****************************************"); Foto.threadInvioFotoWwwMsg = "DURATA: " + dfMS.format(new Time(stop.getTime() - start.getTime() - 3600000L)) + "Risultato invio:\n" + rp.getMsg() + "\n\nINVIO FOTO WWW concluso\n****************"; StatusMsg.updateMsgByTag(Foto.this.getApFull(), "INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww", "Invio foto concluso: DURATA: " + dfMS.format(new Time(stop.getTime() - start.getTime() - 3600000L)) + "Risultato invio:\n" + rp.getMsg()); try { sleep(10000L); } catch (Exception e) {} StatusMsg.deleteMsgByTag(Foto.this.getApFull(), "INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWww"); Foto.threadInvioFotoWww = false; } } class ThreadCreaPreviewMT extends Thread { private PuntoFoto puntoFoto; public ThreadCreaPreviewMT(PuntoFoto puntoFoto) { this.puntoFoto = puntoFoto; if (!Foto.isThreadAttivo()) { Foto.threadInvioFotoWww = true; start(); } } public void run() { boolean debug = false; String TAG_THREAD_MSG = "CREAZIONE PREVIEW"; Timer timer = new Timer(); timer.start(); ResParm rp = new ResParm(true); StringBuffer err = new StringBuffer(); int i = 0; int se1 = 10; int se2 = 100; int maxNumberOfThread = Foto.this.getParm("MAX_CONCURRENT_THREAD").getNumeroInt(); if (maxNumberOfThread <= 1) maxNumberOfThread = 10; try { StatusMsg.updateMsgByTag(Foto.this.getApFull(), "CREAZIONE PREVIEW", "...inizio ..."); Foto.threadInvioFotoWwwMsg = "Attenzione! Thread CREAZIONE PREVIEW in esecuzione!!! "; if (debug) System.out.println("CREAZIONE PREVIEW " + Foto.threadInvioFotoWwwMsg); if (this.puntoFoto.getId_puntoFoto() > 0L) { Foto foto = new Foto(this.puntoFoto.getApFull()); FotoCR fotoCR = new FotoCR(); fotoCR.setId_puntoFoto(this.puntoFoto.getId_puntoFoto()); Vectumerator vec = foto.findByCR(fotoCR, 0, 0); ExecutorService pool = Executors.newFixedThreadPool(maxNumberOfThread); Vectumerator> vecF = new Vectumerator(); while (vec.hasMoreElements()) { Foto row = (Foto)vec.nextElement(); String fotoRidotta = row.getFileNameRidottaPercorsoCompleto(); String fileNameRidotta = row.getFileNameReale(); String dirRidotte = row.getDirRidottaPercorsoCompleto(); StatusMsg.updateMsgByTag(Foto.this.getApFull(), "CREAZIONE PREVIEW", row.getFileNamePercorsoCompleto() + " --> " + row.getFileNamePercorsoCompleto() + "#" + dirRidotte); CreaFotoPgCallable cfp = new CreaFotoPgCallable(this.puntoFoto.getGara(), row.getFileNamePercorsoCompleto(), dirRidotte, false); vecF.add(pool.submit(cfp)); i++; StatusMsg.updateMsgByTag(Foto.this.getApFull(), "CREAZIONE PREVIEW", "max thread: " + maxNumberOfThread + " - submit " + i + " riduzioni su " + vec.getTotNumberOfRecords()); if (se1 > 0 && i % se1 == 0) System.out.print("."); if (se2 > 0 && i % se2 == 0) System.out.println("" + i + " su " + i); } for (int j = 0; j < vecF.getTotNumberOfRecords(); j++) { Future currentFuture = (Future)vecF.nextElement(); try { System.out.println(currentFuture.get().getMsg() + " ended"); StatusMsg.updateMsgByTag(Foto.this.getApFull(), "CREAZIONE PREVIEW", "max thread: " + maxNumberOfThread + " - create " + j + " riduzioni su " + vec.getTotNumberOfRecords()); } catch (Exception ex) { ex.printStackTrace(); } } } else { err.append("ERRORE!! punto foto INESISTENTE"); err.append("\n"); } } catch (Exception e) { err.append("ERRORE!! " + e.getMessage()); err.append("\n"); } rp.setMsg("craete " + i + " preview"); timer.stop(); SimpleDateFormat dfMS = new SimpleDateFormat("HH:mm:ss "); System.out.println("CREAZIONE PREVIEW DURATA: " + timer.getDurataHourMin() + "Risultato import:\n" + rp.getMsg() + "\n\nCREAZIONE PREVIEW WWW concluso\n****************"); System.out.println("CREAZIONE PREVIEW **************************************** ERRORI EXPORT FOTO SU WWW ****************************************"); Foto.threadInvioFotoWwwMsg = "DURATA: " + timer.getDurataHourMin() + "Risultato invio:\n" + rp.getMsg() + "\n\nCREAZIONE PREVIEW WWW concluso\n****************"; StatusMsg.updateMsgByTag(Foto.this.getApFull(), "CREAZIONE PREVIEW", "CREAZIONE PREVIEW concluso: max thread: " + maxNumberOfThread + " - DURATA: " + timer.getDurataHourMin() + " Risultato invio:\n" + rp.getMsg()); try { sleep(10000L); } catch (Exception e) {} StatusMsg.deleteMsgByTag(Foto.this.getApFull(), "CREAZIONE PREVIEW"); Foto.threadInvioFotoWww = false; } } class ThreadInvioFotoDa3PianoAWwwMT extends Thread { private long id_gara; private boolean soloFoto; public ThreadInvioFotoDa3PianoAWwwMT(long l_id_gara, boolean l_soloFoto) { this.id_gara = l_id_gara; this.soloFoto = l_soloFoto; if (!Foto.isThreadAttivo()) { Foto.threadInvioFotoWww = true; start(); } } public void run() { boolean debug = false; int maxNumberOfThread = Foto.this.getParm("MAX_CONCURRENT_THREAD").getNumeroInt(); int maxNumberOfUploadThread = Foto.this.getParm("MAX_CONCURRENT_THREAD").getNumeroInt(); if (maxNumberOfThread <= 1) maxNumberOfThread = 10; if (maxNumberOfUploadThread <= 1) maxNumberOfUploadThread = 10; String TAG_THREAD_MSG = "INVIO FOTO DA CASA A WWW ThreadInvioFotoDa3PianoAWwwMT " + maxNumberOfThread + "-" + maxNumberOfUploadThread; Timer timer = new Timer(); timer.start(); StatusMsg.updateMsgByTag(Foto.this.getApFull(), TAG_THREAD_MSG, "...invio foto ..."); ResParm rp = new ResParm(true); StringBuffer err = new StringBuffer(); StringBuilder sb = new StringBuilder(); int i = 0; int se1 = 10; int se2 = 100; int fotoInviate = 0, fotoErrate = 0; int fotoTrovata = 0, fotoNuova = 0; if (debug) System.out.println("OCR #######****### THREAD " + TAG_THREAD_MSG + " ######" + String.valueOf(DBAdapter.getNow())); Gara gara = new Gara(Foto.this.getApFull()); gara.writeLog("\n\n\n----------------------\n" + TAG_THREAD_MSG + " INIZIO INVIO FOTO MULTITHREAD\n"); try { Foto.threadInvioFotoWwwMsg = "Attenzione! Thread INVIO FOTO 3piano-->www in esecuzione!!! "; if (debug) System.out.println(TAG_THREAD_MSG + " " + TAG_THREAD_MSG); gara.findByPrimaryKey(this.id_gara); if (gara.getId_gara() > 0L) { Gara garaR = new Gara(Foto.this.getApRemoto()); garaR.findByPrimaryKey(gara.getCodGara()); if (garaR.getId_gara() > 0L) { UploadFile uf = new UploadFile(); String urlServletRicevente = Foto.this.getApFull().getParm("RECEIVE_FILE_SERVLET").getTesto(); Foto foto = new Foto(Foto.this.getApFull()); long totNumeroFoto = foto.findFotoOPettoraleNonInviatoByGaraTotale(this.id_gara); i = 1; ExecutorService pool = Executors.newFixedThreadPool(maxNumberOfThread); ExecutorService poolInvio = Executors.newFixedThreadPool(maxNumberOfUploadThread); PuntoFoto pf = new PuntoFoto(Foto.this.getApFull()); Vectumerator vecPF = pf.findPuntiFotoConFotoOPettoraleNonInviatoByGara(this.id_gara); Timer timerPF = new Timer(); while (vecPF.hasMoreElements()) { PuntoFoto currentPF = (PuntoFoto)vecPF.nextElement(); Vectumerator> vecFInvio = new Vectumerator(); int ipf = 1; Vectumerator> vecF = new Vectumerator(); Vectumerator vec = foto.findFotoOPettoraleNonInviatoByGaraPuntoFoto(this.id_gara, currentPF.getId_puntoFoto()); while (vec.hasMoreElements()) { rp = new ResParm(true); Foto foto1 = (Foto)vec.nextElement(); foto1.findByPrimaryKey(foto1.getId_foto()); Foto fotoR = null; if (debug) System.out.println(TAG_THREAD_MSG + " ciclo principale pf:" + TAG_THREAD_MSG + " Invio PETTORALE foto " + currentPF.getDescrizionePuntoFoto() + " su " + ipf + " (tot:" + vec.getTotNumberOfRecords() + " su " + i + ")..... "); if (foto1.getFlgPettoraleInviato() == 0L || foto1.getId_fotoExport() == 0L) { if (debug) System.out.println(TAG_THREAD_MSG + " foto " + TAG_THREAD_MSG + " da registrare in remoto!"); if (foto1.getId_fotoExport() > 0L) { fotoR = new Foto(_PgAdapter.apRemoto); fotoR.findByPrimaryKey(foto1.getId_fotoExport()); fotoR.setPettorali(foto1.getPettorali()); rp = fotoR.save(); if (rp.getStatus()) Foto.syncAggiornaPettoraleInviato(foto1, 0L, 1L, null, 3L); fotoTrovata++; } else { fotoR = (Foto)foto1.clone(); fotoR.setFlgFotoInviata(0L); fotoR.setFlgPettoraleInviato(0L); fotoR.setDBState(0); fotoR.setApFull(_PgAdapter.apRemoto); fotoR.setId_gara(garaR.getId_gara()); fotoR.setId_puntoFoto(foto1.getPuntoFoto().getId_puntoFotoExport()); fotoR.setId_foto(0L); rp = fotoR.save(); if (rp.getStatus()) Foto.syncAggiornaPettoraleInviato(foto1, fotoR.getId_foto(), 1L, null, 1L); fotoNuova++; } StatusMsg.updateMsgByTag(Foto.this.getApFull(), TAG_THREAD_MSG, "aggiorno foto puntofoto " + foto1.getPuntoFoto().getDescrizionePuntoFoto() + " " + ipf + " su " + vec.getTotNumberOfRecords() + " (tot:" + i + " su " + totNumeroFoto + ") - Nuove foto:" + fotoNuova + " Foto aggiornata (pettorali): " + fotoTrovata); Foto.threadInvioFotoWwwMsg = "Aggiornamento foto del puntofoto " + foto1.getPuntoFoto().getDescrizionePuntoFoto() + " " + ipf + " su " + vec.getTotNumberOfRecords() + " (tot:" + i + " su " + totNumeroFoto + ") - Nuove foto:" + fotoNuova + " Foto aggiornata (pettorali): " + fotoTrovata; if (debug) System.out.println(TAG_THREAD_MSG + " ciclo principale INSERITO NOVO RECORD FOTO- " + TAG_THREAD_MSG); } else { fotoR = new Foto(_PgAdapter.apRemoto); fotoR.findByPrimaryKey(foto1.getId_fotoExport()); if (debug) System.out.println(TAG_THREAD_MSG + " FOTO TROVATA\n ciclo principale: RECORD FOTO REMOTA TROVATA - pf:" + TAG_THREAD_MSG + " " + foto1.getPuntoFoto().getDescrizionePuntoFoto() + " su " + ipf + " (tot:" + vec.getTotNumberOfRecords() + " su " + i + ")"); } String fotoSorgente = foto1.getFileNamePercorsoCompleto(); DBAdapter.printDebug(" ====******==> apremoto catalog.:" + Foto.this.getApRemoto().getCatalog() + " database: " + Foto.this.getApRemoto().getDatabase()); DBAdapter.printDebug(" ===******===> currentFoto. id:" + foto1.getId_foto() + " currentFoto.getId_fotoExport(): " + foto1.getId_fotoExport() + " fotoR id: " + fotoR.getId_foto() + " fotoR.getId_puntoFoto() " + fotoR.getId_puntoFoto()); if (foto1.getId_fotoExport() > 0L) { PuntoFoto puntoFotoR = new PuntoFoto(Foto.this.getApRemoto()); puntoFotoR.findByPrimaryKey(fotoR.getId_puntoFoto()); i++; ipf++; if (foto1.getFlgFotoInviata() == 0L) { StatusMsg.updateMsgByTag(Foto.this.getApFull(), TAG_THREAD_MSG, " pf:" + currentPF.getDescrizionePuntoFoto() + " - Ciclo foto " + ipf + " su " + vec.getTotNumberOfRecords() + " (tot:" + i + " su " + totNumeroFoto + "): " + foto1.getFileName()); if (debug) { System.out.println(TAG_THREAD_MSG + " pf:" + TAG_THREAD_MSG + " - Ciclo foto " + currentPF.getDescrizionePuntoFoto() + " su " + ipf + " (tot:" + vec.getTotNumberOfRecords() + " su " + i + "): " + totNumeroFoto); foto1.writeLog(TAG_THREAD_MSG + " pf:" + TAG_THREAD_MSG + " - Ciclo foto " + currentPF.getDescrizionePuntoFoto() + " su " + ipf + " (tot:" + vec.getTotNumberOfRecords() + " su " + i + "): " + totNumeroFoto); } if (foto1.getPuntoFoto().getId_puntoFoto() > 0L) { String fotoRidotta = foto1.getFileNameRidottaPercorsoCompleto(); String fileName = foto1.getFileNameReale(); String dirRidotte = foto1.getDirRidottaPercorsoCompleto(); File dirRidotteF = new File(dirRidotte); if (!dirRidotteF.exists()) dirRidotteF.mkdirs(); String fotoRidottaTN = dirRidotte + "tn_" + dirRidotte; DBAdapter.printDebug(" ======> puntoFotoR. id:" + puntoFotoR.getId_puntoFoto() + " id_gara: " + puntoFotoR.getId_gara() + " percorso: " + puntoFotoR.getPathCompletoFoto()); String percorsoRemoto = puntoFotoR.getPathCompletoFoto(); if (new File(fotoRidotta).exists() && new File(fotoRidottaTN).exists()) { rp.setStatus(true); StatusMsg.updateMsgByTag(Foto.this.getApFull(), TAG_THREAD_MSG, "foto ridotta esistente. Invio foto tramite thread invio di " + foto1.getFileName() + " ..."); if (debug) { System.out.println(TAG_THREAD_MSG + " foto ridotta esistente. Invio foto tramite thread invio di " + TAG_THREAD_MSG + " ..."); foto1.writeLog(TAG_THREAD_MSG + " foto ridotta esistente. Invio foto tramite thread invio di " + TAG_THREAD_MSG + " ..."); } UploadFileCallable ufc = new UploadFileCallable(urlServletRicevente, fotoRidotta, percorsoRemoto, true); ufc.setObj(foto1); vecFInvio.add(poolInvio.submit((Callable)ufc)); UploadFileCallable ufcTN = new UploadFileCallable(urlServletRicevente, fotoRidottaTN, percorsoRemoto, true); ufcTN.setObj(foto1); vecFInvio.add(poolInvio.submit((Callable)ufcTN)); foto1.writeLog(TAG_THREAD_MSG + " foto " + TAG_THREAD_MSG + " in invio ....."); } else { StatusMsg.updateMsgByTag(Foto.this.getApFull(), TAG_THREAD_MSG, "Riduzione foto tramite thread riduzione di " + foto1.getFileName() + " ..."); if (debug) { System.out.println(TAG_THREAD_MSG + " Riduzione foto tramite thread riduzione di " + TAG_THREAD_MSG + " ..."); foto1.writeLog(TAG_THREAD_MSG + " Riduzione foto tramite thread riduzione di " + TAG_THREAD_MSG + " ..."); } CreaFotoPgCallable cfp = new CreaFotoPgCallable(foto1.getPuntoFoto().getGara(), fotoSorgente, dirRidotte, false); foto1.setThFotoRidotta(fotoRidotta); foto1.setThFotoRidottaTN(fotoRidottaTN); foto1.setThPercorsoRemoto(percorsoRemoto); cfp.setFoto(foto1); vecF.add(pool.submit(cfp)); } if (!rp.getStatus()) { fotoErrate++; err.append("ERRORE!! Foto " + fotoSorgente + " NON RIDOTTA: (" + fotoRidotta + ") " + rp.getMsg()); err.append("\n"); } continue; } err.append("ERRORE!! Foto " + fotoSorgente + " SENZA PUNTO FOTO CON ID " + foto1.getId_puntoFoto() + "!! HAI CANCELLATO UN PUNTOFOTO SENZA RESETTARE L'INDICIZZAZIONE!"); err.append("\n"); } continue; } err.append("ERRORE!! Foto " + fotoSorgente + " con il suo punto foto non e' stato esporato. id_fotoExport=0 "); err.append("\n"); } if (debug) { gara.writeLog(TAG_THREAD_MSG + "\n\nciclo CREAZIONE FOTO / INVIO COLCLUSO\n\nINIZIO ciclo RISULTATI RIDUZIONE, record: " + TAG_THREAD_MSG); System.out.println(TAG_THREAD_MSG + " ###1### ciclo CREAZIONE FOTO / INVIO COLCLUSO: INIZIO ciclo RISULTATI RIDUZIONE, record PUNTOFOTO: " + TAG_THREAD_MSG + " ###1###"); } Foto currentFoto = null; for (int k = 0; k < vecF.getTotNumberOfRecords(); k++) { Future currentFuture = (Future)vecF.nextElement(); try { if (debug) { gara.writeLog(TAG_THREAD_MSG + " ciclo risultato thread riduzioni: currentFuture.get..."); System.out.println(TAG_THREAD_MSG + " ciclo risultato thread riduzioni: currentFuter.get ..."); } rp = currentFuture.get(); if (debug) System.out.println(TAG_THREAD_MSG + " ciclo risultato thread riduzioni: currentFuter.get ... GET OK!"); currentFoto = (Foto)rp.getReturnObj(); if (debug) gara.writeLog(TAG_THREAD_MSG + " risultato: " + TAG_THREAD_MSG + " " + rp.getStatus()); if (rp.getStatus()) { StatusMsg.updateMsgByTag(Foto.this.getApFull(), TAG_THREAD_MSG, "ciclo risultato thread riduzioni: create " + k + " riduzioni su " + vecF.getTotNumberOfRecords() + ". Invio foto tramite thread invio di " + currentFoto.getFileName() + " ..."); if (debug) { gara.writeLog(TAG_THREAD_MSG + " ciclo thread riduzioni: create " + TAG_THREAD_MSG + " riduzioni su " + k + ". Invio foto tramite thread invio di " + vecF.getTotNumberOfRecords() + " ..."); System.out.println(TAG_THREAD_MSG + " ciclo risultato thread riduzioni: create " + TAG_THREAD_MSG + " riduzioni su " + k + ". Invio foto tramite thread invio di " + vecF.getTotNumberOfRecords() + " ..."); } UploadFileCallable ufc = new UploadFileCallable(urlServletRicevente, currentFoto.getThFotoRidotta(), currentFoto.getThPercorsoRemoto(), true); ufc.setObj(currentFoto); vecFInvio.add(poolInvio.submit((Callable)ufc)); UploadFileCallable ufcTN = new UploadFileCallable(urlServletRicevente, currentFoto.getThFotoRidottaTN(), currentFoto.getThPercorsoRemoto(), true); ufcTN.setObj(currentFoto); vecFInvio.add(poolInvio.submit((Callable)ufcTN)); currentFoto.writeLog(TAG_THREAD_MSG + " foto " + TAG_THREAD_MSG + " in invio ....."); } } catch (Exception ex) { ex.printStackTrace(); gara.writeLog(TAG_THREAD_MSG + " eccezione:" + TAG_THREAD_MSG); if (debug) System.out.println(TAG_THREAD_MSG + " ciclo risultato thread riduzioni: ECCEZIONE SU ciclo thread riduzioni n. " + TAG_THREAD_MSG + " riduzioni su " + k + ": " + vecF.getTotNumberOfRecords() + " - " + currentFoto.getFileName()); } } if (debug) { gara.writeLog(TAG_THREAD_MSG + " ciclo RISULTATI CREAZIONE FOTO CONCLUSO
INIZIO ciclo RISULTATI INVIO: record:s " + TAG_THREAD_MSG); System.out.println(TAG_THREAD_MSG + " ###2### ciclo RISULTATI CREAZIONE FOTO CONCLUSO
INIZIO ciclo RISULTATI INVIO: record:s " + TAG_THREAD_MSG + " ###2###"); } for (int j = 0; j < vecFInvio.getTotNumberOfRecords(); j++) { Future currentFuture = (Future)vecFInvio.nextElement(); try { if (debug) { gara.writeLog(TAG_THREAD_MSG + " ciclo RISULTATI INVIO FOTO: currentFuture.get..."); System.out.println(TAG_THREAD_MSG + " ciclo RISULTATI INVIO FOTO: currentFuter.get 8secs ...\n"); } try { rp = currentFuture.get(8L, TimeUnit.SECONDS); } catch (Exception e) { System.out.println(TAG_THREAD_MSG + " ciclo RISULTATI INVIO FOTO: currentFuter.get 8secs ... TIMEOUT!!!!"); System.out.println(TAG_THREAD_MSG + " ECCEZIONE SU ciclo RISULTATI INVIO FOTO TIMEOUT!! n. " + TAG_THREAD_MSG + " su " + j + ": " + vecF.getTotNumberOfRecords() + " " + currentFoto.getFileName()); err.append(TAG_THREAD_MSG + " ECCEZIONE SU ciclo RISULTATI INVIO FOTO TIMEOUT!! n. " + TAG_THREAD_MSG + " su " + j + ": " + vecF.getTotNumberOfRecords() + " " + currentFoto.getFileName()); err.append("\n"); } if (currentFuture.isCancelled()) { if (debug) System.out.println(TAG_THREAD_MSG + " ciclo RISULTATI INVIO FOTO: currentFuter.get 8secs ... GET KOOOOOOOOOO!"); StatusMsg.updateMsgByTag(Foto.this.getApFull(), TAG_THREAD_MSG, " ERRORE!! Upload cancellato! Foto " + currentFoto.getFile() + ": " + rp.getMsg()); currentFoto.writeLog(TAG_THREAD_MSG + " ERRORE!! Upload cancellato! Foto " + TAG_THREAD_MSG + " inviata: " + currentFoto.getFile()); if (debug) { System.out.println(TAG_THREAD_MSG + " ciclo RISULTATI INVIO FOTO: ERRORE!! Upload cancellato! FOTO " + TAG_THREAD_MSG + " inviata: " + currentFoto.getFile() + " - " + rp.getMsg() + " su " + j); err.append(TAG_THREAD_MSG + " ciclo RISULTATI INVIO FOTO: ERRORE!! Upload cancellato! FOTO " + TAG_THREAD_MSG + " inviata: " + currentFoto.getFile() + " - " + rp.getMsg() + " su " + j); err.append("\n"); } } else if (currentFuture.isDone()) { System.out.println(TAG_THREAD_MSG + " ciclo RISULTATI INVIO FOTO: currentFuter.get 8secs ... GET OK!"); currentFoto = (Foto)rp.getReturnObj(); if (rp.getStatus()) { fotoInviate++; StatusMsg.updateMsgByTag(Foto.this.getApFull(), TAG_THREAD_MSG, "Foto " + currentFoto.getFile() + ": " + rp.getMsg()); currentFoto.writeLog(TAG_THREAD_MSG + " Foto " + TAG_THREAD_MSG + " inviata: " + currentFoto.getFile()); if (debug) System.out.println(TAG_THREAD_MSG + " ciclo RISULTATI INVIO FOTO: FOTO " + TAG_THREAD_MSG + " inviata: " + currentFoto.getFile() + " - " + rp.getMsg() + " su " + j); } else { fotoErrate++; if (debug) System.out.println(TAG_THREAD_MSG + " ciclo RISULTATI INVIO FOTO: ERRORE!! Foto " + TAG_THREAD_MSG + " NON TRASFERITA: " + currentFoto.getFileName() + " - " + rp.getMsg() + " su " + j); currentFoto.writeLog(TAG_THREAD_MSG + " ERRORE!! Foto " + TAG_THREAD_MSG + " NON TRASFERITA: " + currentFoto.getFileName()); err.append("ERRORE!! Foto " + currentFoto.getFileName() + " NON TRASFERITA: " + rp.getMsg()); err.append("\n"); StatusMsg.updateMsgByTag(Foto.this.getApFull(), TAG_THREAD_MSG, "ERRORE !! Foto " + currentFoto.getFileName() + " NON TRASFERITA: " + rp.getMsg()); } } else { StatusMsg.updateMsgByTag(Foto.this.getApFull(), TAG_THREAD_MSG, " ATTENZIONE!! Upload non completato! Foto " + currentFoto.getFile() + ": " + rp.getMsg()); currentFoto.writeLog(TAG_THREAD_MSG + " ERRORE!! Upload cancellato! Foto " + TAG_THREAD_MSG + " inviata: " + currentFoto.getFile()); if (debug) { System.out.println(TAG_THREAD_MSG + " ciclo RISULTATI INVIO FOTO: currentFuter.get 8secs ... GET KOOOOOOOOO11!"); System.out.println(TAG_THREAD_MSG + " ciclo RISULTATI INVIO FOTO: ATTENZIONE!! Upload non completato! FOTO " + TAG_THREAD_MSG + " inviata: " + currentFoto.getFile() + " - " + rp.getMsg() + " su " + j); err.append(TAG_THREAD_MSG + " ciclo RISULTATI INVIO FOTO: ATTENZIONE!! Upload non completato! FOTO " + TAG_THREAD_MSG + " inviata: " + currentFoto.getFile() + " - " + rp.getMsg() + " su " + j); err.append("\n"); } } } catch (Exception ex) { ex.printStackTrace(); if (debug) { System.out.println(TAG_THREAD_MSG + " ECCEZIONE SU ciclo RISULTATI INVIO FOTO n. " + TAG_THREAD_MSG + " su " + j + ": " + vecF.getTotNumberOfRecords() + " " + currentFoto.getFileName()); err.append(TAG_THREAD_MSG + " ECCEZIONE SU ciclo RISULTATI INVIO FOTO n. " + TAG_THREAD_MSG + " su " + j + ": " + vecF.getTotNumberOfRecords() + " " + currentFoto.getFileName()); err.append("\n"); } } } if (debug) { gara.writeLog(TAG_THREAD_MSG + " pf:" + TAG_THREAD_MSG + " ciclo RISULTATI INVIO FOTO CONCLUSO
record:s " + currentPF.getDescrizionePuntoFoto()); System.out.println(TAG_THREAD_MSG + " ###3### pf:" + TAG_THREAD_MSG + " ciclo RISULTATI INVIO FOTO CONCLUSO record:s " + currentPF.getDescrizionePuntoFoto() + " ###3###"); } } if (debug) { gara.writeLog(TAG_THREAD_MSG + " ###### FINE DI TUTTI I CICLI DI TUTTI I PUNTIFOTO!!!"); System.out.println(TAG_THREAD_MSG + " FINE DI TUTTI I CICLI DI TUTTI I PUNTIFOTO!!! ######"); } } else { err.append("ERRORE!! GARA remota " + gara.getCodGara() + " NON TROVATA"); err.append("\n"); } } else { err.append("ERRORE!! GARA " + this.id_gara + " INESISTENTE"); err.append("\n"); } } catch (Exception e) { err.append("ERRORE!! " + e.getMessage()); err.append("\n"); } rp.setMsg("INVIATE " + fotoInviate + "- FOTO ERRATE: " + fotoErrate); timer.stop(); SimpleDateFormat dfMS = new SimpleDateFormat("HH:mm:ss "); System.out.println(TAG_THREAD_MSG + " DURATA: " + TAG_THREAD_MSG + "Risultato import:\n" + timer.getDurataHourMin() + "\n\nINVIO FOTO WWW concluso\n###############*"); System.out.println(TAG_THREAD_MSG + " #######################################* ERRORI EXPORT FOTO SU WWW #######################################*"); System.out.println(err.toString()); System.out.println(TAG_THREAD_MSG + " #######################################* FINE EXPORT FOTO SU WWW #######################################*"); Foto.threadInvioFotoWwwMsg = "DURATA: " + timer.getDurataHourMin() + " Risultato invio:\n" + rp.getMsg() + "\n\nINVIO FOTO WWW concluso\n###############*"; StatusMsg.updateMsgByTag(Foto.this.getApFull(), TAG_THREAD_MSG, "Invio foto concluso: DURATA: " + timer.getDurataHourMin() + " Risultato invio:\n" + rp.getMsg()); gara.writeLog("\n\n\n----------------------\n" + TAG_THREAD_MSG + "Invio foto concluso: DURATA: " + timer.getDurataHourMin() + "\nINVIATE " + fotoInviate + "- FOTO ERRATE: " + fotoErrate + "\nRisultato invio:\n" + rp.getMsg() + "\n"); if (debug) System.out.println("OCR #######****### FINE THREAD " + TAG_THREAD_MSG + " ######" + String.valueOf(DBAdapter.getNow())); try { sleep(10000L); } catch (Exception e) {} StatusMsg.deleteMsgByTag(Foto.this.getApFull(), TAG_THREAD_MSG); Foto.threadInvioFotoWww = false; } } public static boolean threadInvioFotoWww = false; public static String threadInvioFotoWwwMsg = ""; public Foto(ApplParmFull newApplParmFull) { super(newApplParmFull); } public Foto() {} public void setId_foto(long newId_foto) { this.id_foto = newId_foto; } public void setFile(String newFile) { String temp = newFile; temp.replace('/', '_'); this.file = temp; } public void setImpression(long newNVisual) { this.impression = newNVisual; } public void setDataUltimaVisual(Date newDataUltimaVisual) { this.dataUltimaVisual = newDataUltimaVisual; } public long getId_foto() { return this.id_foto; } public String getFile() { return (this.file == null) ? "" : this.file.trim(); } public long getImpression() { return this.impression; } public Date getDataUltimaVisual() { return this.dataUltimaVisual; } protected ResParm checkDeleteCascade() { return new ResParm(true); } protected void deleteCascade() {} public Vectumerator findByCR(FotoCR CR, int pageNumber, int pageRows) { StringBuilder s_Sql_Find = new StringBuilder("select A.* from FOTO AS A"); String s_Sql_Order = " order by A.file"; WcString wc = new WcString(); if (CR.getId_gara() != 0L) wc.addWc("A.id_gara=" + CR.getId_gara()); if (CR.getId_puntoFoto() != 0L) wc.addWc("A.id_puntoFoto=" + CR.getId_puntoFoto()); if (!CR.getFile().isEmpty()) wc.addWc("A.file like '%" + CR.getFile() + "%'"); if (!CR.getTipoPuntoFoto().isEmpty()) { s_Sql_Find.append(", PUNTO_FOTO AS B"); wc.addWc("A.id_puntoFoto=B.id_puntoFoto"); wc.addWc("B.tipoPuntoFoto ='" + CR.getTipoPuntoFoto() + "'"); } if (!CR.getPettorale().isEmpty()) wc.addWc("A.pettorali like'%," + CR.getPettorale() + ",%'"); if (CR.getFlgConPettorali() == 1L) wc.addWc("A.pettorali is not null"); try { PreparedStatement stmt = getConn().prepareStatement(String.valueOf(s_Sql_Find) + String.valueOf(s_Sql_Find) + wc.toString()); return findRows(stmt, pageNumber, pageRows); } catch (SQLException e) { removeCPConnection(); handleDebug(e); return AB_EMPTY_VECTUMERATOR; } } public static final synchronized ResParm addImpression(String foto, ApplParmFull ap) { Foto bean = new Foto(ap); bean.findByFoto(foto); if (bean.getDBState() == 1) { bean.setImpression(bean.getImpression() + 1L); } else { bean.setFile(foto); bean.setImpression(1L); } bean.setDataUltimaVisual(getToday()); return bean.save(); } public static final synchronized ResParm addImpression(Foto bean, ApplParmFull ap) { ResParm rp; if (bean.getDBState() == 1) { bean.setImpression(bean.getImpression() + 1L); bean.setDataUltimaVisual(getToday()); rp = bean.save(); } else { rp = new ResParm(false, "Errore! Tentativo di incrementare un impression su una foto non valida. Id_foto: " + bean.getId_foto()); } return rp; } public void findByFoto(String foto) { String s_Sql_Find = "select A.* from FOTO AS A"; String s_Sql_Order = ""; WcString wc = new WcString(); wc.addWc("file = '" + fotoToFile(foto) + "'"); try { PreparedStatement stmt = getConn().prepareStatement(s_Sql_Find + s_Sql_Find + wc.toString()); findFirstRecord(stmt); } catch (SQLException e) { removeCPConnection(); handleDebug(e); } } public long getNextId_foto(FotoCR CR) { long l_id_foto = getId_foto(); StringBuilder s_Sql_Find = new StringBuilder("select A.* from FOTO AS A"); String s_Sql_Order = " order by A.file"; WcString wc = new WcString(); if (CR.getId_gara() != 0L) wc.addWc("A.id_gara=" + CR.getId_gara()); if (CR.getId_puntoFoto() != 0L) wc.addWc("A.id_puntoFoto=" + CR.getId_puntoFoto()); wc.addWc("A.file >'" + getFile() + "'"); if (!CR.getTipoPuntoFoto().isEmpty()) { s_Sql_Find.append(", PUNTO_FOTO AS B"); wc.addWc("A.id_puntoFoto=B.id_puntoFoto"); wc.addWc("B.tipoPuntoFoto ='" + CR.getTipoPuntoFoto() + "'"); } if (!CR.getPettorale().isEmpty()) wc.addWc("A.pettorali like'%," + CR.getPettorale() + ",%'"); try { PreparedStatement stmt = getConn().prepareStatement(String.valueOf(s_Sql_Find) + String.valueOf(s_Sql_Find) + wc.toString()); Vectumerator vec = findRows(stmt, 1, 1); while (vec.hasMoreElements()) { if (vec.hasMoreElements()) { Foto row = (Foto)vec.nextElement(); l_id_foto = row.getId_foto(); break; } } } catch (SQLException e) { handleDebug(e); } return l_id_foto; } public long getPrevId_foto(FotoCR CR) { long l_id_foto = getId_foto(); StringBuilder s_Sql_Find = new StringBuilder("select A.* from FOTO AS A"); String s_Sql_Order = " order by A.file desc"; WcString wc = new WcString(); if (CR.getId_gara() != 0L) wc.addWc("A.id_gara=" + CR.getId_gara()); if (CR.getId_puntoFoto() != 0L) wc.addWc("A.id_puntoFoto=" + CR.getId_puntoFoto()); wc.addWc("A.file <'" + getFile() + "'"); if (!CR.getTipoPuntoFoto().isEmpty()) { s_Sql_Find.append(", PUNTO_FOTO AS B"); wc.addWc("A.id_puntoFoto=B.id_puntoFoto"); wc.addWc("B.tipoPuntoFoto ='" + CR.getTipoPuntoFoto() + "'"); } if (!CR.getPettorale().isEmpty()) wc.addWc("A.pettorali like'%," + CR.getPettorale() + ",%'"); try { PreparedStatement stmt = getConn().prepareStatement(String.valueOf(s_Sql_Find) + String.valueOf(s_Sql_Find) + wc.toString()); Vectumerator vec = findRows(stmt, 1, 1); while (vec.hasMoreElements()) { if (vec.hasMoreElements()) { Foto row = (Foto)vec.nextElement(); l_id_foto = row.getId_foto(); break; } } } catch (SQLException e) { handleDebug(e); } return l_id_foto; } public long getImpression(String foto) { findByFoto(foto); if (getDBState() == 1) return getImpression(); return 0L; } private String fotoToFile(String foto) { String temp = foto; temp = temp.replace('/', '_'); temp = temp.replace(':', '_'); return temp; } public String getDataUltimaVisual(String foto) { findByFoto(foto); if (getDBState() == 1) return getDataFormat().format(getDataUltimaVisual()); return ""; } protected void prepareSave(PreparedStatement ps) throws SQLException { setFile(fotoToFile(getFile())); synchronized (this) { String temp = getPettorali().trim(); if (!temp.isEmpty()) { if (!temp.startsWith(",")) temp = "," + temp; if (!temp.endsWith(",")) temp = temp + ","; } while (temp.indexOf(",,") >= 0) temp = temp.replaceAll(",,", ","); setPettorali(temp); } super.prepareSave(ps); } public void findByFilenamePuntoFoto(String l_filename, long l_id_puntoFoto) { String s_Sql_Find = "select A.* from FOTO AS A"; String s_Sql_Order = ""; WcString wc = new WcString(); wc.addWc("A.file='" + l_filename + "'"); wc.addWc("A.id_puntoFoto=" + l_id_puntoFoto); try { PreparedStatement stmt = getConn().prepareStatement(s_Sql_Find + s_Sql_Find + wc.toString()); findFirstRecord(stmt); } catch (SQLException e) { handleDebug(e); } } public void findByFilenameGara(String l_filename, long l_id_gara) { String s_Sql_Find = "select A.* from FOTO AS A"; String s_Sql_Order = ""; WcString wc = new WcString(); wc.addWc("A.file='" + l_filename + "'"); wc.addWc("A.id_gara=" + l_id_gara); try { PreparedStatement stmt = getConn().prepareStatement(s_Sql_Find + s_Sql_Find + wc.toString()); findFirstRecord(stmt); } catch (SQLException e) { handleDebug(e); } } public long getId_gara() { return this.id_gara; } public void setId_gara(long id_gara) { this.id_gara = id_gara; } public long getId_puntoFoto() { return this.id_puntoFoto; } public void setId_puntoFoto(long id_puntoFoto) { this.id_puntoFoto = id_puntoFoto; setPuntoFoto(null); } public ResParm deleteFotoByPuntoFoto(long l_id_puntoFoto) { ResParm rp; if (l_id_puntoFoto > 0L) { rp = delete("delete from FOTO where (impression is null or impression=0 ) and id_puntoFoto=" + l_id_puntoFoto); } else { rp = new ResParm(false, "ERRORE! punto foto non valido"); } return rp; } public String getPathCompletoFile() { return DBAdapter.convertPathToCurrentFileSystemSeparator(getPuntoFoto().getPathCompletoFoto() + getPuntoFoto().getPathCompletoFoto()); } public String getPathCompletoFileTn() { return getPuntoFoto().getPathCompletoFoto() + "tn_" + getPuntoFoto().getPathCompletoFoto(); } public PuntoFoto getPuntoFoto() { this.puntoFoto = (PuntoFoto)getSecondaryObject(this.puntoFoto, PuntoFoto.class, getId_puntoFoto()); return this.puntoFoto; } public void setPuntoFoto(PuntoFoto newPuntoFoto) { this.puntoFoto = newPuntoFoto; } public long getTotFoto() { StringBuilder s_Sql_Find = new StringBuilder("select count(*) as _cnt from FOTO AS A"); WcString wc = new WcString(); try { PreparedStatement stmt = getConn().prepareStatement(String.valueOf(s_Sql_Find) + String.valueOf(s_Sql_Find)); return getCount(stmt, "_cnt"); } catch (SQLException e) { removeCPConnection(); handleDebug(e); return 0L; } } public String getFileURI() { if (getFile().isEmpty()) return getFile(); int idxDot = getFile().lastIndexOf("."); return getFile().substring(0, idxDot) + "-" + getFile().substring(0, idxDot) + getId_foto(); } public String getPettorali() { if (this.pettorali != null) this.pettorali = this.pettorali.replace('.', ','); return (this.pettorali == null) ? "" : this.pettorali; } public void setPettorali(String pettorali) { this.pettorali = pettorali; } public Vectumerator findByPettoraliCR(FotoCR CR, int pageNumber, int pageRows) { String s_Sql_Find = "select A.* from FOTO AS A"; String s_Sql_Order = " order by A.fileName "; if ((pageNumber == 0 && pageRows == 0) || pageRows == 999) s_Sql_Order = " order by rand() "; WcString wc = new WcString(); if (CR.getId_puntoFoto() == 0L || !CR.getTipoPuntoFoto().isEmpty()) { s_Sql_Find = s_Sql_Find + ", PUNTO_FOTO AS B"; wc.addWc("A.id_puntoFoto=B.id_puntoFoto"); } if (CR.getId_gara() != 0L) wc.addWc("A.id_gara=" + CR.getId_gara()); if (CR.getId_puntoFoto() != 0L) wc.addWc("A.id_puntoFoto=" + CR.getId_puntoFoto()); if (!CR.getTipoPuntoFoto().isEmpty()) wc.addWc("B.tipoPuntoFoto='" + CR.getTipoPuntoFoto() + "'"); if (CR.getId_puntoFoto() != 0L || CR.getTipoPuntoFoto().isEmpty()); if (!CR.getFileName().isEmpty()) wc.addWc("A.fileName like '%" + CR.getFileName() + "%'"); if (!CR.getPettorale().isEmpty()) wc.addWc("A.pettorali like'%," + CR.getPettorale() + ",%'"); try { PreparedStatement stmt = getConn().prepareStatement(s_Sql_Find + s_Sql_Find + wc.toString()); return findRows(stmt, pageNumber, pageRows); } catch (SQLException e) { handleDebug(e); return AB_EMPTY_VECTUMERATOR; } } public final ResParm startInvioFotoDa3PianoAWww(long l_id_gara, boolean l_soloFoto) { if (!isThreadAttivo()) { new ThreadInvioFotoDa3PianoAWww(l_id_gara, l_soloFoto); return new ResParm(true, "Thread Invio Foto Www avviato"); } return new ResParm(false, "ATTENZIONE!! Thread Invio Foto Www gia' in esecuzione!!!"); } public Vectumerator findFotoOPettoraleNonInviatoByGara(long l_id_gara) { return findFotoOPettoraleNonInviatoByGaraPuntoFoto(l_id_gara, 0L); } public Vectumerator findFotoOPettoraleNonInviatoByGaraPuntoFoto(long l_id_gara, long l_id_puntofoto) { String s_Sql_Find = "select A.* from FOTO AS A"; String s_Sql_Order = " order by A.id_puntoFoto"; WcString wc = new WcString(); wc.addWc("A.id_gara=" + l_id_gara); if (l_id_puntofoto > 0L) wc.addWc("A.id_puntoFoto=" + l_id_puntofoto); wc.addWc("(A.flgFotoInviata is null or A.flgFotoInviata=0 or A.flgPettoraleInviato is null or flgPettoraleInviato=0)"); try { PreparedStatement stmt = getConn().prepareStatement(s_Sql_Find + s_Sql_Find + wc.toString()); System.out.println("findFotoOPettoraleNonInviatoByGara: " + s_Sql_Find + wc.toString() + s_Sql_Order); return findRows(stmt); } catch (SQLException e) { return AB_EMPTY_VECTUMERATOR; } } public long findFotoOPettoraleNonInviatoByGaraTotale(long l_id_gara) { String s_Sql_Find = "select count(*) as tot from FOTO AS A"; String s_Sql_Order = " "; WcString wc = new WcString(); wc.addWc("A.id_gara=" + l_id_gara); wc.addWc("(A.flgFotoInviata is null or A.flgFotoInviata=0 or A.flgPettoraleInviato is null or flgPettoraleInviato=0)"); try { PreparedStatement stmt = getConn().prepareStatement(s_Sql_Find + s_Sql_Find + wc.toString()); System.out.println("findFotoOPettoraleNonInviatoByGaraTotale: " + s_Sql_Find + wc.toString() + s_Sql_Order); return (long)getTots(stmt); } catch (SQLException e) { return 0L; } } public static boolean isThreadAttivo() { return threadInvioFotoWww; } public long getFlgFotoInviata() { return this.flgFotoInviata; } public void setFlgFotoInviata(long flgFotoInviata) { this.flgFotoInviata = flgFotoInviata; } public String getFileName() { return (this.file == null) ? "" : this.file.trim(); } public String getFileNamePercorsoCompleto() { return getPuntoFoto().getPathCompletoFoto() + getPuntoFoto().getPathCompletoFoto() + DBAdapter.SEPARATOR; } public String getFileNameRidottaPercorsoCompleto() { return getDirRidottaPercorsoCompleto() + getDirRidottaPercorsoCompleto(); } public String getDirRidottaPercorsoCompleto() { return getPuntoFoto().getPathCompletoFotoRidotta(); } public String getFileNameReale() { return getFileName(); } public long getFlgPettoraleInviato() { return this.flgPettoraleInviato; } public void setFlgPettoraleInviato(long flgPettoraleInviato) { this.flgPettoraleInviato = flgPettoraleInviato; } public long getId_fotoExport() { return this.id_fotoExport; } public void setId_fotoExport(long id_fotoExport) { this.id_fotoExport = id_fotoExport; } public final ResParm startCreaPreview(PuntoFoto puntoFoto) { if (!isThreadAttivo()) { new ThreadCreaPreview(puntoFoto); return new ResParm(true, "Thread Crea Preview Www avviato"); } return new ResParm(false, "ATTENZIONE!! Thread Crea Preview Www gia' in esecuzione!!!"); } public String getPathCompletoRidottaFile() { return getPuntoFoto().getPathCompletoFotoRidotta() + getPuntoFoto().getPathCompletoFotoRidotta(); } public static final ResParm creaRiduzioniPerWeb(Gara gara, String fileSorgente, String dirRidotte, boolean creaNuovamente) { boolean debug = false; ResParm rp = new ResParm(true); StringBuilder sb = new StringBuilder(); if (gara.getId_gara() > 0L) { if (debug) System.err.println("creaRiduzioniPerWeb " + fileSorgente); String fotoSorgente = fileSorgente; if (new File(fotoSorgente).exists()) { int idxNomeFile = fileSorgente.lastIndexOf(DBAdapter.SEPARATOR); String ultimaDirPercorso = fileSorgente.substring(0, idxNomeFile) + fileSorgente.substring(0, idxNomeFile); String fileName = fileSorgente.substring(idxNomeFile + 1); if (dirRidotte == null || dirRidotte.isEmpty()) dirRidotte = ultimaDirPercorso + "RIDOTTA/"; File dirRidotteF = new File(dirRidotte); if (!dirRidotteF.exists()) boolean bool = dirRidotteF.mkdirs(); String fotoRidotta = dirRidotte + dirRidotte; if (creaNuovamente) { File fileRidottaF = new File(fotoRidotta); if (fileRidottaF.exists()) fileRidottaF.delete(); } String fotoRidottaTN = dirRidotte + "tn_" + dirRidotte; if (creaNuovamente) { File fotoRidottaTNF = new File(fotoRidottaTN); if (fotoRidottaTNF.exists()) fotoRidottaTNF.delete(); } int scaledWidth = 2240; if (!new File(fotoRidotta).exists()) { if (!gara.getImgLogoFileName().isEmpty()) { ScaleImage si = new ScaleImage(fotoSorgente, dirRidotte, 0L, scaledWidth, 0, false, false); si.setAutoRotate(true); si.setBrandFileName(gara.getImgLogoFileName()); si.setFullManualScaledImageName(fotoRidotta); si.setBrandFileX(1900); si.setBrandFileY(170); if (!gara.getTestoO().isEmpty()) { si.setWatermarkText(gara.getTestoO()); si.setWatermarkSize((int)gara.getTestoSize()); if (!gara.getTestoFont().isEmpty()) si.setWatermarkFont(gara.getTestoFont()); if (!gara.getTestoColore().isEmpty()) si.setWatermarkColor(Gara.getColorFromHex(gara.getTestoColore())); si.setWmY(1400); } rp = si.scaleIt(); } else { ScaleImage si = new ScaleImage(fotoSorgente, ultimaDirPercorso, 0L, scaledWidth, 0, false, false); si.setAutoRotate(true); si.setFullManualScaledImageName(fotoRidotta); rp = si.scaleIt(); } if (!new File(fotoRidotta).exists()) { rp.setStatus(false); rp.setMsg("Errore! Impossibile creare foto ridotta"); } else { rp.setStatus(true); sb.append(fileName); } } else { rp.setStatus(true); sb.append(fileName); } scaledWidth = 350; if (!new File(fotoRidottaTN).exists()) { ScaleImage si = new ScaleImage(fotoSorgente, dirRidotte, 0L, scaledWidth, 0, false, false); si.setAutoRotate(true); si.setFullManualScaledImageName(fotoRidottaTN); si.setWatermarkText(fileName); int tnFontSize = (int)(gara.getTestoSize() / 4L); si.setWatermarkSize(tnFontSize); if (!gara.getTestoFont().isEmpty()) si.setWatermarkFont(gara.getTestoFont()); if (!gara.getTestoColore().isEmpty()) si.setWatermarkColor(Gara.getColorFromHex(gara.getTestoColore())); si.setWmY(210); rp = si.scaleIt(); if (!new File(fotoRidottaTN).exists()) { rp.setStatus(false); rp.setMsg("Errore! Impossibile creare foto ridotta"); } else { rp.setStatus(true); if (sb.length() > 0) sb.append(","); sb.append("tn_" + fileName); } } else { rp.setStatus(true); if (sb.length() > 0) sb.append(","); sb.append("tn_" + fileName); } } else { rp.setMsg("ERRORE!! Foto " + fotoSorgente + " non esiste. Non รจ possibile creare la ridotta"); rp.setStatus(false); } } rp.setInfoMsg(sb.toString()); return rp; } public ResParm save() { if (!getPettoraliOld().equals(getPettorali())) setFlgPettoraleInviato(0L); return super.save(); } public String getPettoraliOld() { return (this.pettoraliOld == null) ? "" : this.pettoraliOld.trim(); } public void setPettoraliOld(String pettoraleOld) { this.pettoraliOld = pettoraleOld; } protected void initFields() { super.initFields(); setPettoraliOld(null); } protected void fillFields(ResultSet rst) { super.fillFields(rst); setPettoraliOld(getPettorali()); } public final ResParm startCreaPreviewMT(PuntoFoto puntoFoto) { if (!isThreadAttivo()) { new ThreadCreaPreviewMT(puntoFoto); return new ResParm(true, "Thread Crea Preview MT Www avviato"); } return new ResParm(false, "ATTENZIONE!! Thread gia' in esecuzione!!!"); } public String getThFotoRidotta() { return this.thFotoRidotta; } public void setThFotoRidotta(String thFotoRidotta) { this.thFotoRidotta = thFotoRidotta; } public String getThFotoRidottaTN() { return this.thFotoRidottaTN; } public void setThFotoRidottaTN(String thFotoRidottaTN) { this.thFotoRidottaTN = thFotoRidottaTN; } public String getThPercorsoRemoto() { return this.thPercorsoRemoto; } public void setThPercorsoRemoto(String thPercorsoRemoto) { this.thPercorsoRemoto = thPercorsoRemoto; } public final ResParm startInvioFotoDa3PianoAWwwMT(long l_id_gara, boolean l_soloFoto) { if (!isThreadAttivo()) { new ThreadInvioFotoDa3PianoAWwwMT(l_id_gara, l_soloFoto); System.out.println("startInvioFotoDa3PianoAWwwMT: Invio Foto MT Www avviato!!!"); return new ResParm(true, "Thread Invio Foto MT Www avviato"); } System.out.println("startInvioFotoDa3PianoAWwwMT: ATTENZIONE!! Thread Invio Foto MT Www gia' in esecuzione!!!"); return new ResParm(false, "ATTENZIONE!! Thread Invio Foto MT Www gia' in esecuzione!!!"); } public ResParm impostaFileInviato() { ResParm rp = new ResParm(); if (getId_foto() > 0L) { rp = update("update FOTO set flgFotoInviata=1 where id_foto=" + getId_foto()); if (rp.getStatus()) setFlgFotoInviata(1L); } return rp; } private static final synchronized ResParm syncAggiornaFotoExportPettoraleInviato_1(Foto bean, long l_id_fotoExport, long l_flgPettoraleInviato) { String s_sql = "update FOTO SET id_fotoExport=" + l_id_fotoExport + " ,flgPettoraleInviato = " + l_flgPettoraleInviato + " where id_foto=" + bean.getId_foto(); ResParm rp = bean.update(s_sql); if (rp.getStatus()) { bean.setId_fotoExport(l_id_fotoExport); bean.setFlgPettoraleInviato(l_flgPettoraleInviato); } return rp; } public static final synchronized ResParm syncAggiornaPettoraleInviato(Foto bean, long l_id_fotoExport, long l_flgPettoraleInviato, String l_pettorali, long l_flgTipo) { if (l_flgTipo == 1L) return syncAggiornaFotoExportPettoraleInviato_1(bean, l_id_fotoExport, l_flgPettoraleInviato); if (l_flgTipo == 2L) return syncAggiornaPettorale_2(bean, l_pettorali); if (l_flgTipo == 3L) return syncAggiornaPettoraleInviato_3(bean, l_flgPettoraleInviato); return new ResParm(false); } private static final synchronized ResParm syncAggiornaPettoraleInviato_3(Foto bean, long l_flgPettoraleInviato) { String s_sql = "update FOTO SET flgPettoraleInviato =" + l_flgPettoraleInviato + " where id_foto=" + bean.getId_foto(); ResParm rp = bean.update(s_sql); if (rp.getStatus()) bean.setFlgPettoraleInviato(l_flgPettoraleInviato); return rp; } private static final synchronized ResParm syncAggiornaPettorale_2(Foto bean, String l_pettorali) { String temp = l_pettorali.trim(); if (!temp.isEmpty()) { if (!temp.startsWith(",")) temp = "," + temp; if (!temp.endsWith(",")) temp = temp + ","; while (temp.indexOf(",,") >= 0) temp = temp.replaceAll(",,", ","); } String s_sql = "update FOTO SET pettorali='" + temp + "' ,flgPettoraleInviato = null where id_foto=" + bean.getId_foto(); ResParm rp = bean.update(s_sql); if (rp.getStatus()) { bean.setFlgPettoraleInviato(0L); bean.setPettorali(temp); } return rp; } public String getFileNameFaceRecognition() { return getFileNamePercorsoCompleto(); } public boolean hasFotoFaces() { return false; } public ResParm _ricalcolaFotoFaces() { return null; } public long getFlgFotoSearch() { return 0L; } public Timestamp getTsInserimento() { return null; } public String getMd5() { return ""; } public void setMd5(String newMd5) {} public String getFileName(String ext) { if (ext.isEmpty()) return getFileName().replaceAll("_", "+"); return getFileName().toLowerCase().replace(ext.toLowerCase(), "").replaceAll("_", "+"); } public long getNumOfFaces() { return 0L; } public long getHeight() { return 0L; } public long getWidth() { return 0L; } public long getMargineFotoBottom() { return 0L; } public long getMargineFotoTop() { return 0L; } public long getMargineFotoSx() { return 0L; } public long getMargineFotoDx() { return 0L; } public long getDimMinFotoFaceReal() { return 0L; } public FaceDetectionMethod getFaceDetectionMethodReal() { return null; } public double getDetectFaceConfidentThresold() { return 0.0D; } public void setId_faceDetectionMethod(long l_id_faceDetectionMethod) {} public long getId_faceDetectionMethod() { return 0L; } public long getFaceSize() { return 0L; } }