content: package com.ctrip.framework.apollo.biz.service;
  
  import com.google.common.collect.Lists;
  
  import com.ctrip.framework.apollo.biz.entity.ReleaseMessage;
  import com.ctrip.framework.apollo.biz.repository.ReleaseMessageRepository;
  import com.ctrip.framework.apollo.tracer.Tracer;
  
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.stereotype.Service;
  import org.springframework.util.CollectionUtils;
  
  import java.util.Collection;
  import java.util.Collections;
  import java.util.List;
  
  /**
   * @author Jason Song(song_s@ctrip.com)
   */
  @Service
  public class ReleaseMessageService {
    @Autowired
    private ReleaseMessageRepository releaseMessageRepository;
  
    public ReleaseMessage findLatestReleaseMessageForMessages(Collection<String> messages) {
      if (CollectionUtils.isEmpty(messages)) {
        return null;
      }
      return releaseMessageRepository.findTopByMessageInOrderByIdDesc(messages);
    }
  
    public List<ReleaseMessage> findLatestReleaseMessagesGroupByMessages(Collection<String> messages) {
      if (CollectionUtils.isEmpty(messages)) {
        return Collections.emptyList();
      }
      List<Object[]> result =
          releaseMessageRepository.findLatestReleaseMessagesGroupByMessages(messages);
      List<ReleaseMessage> releaseMessages = Lists.newArrayList();
      for (Object[] o : result) {
        try {
          ReleaseMessage releaseMessage = new ReleaseMessage((String) o[0]);
          releaseMessage.setId((Long) o[1]);
          releaseMessages.add(releaseMessage);
        } catch (Exception ex) {
          Tracer.logError("Parsing LatestReleaseMessagesGroupByMessages failed", ex);
        }
      }
      return releaseMessages;
    }
  }
  