MovementMapper.java
/*
* Copyright 2005-2025 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.openwms.wms.movements.impl;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.openwms.wms.movements.api.MovementVO;
import org.openwms.wms.movements.commands.MovementMO;
/**
* A MovementMapper.
*
* @author Heiko Scherrer
*/
@Mapper
public abstract class MovementMapper {
public abstract MovementVO convertToVO(MovementMO mo);
@Mapping(target = "persistentKey", source = "persistentKey")
@Mapping(target = "transportUnitBk", source = "transportUnitBk.value")
@Mapping(target = "priority", expression = "java( convertFrom(eo.getPriority()) )")
@Mapping(target = "target", source = "targetLocationGroup")
@Mapping(target = "type", source = "type")
@Mapping(target = "startMode", source = "mode")
@Mapping(target = "startedAt", source = "startDate")
@Mapping(target = "finishedAt", source = "endDate")
@Mapping(target = "createdAt", expression = "java( java.time.LocalDateTime.now().atZone(java.time.ZoneOffset.UTC) )")
public abstract MovementVO convertToVO(Movement eo);
@Mapping(target = "persistentKey", source = "persistentKey")
@Mapping(target = "transportUnitBk", expression = "java( Barcode.of(vo.getTransportUnitBk()) )")
@Mapping(target = "priority", expression = "java( convertTo(vo.getPriority()) )")
@Mapping(target = "targetLocationGroup", source = "target")
@Mapping(target = "type", source = "type")
@Mapping(target = "mode", source = "startMode")
@Mapping(target = "startDate", source = "startedAt")
@Mapping(target = "endDate", source = "finishedAt")
public abstract Movement convertTo(MovementVO vo);
public PriorityLevel convertTo(Integer priority) {
if (priority == null) {
return PriorityLevel.LOWEST;
}
if (priority < 11) {
return PriorityLevel.HIGHEST;
} else if (priority < 21) {
return PriorityLevel.HIGH;
} else if (priority < 31) {
return PriorityLevel.NORMAL;
} else if (priority < 41) {
return PriorityLevel.LOW;
}
return PriorityLevel.LOWEST;
}
public Integer convertFrom(PriorityLevel source) {
if (source == null) {
return null;
}
return source.getOrder();
}
}