org.entur.gbfs.mapper.GeofencingZonesAdditionalMapper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gbfs-mapper-java Show documentation
Show all versions of gbfs-mapper-java Show documentation
Enables mapping between different versions of GBFS (bidirectional)
package org.entur.gbfs.mapper;
import org.mapstruct.Context;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import java.util.List;
@Mapper
public abstract class GeofencingZonesAdditionalMapper {
List mapName(String value, @Context String language) {
if (value == null) {
return null;
}
return List.of(
new org.mobilitydata.gbfs.v3_0.geofencing_zones.GBFSName()
.withText(value)
.withLanguage(language)
);
}
String mapNameInverse(List values, @Context String language) {
if (values == null) {
return null;
}
return values.stream()
.filter(name -> name.getLanguage().equals(language))
.map(org.mobilitydata.gbfs.v3_0.geofencing_zones.GBFSName::getText)
.findFirst().orElse(null);
}
@Mapping(target = "rideStartAllowed", source = "rideAllowed")
@Mapping(target = "rideEndAllowed", source = "rideAllowed")
@Mapping(target = "vehicleTypeIds", source = "vehicleTypeId")
abstract org.mobilitydata.gbfs.v3_0.geofencing_zones.GBFSRule mapRule(org.mobilitydata.gbfs.v2_3.geofencing_zones.GBFSRule source);
@Mapping(target = "rideAllowed", expression = "java(source.getRideStartAllowed() && source.getRideEndAllowed())")
@Mapping(target = "vehicleTypeId", source = "vehicleTypeIds")
abstract org.mobilitydata.gbfs.v2_3.geofencing_zones.GBFSRule mapRuleInverse(org.mobilitydata.gbfs.v3_0.geofencing_zones.GBFSRule source);
}