// ============================================================================ // // Copyright (C) 2006-2016 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; } }