package org.esa.snap.opendap.utils; import opendap.dap.DDS; import org.esa.snap.opendap.datamodel.DAPVariable; import org.esa.snap.opendap.datamodel.OpendapLeaf; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; public class VariableCollector { private final ArrayList<DAPVariable> variableList; private VariableExtractor variableExtractor; public VariableCollector() { variableList = new ArrayList<DAPVariable>(); variableExtractor = new VariableExtractor(); } public DAPVariable[] collectDAPVariables(DDS dds) { final DAPVariable[] dapVariables = variableExtractor.extractVariables(dds); storeDAPVariables(dapVariables); return dapVariables; } public DAPVariable[] collectDAPVariables(OpendapLeaf leaf) { final DAPVariable[] dapVariables = variableExtractor.extractVariables(leaf); storeDAPVariables(dapVariables); return dapVariables; } private void storeDAPVariables(DAPVariable[] dapVariables) { for (int i = 0; i < dapVariables.length; i++) { boolean contained = false; for (int j = 0; j < variableList.size(); j++) { if (dapVariables[i].equals(variableList.get(j))) { dapVariables[i] = variableList.get(j); contained = true; break; } } if (!contained) { variableList.add(dapVariables[i]); } } } public Set<DAPVariable> getVariables() { Set<DAPVariable> variables = new HashSet<DAPVariable>(variableList); return variables; } }