Regalamiunsorriso/decompiled-libs/www/cli-rus-2.1.9/it/acxent/pg/PuntoFoto.java

960 lines
44 KiB
Java

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.util.SimpleDateFormat;
import it.acxent.util.Timer;
import it.acxent.util.Vectumerator;
import java.io.File;
import java.io.Serializable;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.HashSet;
import java.util.stream.Stream;
import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecuteResultHandler;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.ExecuteResultHandler;
import org.apache.commons.exec.ExecuteStreamHandler;
import org.apache.commons.exec.ExecuteWatchdog;
import org.apache.commons.exec.PumpStreamHandler;
import org.apache.commons.io.output.ByteArrayOutputStream;
public class PuntoFoto extends _PgAdapter implements Serializable {
private static HashSet<Long> hsOcrThread = new HashSet<>();
private static final long serialVersionUID = 1511425419487L;
public static final long INDEX_TYPE_NONE = 0L;
public static final long INDEX_TYPE_TEMPI = 1L;
public static final long INDEX_TYPE_MANUALE = 2L;
private long id_puntoFoto;
private long id_gara;
private String descrizionePuntoFoto;
private String pathRelativoFoto;
private String tipoPuntoFoto;
private Gara gara;
private String tipoPuntoFotoNew;
private long flgIndexOk;
private long id_puntoFotoExport;
class ThreadIndicizzaPuntofoto extends Thread {
private PuntoFoto puntoFoto;
public ThreadIndicizzaPuntofoto(PuntoFoto puntoFoto) {
this.puntoFoto = puntoFoto;
if (!PuntoFoto.isThreadAttivo()) {
PuntoFoto.threadPuntoFoto = true;
start();
}
}
public void run() {
boolean debug = false;
String TAG_THREAD_MSG = "INDICIZZA PUNTOFOTO " + this.puntoFoto.getDescrizione();
Timestamp start = new Timestamp(Calendar.getInstance().getTimeInMillis());
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(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "...inizio ...");
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<Foto> vec = foto.findByCR(fotoCR, 0, 0);
while (vec.hasMoreElements()) {
Foto row = (Foto)vec.nextElement();
Foto.creaRiduzioniPerWeb(this.puntoFoto.getGara(), row.getFileNamePercorsoCompleto(), null, false);
i++;
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "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");
Timestamp stop = new Timestamp(Calendar.getInstance().getTimeInMillis());
SimpleDateFormat dfMS = new SimpleDateFormat("HH:mm:ss ");
System.out.println(TAG_THREAD_MSG + " DURATA: " + TAG_THREAD_MSG + "Risultato import:\n" + dfMS.format(new Time(stop.getTime() - start.getTime() - 3600000L)) + "\n\nCREAZIONE PREVIEW WWW concluso\n****************");
System.out.println(TAG_THREAD_MSG + " **************************************** ERRORI EXPORT FOTO SU WWW ****************************************");
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, " concluso: DURATA: " +
dfMS.format(new Time(stop.getTime() - start.getTime() - 3600000L)) + "Risultato invio:\n" + rp.getMsg());
try {
sleep(10000L);
} catch (Exception e) {}
StatusMsg.deleteMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG);
PuntoFoto.threadPuntoFoto = false;
}
}
class ThreadOcrPuntofoto extends Thread {
private PuntoFoto puntoFoto;
public ThreadOcrPuntofoto(PuntoFoto puntoFoto) {
this.puntoFoto = puntoFoto;
if (PuntoFoto.setThreadOcrAttivo(puntoFoto.getId_puntoFoto()))
start();
}
public void runPyton() {
String TAG_THREAD_MSG = "OCR GARA " + this.puntoFoto.getId_gara() + " " + this.puntoFoto.getGara().getDescrizione() + " PUNTOFOTO " +
this.puntoFoto.getId_puntoFoto() + " " + this.puntoFoto.getDescrizionePuntoFoto();
Timestamp start = new Timestamp(Calendar.getInstance().getTimeInMillis());
ResParm rp = new ResParm(true);
StringBuffer err = new StringBuffer();
String COMANDOSH = "/bin/sh ";
String COMANDO_PRODUZIONE = "cd /home/sites/bin/ && /usr/local/bin/python3 /home/sites/bin/det.py -d $1 -c $2 && echo '******* fine indicizzazione OCR'";
String COMANDO_TEST = PuntoFoto.this.getParm("OCR_COMANDO_SHELL_TEST").getTesto() + " ";
String END_COMMAND_TAG = "******* fine indicizzazione OCR";
String COMANDO = "cd /home/sites/bin/ && /usr/local/bin/python3 /home/sites/bin/det.py -d $1 -c $2 && echo '******* fine indicizzazione OCR'";
String dirDaIndicizzare = PuntoFoto.this.getPathCompletoFoto();
String pathRisultato = PuntoFoto.this.getDocBase() + "_csv/";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
String dataFile = df.format(DBAdapter.getToday());
String nomeFileCsv = "" + PuntoFoto.this.getId_gara() + "-" + PuntoFoto.this.getId_gara() + "_" + PuntoFoto.this.getId_puntoFoto() + ".csv";
String TMP_PRODUZIONE_LINEE_FILE = PuntoFoto.this.getParm("OCR_LINEE_FILE_PRODUZIONE").getTesto() + PuntoFoto.this.getParm("OCR_LINEE_FILE_PRODUZIONE").getTesto();
String TMP_TEST_LINEE_FILE = PuntoFoto.this.getParm("OCR_LINEE_FILE_TEST").getTesto() + PuntoFoto.this.getParm("OCR_LINEE_FILE_TEST").getTesto();
String LINEE_FILE = TMP_PRODUZIONE_LINEE_FILE;
String fineNameFinale = pathRisultato + pathRisultato;
String comandoParm = nomeFileCsv + " " + nomeFileCsv + " " + dirDaIndicizzare;
String comandoCompleto = COMANDO + COMANDO;
System.out.println(comandoCompleto);
PuntoFoto.this.getApFull().writeLog(comandoCompleto);
long lineCount = 0L;
try {
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "eseguo " + comandoCompleto);
DefaultExecutor defaultExecutor = new DefaultExecutor();
ExecuteWatchdog watchdog = new ExecuteWatchdog(300000L);
defaultExecutor.setWatchdog(watchdog);
ByteArrayOutputStream stdout = new ByteArrayOutputStream();
PumpStreamHandler psh = new PumpStreamHandler(stdout);
defaultExecutor.setStreamHandler((ExecuteStreamHandler)psh);
DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
CommandLine cl = null;
COMANDO = COMANDO.replace("$1", dirDaIndicizzare);
LINEE_FILE = pathRisultato + pathRisultato;
COMANDO = COMANDO.replace("$2", LINEE_FILE);
cl = new CommandLine(COMANDO);
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "Chiamata OCR Python in corso..... file: " + nomeFileCsv);
System.out.println("chiamata ocr: " + COMANDO);
defaultExecutor.execute(cl, (ExecuteResultHandler)resultHandler);
String temp = "";
int numeroCicli = 0;
File tmpFile = new File(LINEE_FILE);
int numTentativi = 0;
while (!tmpFile.exists() && numTentativi < 2) {
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "Chiamata OCR Python in corso..... file: " + nomeFileCsv +
DBAdapter.charRight("", numTentativi, "."));
sleep(2000L);
numTentativi++;
}
Stream<String> stream = null;
if (tmpFile.exists())
while (temp.indexOf("******* fine indicizzazione OCR") < 0) {
String[] arr;
numeroCicli++;
temp = stdout.toString().trim();
if (temp.indexOf("\n") > 0) {
arr = temp.split("\n");
} else {
arr = temp.split("\r");
}
System.out.println(arr.length);
if (arr != null)
temp = arr[arr.length - 1];
System.out.println("ultima riga: " + temp);
if (tmpFile.exists()) {
try {
stream = Files.lines(Paths.get(LINEE_FILE), StandardCharsets.UTF_8);
lineCount = stream.count() - 1L;
} catch (Exception e) {
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "Eccezione file " + nomeFileCsv + ": " + e.getMessage());
} finally {
if (stream != null) {
stream.close();
stream = null;
}
}
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, " waiting.... " + numeroCicli + " Trovate " + lineCount + " Foto con numeri - " + temp);
System.out.println(TAG_THREAD_MSG + " waiting.... " + TAG_THREAD_MSG + " Trovate " + numeroCicli + " Foto con numeri: " + lineCount);
}
sleep(2000L);
}
temp = stdout.toString().trim();
System.out.println("stout: " + temp);
resultHandler.waitFor();
int exitVal = resultHandler.getExitValue();
System.out.println(" fine waitfor: exit val= " + exitVal);
if (exitVal == 0);
} catch (Exception e) {
err.append("ERRORE!! " + e.getMessage());
err.append("\n");
}
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "fine OCR. Trovate " + lineCount + " foto con numeri. Importazione indici in corso...");
PuntoFoto.this.getApFull().writeLog("\nfine OCR. Importazione indici in corso...");
if (new File(fineNameFinale).exists()) {
rp = this.puntoFoto.getGara().indexFotoPisa(fineNameFinale, TAG_THREAD_MSG);
} else {
err.append("ERRORE!! file " + nomeFileCsv + " NON trovato.");
err.append("\n");
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "ERRORE!! file " + nomeFileCsv + " NON trovato.");
PuntoFoto.this.getApFull().writeLog("\nERRORE!! file " + nomeFileCsv + " NON trovato.");
}
Timestamp stop = new Timestamp(Calendar.getInstance().getTimeInMillis());
SimpleDateFormat dfMS = new SimpleDateFormat("HH:mm:ss ");
PuntoFoto.this.getApFull().writeLog(TAG_THREAD_MSG + " DURATA: " + TAG_THREAD_MSG + "Risultato import:\n" + dfMS.format(new Time(stop.getTime() - start.getTime() - 3600000L)) + "\n\n ocr concluso\n****************");
if (err.length() > 0) {
PuntoFoto.this.getApFull().writeLog(TAG_THREAD_MSG + " **************************************** ERRORI ocr ****************************************\n" + TAG_THREAD_MSG);
rp.appendMsg(" " + err.toString());
}
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, " concluso: DURATA: " +
dfMS.format(new Time(stop.getTime() - start.getTime() - 3600000L)) + "\n" + rp.getMsg());
try {
sleep(4000L);
} catch (Exception e) {}
StatusMsg.deleteMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG);
PuntoFoto.removeThreadOcrAttivo(this.puntoFoto.getId_puntoFoto());
}
public void runProcessBuilder() {
String TAG_THREAD_MSG = "OCR GARA " + this.puntoFoto.getId_gara() + " " + this.puntoFoto.getGara().getDescrizione() + " PUNTOFOTO " +
this.puntoFoto.getId_puntoFoto() + " " + this.puntoFoto.getDescrizionePuntoFoto();
Timestamp start = new Timestamp(Calendar.getInstance().getTimeInMillis());
ResParm rp = new ResParm(true);
StringBuffer err = new StringBuffer();
String COMANDOSH = "/bin/sh ";
String COMANDO_PRODUZIONE = PuntoFoto.this.getParm("OCR_COMANDO_SHELL_PRODUZIONE").getTesto() + " ";
String COMANDO_TEST = PuntoFoto.this.getParm("OCR_COMANDO_SHELL_TEST").getTesto() + " ";
String COMANDO = COMANDO_PRODUZIONE;
String dirDaIndicizzare = PuntoFoto.this.getPathCompletoFoto();
String pathRisultato = PuntoFoto.this.getDocBase() + "_csv/";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
String dataFile = df.format(DBAdapter.getToday());
String nomeFileCsv = "" + PuntoFoto.this.getId_gara() + "-" + PuntoFoto.this.getId_gara() + "_" + PuntoFoto.this.getId_puntoFoto() + ".csv";
String TMP_PRODUZIONE_LINEE_FILE = PuntoFoto.this.getParm("OCR_LINEE_FILE_PRODUZIONE").getTesto() + PuntoFoto.this.getParm("OCR_LINEE_FILE_PRODUZIONE").getTesto();
String TMP_TEST_LINEE_FILE = PuntoFoto.this.getParm("OCR_LINEE_FILE_TEST").getTesto() + PuntoFoto.this.getParm("OCR_LINEE_FILE_TEST").getTesto();
String LINEE_FILE = TMP_PRODUZIONE_LINEE_FILE;
String fineNameFinale = pathRisultato + pathRisultato;
String comandoParm = nomeFileCsv + " " + nomeFileCsv + " " + dirDaIndicizzare;
String comandoCompleto = COMANDO + COMANDO;
System.out.println(comandoCompleto);
PuntoFoto.this.getApFull().writeLog(comandoCompleto);
long lineCount = 0L;
try {
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "eseguo " + comandoCompleto);
ProcessBuilder processBuilder = new ProcessBuilder(new String[0]);
System.out.println("Processbuilder.command: " + COMANDO.trim() + " - " + nomeFileCsv + " - " + dirDaIndicizzare + " - " + pathRisultato);
processBuilder.command(COMANDO.trim(), nomeFileCsv, dirDaIndicizzare, pathRisultato);
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "Chiamata OCR Python in corso..... file: " + nomeFileCsv);
Process process = processBuilder.start();
sleep(2000L);
File tmpFile = new File(LINEE_FILE);
int numTentativi = 0;
while (!tmpFile.exists() && numTentativi < 20) {
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "Chiamata OCR Python in corso..... file: " + nomeFileCsv +
DBAdapter.charRight("", numTentativi, "."));
sleep(2000L);
numTentativi++;
}
int numeroCicli = 0;
if (tmpFile.exists()) {
while (tmpFile.exists()) {
numeroCicli++;
Stream<String> stream = null;
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "...... " + numeroCicli);
System.out.println(TAG_THREAD_MSG + " waiting...... " + TAG_THREAD_MSG + " file tmp: " + numeroCicli);
sleep(2000L);
}
} else {
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "File " + nomeFileCsv + " non trovato!!!");
sleep(4000L);
}
System.out.println("waitfor");
int exitVal = process.waitFor();
System.out.println(" fine waitfor: exit val= " + exitVal);
if (exitVal == 0);
} catch (Exception e) {
err.append("ERRORE!! " + e.getMessage());
err.append("\n");
}
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "fine OCR. Trovate " + lineCount + " foto con numeri. Importazione indici in corso...");
PuntoFoto.this.getApFull().writeLog("\nfine OCR. Importazione indici in corso...");
if (new File(fineNameFinale).exists()) {
rp = this.puntoFoto.getGara().indexFotoPisa(fineNameFinale, TAG_THREAD_MSG);
} else {
err.append("ERRORE!! file " + nomeFileCsv + " NON trovato.");
err.append("\n");
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "ERRORE!! file " + nomeFileCsv + " NON trovato.");
PuntoFoto.this.getApFull().writeLog("\nERRORE!! file " + nomeFileCsv + " NON trovato.");
}
Timestamp stop = new Timestamp(Calendar.getInstance().getTimeInMillis());
SimpleDateFormat dfMS = new SimpleDateFormat("HH:mm:ss ");
PuntoFoto.this.getApFull().writeLog(TAG_THREAD_MSG + " DURATA: " + TAG_THREAD_MSG + "Risultato import:\n" + dfMS.format(new Time(stop.getTime() - start.getTime() - 3600000L)) + "\n\n ocr concluso\n****************");
if (err.length() > 0) {
PuntoFoto.this.getApFull().writeLog(TAG_THREAD_MSG + " **************************************** ERRORI ocr ****************************************\n" + TAG_THREAD_MSG);
rp.appendMsg(" " + err.toString());
}
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, " concluso: DURATA: " +
dfMS.format(new Time(stop.getTime() - start.getTime() - 3600000L)) + "\n" + rp.getMsg());
try {
sleep(4000L);
} catch (Exception e) {}
StatusMsg.deleteMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG);
PuntoFoto.removeThreadOcrAttivo(this.puntoFoto.getId_puntoFoto());
}
public void run() {
String TAG_THREAD_MSG = "OCR GARA " + this.puntoFoto.getId_gara() + " " + this.puntoFoto.getGara().getDescrizione() + " PUNTOFOTO " +
this.puntoFoto.getId_puntoFoto() + " " + this.puntoFoto.getDescrizionePuntoFoto();
Timer timer = new Timer();
timer.start();
ResParm rp = new ResParm(true);
StringBuffer err = new StringBuffer();
String COMANDOSH = "/bin/sh ";
String COMANDO_PRODUZIONE = PuntoFoto.this.getParm("OCR_COMANDO_SHELL_PRODUZIONE").getTesto() + " ";
String COMANDO_TEST = PuntoFoto.this.getParm("OCR_COMANDO_SHELL_TEST").getTesto() + " ";
String END_COMMAND_TAG = "******* fine indicizzazione OCR";
String COMANDO = COMANDO_PRODUZIONE;
String dirDaIndicizzare = PuntoFoto.this.getPathCompletoFoto();
String pathRisultato = PuntoFoto.this.getDocBase() + "_csv/";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
String dataFile = df.format(DBAdapter.getToday());
String nomeFileCsv = "" + PuntoFoto.this.getId_gara() + "-" + PuntoFoto.this.getId_gara() + "_" + PuntoFoto.this.getId_puntoFoto() + ".csv";
String TMP_PRODUZIONE_LINEE_FILE = PuntoFoto.this.getParm("OCR_LINEE_FILE_PRODUZIONE").getTesto() + PuntoFoto.this.getParm("OCR_LINEE_FILE_PRODUZIONE").getTesto();
String TMP_TEST_LINEE_FILE = PuntoFoto.this.getParm("OCR_LINEE_FILE_TEST").getTesto() + PuntoFoto.this.getParm("OCR_LINEE_FILE_TEST").getTesto();
String fineNameFinale = pathRisultato + pathRisultato;
String LINEE_FILE = TMP_PRODUZIONE_LINEE_FILE;
LINEE_FILE = fineNameFinale;
String comandoParm = nomeFileCsv + " " + nomeFileCsv + " " + dirDaIndicizzare;
String comandoCompleto = COMANDO + COMANDO;
System.out.println(TAG_THREAD_MSG + "\n**** eseguo " + TAG_THREAD_MSG);
PuntoFoto.this.getApFull().writeLog(comandoCompleto);
long lineCount = 0L;
try {
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "eseguo " + comandoCompleto);
System.out.println(TAG_THREAD_MSG + " eseguo " + TAG_THREAD_MSG);
DefaultExecutor defaultExecutor = new DefaultExecutor();
ExecuteWatchdog watchdog = new ExecuteWatchdog(300000L);
defaultExecutor.setWatchdog(watchdog);
ByteArrayOutputStream stdout = new ByteArrayOutputStream();
PumpStreamHandler psh = new PumpStreamHandler(stdout);
defaultExecutor.setStreamHandler((ExecuteStreamHandler)psh);
DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
CommandLine cl = new CommandLine(COMANDO.trim());
cl.addArgument(nomeFileCsv);
cl.addArgument(dirDaIndicizzare);
cl.addArgument(pathRisultato);
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "Chiamata OCR Python in corso..... file: " + nomeFileCsv);
defaultExecutor.execute(cl, (ExecuteResultHandler)resultHandler);
String temp = "";
int numeroCicli = 0;
File tmpFile = new File(LINEE_FILE);
int numTentativi = 0;
while (!tmpFile.exists() && numTentativi < 20) {
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "Chiamata OCR Python in corso..... aspetto il file: " + nomeFileCsv +
DBAdapter.charRight("", numTentativi, "."));
System.out.println(TAG_THREAD_MSG + " Chiamata OCR Python in corso..... aspetto il file: " + TAG_THREAD_MSG + nomeFileCsv);
sleep(2000L);
numTentativi++;
}
Stream<String> stream = null;
long currentLineCount = 0L;
long numLineCountUguali = 0L;
long maxNumlineCountUguali = 20L;
while (temp.indexOf("******* fine indicizzazione OCR") < 0) {
String[] arr;
numeroCicli++;
temp = stdout.toString().trim();
if (temp.indexOf("\n") > 0) {
arr = temp.split("\n");
} else {
arr = temp.split("\r");
}
if (arr != null)
temp = arr[arr.length - 1];
if (tmpFile.exists()) {
try {
stream = Files.lines(Paths.get(LINEE_FILE), StandardCharsets.UTF_8);
lineCount = stream.count() - 1L;
} catch (Exception e) {
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "Eccezione file " + nomeFileCsv + ": " +
e.getMessage());
} finally {
if (stream != null) {
stream.close();
stream = null;
}
}
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, " ciclo " + numeroCicli + " - Trovate " + lineCount + " Foto con numeri - " + temp);
System.out.println(TAG_THREAD_MSG + " ciclo " + TAG_THREAD_MSG + " - Trovate " + numeroCicli + " Foto con numeri: " + lineCount);
}
if (currentLineCount == lineCount) {
numLineCountUguali++;
} else {
numLineCountUguali = 0L;
currentLineCount = lineCount;
}
if (numLineCountUguali >= maxNumlineCountUguali) {
System.out.println("BREAK!!!");
break;
}
sleep(1000L);
}
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, " Fuori dal ciclo lettura OCR principale..... Foto con numeri - " + temp + " waitfor script ocr......");
System.out.println("waitfor....");
resultHandler.waitFor();
int exitVal = resultHandler.getExitValue();
System.out.println(" fine waitfor: exit val= " + exitVal);
if (exitVal == 0);
} catch (Exception e) {
err.append("ERRORE!! " + e.getMessage());
err.append("\n");
}
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "fine OCR. Trovate " + lineCount + " foto con numeri. Importazione indici in corso...");
System.out.println(TAG_THREAD_MSG + " fine OCR. Trovate " + TAG_THREAD_MSG + " foto con numeri. Importazione indici in corso...");
PuntoFoto.this.getApFull().writeLog("\nfine OCR. Importazione indici in corso...");
if (new File(fineNameFinale).exists()) {
rp = this.puntoFoto.getGara().indexFotoPisa(fineNameFinale, TAG_THREAD_MSG);
} else {
err.append("ERRORE!! file " + nomeFileCsv + " NON trovato.");
err.append("\n");
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "ERRORE!! file " + nomeFileCsv + " NON trovato.");
PuntoFoto.this.getApFull().writeLog("\nERRORE!! file " + nomeFileCsv + " NON trovato.");
}
timer.stop();
PuntoFoto.this.getApFull().writeLog(TAG_THREAD_MSG + " DURATA: " + TAG_THREAD_MSG + " Risultato import:\n" + timer.getDurataHourMin() + "\n\n ocr concluso\n****************");
if (err.length() > 0) {
PuntoFoto.this.getApFull().writeLog(TAG_THREAD_MSG + " **************************************** ERRORI ocr ****************************************\n" + TAG_THREAD_MSG);
rp.appendMsg(" " + err.toString());
}
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, " concluso: DURATA: " + timer.getDurataHourMin() + "\n" + rp.getMsg());
System.out.println(TAG_THREAD_MSG + " concluso: DURATA: " + TAG_THREAD_MSG + "\n" + timer.getDurataHourMin());
try {
sleep(4000L);
} catch (Exception e) {}
StatusMsg.deleteMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG);
PuntoFoto.removeThreadOcrAttivo(this.puntoFoto.getId_puntoFoto());
}
public void runExecSh() {
String TAG_THREAD_MSG = "OCR GARA " + this.puntoFoto.getId_gara() + " " + this.puntoFoto.getGara().getDescrizione() + " PUNTOFOTO " +
this.puntoFoto.getId_puntoFoto() + " " + this.puntoFoto.getDescrizionePuntoFoto();
Timestamp start = new Timestamp(Calendar.getInstance().getTimeInMillis());
ResParm rp = new ResParm(true);
StringBuffer err = new StringBuffer();
String COMANDOSH = "/bin/sh ";
String COMANDO_PRODUZIONE = PuntoFoto.this.getParm("OCR_COMANDO_SHELL_PRODUZIONE").getTesto() + " ";
String COMANDO_TEST = PuntoFoto.this.getParm("OCR_COMANDO_SHELL_TEST").getTesto() + " ";
String END_COMMAND_TAG = "******* fine indicizzazione OCR";
String COMANDO = COMANDO_PRODUZIONE;
String dirDaIndicizzare = PuntoFoto.this.getPathCompletoFoto();
String pathRisultato = PuntoFoto.this.getDocBase() + "_csv/";
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
String dataFile = df.format(DBAdapter.getToday());
String nomeFileCsv = "" + PuntoFoto.this.getId_gara() + "-" + PuntoFoto.this.getId_gara() + "_" + PuntoFoto.this.getId_puntoFoto() + ".csv";
String TMP_PRODUZIONE_LINEE_FILE = PuntoFoto.this.getParm("OCR_LINEE_FILE_PRODUZIONE").getTesto() + PuntoFoto.this.getParm("OCR_LINEE_FILE_PRODUZIONE").getTesto();
String TMP_TEST_LINEE_FILE = PuntoFoto.this.getParm("OCR_LINEE_FILE_TEST").getTesto() + PuntoFoto.this.getParm("OCR_LINEE_FILE_TEST").getTesto();
String LINEE_FILE = TMP_PRODUZIONE_LINEE_FILE;
String fineNameFinale = pathRisultato + pathRisultato;
String comandoParm = nomeFileCsv + " " + nomeFileCsv + " " + dirDaIndicizzare;
String comandoCompleto = COMANDO + COMANDO;
System.out.println(comandoCompleto);
PuntoFoto.this.getApFull().writeLog(comandoCompleto);
long lineCount = 0L;
try {
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "eseguo " + comandoCompleto);
DefaultExecutor defaultExecutor = new DefaultExecutor();
ExecuteWatchdog watchdog = new ExecuteWatchdog(300000L);
defaultExecutor.setWatchdog(watchdog);
ByteArrayOutputStream stdout = new ByteArrayOutputStream();
PumpStreamHandler psh = new PumpStreamHandler(stdout);
defaultExecutor.setStreamHandler((ExecuteStreamHandler)psh);
DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
CommandLine cl = new CommandLine(COMANDO.trim());
cl.addArgument(nomeFileCsv);
cl.addArgument(dirDaIndicizzare);
cl.addArgument(pathRisultato);
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "Chiamata OCR Python in corso..... file: " + nomeFileCsv);
defaultExecutor.execute(cl, (ExecuteResultHandler)resultHandler);
String temp = "";
int numeroCicli = 0;
File tmpFile = new File(LINEE_FILE);
int numTentativi = 0;
while (!tmpFile.exists() && numTentativi < 20) {
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "Chiamata OCR Python in corso..... file: " + nomeFileCsv +
DBAdapter.charRight("", numTentativi, "."));
sleep(2000L);
numTentativi++;
}
Stream<String> stream = null;
while (tmpFile.exists()) {
String[] arr;
numeroCicli++;
temp = stdout.toString().trim();
if (temp.indexOf("\n") > 0) {
arr = temp.split("\n");
} else {
arr = temp.split("\r");
}
System.out.println(arr.length);
if (arr != null)
temp = arr[arr.length - 1];
System.out.println("ultima riga: " + temp);
if (tmpFile.exists()) {
try {
stream = Files.lines(Paths.get(LINEE_FILE), StandardCharsets.UTF_8);
lineCount = stream.count() - 1L;
} catch (Exception e) {
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "Eccezione file " + nomeFileCsv + ": " +
e.getMessage());
} finally {
if (stream != null) {
stream.close();
stream = null;
}
}
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, " waiting.... " + numeroCicli + " Trovate " + lineCount + " Foto con numeri - " + temp);
System.out.println(TAG_THREAD_MSG + " waiting.... " + TAG_THREAD_MSG + " Trovate " + numeroCicli + " Foto con numeri: " + lineCount);
}
sleep(2000L);
}
resultHandler.waitFor();
int exitVal = resultHandler.getExitValue();
System.out.println(" fine waitfor: exit val= " + exitVal);
if (exitVal == 0);
} catch (Exception e) {
err.append("ERRORE!! " + e.getMessage());
err.append("\n");
}
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "fine OCR. Trovate " + lineCount + " foto con numeri. Importazione indici in corso...");
PuntoFoto.this.getApFull().writeLog("\nfine OCR. Importazione indici in corso...");
if (new File(fineNameFinale).exists()) {
rp = this.puntoFoto.getGara().indexFotoPisa(fineNameFinale, TAG_THREAD_MSG);
} else {
err.append("ERRORE!! file " + nomeFileCsv + " NON trovato.");
err.append("\n");
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, "ERRORE!! file " + nomeFileCsv + " NON trovato.");
PuntoFoto.this.getApFull().writeLog("\nERRORE!! file " + nomeFileCsv + " NON trovato.");
}
Timestamp stop = new Timestamp(Calendar.getInstance().getTimeInMillis());
SimpleDateFormat dfMS = new SimpleDateFormat("HH:mm:ss ");
PuntoFoto.this.getApFull().writeLog(TAG_THREAD_MSG + " DURATA: " + TAG_THREAD_MSG + "Risultato import:\n" + dfMS.format(new Time(stop.getTime() - start.getTime() - 3600000L)) + "\n\n ocr concluso\n****************");
if (err.length() > 0) {
PuntoFoto.this.getApFull().writeLog(TAG_THREAD_MSG + " **************************************** ERRORI ocr ****************************************\n" + TAG_THREAD_MSG);
rp.appendMsg(" " + err.toString());
}
StatusMsg.updateMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG, " concluso: DURATA: " +
dfMS.format(new Time(stop.getTime() - start.getTime() - 3600000L)) + "\n" + rp.getMsg());
try {
sleep(4000L);
} catch (Exception e) {}
StatusMsg.deleteMsgByTag(PuntoFoto.this.getApFull(), TAG_THREAD_MSG);
PuntoFoto.removeThreadOcrAttivo(this.puntoFoto.getId_puntoFoto());
}
}
public static boolean threadPuntoFoto = false;
public PuntoFoto(ApplParmFull newApplParmFull) {
super(newApplParmFull);
}
public PuntoFoto() {}
public void setId_puntoFoto(long newId_puntoFoto) {
this.id_puntoFoto = newId_puntoFoto;
}
public void setId_gara(long newId_gara) {
this.id_gara = newId_gara;
setGara(null);
}
public void setPathRelativoFoto(String newPathRelativoFoto) {
this.pathRelativoFoto = newPathRelativoFoto;
}
public void setTipoPuntoFoto(String newTipoPuntoFoto) {
this.tipoPuntoFoto = newTipoPuntoFoto;
}
public long getId_puntoFoto() {
return this.id_puntoFoto;
}
public long getId_gara() {
return this.id_gara;
}
public String getPathRelativoFoto() {
return (this.pathRelativoFoto == null) ? "" : this.pathRelativoFoto.trim();
}
public String getTipoPuntoFoto() {
return (this.tipoPuntoFoto == null) ? "" : this.tipoPuntoFoto.trim();
}
public void setGara(Gara newGara) {
this.gara = newGara;
}
public Gara getGara() {
this.gara = (Gara)getSecondaryObject(this.gara, Gara.class, getId_gara());
return this.gara;
}
protected ResParm checkDeleteCascade() {
return new ResParm(true);
}
protected void deleteCascade() {
ResParm rp = noIndexFoto();
if (!rp.getStatus())
System.out.println("Attenzione. Cancellazione punto foto: " + rp.getMsg());
}
public Vectumerator<PuntoFoto> findByCR(PuntoFotoCR CR, int pageNumber, int pageRows) {
String s_Sql_Find = "select A.* from PUNTO_FOTO AS A";
String s_Sql_Order = " order by A.descrizionePuntoFoto";
WcString wc = new WcString();
if (CR.getId_gara() > 0L)
wc.addWc("A.id_gara=" + CR.getId_gara());
if (CR.getFlgIndexOk() == 0L) {
wc.addWc("(A.flgIndexOk is null or A.flgIndexOk =0)");
} else if (CR.getFlgIndexOk() > 0L) {
wc.addWc("A.flgIndexOk =" + CR.getFlgIndexOk());
}
try {
PreparedStatement stmt = getConn().prepareStatement(s_Sql_Find + s_Sql_Find + wc.toString());
return findRows(stmt, pageNumber, pageRows);
} catch (SQLException e) {
removeCPConnection();
handleDebug(e);
return AB_EMPTY_VECTUMERATOR;
}
}
public Vectumerator findPuntiFotoByGara(long l_id_gara, int pageNumber, int pageRows) {
String s_Sql_Find = "select A.* from PUNTO_FOTO AS A";
String s_Sql_Order = " order by A.descrizionePuntoFoto";
WcString wc = new WcString();
wc.addWc("A.id_gara=" + l_id_gara);
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 Vectumerator findTipiPuntoFoto(long l_id_gara) {
String s_Sql_Find = "select distinct B.tipoPuntoFoto from (select A.tipoPuntoFoto, A.pathRelativoFoto from PUNTO_FOTO AS A ";
String s_Sql_OrderBy = " order by A.pathRelativoFoto, A.tipoPuntoFoto";
WcString wc = new WcString();
wc.addWc("A.id_gara=" + l_id_gara);
try {
PreparedStatement stmt = getConn().prepareStatement(s_Sql_Find + s_Sql_Find + wc.toString() + ") as B");
return findRows(stmt);
} catch (Exception e) {
handleDebug(e);
return AB_EMPTY_VECTUMERATOR;
}
}
public String getDescrizioneCompleta() {
return getTipoPuntoFoto() + " " + getTipoPuntoFoto() + "-" + getGara().getDescrizione();
}
public String getPathCompletoFoto() {
String temp = getPathBaseFoto() + getPathBaseFoto() + getGara().getPathBase();
if (!temp.endsWith(DBAdapter.SEPARATOR))
temp = temp + temp;
return DBAdapter.convertPathToCurrentFileSystemSeparator(temp);
}
public String getPathCompletoFotoRidotta() {
String temp = getPathBaseFotoRidotte() + getPathBaseFotoRidotte() + getGara().getPathBase();
if (!temp.endsWith(DBAdapter.SEPARATOR))
temp = temp + temp;
return DBAdapter.convertPathToCurrentFileSystemSeparator(temp);
}
public ResParm indexFoto(long l_id_user) {
ResParm rp = new ResParm();
int se1 = 10;
int se2 = 100;
int nuovefoto = 0;
int fotoErrate = 0;
int totFoto = 0;
StringBuffer errMsg = new StringBuffer();
if (getId_gara() == 0L) {
rp.setMsg("Indicizzazione foto: Bean gara non caricato");
rp.setStatus(false);
handleDebug("Indicizzazione foto: Bean gara non caricato", 2);
return rp;
}
String dirFoto = getPathCompletoFoto();
if (new File(dirFoto).exists()) {
File dir = new File(dirFoto);
File[] fotos = dir.listFiles();
Foto foto = new Foto(getApFull());
Foto currentFoto = new Foto(getApFull());
File theFoto = null;
try {
for (int i = 0; i < fotos.length; i++) {
theFoto = fotos[i];
if (!theFoto.getName().toLowerCase().startsWith("tn_") && theFoto.getName().toLowerCase().endsWith(".jpg")) {
totFoto++;
foto.findByFilenamePuntoFoto(theFoto.getName(), getId_puntoFoto());
if (foto.getDBState() == 0)
nuovefoto++;
foto.setId_gara(getId_gara());
foto.setId_puntoFoto(getId_puntoFoto());
foto.setFile(theFoto.getName());
foto.setLastUpdId_user(l_id_user);
rp = foto.save();
if (!rp.getStatus()) {
System.out.println("ERRORE INDICIZZAZIONE: " + theFoto.getName() + ": " + rp.getMsg());
fotoErrate++;
errMsg.append("<br>Attenzione " + theFoto.getName() + ": " + rp.getMsg());
}
} else {
handleDebug("File non jpg:" + theFoto.getName(), 1);
}
}
System.out.println(" fine indicizzazione...");
} catch (Exception e) {
handleDebug(e);
errMsg.append("\nIndicizzazione fallita sul file " + theFoto.getName() + "<br>" + e.getMessage());
}
rp.setMsg("Indicizzazione completata.<br>Numero foto indicizzate:" + totFoto + "<br>numero di foto nuove indicizzate: " + nuovefoto + "<br>numero di foto NON indicizzate: " + fotoErrate + "<br>" +
errMsg.toString());
rp.setStatus(true);
} else {
rp.setMsg("Errore! Percorso foto errato: " + dirFoto);
rp.setStatus(false);
}
return rp;
}
public ResParm noIndexFoto() {
ResParm rp = new ResParm();
int se1 = 10;
int se2 = 100;
int nuovefoto = 0;
int fotoErrate = 0;
int totFoto = 0;
StringBuffer errMsg = new StringBuffer();
if (getId_gara() == 0L || getId_puntoFoto() == 0L) {
rp.setMsg("Indicizzazione foto: Bean gara non caricato");
rp.setStatus(false);
handleDebug("Indicizzazione foto: Bean gara non caricato", 2);
return rp;
}
rp = new Foto(getApFull()).deleteFotoByPuntoFoto(getId_puntoFoto());
return rp;
}
public String getTipoPuntoFotoNew() {
return (this.tipoPuntoFotoNew == null) ? "" : this.tipoPuntoFotoNew.trim();
}
public void setTipoPuntoFotoNew(String tipoPuntoFotoNew) {
this.tipoPuntoFotoNew = tipoPuntoFotoNew;
}
public String getDescrizionePuntoFoto() {
return (this.descrizionePuntoFoto == null) ? "" : this.descrizionePuntoFoto.trim();
}
public void setDescrizionePuntoFoto(String descrizionePuntoFoto) {
this.descrizionePuntoFoto = descrizionePuntoFoto;
}
protected void prepareSave(PreparedStatement ps) throws SQLException {
if (!getTipoPuntoFotoNew().isEmpty())
setTipoPuntoFoto(getTipoPuntoFotoNew());
if (!getPathRelativoFoto().isEmpty() && !getPathRelativoFoto().endsWith(DBAdapter.SEPARATOR))
setPathRelativoFoto(getPathRelativoFoto() + getPathRelativoFoto());
super.prepareSave(ps);
}
public void findByGaraPath(long l_id_gara, String l_pathRelativoFoto) {
String s_Sql_Find = "select A.* from PUNTO_FOTO AS A";
String s_Sql_Order = " order by A.pathRelativoFoto";
WcString wc = new WcString();
wc.addWc("A.id_gara=" + l_id_gara);
if (!l_pathRelativoFoto.isEmpty() && !l_pathRelativoFoto.endsWith(DBAdapter.SEPARATOR))
l_pathRelativoFoto = l_pathRelativoFoto + l_pathRelativoFoto;
wc.addWc("A.pathRelativoFoto='" + l_pathRelativoFoto.trim() + "'");
try {
PreparedStatement stmt = getConn().prepareStatement(s_Sql_Find + s_Sql_Find + wc.toString());
findFirstRecord(stmt);
} catch (SQLException e) {
handleDebug(e);
}
}
public static final String getIndexOk(long l_flgIndexOk) {
if (l_flgIndexOk == 2L)
return "Manuale";
if (l_flgIndexOk == 0L)
return "Nessuna";
if (l_flgIndexOk == 1L)
return "Tempi";
return "??";
}
public long getFlgIndexOk() {
return this.flgIndexOk;
}
public void setFlgIndexOk(long flgIndexOk) {
this.flgIndexOk = flgIndexOk;
}
public String getIndexOk() {
return getIndexOk(getFlgIndexOk());
}
public long getId_puntoFotoExport() {
return this.id_puntoFotoExport;
}
public void setId_puntoFotoExport(long id_puntoFotoExport) {
this.id_puntoFotoExport = id_puntoFotoExport;
}
public final ResParm startCreaPreview() {
if (!isThreadAttivo()) {
new ThreadIndicizzaPuntofoto(this);
return new ResParm(true, "Thread INDICIZZA FOTO avviato");
}
return new ResParm(false, "ATTENZIONE!! Thread INDICIZZA FOTO gia' in esecuzione!!!");
}
public final synchronized ResParm startOcrThread() {
if (getId_puntoFoto() > 0L) {
if (!isThreadOcrAttivo(getId_puntoFoto())) {
new ThreadOcrPuntofoto(this);
return new ResParm(true, "Thread OCR FOTO avviato");
}
return new ResParm(false, "ATTENZIONE!! Thread OCR per questo punto foto gia' in esecuzione!!!");
}
return new ResParm(false, "ATTENZIONE!! Punto foto non valido!!!");
}
public static boolean isThreadAttivo() {
return threadPuntoFoto;
}
public static boolean isThreadOcrAttivo(long l_id_puntofoto) {
if (hsOcrThread.contains(new Long(l_id_puntofoto)))
return true;
return false;
}
public static boolean isThreadOcrAttivo() {
if (hsOcrThread.size() > 0)
return true;
return false;
}
public static boolean setThreadOcrAttivo(long l_id_puntofoto) {
Long key = new Long(l_id_puntofoto);
if (hsOcrThread.contains(key))
return false;
hsOcrThread.add(key);
return true;
}
public static boolean removeThreadOcrAttivo(long l_id_puntofoto) {
Long key = new Long(l_id_puntofoto);
if (hsOcrThread.contains(key)) {
hsOcrThread.remove(key);
return true;
}
return false;
}
public ResParm callOcr() {
ResParm rp = new ResParm();
if (getId_gara() > 0L) {
String COMANDO = "sh /home/piero/Documenti/sites/bin/indicizzaR.sh ";
String dirDaIndicizzare = getPathCompletoFoto();
String pathRisultato = getDocBase() + "_csv/";
String comando = "sh /home/piero/Documenti/sites/bin/indicizzaR.sh " + getId_puntoFoto() + " " + dirDaIndicizzare + " " + pathRisultato;
System.out.println(comando);
getApFull().writeLog(comando);
rp.setMsg(comando);
}
return rp;
}
public Vectumerator<PuntoFoto> findPuntiFotoConFotoOPettoraleNonInviatoByGara(long l_id_gara) {
String s_Sql_Find = "select A.* from PUNTO_FOTO AS A INNER JOIN FOTO AS B ON A.id_puntofoto=B.id_puntoFoto";
String s_Sql_Order = " ";
WcString wc = new WcString();
wc.addWc("A.id_gara=" + l_id_gara);
wc.addWc("(B.flgFotoInviata is null or B.flgFotoInviata=0 or B.flgPettoraleInviato is null or B.flgPettoraleInviato=0)");
try {
PreparedStatement stmt = getConn().prepareStatement(s_Sql_Find + s_Sql_Find + wc.toString());
return findRows(stmt);
} catch (SQLException e) {
return AB_EMPTY_VECTUMERATOR;
}
}
public ResParm resetPreview() {
ResParm rp = new ResParm();
if (getId_gara() == 0L || getId_puntoFoto() == 0L) {
rp.setMsg("Indicizzazione foto: Bean gara non caricato");
rp.setStatus(false);
handleDebug("resetPreview pinto foto: Bean gara o punto foto non caricato", 2);
return rp;
}
rp = update("update FOTO set flgFotoInviata=0 where id_puntoFoto=" + getId_puntoFoto());
boolean resDel = DBAdapter.deleteDir(new File(getPathCompletoFotoRidotta()));
if (!resDel) {
rp.setStatus(false);
rp.setMsg("Errore! impossibile cancellare " + getPathCompletoFotoRidotta() + " - " + rp.getMsg());
} else {
rp.setMsg(rp.getMsg() + " - cancellata dir " + rp.getMsg());
}
return rp;
}
}