|
|
|
@ -5,9 +5,24 @@
|
|
|
|
|
*/ |
|
|
|
|
package it.mwg.sismica.bo.util; |
|
|
|
|
|
|
|
|
|
import it.tref.liferay.portos.bo.model.Collaudo; |
|
|
|
|
import it.tref.liferay.portos.bo.model.ControlloPratica; |
|
|
|
|
import it.tref.liferay.portos.bo.model.Delega; |
|
|
|
|
import it.tref.liferay.portos.bo.model.DettPratica; |
|
|
|
|
import it.tref.liferay.portos.bo.model.DocAggiuntiva; |
|
|
|
|
import it.tref.liferay.portos.bo.model.DocPratica; |
|
|
|
|
import it.tref.liferay.portos.bo.model.FineLavori; |
|
|
|
|
import it.tref.liferay.portos.bo.model.IntPratica; |
|
|
|
|
import it.tref.liferay.portos.bo.model.Soggetto; |
|
|
|
|
import it.tref.liferay.portos.bo.service.CollaudoLocalServiceUtil; |
|
|
|
|
import it.tref.liferay.portos.bo.service.DelegaLocalServiceUtil; |
|
|
|
|
import it.tref.liferay.portos.bo.service.DettPraticaLocalServiceUtil; |
|
|
|
|
import it.tref.liferay.portos.bo.service.DocAggiuntivaLocalServiceUtil; |
|
|
|
|
import it.tref.liferay.portos.bo.service.DocPraticaLocalServiceUtil; |
|
|
|
|
import it.tref.liferay.portos.bo.service.FineLavoriLocalServiceUtil; |
|
|
|
|
import it.tref.liferay.portos.bo.service.IntPraticaLocalServiceUtil; |
|
|
|
|
import it.tref.liferay.portos.bo.service.SoggettoLocalServiceUtil; |
|
|
|
|
|
|
|
|
|
import java.sql.Connection; |
|
|
|
|
import java.sql.SQLException; |
|
|
|
|
import java.sql.Statement; |
|
|
|
@ -46,6 +61,8 @@ public class PuliziaDatabase {
|
|
|
|
|
|
|
|
|
|
public static List<String> pulisci(ServiceContext serviceContext) { |
|
|
|
|
List<String> esito = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
esito.addAll(puliziaPreliminare()); |
|
|
|
|
esito.addAll(puliziaDocumentLibrary()); |
|
|
|
|
esito.addAll(svuotaDatabase(serviceContext)); |
|
|
|
|
|
|
|
|
@ -60,6 +77,137 @@ public class PuliziaDatabase {
|
|
|
|
|
return esito; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static List<String> puliziaPreliminare() { |
|
|
|
|
List<String> esito = new ArrayList<>(); |
|
|
|
|
try { |
|
|
|
|
Connection connection = DataAccess.getUpgradeOptimizedConnection(); |
|
|
|
|
Statement s = connection.createStatement(); |
|
|
|
|
int rows = s.executeUpdate("DELETE FROM portos_bo_intpratica WHERE intpraticaid IN (" |
|
|
|
|
+ "SELECT intpraticaid FROM portos_bo_intpratica i " |
|
|
|
|
+ "LEFT JOIN group_ g ON i.groupid=g.groupid WHERE g.groupid IS NULL)"); |
|
|
|
|
esitoLog(esito, "Cancellate " + rows + " righe da portos_bo_intpratica"); |
|
|
|
|
rows = s.executeUpdate("DELETE FROM portos_bo_dettpratica WHERE dettpraticaid IN (" |
|
|
|
|
+ "SELECT dettpraticaid FROM portos_bo_dettpratica d " |
|
|
|
|
+ "LEFT JOIN portos_bo_intpratica i ON d.intpraticaid=i.intpraticaid " |
|
|
|
|
+ "WHERE i.intpraticaid IS NULL)"); |
|
|
|
|
esitoLog(esito, "Cancellate " + rows + " righe da portos_bo_dettpratica"); |
|
|
|
|
rows = s.executeUpdate("DELETE FROM portos_bo_controllopratica WHERE controllopraticaid IN (" |
|
|
|
|
+ "SELECT controllopraticaid FROM portos_bo_controllopratica c " |
|
|
|
|
+ "LEFT JOIN portos_bo_intpratica i ON c.intpraticaid=i.intpraticaid " |
|
|
|
|
+ "WHERE i.intpraticaid IS NULL)"); |
|
|
|
|
esitoLog(esito, "Cancellate " + rows + " righe da portos_bo_controllopratica"); |
|
|
|
|
rows = s.executeUpdate("DELETE FROM portos_bo_collaudo WHERE collaudoid IN (" |
|
|
|
|
+ "SELECT collaudoid FROM portos_bo_collaudo c " |
|
|
|
|
+ "LEFT JOIN portos_bo_intpratica i ON c.intpraticaid=i.intpraticaid " |
|
|
|
|
+ "WHERE i.intpraticaid IS NULL)"); |
|
|
|
|
esitoLog(esito, "Cancellate " + rows + " righe da portos_bo_collaudo"); |
|
|
|
|
rows = s.executeUpdate("DELETE FROM portos_bo_delega WHERE delegaid IN (" |
|
|
|
|
+ "SELECT delegaid FROM portos_bo_delega d " |
|
|
|
|
+ "LEFT JOIN portos_bo_dettpratica dp ON d.dettpraticaid=dp.dettpraticaid " |
|
|
|
|
+ "WHERE dp.dettpraticaid IS NULL)"); |
|
|
|
|
esitoLog(esito, "Cancellate " + rows + " righe da portos_bo_delega"); |
|
|
|
|
rows = s.executeUpdate("DELETE FROM portos_bo_finelavori WHERE finelavoriid IN (" |
|
|
|
|
+ "SELECT finelavoriid FROM portos_bo_finelavori f " |
|
|
|
|
+ "LEFT JOIN portos_bo_intpratica i ON f.intpraticaid=i.intpraticaid " |
|
|
|
|
+ "WHERE i.intpraticaid IS NULL)"); |
|
|
|
|
esitoLog(esito, "Cancellate " + rows + " righe da portos_bo_finelavori"); |
|
|
|
|
rows = s.executeUpdate("DELETE FROM portos_bo_soggetto WHERE soggettoid IN (" |
|
|
|
|
+ "SELECT soggettoid FROM portos_bo_soggetto s " |
|
|
|
|
+ "LEFT JOIN portos_bo_dettpratica d ON s.dettpraticaid=d.dettpraticaid " |
|
|
|
|
+ "WHERE d.dettpraticaid IS NULL)"); |
|
|
|
|
esitoLog(esito, "Cancellate " + rows + " righe da portos_bo_soggetto"); |
|
|
|
|
|
|
|
|
|
int cancellati = 0; |
|
|
|
|
int start = 0; |
|
|
|
|
int totali = 0; |
|
|
|
|
List<DocAggiuntiva> docs = null; |
|
|
|
|
do { |
|
|
|
|
docs = DocAggiuntivaLocalServiceUtil.getDocAggiuntivas(start, start + SLICE); |
|
|
|
|
int rimossi = 0; |
|
|
|
|
for (DocAggiuntiva doc : docs) { |
|
|
|
|
IntPratica intPratica = IntPraticaLocalServiceUtil.getIntPratica(doc.getIntPraticaId()); |
|
|
|
|
DettPratica dettPratica = DettPraticaLocalServiceUtil.getDettPratica(doc |
|
|
|
|
.getDettPraticaId()); |
|
|
|
|
if (Validator.isNull(intPratica) || Validator.isNull(dettPratica)) { |
|
|
|
|
DocAggiuntivaLocalServiceUtil.deleteDocAggiuntiva(doc); |
|
|
|
|
cancellati++; |
|
|
|
|
rimossi++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
totali += docs.size(); |
|
|
|
|
start += SLICE - rimossi; |
|
|
|
|
} while (docs.size() > 0); |
|
|
|
|
esitoLog(esito, "Analizzati " + totali + " DocAggiuntiva, cancellati " + cancellati); |
|
|
|
|
|
|
|
|
|
cancellati = 0; |
|
|
|
|
start = 0; |
|
|
|
|
totali = 0; |
|
|
|
|
List<DocPratica> docs2 = null; |
|
|
|
|
do { |
|
|
|
|
docs2 = DocPraticaLocalServiceUtil.getDocPraticas(start, start + SLICE); |
|
|
|
|
int rimossi = 0; |
|
|
|
|
for (DocPratica doc : docs2) { |
|
|
|
|
boolean rimuovi = false; |
|
|
|
|
if (Collaudo.class.getName().equals(doc.getClassName())) { |
|
|
|
|
Collaudo collaudo = null; |
|
|
|
|
try { |
|
|
|
|
collaudo = CollaudoLocalServiceUtil.getCollaudo(doc.getClassPk()); |
|
|
|
|
} catch (PortalException e) { |
|
|
|
|
} |
|
|
|
|
rimuovi = Validator.isNull(collaudo); |
|
|
|
|
} else if (Delega.class.getName().equals(doc.getClassName())) { |
|
|
|
|
Delega delega = null; |
|
|
|
|
try { |
|
|
|
|
delega = DelegaLocalServiceUtil.getDelega(doc.getClassPk()); |
|
|
|
|
} catch (PortalException e) { |
|
|
|
|
} |
|
|
|
|
rimuovi = Validator.isNull(delega); |
|
|
|
|
} else if (DettPratica.class.getName().equals(doc.getClassName())) { |
|
|
|
|
DettPratica dettPratica = null; |
|
|
|
|
try { |
|
|
|
|
dettPratica = DettPraticaLocalServiceUtil.getDettPratica(doc.getClassPk()); |
|
|
|
|
} catch (PortalException e) { |
|
|
|
|
} |
|
|
|
|
rimuovi = Validator.isNull(dettPratica); |
|
|
|
|
} else if (FineLavori.class.getName().equals(doc.getClassName())) { |
|
|
|
|
FineLavori fineLavori = null; |
|
|
|
|
try { |
|
|
|
|
fineLavori = FineLavoriLocalServiceUtil.getFineLavori(doc.getClassPk()); |
|
|
|
|
} catch (PortalException e) { |
|
|
|
|
} |
|
|
|
|
rimuovi = Validator.isNull(fineLavori); |
|
|
|
|
} else if (IntPratica.class.getName().equals(doc.getClassName())) { |
|
|
|
|
IntPratica intPratica = null; |
|
|
|
|
try { |
|
|
|
|
intPratica = IntPraticaLocalServiceUtil.getIntPratica(doc.getClassPk()); |
|
|
|
|
} catch (PortalException e) { |
|
|
|
|
} |
|
|
|
|
rimuovi = Validator.isNull(intPratica); |
|
|
|
|
} else if (Soggetto.class.getName().equals(doc.getClassName())) { |
|
|
|
|
Soggetto soggetto = null; |
|
|
|
|
try { |
|
|
|
|
soggetto = SoggettoLocalServiceUtil.getSoggetto(doc.getClassPk()); |
|
|
|
|
} catch (PortalException e) { |
|
|
|
|
} |
|
|
|
|
rimuovi = Validator.isNull(soggetto); |
|
|
|
|
} |
|
|
|
|
if (rimuovi) { |
|
|
|
|
DocPraticaLocalServiceUtil.deleteDocPratica(doc); |
|
|
|
|
cancellati++; |
|
|
|
|
rimossi++; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
totali += docs2.size(); |
|
|
|
|
start += SLICE - rimossi; |
|
|
|
|
_log.info("Analizzati " + totali + " DocPratica, cancellati " + cancellati); |
|
|
|
|
} while (docs2.size() > 0); |
|
|
|
|
esitoLog(esito, "Analizzati " + totali + " DocPratica, cancellati " + cancellati); |
|
|
|
|
} catch (PortalException | SQLException | SystemException e) { |
|
|
|
|
esitoLog(esito, "Interrotto per errore: " + e.getMessage()); |
|
|
|
|
} |
|
|
|
|
return esito; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static List<String> svuotaDatabase(ServiceContext serviceContext) { |
|
|
|
|
List<String> esito = new ArrayList<>(); |
|
|
|
|
int rows = 0; |
|
|
|
@ -239,6 +387,24 @@ public class PuliziaDatabase {
|
|
|
|
|
+ "ON a.classpk=b.fileentryid WHERE a.classnameid=" + dlFileEntryClassNameId |
|
|
|
|
+ " AND b.fileentryid IS NULL)"); |
|
|
|
|
esitoLog(esito, "Cancellate " + rows + " righe da socialactivity"); |
|
|
|
|
|
|
|
|
|
rows = s.executeUpdate("DELETE FROM systemevent WHERE systemeventid IN (" |
|
|
|
|
+ "SELECT systemeventid FROM systemevent a LEFT JOIN dlfileentry b " |
|
|
|
|
+ "ON a.classpk=b.fileentryid WHERE a.classnameid=" + dlFileEntryClassNameId |
|
|
|
|
+ " AND b.fileentryid IS NULL)"); |
|
|
|
|
rows += s.executeUpdate("DELETE FROM systemevent WHERE systemeventid IN (" |
|
|
|
|
+ "SELECT systemeventid FROM systemevent a LEFT JOIN dlfolder b " |
|
|
|
|
+ "ON a.classpk=b.folderid WHERE a.classnameid=" + dlFolderClassNameId |
|
|
|
|
+ " AND b.folderid IS NULL)"); |
|
|
|
|
rows += s.executeUpdate("DELETE FROM systemevent WHERE systemeventid IN (" |
|
|
|
|
+ "SELECT systemeventid FROM systemevent a LEFT JOIN portos_bo_controllopratica b " |
|
|
|
|
+ "ON a.classpk=b.controllopraticaid WHERE a.classnameid=" + controlloPraticaClassNameId |
|
|
|
|
+ " AND b.controllopraticaid IS NULL)"); |
|
|
|
|
rows += s.executeUpdate("DELETE FROM systemevent WHERE systemeventid IN (" |
|
|
|
|
+ "SELECT systemeventid FROM systemevent a LEFT JOIN portos_bo_dettpratica b " |
|
|
|
|
+ "ON a.classpk=b.dettpraticaid WHERE a.classnameid=" + dettPraticaClassNameId |
|
|
|
|
+ " AND b.dettpraticaid IS NULL)"); |
|
|
|
|
esitoLog(esito, "Cancellate " + rows + " righe da systemevent"); |
|
|
|
|
} catch (SQLException | SystemException e) { |
|
|
|
|
esitoLog(esito, "Interrotto per errore: " + e.getMessage()); |
|
|
|
|
} |
|
|
|
|