Skip to content

Commit

Permalink
fix command builder for API v2 in helper
Browse files Browse the repository at this point in the history
  • Loading branch information
amattioc committed Mar 20, 2024
1 parent cd8a20b commit 29da24b
Show file tree
Hide file tree
Showing 8 changed files with 47 additions and 20 deletions.
2 changes: 1 addition & 1 deletion BUILD
Original file line number Diff line number Diff line change
@@ -1 +1 @@
20240319-1514
20240320-1037
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,13 @@ public Integer getAvailableTimeSeriesNumber(Dataflow dataflow, String filter) th
URL query = buildAvailabilityQuery(dataflow, filter, "exact");
return runQuery(new SeriesCountParser(), query, handleHttpHeaders("application/vnd.sdmx.structure+xml;version=2.1"));
}

@Override
public String buildDataURL(Dataflow dataflow, String resource, String startTime, String endTime, boolean seriesKeyOnly, String updatedAfter,
boolean includeHistory) throws SdmxException
{
return buildDataQuery(dataflow, null, resource, startTime, endTime, null, null, updatedAfter, includeHistory).toString();
}

protected DataParsingResult getData(Dataflow dataflow, DataFlowStructure dsd, String tsKey, String filter, String startTime, String endTime,
String attributes, String measures, String updatedAfter, boolean includeHistory) throws SdmxException
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -534,25 +534,26 @@ private static List<PortableTimeSeries<Double>> getSingleTimeSeries(String provi
return result;
}

public static String getDataURL(String provider, String tsKey, String start, String end, boolean seriesKeysOnly,
public static String getDataURL(String provider, String dataflow, String resource, String start, String end, boolean seriesKeysOnly,
String updatedAfter, boolean includeHistory) throws SdmxException
{
if (provider == null || provider.trim().isEmpty())
{
LOGGER.severe("The name of the provider cannot be null");
throw new SdmxInvalidParameterException("The name of the provider cannot be null");
}
if (tsKey == null || tsKey.trim().isEmpty())
if (dataflow == null || dataflow.trim().isEmpty())
{
LOGGER.severe("The dataflow cannot be null");
throw new SdmxInvalidParameterException("The dataflow cannot be null");
}
if (resource == null || resource.trim().isEmpty())
{
LOGGER.severe("The tsKey cannot be null");
throw new SdmxInvalidParameterException("The tsKey cannot be null");
LOGGER.severe("The query cannot be null");
throw new SdmxInvalidParameterException("The query cannot be null");
}

String[] tokens = extractFlowAndResource(tsKey);
String dataflow = tokens[0];
String resource = tokens[1];
Dataflow df = getFlow(provider, dataflow);

String result = getClient(provider).buildDataURL(df, resource, start, end, seriesKeysOnly, updatedAfter,
includeHistory);
return (result);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ public SDMXHelper(boolean exitOnClose, String lockedProvider)
try
{
if (selectedProviderGroup.getSelection() != null)
new ToolCommandsFrame(getSelectedDataflow()+"/"+tfSdmxQuery.getText(),
new ToolCommandsFrame(getSelectedDataflow(), tfSdmxQuery.getText(),
selectedProviderGroup.getSelection().getActionCommand());
}
catch (SdmxException ex)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
Expand All @@ -21,6 +22,7 @@
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;

import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
Expand All @@ -35,11 +37,11 @@
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;

import it.bancaditalia.oss.sdmx.api.SDMXVersion;
import it.bancaditalia.oss.sdmx.client.SDMXClientFactory;
import it.bancaditalia.oss.sdmx.client.SdmxClientHandler;
import it.bancaditalia.oss.sdmx.exceptions.SdmxException;
import it.bancaditalia.oss.sdmx.exceptions.SdmxInvalidParameterException;
import java.awt.Component;
import javax.swing.Box;

class ToolCommandsFrame extends JFrame {
/**
Expand All @@ -54,12 +56,14 @@ class ToolCommandsFrame extends JFrame {
private final JTextField urlText;
private final JLabel lblNewLabel;

public ToolCommandsFrame(String query, String provider) throws SdmxException
public ToolCommandsFrame(String dataflow, String queryString, String provider) throws SdmxException
{
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setExtendedState(Frame.MAXIMIZED_HORIZ);
if (query == null || query.isEmpty())
throw new SdmxInvalidParameterException("The sdmx query is not valid yet: '" + query + "'");
if (queryString == null || queryString.isEmpty())
throw new SdmxInvalidParameterException("The sdmx query is not valid yet: '" + queryString + "'");
if (dataflow == null || dataflow.isEmpty())
throw new SdmxInvalidParameterException("The dataflow is not selected yet");

setResizable(false);
setSize(800, 340);
Expand Down Expand Up @@ -101,7 +105,10 @@ public ToolCommandsFrame(String query, String provider) throws SdmxException
gbc_rCommandLabel.gridx = 0;
panel.add(rCommandLabel, gbc_rCommandLabel);

rCommandText = new JTextField("result <- getTimeSeries('" + provider + "', '" + query + "');");
if(SDMXVersion.V2 == SDMXClientFactory.getProviders().get(provider).getSdmxVersion())
rCommandText = new JTextField("result <- getTimeSeries(provider='" + provider + "', id='" + queryString + "');");
else
rCommandText = new JTextField("result <- getTimeSeries2(provider='" + provider + "', dataflow='" + dataflow + "', filter='" + queryString + "');");
rCommandLabel.setLabelFor(rCommandText);
GridBagConstraints gbc_rCommandText = new GridBagConstraints();
gbc_rCommandText.fill = GridBagConstraints.BOTH;
Expand All @@ -121,7 +128,10 @@ public ToolCommandsFrame(String query, String provider) throws SdmxException
gbc_matlabCommandLabel.gridy = 1;
panel.add(matlabCommandLabel, gbc_matlabCommandLabel);

matlabCommandText = new JTextField("result = getTimeSeries('" + provider + "', '" + query + "');");
if(SDMXVersion.V2 == SDMXClientFactory.getProviders().get(provider).getSdmxVersion())
matlabCommandText = new JTextField("result = getTimeSeries('" + provider + "', '" + queryString + "');");
else
matlabCommandText = new JTextField("result = getTimeSeriesTable2('" + provider + "', '" + dataflow + "', '', '" + queryString + "');");
matlabCommandLabel.setLabelFor(matlabCommandText);
GridBagConstraints gbc_matlabCommandText = new GridBagConstraints();
gbc_matlabCommandText.fill = GridBagConstraints.BOTH;
Expand All @@ -141,7 +151,10 @@ public ToolCommandsFrame(String query, String provider) throws SdmxException
gbc_sasCommandLabel.gridy = 2;
panel.add(sasCommandLabel, gbc_sasCommandLabel);

sasCommandText = new JTextField("%gettimeseries(provider=\"" + provider + "\", tsKey=\"" + query + "\", metadata=1);");
if(SDMXVersion.V2 == SDMXClientFactory.getProviders().get(provider).getSdmxVersion())
sasCommandText = new JTextField("%gettimeseries(provider=\"" + provider + "\", tsKey=\"" + queryString + "\", metadata=1);");
else
sasCommandText = new JTextField("NOT AVAILABLE");
sasCommandLabel.setLabelFor(sasCommandText);
GridBagConstraints gbc_sasCommandText = new GridBagConstraints();
gbc_sasCommandText.fill = GridBagConstraints.BOTH;
Expand All @@ -161,7 +174,10 @@ public ToolCommandsFrame(String query, String provider) throws SdmxException
gbc_stataCommandLabel.gridy = 3;
panel.add(stataCommandLabel, gbc_stataCommandLabel);

stataCommandText = new JTextField("getTimeSeries " + provider + " " + query + " \"\" \"\" 0 0");
if(SDMXVersion.V2 == SDMXClientFactory.getProviders().get(provider).getSdmxVersion())
stataCommandText = new JTextField("getTimeSeries " + provider + " " + queryString + " \"\" \"\" 0 0");
else
stataCommandText = new JTextField("NOT AVAILABLE");
stataCommandLabel.setLabelFor(stataCommandText);
GridBagConstraints gbc_stataCommandText = new GridBagConstraints();
gbc_stataCommandText.insets = new Insets(0, 0, 5, 0);
Expand All @@ -181,7 +197,10 @@ public ToolCommandsFrame(String query, String provider) throws SdmxException
gbc_urlLabel.gridy = 4;
panel.add(urlLabel, gbc_urlLabel);

urlText = new JTextField(SdmxClientHandler.getDataURL(provider, query, null, null, false, null, false));
if(SDMXVersion.V2 == SDMXClientFactory.getProviders().get(provider).getSdmxVersion())
urlText = new JTextField(SdmxClientHandler.getDataURL(provider, dataflow, queryString, null, null, false, null, false));
else
urlText = new JTextField(SdmxClientHandler.getDataURL(provider, dataflow, queryString, null, null, false, null, false));
urlLabel.setLabelFor(urlText);
GridBagConstraints gbc_urlText = new GridBagConstraints();
gbc_urlText.fill = GridBagConstraints.BOTH;
Expand Down
Binary file not shown.
Binary file modified RJSDMX/inst/java/SDMX.jar
Binary file not shown.
Binary file modified STATA/jar/SDMX.jar
Binary file not shown.

0 comments on commit 29da24b

Please sign in to comment.