void update(java.util.Map<String, TemplateDescriptor> descriptors, String[] removeTemplates) throws UpdateFailedException { // // Note: _descriptors is updated by Application // // // One big set of removes // removeChildren(removeTemplates); // // One big set of updates, followed by inserts // java.util.List<TreeNodeBase> newChildren = new java.util.ArrayList<>(); java.util.List<TreeNodeBase> updatedChildren = new java.util.LinkedList<>(); for (java.util.Map.Entry<String, TemplateDescriptor> p : descriptors.entrySet()) { String name = p.getKey(); TemplateDescriptor templateDescriptor = p.getValue(); ServiceTemplate child = (ServiceTemplate) findChild(name); if (child == null) { newChildren.add(new ServiceTemplate(false, this, name, templateDescriptor)); } else { child.rebuild(templateDescriptor); updatedChildren.add(child); } } childrenChanged(updatedChildren); insertChildren(newChildren, true); }
void commit() { _editable.commit(); for (TreeNodeBase p : _children) { ServiceTemplate st = (ServiceTemplate) p; st.commit(); } }
@Override boolean isSimpleUpdate() { ServiceInstanceDescriptor descriptor = getDescriptor(); ServiceTemplate t = (ServiceTemplate) _template.getSelectedItem(); return descriptor.template.equals(t.getId()) && descriptor.parameterValues.equals(_parameters.getValues()); }
java.util.Map<String, TemplateDescriptor> getUpdates() { java.util.Map<String, TemplateDescriptor> updates = new java.util.HashMap<>(); for (TreeNodeBase p : _children) { ServiceTemplate t = (ServiceTemplate) p; if (t.getEditable().isNew() || t.getEditable().isModified()) { updates.put(t.getId(), (TemplateDescriptor) t.getDescriptor()); } } return updates; }
public static java.util.Map<String, TemplateDescriptor> copyDescriptors( java.util.Map<String, TemplateDescriptor> descriptors) { java.util.Map<String, TemplateDescriptor> copy = new java.util.HashMap<>(); for (java.util.Map.Entry<String, TemplateDescriptor> p : descriptors.entrySet()) { copy.put(p.getKey(), ServiceTemplate.copyDescriptor(p.getValue())); } return copy; }
void show(ServiceInstance service) { detectUpdates(false); _target = service; // // If it's not a template instance, it's shown using // ServiceEditor.show() // assert getDescriptor().template.length() > 0; ServiceInstanceDescriptor descriptor = (ServiceInstanceDescriptor) service.getDescriptor(); Coordinator coordinator = service.getCoordinator(); boolean isEditable = service.isEphemeral() || !coordinator.substitute(); Utils.Resolver resolver = isEditable ? null : ((TreeNode) service.getParent()).getResolver(); // // Need to make control enabled before changing it // _template.setEnabled(true); ServiceTemplates serviceTemplates = service.getRoot().getServiceTemplates(); _template.setModel(serviceTemplates.createComboBoxModel()); ServiceTemplate t = (ServiceTemplate) serviceTemplates.findChild(descriptor.template); assert t != null; _template.setSelectedItem(t); ListDataListener templateListener = new ListDataListener() { @Override public void contentsChanged(ListDataEvent e) { updated(); ServiceTemplate t = (ServiceTemplate) _template.getModel().getSelectedItem(); TemplateDescriptor td = (TemplateDescriptor) t.getDescriptor(); // // Replace parameters but keep existing values // _parameters.set( td.parameters, makeParameterValues(_parameters.getValues(), td.parameters), td.parameterDefaults, null); } @Override public void intervalAdded(ListDataEvent e) {} @Override public void intervalRemoved(ListDataEvent e) {} }; _template.getModel().addListDataListener(templateListener); _template.setEnabled(isEditable); TemplateDescriptor td = (TemplateDescriptor) t.getDescriptor(); _parameters.set(td.parameters, descriptor.parameterValues, td.parameterDefaults, resolver); _propertySets.setList( java.util.Arrays.asList(descriptor.propertySet.references), getDetailResolver()); _propertySets.setEditable(isEditable); _properties.setProperties( descriptor.propertySet.properties, null, null, getDetailResolver(), isEditable); _applyButton.setEnabled(service.isEphemeral()); _discardButton.setEnabled(service.isEphemeral()); detectUpdates(true); if (service.isEphemeral()) { updated(); } }