
nl.tno.bim.mapping.services.MappingSetMapServiceImpl Maven / Gradle / Ivy
package nl.tno.bim.mapping.services;
import java.util.ArrayList;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Optional;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import nl.tno.bim.mapping.controller.MappingSetController;
import nl.tno.bim.mapping.domain.Mapping;
import nl.tno.bim.mapping.domain.MappingSet;
import nl.tno.bim.mapping.domain.MappingSetMap;
import nl.tno.bim.mapping.domain.MaterialMapping;
import nl.tno.bim.mapping.exception.NoMappingIdException;
import nl.tno.bim.mapping.exception.NoMappingSetException;
import nl.tno.bim.mapping.exception.NoMappingSetIdException;
import nl.tno.bim.mapping.exception.NoMappingSetMapException;
import nl.tno.bim.mapping.repositories.MappingRepository;
import nl.tno.bim.mapping.repositories.MappingSetMapRepository;
import nl.tno.bim.mapping.repositories.MappingSetRepository;
@Component
public class MappingSetMapServiceImpl implements MappingSetMapService {
private final static Logger logger = LoggerFactory.getLogger(MappingSetController.class);
private MappingSetMapRepository mappingSetMapRepository;
private MappingSetRepository mappingSetRepository;
private MappingRepository mappingRepository;
@Autowired
public void setMappingSetMapRepository(MappingSetMapRepository mappingSetMapRepository) {
this.mappingSetMapRepository = mappingSetMapRepository;
}
@Autowired
public void setMappingSetRepository(MappingSetRepository mappingSetRepository) {
this.mappingSetRepository = mappingSetRepository;
}
@Autowired
public void setMappingRepository(MappingRepository mappingRepository) {
this.mappingRepository = mappingRepository;
}
@Override
public MappingSetMap updateMappingSetMapService(MappingSetMap mappingSetMap) {
Mapping mapping = null;
//check if data came through
if (mappingSetMap == null) {
throw new NoSuchElementException("No Mapping Set Map found! ");
}
if (mappingSetMap.getMappingSet() == null) {
throw new NoSuchElementException("No Mapping Set found!");
}
if (mappingSetMap.getMapping() == null) {
throw new NoSuchElementException("No Mapping found!");
}
//load highest revision for this
if (mappingSetMap.getMappingRevisionId() == null) {
Long mappingSetId = mappingSetMap.getMappingSet().getId();
Long revId = mappingSetMapRepository.selectMaxMappingRevisionIdFromMappingSetMapWhereMappingSetId(mappingSetId);
if (revId == null) {
mappingSetMap.setMappingRevisionId(0L);
} else {
mappingSetMap.setMappingRevisionId(++revId);
}
}
if (mappingSetMap.getMapping().getMaterialMappings() != null) {
for (MaterialMapping materialMapping : mappingSetMap.getMapping().getMaterialMappings()) {
materialMapping.setId(null);
}
}
if (mappingSetMap.getMapping().getId() != null) {
mappingSetMap.getMapping().setId(null);
}
mapping = mappingRepository.save(mappingSetMap.getMapping());
if (mappingSetMap.getId() != null) {
mappingSetMap.setId(null);
}
mappingSetMap.setMapping(mapping);
return mappingSetMapRepository.save(mappingSetMap);
}
@Override
public MappingSetMap persistMappingSetMapService(MappingSetMap mappingSetMap)
throws NoMappingIdException, NoMappingSetIdException, NoMappingSetException, NoMappingSetMapException {
if (mappingSetMap != null) {
Mapping mapping;
if (mappingSetMap.getMapping() != null) {
mapping = persistOrUpdateMapping(mappingSetMap.getMapping());
} else {
throw new NoMappingIdException("No Mapping for relation MappingSetMap");
}
if (mappingSetMap.getMappingSet() != null) {
loadMappingSet(mappingSetMap);
} else {
throw new NoMappingSetException("No MappingSet.id for relation MappingSetMap");
}
Long mappingRevisionId = mappingSetMapRepository
.selectMaxMappingRevisionIdFromMappingSetMapWhereMappingSetId(
mappingSetMap.getMappingSet().getId());
if (mappingRevisionId == null) {
mappingRevisionId = 0L;
}
mappingSetMap.setMappingRevisionId(++mappingRevisionId);
return mappingSetMapRepository.save(mappingSetMap);
}
throw new NoMappingSetMapException("No MappingSetMap Object found !");
}
private MappingSetMap loadMappingSet(MappingSetMap mappingSetMap) throws NoMappingSetIdException {
if (mappingSetMap.getMappingSet().getId() != null) {
Optional optionalMappingSet = mappingSetRepository
.findById(mappingSetMap.getMappingSet().getId());
if (optionalMappingSet.isPresent()) {
mappingSetMap.setMappingSet(optionalMappingSet.get());
} else {
throw new NoMappingSetIdException("No MappingSet.id for relation MappingSetMap");
}
} else {
throw new NoMappingSetIdException("No MappingSet.id for relation MappingSetMap");
}
return mappingSetMap;
}
private Mapping persistOrUpdateMapping(Mapping mapping) {
// Mapping mapping;
if (mapping.getId() != null) {
Optional optionalMapping = mappingRepository.findById(mapping.getId());
if (optionalMapping.isPresent()) {
// mapping element found in database
mapping = optionalMapping.get();
} else {
// mapping element not found in database
mapping.setId(null);
// persisting new element
mapping = mappingRepository.save(mapping);
}
} else {
// persisting new element
mapping = mappingRepository.save(mapping);
}
return mapping;
}
@Override
public MappingSetMap retrieveMappingSetMapById(Long id) {
Optional optionalMappingSetMap = mappingSetMapRepository.findById(id);
if (optionalMappingSetMap.isPresent()) {
return optionalMappingSetMap.get();
}
return null;
}
@Override
public List searchMappingSetMap(String q) {
List ms = new ArrayList<>();
if (q != null) {
ms = mappingSetMapRepository.findByElementGuidLike(q);
if (ms == null) {
return new ArrayList<>();
}
return ms;
} else {
mappingSetMapRepository.findAll().iterator().forEachRemaining(ms::add);
return ms;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy