public static PropertyType getPropertyTypeById(Collection<PropertyType> propertyTypes, String propertyTypeId) { for (PropertyType propertyType : propertyTypes) { if (propertyType.getMetadata().getId().equals(propertyTypeId)) { return propertyType; } } return null; }
private Map removePersonalIdentifiersFromSessionProfile(final Map<String, Object> profileProperties) { Set<PropertyType> personalIdsProps = getPropertyTypeBySystemTag(PERSONAL_IDENTIFIER_TAG_NAME); final List personalIdsPropsNames = new ArrayList<String>(); personalIdsProps.forEach(propType -> personalIdsPropsNames.add(propType.getMetadata().getId())); Set propsToRemove = new HashSet<String>(); profileProperties.keySet().forEach(propKey -> { if (personalIdsPropsNames.contains(propKey)) { propsToRemove.add(propKey); } }); propsToRemove.forEach(propId -> profileProperties.remove(propId)); return profileProperties; }
private Map removePersonalIdentifiersFromSessionProfile(final Map<String, Object> profileProperties) { Set<PropertyType> personalIdsProps = getPropertyTypeBySystemTag(PERSONAL_IDENTIFIER_TAG_NAME); final List personalIdsPropsNames = new ArrayList<String>(); personalIdsProps.forEach(propType -> personalIdsPropsNames.add(propType.getMetadata().getId())); Set propsToRemove = new HashSet<String>(); profileProperties.keySet().forEach(propKey -> { if (personalIdsPropsNames.contains(propKey)) { propsToRemove.add(propKey); } }); propsToRemove.forEach(propId -> profileProperties.remove(propId)); return profileProperties; }
@Override public List<String> getDeniedProperties(String profileId) { List deniedProperties = new ArrayList<String>(); Set<PropertyType> personalIdsProps = profileService.getPropertyTypeBySystemTag(ProfileService.PERSONAL_IDENTIFIER_TAG_NAME); personalIdsProps.forEach(propType -> deniedProperties.add(propType.getMetadata().getId())); return deniedProperties; }
public String getPropertyTypeMapping(String fromPropertyTypeId) { Collection<PropertyType> types = getPropertyTypeByMapping(fromPropertyTypeId); if (types.size() > 0) { return types.iterator().next().getMetadata().getId(); } return null; }
public String getPropertyTypeMapping(String fromPropertyTypeId) { Collection<PropertyType> types = getPropertyTypeByMapping(fromPropertyTypeId); if (types.size() > 0) { return types.iterator().next().getMetadata().getId(); } return null; }
@Override public Set<PropertyType> getExistingProperties(String tag, String itemType, boolean systemTag) { Set<PropertyType> filteredProperties = new LinkedHashSet<PropertyType>(); // TODO: here we limit the result to the definition we have, but what if some properties haven't definition but exist in ES mapping ? Set<PropertyType> profileProperties = systemTag ? getPropertyTypeBySystemTag(tag) : getPropertyTypeByTag(tag); Map<String, Map<String, Object>> itemMapping = persistenceService.getPropertiesMapping(itemType); if (itemMapping == null || itemMapping.isEmpty() || itemMapping.get("properties") == null || itemMapping.get("properties").get("properties") == null) { return filteredProperties; } Map<String, Map<String, String>> propMapping = (Map<String, Map<String, String>>) itemMapping.get("properties").get("properties"); for (PropertyType propertyType : profileProperties) { if (propMapping.containsKey(propertyType.getMetadata().getId())) { filteredProperties.add(propertyType); } } return filteredProperties; }
@Override public Set<PropertyType> getExistingProperties(String tag, String itemType, boolean systemTag) { Set<PropertyType> filteredProperties = new LinkedHashSet<PropertyType>(); // TODO: here we limit the result to the definition we have, but what if some properties haven't definition but exist in ES mapping ? Set<PropertyType> profileProperties = systemTag ? getPropertyTypeBySystemTag(tag) : getPropertyTypeByTag(tag); Map<String, Map<String, Object>> itemMapping = persistenceService.getPropertiesMapping(itemType); if (itemMapping == null || itemMapping.isEmpty() || itemMapping.get("properties") == null || itemMapping.get("properties").get("properties") == null) { return filteredProperties; } Map<String, Map<String, String>> propMapping = (Map<String, Map<String, String>>) itemMapping.get("properties").get("properties"); for (PropertyType propertyType : profileProperties) { if (propMapping.containsKey(propertyType.getMetadata().getId())) { filteredProperties.add(propertyType); } } return filteredProperties; }
private void loadPredefinedPropertyTypes(BundleContext bundleContext) { Enumeration<URL> predefinedPropertyTypeEntries = bundleContext.getBundle().findEntries("META-INF/cxs/properties", "*.json", true); if (predefinedPropertyTypeEntries == null) { return; } List<PropertyType> bundlePropertyTypes = new ArrayList<>(); while (predefinedPropertyTypeEntries.hasMoreElements()) { URL predefinedPropertyTypeURL = predefinedPropertyTypeEntries.nextElement(); logger.debug("Found predefined property type at " + predefinedPropertyTypeURL + ", loading... "); try { PropertyType propertyType = CustomObjectMapper.getObjectMapper().readValue(predefinedPropertyTypeURL, PropertyType.class); // Register only if property type does not exist yet if (getPropertyType(propertyType.getMetadata().getId()) == null || bundleContext.getBundle().getVersion().toString().contains("SNAPSHOT")) { setPropertyTypeTarget(predefinedPropertyTypeURL, propertyType); persistenceService.save(propertyType); bundlePropertyTypes.add(propertyType); logger.info("Predefined property type with id {} registered", propertyType.getMetadata().getId()); } else { logger.info("The predefined property type with id {} is already registered, this property type will be skipped", propertyType.getMetadata().getId()); } } catch (IOException e) { logger.error("Error while loading properties " + predefinedPropertyTypeURL, e); } } propertyTypes = propertyTypes.with(bundlePropertyTypes); }
public PropertyTypes(List<PropertyType> allPropertyTypes) { this.allPropertyTypes = new ArrayList<>(allPropertyTypes); propertyTypesById = new HashMap<>(); propertyTypesByTags = new HashMap<>(); propertyTypesBySystemTags = new HashMap<>(); propertyTypesByTarget = new HashMap<>(); for (PropertyType propertyType : allPropertyTypes) { propertyTypesById.put(propertyType.getItemId(), propertyType); for (String propertyTypeTag : propertyType.getMetadata().getTags()) { updateListMap(propertyTypesByTags, propertyType, propertyTypeTag); } for (String propertyTypeSystemTag : propertyType.getMetadata().getSystemTags()) { updateListMap(propertyTypesBySystemTags, propertyType, propertyTypeSystemTag); } updateListMap(propertyTypesByTarget, propertyType, propertyType.getTarget()); } }
@Override public int compare(PropertyType o1, PropertyType o2) { if (o1.getRank() == o2.getRank()) { return o1.getMetadata().getName().compareTo(o1.getMetadata().getName()); } else if (o1.getRank() < o2.getRank()) { return -1; } else { return 1; } } });
private void loadPredefinedPropertyTypes(BundleContext bundleContext) { Enumeration<URL> predefinedPropertyTypeEntries = bundleContext.getBundle().findEntries("META-INF/cxs/properties", "*.json", true); if (predefinedPropertyTypeEntries == null) { return; } List<PropertyType> bundlePropertyTypes = new ArrayList<>(); while (predefinedPropertyTypeEntries.hasMoreElements()) { URL predefinedPropertyTypeURL = predefinedPropertyTypeEntries.nextElement(); logger.debug("Found predefined property type at " + predefinedPropertyTypeURL + ", loading... "); try { PropertyType propertyType = CustomObjectMapper.getObjectMapper().readValue(predefinedPropertyTypeURL, PropertyType.class); // Register only if property type does not exist yet if (getPropertyType(propertyType.getMetadata().getId()) == null) { setPropertyTypeTarget(predefinedPropertyTypeURL, propertyType); persistenceService.save(propertyType); bundlePropertyTypes.add(propertyType); logger.info("Predefined property type with id {} registered", propertyType.getMetadata().getId()); } else { logger.info("The predefined property type with id {} is already registered, this property type will be skipped", propertyType.getMetadata().getId()); } } catch (IOException e) { logger.error("Error while loading properties " + predefinedPropertyTypeURL, e); } } propertyTypes = propertyTypes.with(bundlePropertyTypes); }
public PropertyTypes(List<PropertyType> allPropertyTypes) { this.allPropertyTypes = new ArrayList<>(allPropertyTypes); propertyTypesById = new HashMap<>(); propertyTypesByTags = new HashMap<>(); propertyTypesBySystemTags = new HashMap<>(); propertyTypesByTarget = new HashMap<>(); for (PropertyType propertyType : allPropertyTypes) { propertyTypesById.put(propertyType.getItemId(), propertyType); for (String propertyTypeTag : propertyType.getMetadata().getTags()) { updateListMap(propertyTypesByTags, propertyType, propertyTypeTag); } for (String propertyTypeSystemTag : propertyType.getMetadata().getSystemTags()) { updateListMap(propertyTypesBySystemTags, propertyType, propertyTypeSystemTag); } updateListMap(propertyTypesByTarget, propertyType, propertyType.getTarget()); } }
@Override public int compare(PropertyType o1, PropertyType o2) { if (o1.getRank() == o2.getRank()) { return o1.getMetadata().getName().compareTo(o1.getMetadata().getName()); } else if (o1.getRank() < o2.getRank()) { return -1; } else { return 1; } } });
propertyTypesById.put(propertyType.getMetadata().getId(), propertyType);
propertyTypesById.put(propertyType.getMetadata().getId(), propertyType);
Map<String, PropertyType> profilePropertyTypeById = new HashMap<>(); for (PropertyType propertyType : profilePropertyTypes) { profilePropertyTypeById.put(propertyType.getMetadata().getId(), propertyType);
Map<String, PropertyType> profilePropertyTypeById = new HashMap<>(); for (PropertyType propertyType : profilePropertyTypes) { profilePropertyTypeById.put(propertyType.getMetadata().getId(), propertyType);