Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# 4.2.x - Umbrellaleaf

## 4.2.0 (Next)
- [MODFQMMGR-1203](https://folio-org.atlassian.net/browse/MODFQMMGR-1203) Use lib-fqm-query-processor parser for MARC field parsing
- [MODFQMMGR-1188](https://folio-org.atlassian.net/browse/MODFQMMGR-1188) Support MARC indicator + subfield (constrained-subfield) querying on the SRS record entity type
- [MODFQMMGR-1143](https://folio-org.atlassian.net/browse/MODFQMMGR-1143) Support MARC indicator querying on the SRS record entity type
- [MODFQMMGR-1141](https://folio-org.atlassian.net/browse/MODFQMMGR-1141) Support top-level MARC tag and control-field querying on the SRS record entity type
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<folio-spring-support.version>10.0.0</folio-spring-support.version>
<folio-query-tool-metadata.version>4.1.0-SNAPSHOT</folio-query-tool-metadata.version>
<mapstruct.version>1.5.2.Final</mapstruct.version>
<lib-fqm-query-processor.version>4.1.0</lib-fqm-query-processor.version>
<lib-fqm-query-processor.version>4.2.0-SNAPSHOT</lib-fqm-query-processor.version>
<snakeyaml.version>2.0</snakeyaml.version>
<org.postgresql.version>42.5.4</org.postgresql.version>
<org.jooq.version>3.20.9</org.jooq.version>
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/org/folio/fqm/repository/IdStreamer.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import org.folio.fqm.service.EntityTypeInitializationService;
import org.folio.fqm.service.FqlToSqlConverterService;
import org.folio.fqm.utils.EntityTypeUtils;
import org.folio.fqm.utils.MarcFieldFactory;
import org.folio.fqm.utils.MarcSqlFactory;
import org.folio.fqm.utils.StreamHelper;
import org.folio.fqm.utils.flattening.FromClauseUtils;
import org.folio.fql.model.Fql;
Expand Down Expand Up @@ -100,15 +100,15 @@ private void streamIdsInBatch(EntityType entityType,
Fql fql, int batchSize,
int maxQuerySize, UUID queryId,
List<String> tenantsToQuery, boolean ecsEnabled) {
EntityType augmentedEntityType = MarcFieldFactory.addSyntheticColumns(entityType, fql.fqlCondition(), executionContext.getTenantId());
EntityType augmentedEntityType = MarcSqlFactory.addSyntheticColumns(entityType, fql.fqlCondition(), executionContext.getTenantId());
UUID entityTypeId = UUID.fromString(augmentedEntityType.getId());
log.debug("List of tenants to query: {}", tenantsToQuery);
Field<String[]> idValueGetter = EntityTypeUtils.getResultIdValueGetter(augmentedEntityType);
Select<Record1<String[]>> fullQuery = null;
for (String tenantId : tenantsToQuery) {
EntityType entityTypeDefinition = tenantId != null && tenantId.equals(executionContext.getTenantId()) ?
augmentedEntityType : entityTypeFlatteningService.getFlattenedEntityType(entityTypeId, tenantId, false);
entityTypeDefinition = MarcFieldFactory.addSyntheticColumns(entityTypeDefinition, fql.fqlCondition(), tenantId);
entityTypeDefinition = MarcSqlFactory.addSyntheticColumns(entityTypeDefinition, fql.fqlCondition(), tenantId);
Field<String[]> currentIdValueGetter = EntityTypeUtils.getResultIdValueGetter(entityTypeDefinition);

// We may have joins to columns which are filtered out via essentialOnly/etc. Therefore, we must re-fetch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,9 @@
import org.folio.fqm.service.EntityTypeFlatteningService;
import org.folio.fqm.service.EntityTypeInitializationService;
import org.folio.fqm.service.FqlToSqlConverterService;
import org.folio.fql.service.MarcFieldFactory;
import org.folio.fqm.utils.EntityTypeUtils;
import org.folio.fqm.utils.MarcFieldFactory;
import org.folio.fqm.utils.MarcSqlFactory;
import org.folio.fqm.utils.SqlFieldIdentificationUtils;
import org.folio.fqm.utils.flattening.FromClauseUtils;
import org.folio.querytool.domain.dto.EntityDataType;
Expand Down Expand Up @@ -69,7 +70,7 @@ public List<Map<String, Object>> getResultSet(UUID entityTypeId,
return List.of();
}

EntityType baseEntityType = MarcFieldFactory.addSyntheticColumns(
EntityType baseEntityType = MarcSqlFactory.addSyntheticColumns(
getEntityType(executionContext.getTenantId(), entityTypeId),
fields,
executionContext.getTenantId()
Expand All @@ -80,7 +81,7 @@ public List<Map<String, Object>> getResultSet(UUID entityTypeId,
for (int i = 0; i < tenantsToQuery.size(); i++) {
String tenantId = tenantsToQuery.get(i);
EntityType entityTypeDefinition = tenantId != null && tenantId.equals(executionContext.getTenantId()) ? baseEntityType : getEntityType(tenantId, entityTypeId);
entityTypeDefinition = MarcFieldFactory.addSyntheticColumns(entityTypeDefinition, fields, tenantId);
entityTypeDefinition = MarcSqlFactory.addSyntheticColumns(entityTypeDefinition, fields, tenantId);
List<String> idColumnValueGetters = EntityTypeUtils.getIdColumnValueGetters(entityTypeDefinition);

// We may have joins to columns which are filtered out via essentialOnly/etc. Therefore, we must re-fetch
Expand Down Expand Up @@ -270,8 +271,8 @@ private EntityType augmentWithReferencedMarcFields(EntityType entityType,
FqlCondition<?> condition,
String tenantId) {
Set<String> referencedFieldNames = new LinkedHashSet<>(fields);
referencedFieldNames.addAll(MarcFieldFactory.getReferencedFieldNames(condition));
return MarcFieldFactory.addSyntheticColumns(entityType, referencedFieldNames, tenantId);
referencedFieldNames.addAll(MarcFieldFactory.getReferencedMarcFieldNames(condition));
return MarcSqlFactory.addSyntheticColumns(entityType, referencedFieldNames, tenantId);
}

private Condition buildWhereClause(EntityType entityType, List<List<String>> ids, List<String> idColumnNames, List<String> idColumnValueGetters) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
import org.folio.fql.service.FqlValidationService;
import org.folio.fqm.exception.FieldNotFoundException;
import org.folio.fqm.exception.InvalidFqlException;
import org.folio.fqm.utils.MarcFieldFactory;
import org.folio.fqm.utils.MarcFieldFactory.MarcQueryContext;
import org.folio.fqm.utils.MarcSqlFactory;
import org.folio.fqm.utils.MarcSqlFactory.MarcQueryContext;
import org.folio.fqm.utils.SqlFieldIdentificationUtils;
import org.folio.querytool.domain.dto.ArrayType;
import org.folio.querytool.domain.dto.DateTimeType;
Expand Down Expand Up @@ -107,7 +107,7 @@ public static Condition getSqlCondition(FqlCondition<?> fqlCondition, EntityType
Field fqmField = getField(fieldCondition, entityType);
if (fqmField.getDataType() instanceof MarcType) {
MarcQueryContext marcQueryContext =
MarcFieldFactory.createQueryContext(entityType, fieldCondition.field().getColumnName())
MarcSqlFactory.createQueryContext(entityType, fieldCondition.field().getColumnName())
.orElseThrow(() -> new FieldNotFoundException(entityType.getName(), fieldCondition.field()));
return handleMarcCondition(fieldCondition, entityType, marcQueryContext);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
import lombok.Setter;
import lombok.extern.log4j.Log4j2;
import org.apache.commons.collections4.CollectionUtils;
import org.folio.fqm.utils.MarcFieldFactory;
import org.folio.fqm.utils.MarcSqlFactory;
import org.folio.fql.service.FqlValidationService;
import org.folio.fql.service.MarcFieldFactory;
import org.folio.fqm.domain.Query;
import org.folio.fqm.domain.QueryStatus;
import org.folio.fqm.domain.dto.PurgedQueries;
Expand Down Expand Up @@ -300,7 +301,7 @@ public void deleteQuery(UUID queryId) {

public void validateQuery(UUID entityTypeId, String fqlQuery) {
EntityType entityType = entityTypeService.getEntityTypeDefinition(entityTypeId, true);
EntityType entityTypeWithMarcFields = MarcFieldFactory.addSyntheticColumns(
EntityType entityTypeWithMarcFields = MarcSqlFactory.addSyntheticColumns(
entityType,
fqlQuery,
executionContext.getTenantId()
Expand Down
Loading
Loading