Commit aa5fc8de authored by Labros Papadopoulos's avatar Labros Papadopoulos
Browse files

tmf 674 Implementation + tests

parent 1875320a
Loading
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
package org.etsi.osl.tmf.gsm674.api;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

@Documented
@Retention(RUNTIME)
@Target({TYPE, METHOD, CONSTRUCTOR})
public @interface Generated {
}
+1 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import java.security.Principal;
import java.util.List;
import java.util.Optional;

@Generated
public interface GeographicSiteManagementApi {
    Logger log = LoggerFactory.getLogger(GeographicSiteManagementApi.class);

+5 −0
Original line number Diff line number Diff line
@@ -80,8 +80,13 @@ public class GeographicSiteManagementApiController implements GeographicSiteMana
    public ResponseEntity<GeographicSite> patchGeographicalSite(
            @Parameter(description = "Identifier of the ServiceOrder", required = true) @PathVariable("id") String id,
            @Parameter(description = "The ServiceOrder to be updated", required = true) @Valid @RequestBody GeographicSite geographicSite) {
        try{
        GeographicSite c = geographicSiteManagementService.updateGeographicSite(id, geographicSite);

        return new ResponseEntity<>(c, HttpStatus.OK);
        }catch (Exception e){
            log.error(COULD_NOT_SERIALIZE, e);
            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }
}
+0 −1
Original line number Diff line number Diff line
@@ -5,7 +5,6 @@ import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

@Repository
+42 −1
Original line number Diff line number Diff line
package org.etsi.osl.tmf.gsm674.reposervices;

import org.etsi.osl.tmf.gsm674.model.CalendarPeriod;
import org.etsi.osl.tmf.gsm674.model.GeographicSite;
import org.etsi.osl.tmf.gsm674.model.GeographicSiteRelationship;
import org.etsi.osl.tmf.gsm674.model.PlaceRefOrValue;
import org.etsi.osl.tmf.gsm674.repo.GeographicSiteManagementRepository;
import org.etsi.osl.tmf.prm669.model.RelatedParty;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,7 +20,6 @@ import java.util.Optional;
public class GeographicSiteManagementService {
    private static final Logger log = LoggerFactory.getLogger(GeographicSiteManagementService.class);


    private final GeographicSiteManagementRepository geographicSiteManagementRepository;

    @Autowired
@@ -39,11 +42,13 @@ public class GeographicSiteManagementService {
   }

   public GeographicSite updateGeographicSite(String id,GeographicSite geographicSite){
        log.info("Update geographic site with id: {}",id);
        Optional<GeographicSite> gs=geographicSiteManagementRepository.findByUuid(id);
       return gs.map(site -> updateFields(geographicSite, site)).orElse(null);
   }

   public Void deleteGeographicSiteById(String id){
       log.info("Delete geographic site with id: {}",id);
        GeographicSite gs=geographicSiteManagementRepository.findByUuid(id).orElseThrow();
        geographicSiteManagementRepository.delete(gs);
       return null;
@@ -51,6 +56,42 @@ public class GeographicSiteManagementService {

   private GeographicSite updateFields(GeographicSite newSite, GeographicSite existingSite){

        if(newSite.getName()!=null) existingSite.setCalendar(newSite.getCalendar());
        if(newSite.getDescription()!=null) existingSite.setDescription(newSite.getDescription());
        if(newSite.getCode()!=null) existingSite.setCode(newSite.getCode());
        if (newSite.getStatus()!=null) existingSite.setStatus(newSite.getStatus());

        if(newSite.getGeographicSiteRelationship()!=null){
            for(GeographicSiteRelationship n : newSite.getGeographicSiteRelationship()){
                 if(n.getUuid()==null){
                    existingSite.addGeographicSiteRelationship(n);
                }
            }
        }

        if(newSite.getCalendar()!=null){
           for(CalendarPeriod c: newSite.getCalendar()){
               if(c.getUuid()==null){
                   existingSite.addCalendarPeriod(c);
               }
           }
        }

        if(newSite.getPlaceRefOrValue()!=null){
            for(PlaceRefOrValue p: newSite.getPlaceRefOrValue()){
                if (p.getUuid()==null){
                    existingSite.addPlaceRefOrValue(p);
                }
            }
        }

        if(newSite.getRelatedParties()!=null){
            for(RelatedParty party: newSite.getRelatedParties()){
                if(party.getUuid()==null){
                    existingSite.addRelatedParty(party);
                }
            }
        }

       geographicSiteManagementRepository.save(existingSite);
       return existingSite;
Loading