001package co.codewizards.cloudstore.core.repo.sync; 002 003import static co.codewizards.cloudstore.core.util.Util.assertNotNull; 004 005import java.util.Collection; 006import java.util.HashMap; 007import java.util.LinkedList; 008import java.util.List; 009import java.util.Map; 010 011import co.codewizards.cloudstore.core.dto.CopyModificationDTO; 012import co.codewizards.cloudstore.core.dto.DeleteModificationDTO; 013import co.codewizards.cloudstore.core.dto.ModificationDTO; 014 015public class ModificationDTOSet { 016 017 private final Map<String, List<DeleteModificationDTO>> path2DeleteModificationDTOs; 018 private final Map<String, List<CopyModificationDTO>> fromPath2CopyModificationDTOs; 019 020 public ModificationDTOSet(Collection<ModificationDTO> modificationDTOs) { 021 assertNotNull("modificationDTOs", modificationDTOs); 022 path2DeleteModificationDTOs = new HashMap<String, List<DeleteModificationDTO>>(); 023 fromPath2CopyModificationDTOs = new HashMap<String, List<CopyModificationDTO>>(); 024 for (ModificationDTO modificationDTO : modificationDTOs) { 025 if (modificationDTO instanceof CopyModificationDTO) { 026 CopyModificationDTO copyModificationDTO = (CopyModificationDTO) modificationDTO; 027 String fromPath = copyModificationDTO.getFromPath(); 028 List<CopyModificationDTO> list = fromPath2CopyModificationDTOs.get(fromPath); 029 if (list == null) { 030 list = new LinkedList<CopyModificationDTO>(); 031 fromPath2CopyModificationDTOs.put(fromPath, list); 032 } 033 list.add(copyModificationDTO); 034 } 035 else if (modificationDTO instanceof DeleteModificationDTO) { 036 DeleteModificationDTO deleteModificationDTO = (DeleteModificationDTO) modificationDTO; 037 String path = deleteModificationDTO.getPath(); 038 List<DeleteModificationDTO> list = path2DeleteModificationDTOs.get(path); 039 if (list == null) { 040 list = new LinkedList<DeleteModificationDTO>(); 041 path2DeleteModificationDTOs.put(path, list); 042 } 043 list.add(deleteModificationDTO); 044 } 045 else 046 throw new UnsupportedOperationException("Unknown ModificationDTO type: " + modificationDTO); 047 } 048 } 049 050 public Map<String, List<CopyModificationDTO>> getFromPath2CopyModificationDTOs() { 051 return fromPath2CopyModificationDTOs; 052 } 053 054 public Map<String, List<DeleteModificationDTO>> getPath2DeleteModificationDTOs() { 055 return path2DeleteModificationDTOs; 056 } 057 058}