oic.simulator.clientcontroller.view.dialogs.PostRequestDialog.java Source code

Java tutorial

Introduction

Here is the source code for oic.simulator.clientcontroller.view.dialogs.PostRequestDialog.java

Source

/*
 * Copyright 2015 Samsung Electronics All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package oic.simulator.clientcontroller.view.dialogs;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MenuAdapter;
import org.eclipse.swt.events.MenuEvent;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeColumn;
import org.eclipse.swt.widgets.TreeItem;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Vector;

import org.oic.simulator.ArrayProperty;
import org.oic.simulator.AttributeProperty;
import org.oic.simulator.AttributeValue;
import org.oic.simulator.AttributeValue.TypeInfo;
import org.oic.simulator.AttributeValue.ValueType;
import org.oic.simulator.ILogger.Level;
import org.oic.simulator.ModelProperty;
import org.oic.simulator.SimulatorResourceAttribute;
import org.oic.simulator.SimulatorResourceModel;
import org.oic.simulator.client.SimulatorRemoteResource.RequestType;

import oic.simulator.clientcontroller.Activator;
import oic.simulator.clientcontroller.remoteresource.AttributeElement;
import oic.simulator.clientcontroller.remoteresource.RemoteResource;
import oic.simulator.clientcontroller.remoteresource.ResourceRepresentation;
import oic.simulator.clientcontroller.utils.Constants;
import oic.simulator.clientcontroller.utils.Utility;
import oic.simulator.clientcontroller.view.AttributeEditingSupport;

/**
 * This dialog is used for generating a POST request.
 */
public class PostRequestDialog extends TitleAreaDialog {

    private TreeViewer attViewer;
    private Combo ifTypesCmb;

    private String ifType;

    private Map<String, String> ifTypes;

    private AttributeEditingSupport attributeEditor;

    private ResourceRepresentation updatedRepresentation;

    private final String[] attTblHeaders = { "Name", "Value", "Select" };
    private final Integer[] attTblColWidth = { 200, 200, 50 };

    public PostRequestDialog(Shell parentShell) {
        super(parentShell);
    }

    @Override
    public void create() {
        super.create();
        setTitle("Generate POST Request");
        setMessage("Dialog which takes input and generates a post request.");
    }

    @Override
    protected Control createDialogArea(Composite parent) {
        Composite compLayout = (Composite) super.createDialogArea(parent);

        Composite rootContainer = new Composite(compLayout, SWT.NONE);
        GridLayout layout = new GridLayout();
        rootContainer.setLayout(layout);
        GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
        rootContainer.setLayoutData(gd);

        Group paramsGrp = new Group(rootContainer, SWT.NONE);
        gd = new GridData();
        gd.horizontalAlignment = SWT.FILL;
        gd.grabExcessHorizontalSpace = true;
        gd.minimumHeight = 50;
        paramsGrp.setLayoutData(gd);
        layout = new GridLayout(2, false);
        layout.verticalSpacing = 10;
        layout.marginTop = 10;
        paramsGrp.setLayout(layout);

        Label ifTypeLbl = new Label(paramsGrp, SWT.NONE);
        ifTypeLbl.setText("Interface Type");

        ifTypesCmb = new Combo(paramsGrp, SWT.NULL);
        gd = new GridData();
        gd.grabExcessHorizontalSpace = true;
        gd.horizontalAlignment = SWT.FILL;
        ifTypesCmb.setLayoutData(gd);
        ifTypesCmb.addModifyListener(new ModifyListener() {
            @Override
            public void modifyText(ModifyEvent e) {
                ifType = ifTypesCmb.getText();
            }
        });

        RemoteResource resource = Activator.getDefault().getResourceManager().getCurrentResourceInSelection();

        // Set the interface types in combo box.
        Map<String, String> ifTypes = Utility.getResourceInterfaces();
        this.ifTypes = new HashMap<String, String>();
        String key;
        for (Map.Entry<String, String> entry : ifTypes.entrySet()) {
            key = entry.getValue() + " (" + entry.getKey() + ")";
            this.ifTypes.put(key, entry.getKey());
            ifTypesCmb.add(key);
        }

        // Select the default value to be shown in the interface types combo.
        Vector<String> ifTypesSupportedByResource = resource.getRemoteResourceRef().getResourceInterfaces();
        if (null != ifTypesSupportedByResource) {
            int index = -1;
            if (ifTypesSupportedByResource.contains(Constants.BASELINE_INTERFACE)
                    && ifTypes.containsKey(Constants.BASELINE_INTERFACE)) {
                // Baseline interface is given preference to be shown in the if
                // types combo.
                String value = ifTypes.get(Constants.BASELINE_INTERFACE);
                index = ifTypesCmb.indexOf(value + " (" + Constants.BASELINE_INTERFACE + ")");
                if (index != -1)
                    ifTypesCmb.select(index);
            }
            if (index == -1) {
                // Baseline interface is not selected so selecting some other
                // interface supported by the resource.
                Iterator<String> itr = ifTypesSupportedByResource.iterator();
                while (itr.hasNext() && index == -1) {
                    key = itr.next();
                    if (ifTypes.containsKey(key)) {
                        String value = ifTypes.get(key);
                        index = ifTypesCmb.indexOf(value + " (" + key + ")");
                        if (index != -1) {
                            ifTypesCmb.select(index);
                            break;
                        }
                    }
                }
                if (index == -1 && !ifTypesSupportedByResource.isEmpty()) {
                    // Resource has custom interfaces.
                    ifTypesCmb.setText(ifTypesSupportedByResource.get(0));
                }
            }
        }

        Composite container = new Composite(rootContainer, SWT.NONE);
        container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
        layout = new GridLayout(1, false);
        layout.verticalSpacing = 10;
        layout.marginTop = 10;
        container.setLayout(layout);

        createTreeViewer(container);

        // Clone the resource model for maintaining a local copy of attributes
        // for POST requests.
        SimulatorResourceModel resourceModel = null;
        try {
            AttributeValue attValue = Utility
                    .cloneAttributeValue(new AttributeValue(resource.getResourceModelRef()));
            if (null != attValue)
                resourceModel = (SimulatorResourceModel) attValue.get();
        } catch (Exception e) {
            Activator.getDefault().getLogManager().log(Level.ERROR.ordinal(), new Date(),
                    "There is an error while forming an instance of the attribute value.\n"
                            + Utility.getSimulatorErrorString(e, null));
        }

        if (null == resourceModel) {
            // Failed to clone. So taking the base copy and continuing the
            // operation.
            resourceModel = resource.getResourceModelRef();
        }

        updatedRepresentation = new ResourceRepresentation(resourceModel);

        if (resource.isConfigUploaded()) {
            try {
                // Request Type needs to be changed to PUT.
                updatedRepresentation.updateAttributeProperties(resource.getRequestModels().get(RequestType.POST),
                        resourceModel);
            } catch (Exception e) {
                Activator.getDefault().getLogManager().log(Level.ERROR.ordinal(), new Date(),
                        "There is an error while forming an instance of the attribute value.\n"
                                + Utility.getSimulatorErrorString(e, null));
            }
        }

        attViewer.setInput(updatedRepresentation);

        attViewer.expandAll();

        return compLayout;
    }

    private void createTreeViewer(Composite parent) {
        Tree addressTree = new Tree(parent,
                SWT.SINGLE | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
        addressTree.setHeaderVisible(true);

        attViewer = new TreeViewer(addressTree);

        createAttributeColumns(attViewer);

        // make lines and header visible
        Tree tree = attViewer.getTree();
        tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
        tree.setHeaderVisible(true);
        tree.setLinesVisible(true);

        attViewer.setContentProvider(new AttributeContentProvider());
        attViewer.setLabelProvider(new AttributeLabelProvider());
    }

    public void createAttributeColumns(TreeViewer viewer) {
        Tree tree = viewer.getTree();

        attributeEditor = new AttributeEditingSupport();

        TreeColumn attName = new TreeColumn(tree, SWT.NONE);
        attName.setWidth(attTblColWidth[0]);
        attName.setText(attTblHeaders[0]);

        TreeColumn attValue = new TreeColumn(tree, SWT.NONE);
        attValue.setWidth(attTblColWidth[1]);
        attValue.setText(attTblHeaders[1]);
        TreeViewerColumn attValueVwrCol = new TreeViewerColumn(attViewer, attValue);
        attValueVwrCol.setEditingSupport(attributeEditor.createAttributeValueEditor(attViewer, this));

        TreeColumn updateColumn = new TreeColumn(tree, SWT.NONE);
        updateColumn.setWidth(attTblColWidth[2]);
        updateColumn.setText(attTblHeaders[2]);
        TreeViewerColumn updateVwrCol = new TreeViewerColumn(attViewer, updateColumn);
        updateVwrCol.setEditingSupport(attributeEditor.createPostSelectionEditor(attViewer));

        addMenuItems();
    }

    private void addMenuItems() {
        if (null != attViewer) {
            final Tree resourceTreeHead = attViewer.getTree();
            if (null != resourceTreeHead) {
                // Below code creates menu entries and shows them on right
                // clicking a resource
                final Menu menu = new Menu(resourceTreeHead);
                resourceTreeHead.setMenu(menu);
                menu.addMenuListener(new MenuAdapter() {
                    @Override
                    public void menuShown(MenuEvent e) {
                        // Clear existing menu items
                        MenuItem[] items = menu.getItems();
                        for (int index = 0; index < items.length; index++) {
                            items[index].dispose();
                        }

                        IStructuredSelection selection = ((IStructuredSelection) attViewer.getSelection());
                        final AttributeElement attElement = (AttributeElement) selection.getFirstElement();
                        if (null == attElement) {
                            return;
                        }

                        // Check the type of attribute.
                        SimulatorResourceAttribute attribute = attElement.getSimulatorResourceAttribute();
                        if (null == attribute) {
                            return;
                        }

                        AttributeValue value = attribute.value();
                        if (null == value || null == value.get()) {
                            return;
                        }

                        TypeInfo type = value.typeInfo();

                        final Object parent = attElement.getParent();

                        if ((type.mType == ValueType.ARRAY && type.mBaseType == ValueType.RESOURCEMODEL
                                && type.mDepth == 1)
                                && (null == parent || parent instanceof ResourceRepresentation)) {
                            addMenuToOneDimensionalTopLevelModelAttributes(menu);
                            return;
                        }

                        if (null != parent && parent instanceof AttributeElement) {
                            Object grandParent = ((AttributeElement) parent).getParent();
                            if (null == grandParent || grandParent instanceof ResourceRepresentation) {
                                AttributeElement parentElement = (AttributeElement) parent;

                                // Check the type of attribute.
                                SimulatorResourceAttribute parentAttribute = parentElement
                                        .getSimulatorResourceAttribute();
                                if (null != parentAttribute && null != parentAttribute.value()
                                        && null != parentAttribute.value().get()) {
                                    AttributeValue parentValue = parentAttribute.value();

                                    TypeInfo parentType = parentValue.typeInfo();
                                    if (parentType.mType == ValueType.ARRAY
                                            && parentType.mBaseType == ValueType.RESOURCEMODEL
                                            && parentType.mDepth == 1) {
                                        addDeleteMenuToArrayItemsOfOneDimensionalModelAttribute(menu, attElement,
                                                parentElement);
                                        return;
                                    }
                                }
                            }
                        }
                    }
                });
            }
        }
    }

    private void addMenuToOneDimensionalTopLevelModelAttributes(Menu menu) {
        // Menu to add items to the array.
        MenuItem addItems = new MenuItem(menu, SWT.NONE);
        addItems.setText("Add Items");
        addItems.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                // Get the attributes.
                ResourceRepresentation representation;
                representation = getRepresentationForOneDimensionTopLevelAttribute();
                if (null == representation) {
                    MessageDialog.openError(Display.getDefault().getActiveShell(),
                            "Unable to perform the operation.",
                            "Failed to obtain the required data. Operation cannot be performed.");
                } else {
                    ModelArrayAddItemDialog dialog = new ModelArrayAddItemDialog(
                            Display.getDefault().getActiveShell(), PostRequestDialog.this, representation);
                    if (Window.OK == dialog.open()) {
                        // Add the new item to the local resource
                        // representation.
                        AttributeElement newElement = (AttributeElement) representation.getAttributes().values()
                                .toArray()[0];
                        SimulatorResourceAttribute newAttribute = newElement.getSimulatorResourceAttribute();
                        SimulatorResourceModel newModel = (SimulatorResourceModel) newAttribute.value().get();

                        AttributeElement attElement = getSelectedElement();
                        if (null == attElement) {
                            MessageDialog.openError(Display.getDefault().getActiveShell(),
                                    "Unable to perform the operation.",
                                    "Failed to obtain the required data. Operation cannot be performed.");
                            return;
                        }

                        SimulatorResourceAttribute attribute = attElement.getSimulatorResourceAttribute();
                        SimulatorResourceModel[] modelArray = (SimulatorResourceModel[]) attribute.value().get();
                        SimulatorResourceModel[] newModelArray = new SimulatorResourceModel[modelArray.length + 1];

                        int i;
                        for (i = 0; i < modelArray.length; i++) {
                            newModelArray[i] = modelArray[i];
                        }
                        newModelArray[i] = newModel;

                        AttributeValue newValue = new AttributeValue(newModelArray);

                        newAttribute.setValue(newValue);

                        newAttribute.setProperty(attribute.property());

                        attribute.setValue(newValue);

                        attElement.update(newAttribute);

                        attElement.setPostState(true);

                        attViewer.refresh(attElement);

                        attViewer.expandAll();
                    }
                }
            }
        });
    }

    private void addDeleteMenuToArrayItemsOfOneDimensionalModelAttribute(final Menu menu,
            final AttributeElement elementToDelete, final AttributeElement parentElement) {
        // Menu to add items to the array.
        MenuItem addItems = new MenuItem(menu, SWT.NONE);
        addItems.setText("Delete Item");
        addItems.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                MessageBox dialog = new MessageBox(menu.getShell(), SWT.ICON_QUESTION | SWT.OK | SWT.CANCEL);
                dialog.setText("Confirm action");
                dialog.setMessage("Do you want to delete this item from the array?");
                int retval = dialog.open();
                if (retval != SWT.OK) {
                    return;
                }

                // Removing the element from the attribute value.
                SimulatorResourceAttribute parentSRA = parentElement.getSimulatorResourceAttribute();
                AttributeValue value = parentSRA.value();
                SimulatorResourceModel[] modelArray = (SimulatorResourceModel[]) value.get();

                String elementIndexName = elementToDelete.getSimulatorResourceAttribute().name();
                int elementIndex = Integer.parseInt(elementIndexName.substring(elementIndexName.indexOf('[') + 1,
                        elementIndexName.indexOf(']')));

                SimulatorResourceModel[] newModelArray = new SimulatorResourceModel[modelArray.length - 1];
                int sIndex = 0, dIndex = 0;
                for (SimulatorResourceModel model : modelArray) {
                    if (sIndex != elementIndex)
                        newModelArray[dIndex++] = model;
                    sIndex++;
                }

                // Setting the new model array in the attribute.
                AttributeValue newValue = new AttributeValue(newModelArray);
                parentSRA.setValue(newValue);

                // Removing the element from the child map.
                Map<String, AttributeElement> elements = parentElement.getChildren();
                if (null == elements) {
                    MessageDialog.openError(Display.getDefault().getActiveShell(), "Operation failed.",
                            "There is an error while removing the array items.");
                    return;
                }

                List<AttributeElement> attElementList = new ArrayList<AttributeElement>();
                attElementList.addAll(elements.values());
                Collections.sort(attElementList, Utility.attributeComparator);

                // Renaming the index of the elements.
                AttributeElement[] attElementArray = attElementList.toArray(new AttributeElement[0]);
                boolean deleted = false;
                int index, newIndex;
                for (index = 0, newIndex = 0; index < attElementArray.length; index++) {
                    if (index == elementIndex) {
                        elements.remove(elementIndexName);
                        deleted = true;
                    } else {
                        if (deleted) {
                            AttributeElement element = attElementArray[index];
                            String curIndexStr = "[" + index + "]";
                            String newIndexStr = "[" + newIndex + "]";

                            element.getSimulatorResourceAttribute().setName(newIndexStr);

                            elements.remove(curIndexStr);
                            elements.put(newIndexStr, element);
                        }
                        newIndex++;
                    }
                }

                parentElement.setPostState(true);

                attViewer.refresh(parentElement);
            }
        });
    }

    private ResourceRepresentation getRepresentationForOneDimensionTopLevelAttribute() {
        ResourceRepresentation representation;

        AttributeValue value;
        ModelProperty property = null;

        AttributeElement element = getSelectedElement();
        if (null == element)
            return null;

        SimulatorResourceAttribute modelArrayAtt = element.getSimulatorResourceAttribute();
        if (null == modelArrayAtt) {
            return null;
        }

        AttributeValue attValue = modelArrayAtt.value();
        if (null == attValue) {
            return null;
        }

        TypeInfo type = attValue.typeInfo();

        if (!(type.mType == ValueType.ARRAY && type.mBaseType == ValueType.RESOURCEMODEL && type.mDepth == 1)) {
            return null;
        }

        SimulatorResourceModel[] modelValue = (SimulatorResourceModel[]) attValue.get();
        if (null == modelValue || modelValue.length < 0) {
            return null;
        }

        // Clone an instance of model value.
        try {
            value = Utility.cloneAttributeValue(new AttributeValue(modelValue[0]));
        } catch (Exception e) {
            return null;
        }

        if (null == value) {
            return null;
        }

        // Get the model property of the model value instance.
        AttributeProperty attProperty = modelArrayAtt.property();
        if (null != attProperty && attProperty instanceof ArrayProperty) {
            ArrayProperty prop = attProperty.asArray();
            if (null != prop) {
                AttributeProperty elementProperty = prop.getElementProperty();
                if (null != elementProperty && elementProperty.isModel()) {
                    property = elementProperty.asModel();
                }
            }
        }

        SimulatorResourceAttribute attribute = new SimulatorResourceAttribute(modelArrayAtt.name(), value,
                property);
        Map<String, SimulatorResourceAttribute> attributes = new HashMap<String, SimulatorResourceAttribute>();
        attributes.put(modelArrayAtt.name(), attribute);
        representation = new ResourceRepresentation(attributes, false);

        return representation;
    }

    private AttributeElement getSelectedElement() {
        IStructuredSelection selection = (IStructuredSelection) attViewer.getSelection();
        if (null == selection) {
            return null;
        }

        Object obj = selection.getFirstElement();
        if (null == obj) {
            return null;
        }

        Tree t = attViewer.getTree();
        TreeItem item = t.getSelection()[0];
        if (null == item) {
            return null;
        }

        if (!(item.getData() instanceof AttributeElement)) {
            return null;
        }

        return (AttributeElement) item.getData();
    }

    private static class AttributeContentProvider implements ITreeContentProvider {

        @Override
        public void dispose() {
        }

        @Override
        public void inputChanged(Viewer viewer, Object oldAttribute, Object newAttribute) {
        }

        @Override
        public Object[] getChildren(Object attribute) {
            if (attribute instanceof AttributeElement) {
                List<AttributeElement> attElementList = new ArrayList<AttributeElement>();
                Map<String, AttributeElement> children = ((AttributeElement) attribute).getChildren();
                if (null != children) {
                    attElementList.addAll(children.values());
                    Collections.sort(attElementList, Utility.attributeComparator);
                    return attElementList.toArray();
                }
            }

            return new Object[0];
        }

        @Override
        public Object getParent(Object attribute) {
            if (attribute instanceof AttributeElement)
                return ((AttributeElement) attribute).getParent();
            return null;
        }

        @Override
        public boolean hasChildren(Object attribute) {
            if (attribute instanceof AttributeElement)
                return ((AttributeElement) attribute).hasChildren();
            return false;
        }

        @Override
        public Object[] getElements(Object resourceModel) {
            if (resourceModel instanceof ResourceRepresentation) {
                return ((ResourceRepresentation) resourceModel).getAttributes().values().toArray();
            }

            return new Object[0];
        }
    }

    private static class AttributeLabelProvider implements ITableLabelProvider {

        @Override
        public void addListener(ILabelProviderListener arg0) {
        }

        @Override
        public void dispose() {
        }

        @Override
        public boolean isLabelProperty(Object arg0, String arg1) {
            return false;
        }

        @Override
        public void removeListener(ILabelProviderListener arg0) {

        }

        @Override
        public Image getColumnImage(Object element, int col) {
            if (col == 2) {
                if (element instanceof AttributeElement) {

                    AttributeElement attrElement = (AttributeElement) element;
                    Object parent = attrElement.getParent();
                    if (null == parent || parent instanceof ResourceRepresentation) {
                        if (attrElement.getPostState()) {
                            return Activator.getDefault().getImageRegistry().get(Constants.CHECKED);
                        } else {
                            return Activator.getDefault().getImageRegistry().get(Constants.UNCHECKED);
                        }
                    }
                }
            }

            return null;
        }

        @Override
        public String getColumnText(Object element, int column) {
            if (element instanceof AttributeElement) {
                AttributeElement attrElement = (AttributeElement) element;
                switch (column) {
                case 0: // Attribute name column
                {
                    SimulatorResourceAttribute attribute = attrElement.getSimulatorResourceAttribute();
                    return attribute.name();
                }

                case 1: // Attribute value column
                {
                    SimulatorResourceAttribute attribute = attrElement.getSimulatorResourceAttribute();

                    if (attribute.value().typeInfo().mBaseType != ValueType.RESOURCEMODEL) {
                        String value = Utility.getAttributeValueAsString(attribute.value());
                        if (null == value) {
                            value = "";
                        }
                        return value;
                    }
                    return null;
                }

                case 2: {
                    return "";
                }
                }
            }
            return null;
        }
    }

    @Override
    protected boolean isResizable() {
        return true;
    }

    @Override
    public boolean isHelpAvailable() {
        return false;
    }

    @Override
    protected Button createButton(Composite parent, int id, String label, boolean defaultButton) {
        if (id == IDialogConstants.OK_ID) {
            label = "POST";
        }
        return super.createButton(parent, id, label, defaultButton);
    }

    public ResourceRepresentation getUpdatedRepresentation() {
        return updatedRepresentation;
    }

    public String getIfType() {
        if (ifTypes.containsKey(ifType)) {
            return ifTypes.get(ifType);
        }
        return ifType;
    }
}