@RequiresSession public Map<String, List<HostConfigMapping>> findSelectedHostsByTypes( final long clusterId, Collection<String> types) { populateCache(); Map<String, List<HostConfigMapping>> mappingsByType = new HashMap<String, List<HostConfigMapping>>(); for (String type : types) { if (!mappingsByType.containsKey(type)) { mappingsByType.put(type, new ArrayList<HostConfigMapping>()); } } if (!types.isEmpty()) { List<HostConfigMapping> mappings = new ArrayList<HostConfigMapping>(); for (Set<HostConfigMapping> entries : hostConfigMappingByHost.values()) { for (HostConfigMapping entry : entries) { if (types.contains(entry.getType()) && entry.getClusterId().equals(clusterId)) mappings.add(new HostConfigMappingImpl(entry)); } } for (HostConfigMapping mapping : mappings) { mappingsByType.get(mapping.getType()).add(mapping); } } return mappingsByType; }
@Transactional public void create(HostConfigMapping hostConfigMapping) { populateCache(); // create in db entityManagerProvider.get().persist(buildHostConfigMappingEntity(hostConfigMapping)); // create in cache Set<HostConfigMapping> set = hostConfigMappingByHost.get(hostConfigMapping.getHostName()); if (set == null) { set = new HashSet<HostConfigMapping>(); hostConfigMappingByHost.put(hostConfigMapping.getHostName(), set); } set.add(hostConfigMapping); }
public HostConfigMapping buildHostConfigMapping(HostConfigMappingEntity hostConfigMappingEntity) { HostConfigMapping hostConfigMapping = new HostConfigMappingImpl(); hostConfigMapping.setClusterId(hostConfigMappingEntity.getClusterId()); hostConfigMapping.setCreateTimestamp(hostConfigMappingEntity.getCreateTimestamp()); hostConfigMapping.setHostName(hostConfigMappingEntity.getHostName()); hostConfigMapping.setServiceName(hostConfigMappingEntity.getServiceName()); hostConfigMapping.setType(hostConfigMappingEntity.getType()); hostConfigMapping.setUser(hostConfigMappingEntity.getUser()); hostConfigMapping.setSelected(hostConfigMappingEntity.isSelected()); hostConfigMapping.setVersion(hostConfigMappingEntity.getVersion()); return hostConfigMapping; }
@Transactional public HostConfigMapping merge(HostConfigMapping hostConfigMapping) { populateCache(); Set<HostConfigMapping> set = hostConfigMappingByHost.get(hostConfigMapping.getHostName()); if (set == null) { set = new HashSet<HostConfigMapping>(); hostConfigMappingByHost.put(hostConfigMapping.getHostName(), set); } // Update object in set set.remove(hostConfigMapping); set.add(hostConfigMapping); entityManagerProvider.get().merge(buildHostConfigMappingEntity(hostConfigMapping)); return hostConfigMapping; }