From 48ce77dad34d7488124b899ecb9b9426952f2b2d Mon Sep 17 00:00:00 2001 From: Jan Date: Tue, 27 Jan 2026 10:43:40 +0100 Subject: [PATCH] Added missing boolean values to dialectProvider --- .../de/avatic/lcc/repositories/NodeRepository.java | 14 ++++++++------ .../country/CountryPropertyRepository.java | 5 +++-- .../packaging/PackagingDimensionRepository.java | 5 +++-- .../repositories/premise/PremiseRepository.java | 2 +- .../properties/PropertyRepository.java | 9 +++++++-- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/main/java/de/avatic/lcc/repositories/NodeRepository.java b/src/main/java/de/avatic/lcc/repositories/NodeRepository.java index 5abef84..66925c2 100644 --- a/src/main/java/de/avatic/lcc/repositories/NodeRepository.java +++ b/src/main/java/de/avatic/lcc/repositories/NodeRepository.java @@ -294,11 +294,11 @@ public class NodeRepository { } if (nodeType.equals(NodeType.SOURCE)) { - queryBuilder.append("is_source = true"); + queryBuilder.append("is_source = ").append(dialectProvider.getBooleanTrue()); } else if (nodeType.equals(NodeType.DESTINATION)) { - queryBuilder.append("is_destination = true"); + queryBuilder.append("is_destination = ").append(dialectProvider.getBooleanTrue()); } else if (nodeType.equals(NodeType.INTERMEDIATE)) { - queryBuilder.append("is_intermediate = true"); + queryBuilder.append("is_intermediate = ").append(dialectProvider.getBooleanTrue()); } } @@ -309,10 +309,12 @@ public class NodeRepository { } else { queryBuilder.append(" AND "); } - queryBuilder.append("is_deprecated = false"); + queryBuilder.append("is_deprecated = ").append(dialectProvider.getBooleanFalse()); } - queryBuilder.append(" ").append(dialectProvider.buildPaginationClause(limit, 0)); + // MSSQL requires ORDER BY before OFFSET + queryBuilder.append(" ORDER BY id "); + queryBuilder.append(dialectProvider.buildPaginationClause(limit, 0)); Object[] paginationParams = dialectProvider.getPaginationParameters(limit, 0); parameters.add(paginationParams[0]); parameters.add(paginationParams[1]); @@ -323,7 +325,7 @@ public class NodeRepository { public List listAllNodes(boolean onlySources) { StringBuilder queryBuilder = new StringBuilder("SELECT * FROM node"); if (onlySources) { - queryBuilder.append(" WHERE is_source = true"); + queryBuilder.append(" WHERE is_source = ").append(dialectProvider.getBooleanTrue()); } queryBuilder.append(" ORDER BY id"); diff --git a/src/main/java/de/avatic/lcc/repositories/country/CountryPropertyRepository.java b/src/main/java/de/avatic/lcc/repositories/country/CountryPropertyRepository.java index 7a8dfa1..bd91a78 100644 --- a/src/main/java/de/avatic/lcc/repositories/country/CountryPropertyRepository.java +++ b/src/main/java/de/avatic/lcc/repositories/country/CountryPropertyRepository.java @@ -145,7 +145,7 @@ public class CountryPropertyRepository { @Transactional public List listPropertiesByCountryId(Integer id) { - String query = """ + String query = """ SELECT type.name as name, type.data_type as dataType, type.external_mapping_id as externalMappingId, type.validation_rule as validationRule, @@ -160,7 +160,8 @@ public class CountryPropertyRepository { LEFT JOIN country_property AS cp ON cp.country_property_type_id = type.id AND cp.country_id = ? LEFT JOIN property_set AS ps ON ps.id = cp.property_set_id AND ps.state IN ('DRAFT', 'VALID') GROUP BY type.id, type.name, type.data_type, type.external_mapping_id, type.validation_rule - HAVING draftValue IS NOT NULL OR validValue IS NOT NULL; + HAVING MAX(CASE WHEN ps.state = 'DRAFT' THEN cp.property_value END) IS NOT NULL + OR MAX(CASE WHEN ps.state = 'VALID' THEN cp.property_value END) IS NOT NULL; """; diff --git a/src/main/java/de/avatic/lcc/repositories/packaging/PackagingDimensionRepository.java b/src/main/java/de/avatic/lcc/repositories/packaging/PackagingDimensionRepository.java index b992195..90b9487 100644 --- a/src/main/java/de/avatic/lcc/repositories/packaging/PackagingDimensionRepository.java +++ b/src/main/java/de/avatic/lcc/repositories/packaging/PackagingDimensionRepository.java @@ -29,11 +29,12 @@ public class PackagingDimensionRepository { @Transactional public Optional getById(Integer id) { - String query = """ + String query = String.format(""" SELECT id, displayed_dimension_unit, displayed_weight_unit, width, length, height, weight, content_unit_count, type, is_deprecated FROM packaging_dimension - WHERE packaging_dimension.id = ? AND packaging_dimension.is_deprecated = false"""; + WHERE packaging_dimension.id = ? AND packaging_dimension.is_deprecated = %s""", + dialectProvider.getBooleanFalse()); //TODO: what if i need to get deprecated materials? diff --git a/src/main/java/de/avatic/lcc/repositories/premise/PremiseRepository.java b/src/main/java/de/avatic/lcc/repositories/premise/PremiseRepository.java index 87b5fdb..3143a76 100644 --- a/src/main/java/de/avatic/lcc/repositories/premise/PremiseRepository.java +++ b/src/main/java/de/avatic/lcc/repositories/premise/PremiseRepository.java @@ -360,7 +360,7 @@ public class PremiseRepository { } String placeholders = String.join(",", Collections.nCopies(premiseIds.size(), "?")); - String query = "UPDATE premise SET material_cost = null, is_fca_enabled = false, oversea_share = null WHERE id IN (" + placeholders + ")"; + String query = "UPDATE premise SET material_cost = null, is_fca_enabled = " + dialectProvider.getBooleanFalse() + ", oversea_share = null WHERE id IN (" + placeholders + ")"; jdbcTemplate.update(query, premiseIds.toArray()); } diff --git a/src/main/java/de/avatic/lcc/repositories/properties/PropertyRepository.java b/src/main/java/de/avatic/lcc/repositories/properties/PropertyRepository.java index 623831d..896fce8 100644 --- a/src/main/java/de/avatic/lcc/repositories/properties/PropertyRepository.java +++ b/src/main/java/de/avatic/lcc/repositories/properties/PropertyRepository.java @@ -105,10 +105,15 @@ public class PropertyRepository { LEFT JOIN system_property AS sp ON sp.system_property_type_id = type.id LEFT JOIN property_set AS ps ON ps.id = sp.property_set_id AND ps.state IN (?, ?) GROUP BY type.id, type.name, type.data_type, type.external_mapping_id, type.validation_rule, type.description, type.property_group, type.sequence_number - HAVING draftValue IS NOT NULL OR validValue IS NOT NULL ORDER BY type.property_group , type.sequence_number; + HAVING MAX(CASE WHEN ps.state = ? THEN sp.property_value END) IS NOT NULL + OR MAX(CASE WHEN ps.state = ? THEN sp.property_value END) IS NOT NULL + ORDER BY type.property_group , type.sequence_number; """; - return jdbcTemplate.query(query, new PropertyMapper(), ValidityPeriodState.DRAFT.name(), ValidityPeriodState.VALID.name(), ValidityPeriodState.DRAFT.name(), ValidityPeriodState.VALID.name()); + return jdbcTemplate.query(query, new PropertyMapper(), + ValidityPeriodState.DRAFT.name(), ValidityPeriodState.VALID.name(), + ValidityPeriodState.DRAFT.name(), ValidityPeriodState.VALID.name(), + ValidityPeriodState.DRAFT.name(), ValidityPeriodState.VALID.name()); }