All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opentripplanner.netex.loader.parser.ResourceFrameParser Maven / Gradle / Ivy

package org.opentripplanner.netex.loader.parser;

import org.opentripplanner.netex.loader.NetexImportDataIndex;
import org.rutebanken.netex.model.Authority;
import org.rutebanken.netex.model.Operator;
import org.rutebanken.netex.model.Organisation_VersionStructure;
import org.rutebanken.netex.model.OrganisationsInFrame_RelStructure;
import org.rutebanken.netex.model.ResourceFrame_VersionFrameStructure;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.xml.bind.JAXBElement;
import java.util.ArrayList;
import java.util.Collection;

class ResourceFrameParser extends NetexParser {
    private static final Logger LOG = LoggerFactory.getLogger(ResourceFrameParser.class);

    private final Collection authorities = new ArrayList<>();
    private final Collection operators = new ArrayList<>();

    @Override
    void parse(ResourceFrame_VersionFrameStructure frame) {
        parseOrganization(frame.getOrganisations());

        // Keep list sorted alphabetically
        warnOnMissingMapping(LOG, frame.getBlacklists());
        warnOnMissingMapping(LOG, frame.getControlCentres());
        warnOnMissingMapping(LOG, frame.getDataSources());
        warnOnMissingMapping(LOG, frame.getEquipments());
        warnOnMissingMapping(LOG, frame.getGroupsOfEntities());
        warnOnMissingMapping(LOG, frame.getGroupsOfOperators());
        warnOnMissingMapping(LOG, frame.getOperationalContexts());
        warnOnMissingMapping(LOG, frame.getResponsibilitySets());
        warnOnMissingMapping(LOG, frame.getSchematicMaps());
        warnOnMissingMapping(LOG, frame.getTypesOfValue());
        warnOnMissingMapping(LOG, frame.getVehicles());
        warnOnMissingMapping(LOG, frame.getVehicleEquipmentProfiles());
        warnOnMissingMapping(LOG, frame.getVehicleModels());
        warnOnMissingMapping(LOG, frame.getVehicleTypes());
        warnOnMissingMapping(LOG, frame.getWhitelists());
        warnOnMissingMapping(LOG, frame.getZones());

        verifyCommonUnusedPropertiesIsNotSet(LOG, frame);
    }

    @Override void setResultOnIndex(NetexImportDataIndex netexIndex) {
        netexIndex.authoritiesById.addAll(authorities);
        netexIndex.operatorsById.addAll(operators);
    }


    /* private methods */

    private void parseOrganization(OrganisationsInFrame_RelStructure elements) {
        for (JAXBElement e : elements.getOrganisation_()) {
            parseOrganization((Organisation_VersionStructure) e.getValue());
        }
    }

    private void parseOrganization(Organisation_VersionStructure element) {
        if (element instanceof Authority) {
            authorities.add((Authority) element);
        } else if (element instanceof Operator) {
                operators.add((Operator) element);
        } else {
            warnOnMissingMapping(LOG, element);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy