com.amalto.workbench.editors.NewItemHandler.java Source code

Java tutorial

Introduction

Here is the source code for com.amalto.workbench.editors.NewItemHandler.java

Source

// ============================================================================
//
// Copyright (C) 2006-2017 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package com.amalto.workbench.editors;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;

import com.amalto.workbench.dialogs.DOMViewDialog;
import com.amalto.workbench.dialogs.datacontainer.DataContainerDOMViewDialog;
import com.amalto.workbench.i18n.Messages;
import com.amalto.workbench.utils.Util;
import com.amalto.workbench.webservices.TMDMService;
import com.amalto.workbench.webservices.WSDataClusterPK;
import com.amalto.workbench.webservices.WSDataModelPK;
import com.amalto.workbench.webservices.WSDataModelPKArray;
import com.amalto.workbench.webservices.WSPutItem;
import com.amalto.workbench.webservices.WSPutItemWithReport;
import com.amalto.workbench.webservices.WSRegexDataModelPKs;

/**
 * created by liusongbo on 2014-2-19
 */
public class NewItemHandler {

    private static final Log log = LogFactory.getLog(NewItemHandler.class);

    private boolean created = false;

    public static NewItemHandler getNewInstance() {
        return new NewItemHandler();
    }

    public boolean createItemRecord(final TMDMService service, final Shell ashell,
            final WSDataClusterPK wsDataClusterPK, boolean isMaster) {
        if (service == null || wsDataClusterPK == null) {
            throw new IllegalArgumentException();
        }

        final Shell shell = ashell != null ? ashell : Display.getCurrent().getActiveShell();

        try {
            String xml = "<NewItem><NewElement></NewElement></NewItem>"; //$NON-NLS-1$

            WSDataModelPKArray dataModelPKs = service.getDataModelPKs(new WSRegexDataModelPKs("*")); //$NON-NLS-1$
            List<WSDataModelPK> dmPKs = dataModelPKs.getWsDataModelPKs();
            List<String> dataModels = new ArrayList<String>();
            if (dmPKs != null) {
                for (WSDataModelPK pk : dmPKs) {
                    if (!"XMLSCHEMA---".equals(pk.getPk())) { //$NON-NLS-1$
                        dataModels.add(pk.getPk());
                    }
                }
            }
            final DataContainerDOMViewDialog d = new DataContainerDOMViewDialog(shell, service, Util.parse(xml),
                    dataModels, DOMViewDialog.SOURCE_VIEWER, null, isMaster);
            d.addListener(new Listener() {

                public void handleEvent(Event event) {
                    if (event.button == DOMViewDialog.BUTTON_SAVE) {
                        // attempt to save
                        try {
                            WSPutItem putItem = new WSPutItem(false, wsDataClusterPK,
                                    "".equals(d.getDataModelName()) ? null //$NON-NLS-1$
                                            : new WSDataModelPK(d.getDataModelName()),
                                    d.getXML());
                            WSPutItemWithReport item = new WSPutItemWithReport(d.isBeforeVerification(),
                                    "genericUI", putItem);//$NON-NLS-1$
                            if (d.isTriggerProcess()) {
                                service.putItemWithReport(item);
                            } else {
                                service.putItem(putItem);
                            }
                            created = true;

                        } catch (Exception e) {
                            log.error(e.getMessage(), e);
                            MessageDialog.openError(shell, Messages.DataClusterBrowserMainPage_100,
                                    Messages.bind(Messages.DataClusterBrowserMainPage_101,
                                            Util.formatErrorMessage(e.getLocalizedMessage())));
                            return;
                        }
                    }
                    d.close();
                }
            });

            d.setBlockOnOpen(true);
            d.open();

        } catch (Exception e) {
            log.error(e.getMessage(), e);
            if (!Util.handleConnectionException(shell, e, null)) {
                MessageDialog.openError(shell, Messages._Error,
                        Messages.bind(Messages.DataClusterBrowserMainPage_103, e.getLocalizedMessage()));
            }
        }

        return created;
    }
}