Skip to content

Commit

Permalink
Fixed sdmx codelists with inconsistent values
Browse files Browse the repository at this point in the history
  • Loading branch information
vpinna80 committed Jan 16, 2024
1 parent 209ba82 commit 9c944d6
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
import it.bancaditalia.oss.vtl.impl.types.config.VTLPropertyImpl.Flags;
import it.bancaditalia.oss.vtl.impl.types.data.DateValue;
import it.bancaditalia.oss.vtl.impl.types.data.DoubleValue;
import it.bancaditalia.oss.vtl.impl.types.data.NullValue;
import it.bancaditalia.oss.vtl.impl.types.data.StringValue;
import it.bancaditalia.oss.vtl.impl.types.data.TimePeriodValue;
import it.bancaditalia.oss.vtl.impl.types.data.date.MonthPeriodHolder;
Expand Down Expand Up @@ -330,7 +331,9 @@ public synchronized DataPoint next()
}

DataStructureComponent<Measure, ?, ?> measure = structure.getMeasures().iterator().next();
builder.add(measure, DoubleValue.of(parseDouble(obs.getMeasureValue(measure.getName()))));
builder.add(measure, obs.getMeasureValue(measure.getName()) != null
? DoubleValue.of(parseDouble(obs.getMeasureValue(measure.getName())))
: NullValue.instanceFrom(measure));
TemporalAccessor holder = parser.getValue().queryFrom(parser.getKey().parse(obs.getDimensionValue()));
ScalarValue<?, ?, ?, ?> value;
if (holder instanceof PeriodHolder)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@
import static it.bancaditalia.oss.vtl.impl.types.domain.Domains.STRINGDS;

import java.io.Serializable;
import java.util.TreeSet;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import it.bancaditalia.oss.vtl.exceptions.VTLCastException;
import it.bancaditalia.oss.vtl.impl.meta.subsets.AbstractStringCodeList.StringCodeItemImpl;
Expand All @@ -37,6 +41,7 @@
public abstract class AbstractStringCodeList implements StringEnumeratedDomainSubset<AbstractStringCodeList, StringCodeItemImpl, String>, Serializable
{
private static final long serialVersionUID = 1L;
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractStringCodeList.class);

public class StringCodeItemImpl extends StringValue<StringCodeItemImpl, AbstractStringCodeList> implements StringCodeItem<StringCodeItemImpl, String, AbstractStringCodeList>
{
Expand Down Expand Up @@ -117,6 +122,8 @@ public StringCodeItemImpl cast(ScalarValue<?, ?, ?, ?> value)
StringCodeItemImpl item = new StringCodeItemImpl((String) value.get());
if (getCodeItems().contains(item))
return item;

LOGGER.warn("Code {} was not found on codelist {}:{}", value.get(), name, new TreeSet<>(getCodeItems()));
}

throw new VTLCastException(this, value);
Expand Down

0 comments on commit 9c944d6

Please sign in to comment.