// ============================================================================ // // Copyright (C) 2006-2012 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 org.talend.designer.core.ui.wizards; import org.eclipse.core.runtime.IPath; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.wizard.Wizard; import org.eclipse.ui.part.EditorPart; import org.talend.commons.ui.runtime.exception.ExceptionHandler; import org.talend.commons.ui.runtime.image.ECoreImage; import org.talend.commons.ui.runtime.image.ImageProvider; import org.talend.core.CorePlugin; import org.talend.core.model.properties.ByteArray; import org.talend.core.model.properties.PropertiesFactory; import org.talend.core.model.properties.Property; import org.talend.core.model.properties.SQLPatternItem; import org.talend.designer.core.DesignerPlugin; import org.talend.repository.editor.RepositoryEditorInput; import org.talend.repository.model.IProxyRepositoryFactory; import org.talend.repository.model.IRepositoryService; import org.talend.repository.model.RepositoryNode; import org.talend.repository.ui.wizards.sqlpattern.NewSqlpatternWizardPage; /** * Wizard for the creation of a new project. <br/> * * $Id: SaveAsSQLPatternWizard.java 46332 2010-08-05 06:48:56Z cli $ * */ public class SaveAsSQLPatternWizard extends Wizard { /** Main page. */ private NewSqlpatternWizardPage mainPage; /** Created project. */ private SQLPatternItem sqlpatternItem; private Property property; private IPath path; private IProxyRepositoryFactory repositoryFactory; private RepositoryEditorInput repositoryEditorInput; private SQLPatternItem oldSqlpatternItem; private Property oldProperty; private boolean isUpdate; public SaveAsSQLPatternWizard(EditorPart editorPart) { this.repositoryEditorInput = (RepositoryEditorInput) editorPart.getEditorInput(); RepositoryNode repositoryNode = repositoryEditorInput.getRepositoryNode(); // see: RepositoryEditorInput.setRepositoryNode(IRepositoryNode repositoryNode) if (repositoryNode == null) { repositoryNode = (RepositoryNode) CorePlugin.getDefault().getRepositoryService().getRepositoryNode( repositoryEditorInput.getItem().getProperty().getId(), false); } IRepositoryService service = DesignerPlugin.getDefault().getRepositoryService(); this.path = service.getRepositoryPath((RepositoryNode) repositoryNode); oldSqlpatternItem = (SQLPatternItem) repositoryEditorInput.getItem(); oldProperty = oldSqlpatternItem.getProperty(); this.property = PropertiesFactory.eINSTANCE.createProperty(); assginVlaues(this.property, oldProperty); sqlpatternItem = PropertiesFactory.eINSTANCE.createSQLPatternItem(); sqlpatternItem.setProperty(property); // set ELT Name sqlpatternItem.setEltName(((SQLPatternItem) repositoryEditorInput.getItem()).getEltName()); repositoryFactory = service.getProxyRepositoryFactory(); setDefaultPageImageDescriptor(ImageProvider.getImageDesc(ECoreImage.METADATA_SQLPATTERN_WIZ)); } public void addPages() { mainPage = new NewSqlpatternWizardPage(property, path); mainPage.initializeSaveAs(oldProperty.getLabel(), oldProperty.getVersion(), true); // overwrite it. mainPage.setTitle("Save As"); mainPage.setDescription("Save as another new SQLTemplate."); addPage(mainPage); setWindowTitle("Save As"); } public boolean performFinish() { boolean ok = false; try { isUpdate = isUpdate(); if (isUpdate) { assginVlaues(oldProperty, property); repositoryFactory.save(oldSqlpatternItem); // assign value sqlpatternItem = oldSqlpatternItem; } else { property.setId(repositoryFactory.getNextId()); // copy the byte[] content, the new routineItem get the old saved content, it is not the newest. SQLPatternItem oldItem = (SQLPatternItem) repositoryEditorInput.getItem(); ByteArray byteArray = PropertiesFactory.eINSTANCE.createByteArray(); byteArray.setInnerContent(oldItem.getContent().getInnerContent()); sqlpatternItem.setContent(byteArray); // don't need to add depended routines. repositoryFactory.create(sqlpatternItem, mainPage.getDestinationPath()); } ok = true; } catch (Exception e) { MessageDialog.openError(getShell(), "Error", "SQLTemplate could not be saved" + " : " + e.getMessage()); ExceptionHandler.process(e); } return ok; } public SQLPatternItem getSQLPatternItem() { return this.sqlpatternItem; } // left = right private void assginVlaues(Property leftProperty, Property rightProperty) { // 6 fields, don't contains the "locker" and "path". and author , they are the same. leftProperty.setLabel(rightProperty.getLabel()); leftProperty.setPurpose(rightProperty.getPurpose()); leftProperty.setDescription(rightProperty.getDescription()); // same author as old one. leftProperty.setAuthor(rightProperty.getAuthor()); leftProperty.setVersion(rightProperty.getVersion()); leftProperty.setStatusCode(rightProperty.getStatusCode()); } // if name is different, it will create a new job, if name is the same, means to update the job(version or // description...) private boolean isUpdate() { if (oldProperty.getLabel().trim().equalsIgnoreCase(property.getLabel().trim())) { return true; } else { return false; } } }