Skip to content
Snippets Groups Projects
Commit e2fd73e8 authored by Martin Slovík's avatar Martin Slovík
Browse files

Adding AirplaneFacade

parent 7efe9ca2
No related branches found
No related tags found
No related merge requests found
package cz.muni.fi.pa165.core.facade.airplane;
import cz.muni.fi.pa165.core.model.AirplaneDto;
import cz.muni.fi.pa165.core.model.NewAirplaneDtoRequest;
import java.util.List;
import java.util.Optional;
/**
* @param <K> Key
* @author martinslovik
*/
public interface AirplaneFacade<K> {
AirplaneDto save(NewAirplaneDtoRequest newAirplaneDtoRequest);
Optional<AirplaneDto> findById(K id);
List<AirplaneDto> findAll();
void deleteById(K id);
void deleteAll();
AirplaneDto assignAirplaneType(Long airplaneId, Long airplaneTypeId);
void deleteAirplaneTypeAssignment(Long airplaneId, Long airplaneTypeId);
}
package cz.muni.fi.pa165.core.facade.airplane;
import cz.muni.fi.pa165.core.data.domain.Airplane;
import cz.muni.fi.pa165.core.model.AirplaneDto;
import cz.muni.fi.pa165.core.model.NewAirplaneDtoRequest;
import cz.muni.fi.pa165.core.service.airplane.AirplaneService;
import cz.muni.fi.pa165.core.service.airplanetype.AirplaneTypeService;
import org.modelmapper.ModelMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
public class AirplaneFacadeImpl implements AirplaneFacade<Long> {
private final AirplaneService airplaneService;
private final AirplaneTypeService airplaneTypeService;
private final ModelMapper modelMapper;
@Autowired
public AirplaneFacadeImpl(AirplaneService airplaneService, AirplaneTypeService airplaneTypeService, ModelMapper modelMapper) {
this.airplaneService = airplaneService;
this.airplaneTypeService = airplaneTypeService;
this.modelMapper = modelMapper;
}
@Override
public AirplaneDto save(NewAirplaneDtoRequest newAirplaneDtoRequest) {
var entityToSave = modelMapper.map(newAirplaneDtoRequest, Airplane.class);
var savedEntity = airplaneService.save(entityToSave);
return modelMapper.map(savedEntity, AirplaneDto.class);
}
@Override
public Optional<AirplaneDto> findById(Long id) {
var foundEntity = airplaneService.findById(id);
return foundEntity.map(e -> modelMapper.map(e, AirplaneDto.class));
}
@Override
public List<AirplaneDto> findAll() {
var entities = airplaneTypeService.findAll();
return entities.stream()
.map(entity -> modelMapper.map(entity, AirplaneDto.class))
.toList();
}
@Override
public void deleteById(Long id) {
airplaneService.deleteById(id);
}
@Override
public void deleteAll() {
airplaneService.deleteAll();
}
@Override
public AirplaneDto assignAirplaneType(Long airplaneId, Long airplaneTypeId) {
var airplaneEntity = airplaneService.findById(airplaneId);
var airplaneTypeEntity = airplaneTypeService.findById(airplaneTypeId);
if (airplaneEntity.isPresent() && airplaneTypeEntity.isPresent()) {
airplaneEntity.get().setType(airplaneTypeEntity.get());
return modelMapper.map(airplaneEntity, AirplaneDto.class);
}
return null;
}
@Override
public void deleteAirplaneTypeAssignment(Long airplaneId, Long airplaneTypeId) {
var airplaneEntity = airplaneService.findById(airplaneId);
var airplaneTypeEntity = airplaneTypeService.findById(airplaneTypeId);
if (airplaneEntity.isPresent() && airplaneTypeEntity.isPresent()) {
airplaneEntity.get().setType(null);
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment