diff --git a/ems-core/src/main/java/it/integry/ems/menu/service/MenuConfigurationService.java b/ems-core/src/main/java/it/integry/ems/menu/service/MenuConfigurationService.java index 8bda184fb7..b7500baab9 100644 --- a/ems-core/src/main/java/it/integry/ems/menu/service/MenuConfigurationService.java +++ b/ems-core/src/main/java/it/integry/ems/menu/service/MenuConfigurationService.java @@ -12,6 +12,7 @@ import it.integry.ems.menu.dto.StbTipoAziendaDTO; import it.integry.ems.service.MailService; import it.integry.ems.settings.SettingsController; import it.integry.ems.sync.MultiDBTransaction.AdvancedDataSource; +import it.integry.ems.sync.MultiDBTransaction.Connection; import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager; import it.integry.ems.utility.UtilityDirs; import it.integry.ems_model.entity.Azienda; @@ -27,9 +28,6 @@ import org.springframework.stereotype.Service; import java.io.IOException; import java.net.URL; - -import it.integry.ems.sync.MultiDBTransaction.Connection; - import java.sql.SQLException; import java.util.Date; import java.util.List; @@ -105,7 +103,10 @@ public class MenuConfigurationService { private void internalRefresh(Connection connection, MenuConfigDTO menuConfig, boolean forceRefresh) throws Exception { final Azienda azienda = Azienda.getDefaultAzienda(connection); - int lastMenuUpd = Integer.parseInt(azienda.getLastUpgDbMenu().replace("QM", "")); + if (azienda.getTipoAzienda() == null) + return; + + final long lastMenuUpd = Long.parseLong(azienda.getLastUpgDbMenu().replace("QM", "")); if (!forceRefresh && lastMenuUpd > 0 && lastMenuUpd >= menuConfig.getVersion()) return; @@ -198,6 +199,13 @@ public class MenuConfigurationService { } } + short aziendaUpdDbColumnLength = UtilityDB.executeSimpleQueryOnlyFirstRowFirstColumn(connection, + "SELECT COL_LENGTH('azienda','last_upg_db_menu') AS column_length"); + + if (aziendaUpdDbColumnLength != 16) { + executeStatement(connection, "ALTER TABLE azienda ALTER COLUMN last_upg_db_menu VARCHAR(16)"); + } + executeStatement(connection, "ALTER TABLE azienda ADD CONSTRAINT FK_azienda_stb_tipo_azienda FOREIGN KEY (tipo_azienda) REFERENCES stb_tipo_azienda ( tipo_azienda )", "DELETE FROM stb_abil WHERE cod_opz not in (select cod_opz from stb_menu_opz )", "INSERT INTO stb_Abil SELECT opz2Abil.cod_parent AS cod_opz, opz2Abil.user_name, 'S' flag_Abil, NULL gest_name\n" + @@ -213,7 +221,7 @@ public class MenuConfigurationService { " AND abil.flag_Abil <> 'N') Opz2Abil\n" + " LEFT OUTER JOIN stb_Abil ON stb_Abil.cod_opz = Opz2Abil.cod_parent AND stb_abil.user_name = Opz2Abil.user_name\n" + "WHERE stb_abil.cod_opz IS NULL", - "UPDATE azienda SET last_upg_db_menu = " + UtilityDB.valueToString(menuConfig.getVersion())); + "UPDATE azienda SET last_upg_db_menu = " + UtilityDB.valueToString(String.valueOf(menuConfig.getVersion()))); connection.commit(); } catch (SQLException e) {