Coverage Report - com.ctrip.framework.apollo.biz.service.ReleaseService
 
Classes in this File Line Coverage Branch Coverage Complexity
ReleaseService
6%
2/31
0%
0/6
2.333
 
 1  
 package com.ctrip.framework.apollo.biz.service;
 2  
 
 3  
 import com.google.gson.Gson;
 4  
 
 5  
 import com.ctrip.framework.apollo.biz.entity.Audit;
 6  
 import com.ctrip.framework.apollo.biz.entity.Item;
 7  
 import com.ctrip.framework.apollo.biz.entity.Namespace;
 8  
 import com.ctrip.framework.apollo.biz.entity.Release;
 9  
 import com.ctrip.framework.apollo.biz.repository.ItemRepository;
 10  
 import com.ctrip.framework.apollo.biz.repository.ReleaseRepository;
 11  
 import com.ctrip.framework.apollo.biz.utils.ReleaseKeyGenerator;
 12  
 import com.ctrip.framework.apollo.core.utils.StringUtils;
 13  
 
 14  
 import org.springframework.beans.factory.annotation.Autowired;
 15  
 import org.springframework.stereotype.Service;
 16  
 import org.springframework.transaction.annotation.Transactional;
 17  
 
 18  
 import java.util.Collections;
 19  
 import java.util.Date;
 20  
 import java.util.HashMap;
 21  
 import java.util.List;
 22  
 import java.util.Map;
 23  
 
 24  
 /**
 25  
  * @author Jason Song(song_s@ctrip.com)
 26  
  */
 27  
 @Service
 28  1
 public class ReleaseService {
 29  1
   private Gson gson = new Gson();
 30  
 
 31  
   @Autowired
 32  
   private ReleaseRepository releaseRepository;
 33  
 
 34  
   @Autowired
 35  
   private ItemRepository itemRepository;
 36  
 
 37  
   @Autowired
 38  
   private AuditService auditService;
 39  
 
 40  
   @Autowired
 41  
   private NamespaceLockService namespaceLockService;
 42  
 
 43  
 
 44  
   public Release findOne(long releaseId) {
 45  0
     Release release = releaseRepository.findOne(releaseId);
 46  0
     return release;
 47  
   }
 48  
 
 49  
   public List<Release> findReleases(String appId, String clusterName, String namespaceName) {
 50  0
     List<Release> releases = releaseRepository.findByAppIdAndClusterNameAndNamespaceName(appId,
 51  
         clusterName, namespaceName);
 52  0
     if (releases == null) {
 53  0
       return Collections.emptyList();
 54  
     }
 55  0
     return releases;
 56  
   }
 57  
 
 58  
   @Transactional
 59  
   public Release buildRelease(String name, String comment, Namespace namespace, String owner) {
 60  
 
 61  0
     List<Item> items = itemRepository.findByNamespaceIdOrderByLineNumAsc(namespace.getId());
 62  0
     Map<String, String> configurations = new HashMap<String, String>();
 63  0
     for (Item item : items) {
 64  0
       if (StringUtils.isEmpty(item.getKey())) {
 65  0
         continue;
 66  
       }
 67  0
       configurations.put(item.getKey(), item.getValue());
 68  0
     }
 69  
 
 70  0
     Release release = new Release();
 71  0
     release.setReleaseKey(ReleaseKeyGenerator.generateReleaseKey(namespace));
 72  0
     release.setDataChangeCreatedTime(new Date());
 73  0
     release.setDataChangeCreatedBy(owner);
 74  0
     release.setDataChangeLastModifiedBy(owner);
 75  0
     release.setName(name);
 76  0
     release.setComment(comment);
 77  0
     release.setAppId(namespace.getAppId());
 78  0
     release.setClusterName(namespace.getClusterName());
 79  0
     release.setNamespaceName(namespace.getNamespaceName());
 80  0
     release.setConfigurations(gson.toJson(configurations));
 81  0
     release = releaseRepository.save(release);
 82  
 
 83  0
     namespaceLockService.unlock(namespace.getId());
 84  0
     auditService.audit(Release.class.getSimpleName(), release.getId(), Audit.OP.INSERT,
 85  0
         release.getDataChangeCreatedBy());
 86  
 
 87  0
     return release;
 88  
   }
 89  
 
 90  
 }