diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/mwg/sismica/bo/util/PuliziaDatabase.java b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/mwg/sismica/bo/util/PuliziaDatabase.java index bb6c0081..3eda1db2 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/mwg/sismica/bo/util/PuliziaDatabase.java +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/it/mwg/sismica/bo/util/PuliziaDatabase.java @@ -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 pulisci(ServiceContext serviceContext) { List 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 puliziaPreliminare() { + List 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 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 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 svuotaDatabase(ServiceContext serviceContext) { List 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()); } diff --git a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/service.properties b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/service.properties index e0143c66..20c457f7 100644 --- a/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/service.properties +++ b/liferay-plugins-sdk-6.2/portlets/portos-bo-portlet/docroot/WEB-INF/src/service.properties @@ -13,8 +13,8 @@ ## build.namespace=portos_bo - build.number=2413 - build.date=1600421442524 + build.number=2414 + build.date=1600684750317 build.auto.upgrade=true ##