private HeaderBean processHeader()

in SdmxDataParser/src/main/java/org/sdmxsource/sdmx/dataparser/engine/reader/AbstractSdmxDataReaderEngine.java [178:268]


    private HeaderBean processHeader() throws XMLStreamException {
        //All the attributes required to build a header
        Map<String, String> additionalAttributes = new HashMap<String, String>();
        StructureReferenceBean dataProviderReference = null;
        List<DatasetStructureReferenceBean> structure = new ArrayList<DatasetStructureReferenceBean>();
        DATASET_ACTION datasetAction = null;
        String id = null;
        String datasetId = null;
        Date embargoDate = null;
        Date extracted = null;
        Date prepared = null;
        Date reportingBegin = null;
        Date reportingEnd = null;
        List<TextTypeWrapper> name = new ArrayList<TextTypeWrapper>();
        List<TextTypeWrapper> source = new ArrayList<TextTypeWrapper>();
        List<PartyBean> receiver = new ArrayList<PartyBean>();
        PartyBean sender = null;
        boolean test = false;
        String dsdId = null;
        String dsdAgency = null;
        while (parser.hasNext()) {
            int event = parser.next();
            if (event == XMLStreamConstants.START_ELEMENT) {
                String nodeName = parser.getLocalName();
                if (nodeName.equals("ID")) {
                    id = parser.getElementText();
                } else if (nodeName.equals("Test")) {
                    test = Boolean.valueOf(parser.getElementText());
                } else if (nodeName.equals("Prepared")) {
                    prepared = DateUtil.formatDate(parser.getElementText(), true);
                } else if (nodeName.equals("Sender")) {
                    sender = processParty(nodeName);
                } else if (nodeName.equals("Receiver")) {
                    receiver.add(processParty(nodeName));
                } else if (nodeName.equals("Name")) {
                    addItemToLangMap(name);
                } else if (nodeName.equals("Structure")) {
                    structure.add(processStructure());
                } else if (nodeName.equals("DataProvider")) {
                    dataProviderReference = parseStructureReference(nodeName, SDMX_STRUCTURE_TYPE.DATA_PROVIDER);
                } else if (nodeName.equals("DataSetAction")) {
                    datasetAction = DATASET_ACTION.getAction(parser.getElementText());
                } else if (nodeName.equals("DataSetID")) {
                    datasetId = parser.getElementText();
                } else if (nodeName.equals("Extracted")) {
                    extracted = DateUtil.formatDate(parser.getElementText(), true);
                } else if (nodeName.equals("ReportingBegin")) {
                    reportingBegin = DateUtil.formatDate(parser.getElementText(), true);
                } else if (nodeName.equals("ReportingEnd")) {
                    reportingEnd = DateUtil.formatDate(parser.getElementText(), true);
                } else if (nodeName.equals("EmbargoDate")) {
                    embargoDate = DateUtil.formatDate(parser.getElementText(), true);
                } else if (nodeName.equals("Source")) {
                    addItemToLangMap(source);
                } else if (nodeName.equals("KeyFamilyAgency")) {
                    dsdAgency = parser.getElementText();
                } else if (nodeName.equals("KeyFamilyRef")) {
                    dsdId = parser.getElementText();
                }
            } else if (event == XMLStreamConstants.END_ELEMENT) {
                String nodeName = parser.getLocalName();
                if (nodeName.equals("Header")) {
                    if (dsdId != null) {
                        if (defaultDsd != null && dsdId.equals(defaultDsd.getId())) {
                            structure.add(new DatasetStructureReferenceBeanImpl(defaultDsd.asReference()));
                        } else {
                            structure.add(new DatasetStructureReferenceBeanImpl(new StructureReferenceBeanImpl(dsdAgency, dsdId, MaintainableBean.DEFAULT_VERSION, SDMX_STRUCTURE_TYPE.DSD)));
                        }
                    }

                    return new HeaderBeanImpl(additionalAttributes,
                            structure,
                            dataProviderReference,
                            datasetAction,
                            id,
                            datasetId,
                            embargoDate,
                            extracted,
                            prepared,
                            reportingBegin,
                            reportingEnd,
                            name,
                            source,
                            receiver,
                            sender,
                            test);
                }
            }
        }
        throw new IllegalArgumentException("Dataset does not contain a header");
    }