private boolean isPropertyDefined(PropertyDefinition propDef, AbstractPropertyMap parentPropMap) { Property prop = parentPropMap.get(propDef.getName()); if (prop == null) { return false; } else { return (!(prop instanceof PropertySimple) || ((PropertySimple) prop).getStringValue() != null); } }
private static void unmaskProperty(String propertyName, AbstractPropertyMap parentPropertyMap, AbstractPropertyMap unmaskedParentPropertyMap) { Property property = parentPropertyMap.get(propertyName); if (property == null) {
private static void maskProperty(PropertyDefinition propertyDefinition, AbstractPropertyMap parentPropertyMap) { if (parentPropertyMap.get(propertyDefinition.getName()) == null) {
PropertySimple basePropertySimple = (PropertySimple) base.get(changesPropertyName); if (basePropertySimple == null) { basePropertySimple = new PropertySimple(changesPropertyName, changesPropertySimple.getStringValue()); PropertyMap basePropertyMap = (PropertyMap) base.get(changesPropertyName); if (basePropertyMap == null) { basePropertyMap = new PropertyMap(changesPropertyName);
private Boolean isOverride(PropertyDefinition propertyDefinition) { if (!(propertyDefinition instanceof PropertyDefinitionSimple)) { return false; } Property property = this.propertyMap.get(propertyDefinition.getName()); if (property == null) { return false; } Boolean override = ((PropertySimple) property).getOverride(); return ((override != null) && override); }
private static void adaptPropertyMap(AbstractPropertyMap source, AbstractPropertyMap target, PropertyDefinitionMap definition, Object parent, boolean adaptReadonlyProperties) { if ((adaptReadonlyProperties || !definition.isReadOnly()) && target == null) { target = new PropertyMap(definition.getName()); add(parent, (PropertyMap) target); } for (Map.Entry<String, PropertyDefinition> e : definition.getPropertyDefinitions().entrySet()) { String name = e.getKey(); PropertyDefinition def = e.getValue(); Property sourceChild = source.get(name); // only bother if we have something to adapt from if (sourceChild != null) { Property targetChild = target.get(name); adaptProperty(sourceChild, targetChild, def, target, adaptReadonlyProperties); } } }
private static void calculateGroupOpenPropertyMap(List<AbstractPropertyMap> sourceParentPropertyMaps, AbstractPropertyMap targetParentPropertyMap) { Map<String, Map<String, Integer>> memberNameValueFrequenciesMap = createMemberNameValueFrequenciesMap(sourceParentPropertyMaps); for (String memberName : memberNameValueFrequenciesMap.keySet()) { // Add each unique member to the target map, so the renderer will be able to display it on the main // config page. PropertySimple member = new PropertySimple(memberName, null); targetParentPropertyMap.put(member); // Also add it to each of the source config maps that don't already contain it, so that they can be // rendered as unset on the propSet page. for (AbstractPropertyMap map : sourceParentPropertyMaps) { if (map.get(memberName) == null) map.put(new PropertySimple(memberName, null)); } Map<String, Integer> valueFrequencies = memberNameValueFrequenciesMap.get(memberName); if (valueFrequencies.size() == 1 && valueFrequencies.values().iterator().next() == sourceParentPropertyMaps.size()) { // Set override to true so the renderers will know the prop is homogenous. member.setOverride(true); // And set the value, so it can be displayed on the main config page. member.setStringValue(valueFrequencies.keySet().iterator().next()); } } }
@NotNull private HtmlSelectBooleanCheckbox createInputOverrideForSimpleProperty( PropertyDefinitionSimple propertyDefinitionSimple) { HtmlSelectBooleanCheckbox input = FacesComponentUtility.createComponent(HtmlSelectBooleanCheckbox.class, this.config); // Find the actual property corresponding to this property def, and use that to create the component id. Property property = this.propertyMap.get(propertyDefinitionSimple.getName()); if (property != null) { // add suffix to prevent collision with value input identifier for property String propertyId = PropertyIdGeneratorUtility.getIdentifier(property, getListIndex(), "override"); input.setId(propertyId); Boolean shouldOverride = ((PropertySimple) property).getOverride(); FacesComponentUtility.setOverride(input, (shouldOverride != null && shouldOverride)); } setInputOverrideExpression(input, propertyDefinitionSimple.getName()); return input; }
private void addMapProperty(UIComponent parent, PropertyDefinitionMap propertyDefinitionMap, String rowStyleClass) { if (!this.topLevel) { throw new IllegalStateException( "Maps are only supported at the top level of a Configuration or within a top-level List."); } validateMapDefinition(propertyDefinitionMap); FacesComponentUtility.addVerbatimText(parent, "\n\n<tr class='" + rowStyleClass + "'>"); FacesComponentUtility.addVerbatimText(parent, "<td class='" + LIST_PROPERTY_DISPLAY_NAME_CELL_STYLE_CLASS + "'>"); PropertyRenderingUtility.addPropertyDisplayName(parent, propertyDefinitionMap, this.propertyMap .get(propertyDefinitionMap.getName()), this.config.isReadOnly()); FacesComponentUtility.addVerbatimText(parent, "</td>"); FacesComponentUtility.addVerbatimText(parent, "<td class='" + LIST_PROPERTY_ENABLED_CELL_STYLE_CLASS + "' />"); FacesComponentUtility.addVerbatimText(parent, "<td class='" + LIST_PROPERTY_VALUE_CELL_STYLE_CLASS + "' />"); FacesComponentUtility .addVerbatimText(parent, "<td class='" + LIST_PROPERTY_DESCRIPTION_CELL_STYLE_CLASS + "'>"); PropertyRenderingUtility.addPropertyDescription(parent, propertyDefinitionMap); FacesComponentUtility.addVerbatimText(parent, "</td>"); FacesComponentUtility.addVerbatimText(parent, "</tr>"); addMapMemberProperties(parent, propertyDefinitionMap.getName(), rowStyleClass); }