package com.hubspot.blazar.data.service; import java.util.Map; import java.util.Set; import javax.transaction.Transactional; import com.google.common.base.Optional; import com.google.common.collect.Maps; import com.google.inject.Inject; import com.hubspot.blazar.base.InterProjectBuildMapping; import com.hubspot.blazar.data.dao.InterProjectBuildMappingDao; public class InterProjectBuildMappingService { private InterProjectBuildMappingDao dao; @Inject public InterProjectBuildMappingService(InterProjectBuildMappingDao dao) { this.dao = dao; } /** * Many times when requesting mappings what is really wanted is a map of ModuleId -> Mapping for easier access. */ public Map<Integer, InterProjectBuildMapping> getMappingsForInterProjectBuildByModuleId(long interProjectBuildId) { Set<InterProjectBuildMapping> mappingsForInterProjectBuild = getMappingsForInterProjectBuild(interProjectBuildId); return Maps.uniqueIndex(mappingsForInterProjectBuild, InterProjectBuildMapping::getModuleId); } public Set<InterProjectBuildMapping> getMappingsForInterProjectBuild(long interProjectBuildId) { return dao.getMappingsForInterProjectBuild(interProjectBuildId); } public Set<InterProjectBuildMapping> getMappingsForRepo(long interProjectBuildId, int branchId) { return dao.getMappingsForRepo(interProjectBuildId, branchId); } public Set<InterProjectBuildMapping> getMappingsForModule(long interProjectBuildId, int moduleId) { return dao.getMappingsForModule(interProjectBuildId, moduleId); } public Set<InterProjectBuildMapping> getByRepoBuildId(long repoBuildId) { return dao.getByRepoBuildId(repoBuildId); } public Optional<InterProjectBuildMapping> getByModuleBuildId(long moduleBuildId) { return dao.getByModuleBuildId(moduleBuildId); } public Optional<InterProjectBuildMapping> getByMappingId(long id) { return dao.getByMappingId(id); } @Transactional public long insert(InterProjectBuildMapping interProjectBuildMapping) { return dao.insert(interProjectBuildMapping); } @Transactional public int updateBuilds(InterProjectBuildMapping mapping) { return dao.updateBuilds(mapping); } }