public static Map<String, AddonGroup> asMap(List<AddonGroup> addons) { Map<String, AddonGroup> addonsAsMap = new HashMap<>(); for (AddonGroup addonGroup : addons) { addonsAsMap.put(addonGroup.getGroup(), addonGroup); } return addonsAsMap; }
@Override public AddonGroup map(int index, ResultSet result, StatementContext context) throws SQLException AddonGroup addonGroup = new AddonGroup(); addonGroup.setEntityId((UUID) result.getObject("entity_id")); addonGroup.setGroup(result.getString("addon_group")); addonGroup.setSource(AddonSource.fromJson(result.getString("source"))); addonGroup.setValue(value); } catch (IOException e) { List<Map<String, Object>> value = mapper.readValue(result.getString("value"), new TypeReference<List<Map<String, Object>>>(){}); addonGroup.setValue(value); } catch (IOException e1) { throw new SQLException("Failed to de-serialize value", e); addonGroup.setModel(model); } catch (IOException e) { throw new SQLException("Failed to de-serialize model", e);
if (localizedAddons.containsKey(addon.getGroup())) { Map<String, Object> localizedGroup = (Map<String, Object>) localizedAddons.get(addon.getGroup()); if (Map.class.isAssignableFrom(addon.getValue().getClass())) { Map<String, Object> value = (Map<String, Object>) addon.getValue(); Map<String, Object> localizedGroupValue = (Map<String, Object>) localizedGroup.get("value"); ((Map<String, Object>) addon.getValue()).put(field, localizedValue); } else if (List.class.isAssignableFrom(addon.getValue().getClass())) { List<Map<String, Object>> values = (List<Map<String, Object>>) addon.getValue(); try { List<Map<String, Object>> localizedGroupValue = ((List<Map<String, Object>>) addon.getValue()).get(i).put(field, localizedValue);
public static <T extends Identifiable & HasAddons> List<T> withAddons(List<T> entities, AddonsDAO dao) { Collection<UUID> ids = Collections2.transform(entities, new Function<T, UUID>() { @Override public UUID apply(final T entity) { return entity.getId(); } } ); if (ids.size() <= 0) { return entities; } List<AddonGroup> addons = dao.findAllAddonsForIds(new ArrayList(ids)); Map<UUID, List<AddonGroup>> addonsForEntity = Maps.newHashMap(); for (AddonGroup addon : addons) { if (!addonsForEntity.containsKey(addon.getEntityId())) { addonsForEntity.put(addon.getEntityId(), new ArrayList<AddonGroup>()); } addonsForEntity.get(addon.getEntityId()).add(addon); } for (T entity : entities) { if (addonsForEntity.containsKey(entity.getId())) { entity.setAddons(asMap(addonsForEntity.get(entity.getId()))); } } return entities; }