// ============================================================================ // // 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.export; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Hashtable; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.dom4j.Document; import org.dom4j.DocumentException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.forms.widgets.FormToolkit; import org.exolab.castor.xml.Unmarshaller; import org.talend.mdm.bulkload.client.BulkloadClient; import org.talend.mdm.bulkload.client.BulkloadOptions; import org.talend.mdm.bulkload.client.InputStreamMerger; import org.talend.mdm.commmon.util.core.ICoreConstants; import org.talend.mdm.commmon.util.workbench.ZipToFile; import com.amalto.workbench.dialogs.ImportExchangeOptionsDialog; import com.amalto.workbench.editors.XObjectBrowser; import com.amalto.workbench.editors.XObjectEditor; import com.amalto.workbench.i18n.Messages; import com.amalto.workbench.models.TreeObject; import com.amalto.workbench.models.TreeParent; import com.amalto.workbench.providers.XObjectBrowserInput; import com.amalto.workbench.providers.XObjectEditorInput; import com.amalto.workbench.utils.EXtentisObjects; import com.amalto.workbench.utils.LocalTreeObjectRepository; import com.amalto.workbench.utils.Util; import com.amalto.workbench.utils.XmlUtil; import com.amalto.workbench.webservices.TMDMService; import com.amalto.workbench.webservices.WSAutoIncrement; import com.amalto.workbench.webservices.WSItem; import com.amalto.workbench.webservices.WSTransformerV2; import com.amalto.workbench.widgets.FileSelectWidget; import com.amalto.workbench.widgets.RepositoryCheckTreeViewer; import com.amalto.workbench.widgets.WidgetFactory; public class ImportItemsWizard extends Wizard { private static Log log = LogFactory.getLog(ImportItemsWizard.class); protected IStructuredSelection sel; protected RepositoryCheckTreeViewer treeViewer; protected String importFolder; protected StringBuffer zipFileRepository = new StringBuffer();; protected FileSelectWidget folder; private Button zipBtn; protected Button folderBtn; protected FileSelectWidget zip; // private List<TreeObject> objList =new ArrayList<TreeObject>(); protected Hashtable<String, String[]> dataClusterContent = new Hashtable<String, String[]>(); protected TreeParent serverRoot; private TMDMService service = null; protected Button btnOverwrite = null; protected boolean isOverride = false; public ImportItemsWizard(IStructuredSelection sel) { setNeedsProgressMonitor(true); this.sel = sel; } protected void refreshViewJob() { // new UIJob(Messages.ImportItemsWizard_0) { // // @Override // public IStatus runInUIThread(IProgressMonitor monitor) { // new ServerRefreshAction(view, serverRoot).run(); // return Status.OK_STATUS; // } // // }.schedule(); } protected Object[] getCheckedObjects() { return treeViewer.getCheckNodes(); } @Override public boolean performFinish() { closeOpenEditors(); final String zipFilePath = getZipFilePath(); final boolean selectZip = zipBtn.getSelection(); if (selectZip) { try { ZipToFile.unZipFile(zipFilePath, importFolder); } catch (Exception e) { log.error(e.getMessage(), e); } } if (folderBtn.getSelection()) { importFolder = folder.getText().getText(); } final Object[] objs = getCheckedObjects(); IRunnableWithProgress iRunnableWithProgress = new IRunnableWithProgress() { public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { doImport(objs, monitor); // run initMDM to call backend migration task if (service != null) { service.initMDM(null); } } catch (Exception e) { log.error(e.getMessage(), e); } finally { refreshViewJob(); // modified by honghb ,fix bug 21552 if (selectZip && zipFilePath != null && new File(importFolder).exists()) { ZipToFile.deleteDirectory(new File(importFolder)); } } } }; try { new ProgressMonitorDialog(getShell()).run(true, true, iRunnableWithProgress); } catch (Exception e) { log.error(e.getMessage(), e); } return true; } private String getZipFilePath() { return zip.getText().getText(); } private void closeOpenEditors() { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); int length = page.getEditors().length; String tabEndpointAddress = Messages.ImportItemsWizard_3; String unserName = null; int j = 0; for (int i = 0; i < length; i++) { IEditorPart part = page.getEditors()[i - j]; if (part instanceof XObjectBrowser) { TreeObject obj = (TreeObject) ((XObjectBrowserInput) part.getEditorInput()).getModel(); if (obj != null) { tabEndpointAddress = obj.getEndpointAddress(); unserName = obj.getUsername(); } } else if (part instanceof XObjectEditor) { TreeObject obj = (TreeObject) ((XObjectEditorInput) part.getEditorInput()).getModel(); if (obj != null) { tabEndpointAddress = obj.getEndpointAddress(); unserName = obj.getUsername(); } } if (serverRoot != null) { if (serverRoot.getEndpointAddress().equals(tabEndpointAddress) && serverRoot.getUsername().equals(unserName)) { if (part.isDirty() && isSaveModifiedEditor(part.getTitle())) { part.doSave(new NullProgressMonitor()); } page.closeEditor(part, false); j++; } } } } private boolean isSaveModifiedEditor(String editorName) { final MessageDialog dialog = new MessageDialog(getShell(), Messages.ImportItemsWizard_4, null, Messages.ImportItemsWizard_5 + editorName + Messages.ImportItemsWizard_6, MessageDialog.QUESTION, new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL }, 0); dialog.open(); if (dialog.getReturnCode() == 0) { return true; } return false; } @Override public boolean performCancel() { LocalTreeObjectRepository.getInstance().cancelMergeImportCategory(serverRoot); return super.performCancel(); } private void checkUpExchangeImport(boolean check) { if (check) { if (!zipFileRepository.toString().equals("")) {//$NON-NLS-1$ int pos = zipFileRepository.toString().lastIndexOf(File.separator); importFolder = zipFileRepository.toString().substring(0, pos); } } else { if (zipFileRepository.length() > 0) { zipFileRepository.delete(0, zipFileRepository.length()); } } } protected void parse() { try { boolean importFromArchieve = zipBtn.getSelection(); if (importFromArchieve) { importFolder = System.getProperty("java.io.tmpdir") + File.separator + "temp" + File.separator + "subfolder"//$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ + System.currentTimeMillis(); } if (folderBtn.getSelection()) { importFolder = folder.getText().getText(); } getContainer().run(true, false, new ImportProcess(importFromArchieve, getZipFilePath())); } catch (InvocationTargetException e) { log.error(e.getMessage(), e); } catch (InterruptedException e) { log.debug(e.getMessage(), e); } } class ImportProcess implements IRunnableWithProgress { private final boolean importFromArchieve; private final String zipFilePath; public ImportProcess(boolean importFromArchieve, String zipFilePath) { this.importFromArchieve = importFromArchieve; this.zipFilePath = zipFilePath; } public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { parses(importFromArchieve, zipFilePath, monitor); } }; protected void parses(boolean importFromArchieve, String zipFilePath, IProgressMonitor monitor) { // init var for progressMonitor int total = 500, zipCount = 200, readCount = 100; int step = 1, interval = 1; // monitor.beginTask(Messages.ImportItemsWizard_7, total); if (importFromArchieve) { checkUpExchangeImport(true); try { Util.unZipFile(zipFilePath, importFolder, zipCount, monitor); } catch (Exception e) { log.error(e.getMessage(), e); } } monitor.worked(zipCount); monitor.setTaskName(Messages.ImportItemsWizard_8); InputStreamReader reader = null; try { reader = new InputStreamReader(new FileInputStream(importFolder + "/exportitems.xml"), "UTF-8");//$NON-NLS-1$//$NON-NLS-2$ final Exports exports = (Exports) Unmarshaller.unmarshal(Exports.class, reader); String[] orgSchemas = exports.getSchemas(); int idx = 0; if (orgSchemas != null) { for (String orgSchema : orgSchemas) { String orgSchemaCpy = new String(orgSchema); for (Map.Entry<String, String> pair : ICoreConstants.rolesConvert.oldRoleToNewRoleMap.entrySet()) { orgSchemaCpy = orgSchemaCpy.replaceAll(pair.getKey().toString(), pair.getValue().toString()); } if (!orgSchemaCpy.equals(orgSchema)) { orgSchemas[idx] = orgSchemaCpy; } idx++; } } try { LocalTreeObjectRepository.getInstance().makeUpDocWithImportCategory(orgSchemas, serverRoot); } catch (Exception e) { } // import autoincrement if (exports.getAutoIncrement() != null) { try { service.getAutoIncrement(new WSAutoIncrement(exports.getAutoIncrement())); } catch (Exception e) { } } // new server root final TreeParent reserverRoot = new TreeParent(serverRoot.getDisplayName(), null, TreeObject._SERVER_, serverRoot.getWsKey(), serverRoot.getWsObject()); reserverRoot.setUser(serverRoot.getUser()); // serverRoot=reserverRoot; TreeParent clusters = new TreeParent(EXtentisObjects.DataCluster.getDisplayName(), reserverRoot, TreeObject.DATA_CLUSTER, null, null); TreeParent models = new TreeParent(EXtentisObjects.DataMODEL.getDisplayName(), reserverRoot, TreeObject.DATA_MODEL, null, null); TreeParent menus = new TreeParent(EXtentisObjects.Menu.getDisplayName(), reserverRoot, TreeObject.MENU, null, null); TreeParent roles = new TreeParent(EXtentisObjects.Role.getDisplayName(), reserverRoot, TreeObject.ROLE, null, null); TreeParent eventManager = new TreeParent(EXtentisObjects.EventManagement.getDisplayName(), reserverRoot, TreeObject.EVENT_MANAGEMENT, null, null); TreeParent routingrules = new TreeParent(EXtentisObjects.RoutingRule.getDisplayName(), reserverRoot, TreeObject.ROUTING_RULE, null, null); TreeParent storeprocedures = new TreeParent(EXtentisObjects.StoredProcedure.getDisplayName(), reserverRoot, TreeObject.STORED_PROCEDURE, null, null); TreeParent transformers = new TreeParent(EXtentisObjects.Transformer.getDisplayName(), reserverRoot, TreeObject.TRANSFORMER, null, null); TreeParent pictures = new TreeParent(EXtentisObjects.PICTURESRESOURCE.getDisplayName(), reserverRoot, TreeObject.PICTURES_RESOURCE, null, null); // add by ymli TreeParent workflow = new TreeParent(EXtentisObjects.Workflow.getDisplayName(), reserverRoot, TreeObject.WORKFLOW, null, null); TreeParent views = new TreeParent(EXtentisObjects.View.getDisplayName(), reserverRoot, TreeObject.VIEW, null, null); reserverRoot.addChild(clusters); reserverRoot.addChild(models); reserverRoot.addChild(menus); reserverRoot.addChild(roles); reserverRoot.addChild(storeprocedures); eventManager.addChild(transformers); eventManager.addChild(routingrules); reserverRoot.addChild(eventManager); reserverRoot.addChild(pictures); reserverRoot.addChild(workflow); reserverRoot.addChild(views); monitor.worked(readCount); // caculate step and interval float val = (total - zipCount - readCount) / exports.getItems().length; if (val > 0) { interval = 1; step = Math.round(val); } else { step = 1; interval = Math.round(exports.getItems().length / (total - zipCount - readCount) + 0.5f); } // System.out.println("count:" + exports.getItems().length + "\tinterval:" + interval + "\tstep:" + step); monitor.setTaskName(Messages.ImportItemsWizard_9); // int tmp = 1; for (TreeObject obj : exports.getItems()) { obj.setServerRoot(reserverRoot); switch (obj.getType()) { case TreeObject.DATA_CLUSTER: clusters.addChild(obj); break; case TreeObject.DATA_MODEL: models.addChild(obj); break; case TreeObject.MENU: menus.addChild(obj); break; case TreeObject.ROLE: roles.addChild(obj); break; case TreeObject.ROUTING_RULE: routingrules.addChild(obj); break; case TreeObject.STORED_PROCEDURE: storeprocedures.addChild(obj); break; case TreeObject.TRANSFORMER: transformers.addChild(obj); break; case TreeObject.PICTURES_RESOURCE: pictures.addChild(obj); break; case TreeObject.WORKFLOW_PROCESS: workflow.addChild(obj); break; case TreeObject.VIEW: views.addChild(obj); break; default: if (obj.getItems() != null && obj.getItems().length > 0) { for (int i = 0; i < obj.getItems().length; i++) { if (obj.getItems()[i].split(Messages.ImportItemsWizard_10)[1] != null) { dataClusterContent.put(obj.getItems()[i].split(Messages.ImportItemsWizard_11)[1], obj.getItems()); } } } } // update monitor if (interval == 1) { monitor.worked(step); } else { if (tmp >= interval) { monitor.worked(step); tmp = 1; } else { tmp++; } } } Display.getDefault().syncExec(new Runnable() { public void run() { treeViewer.setRoot(reserverRoot); treeViewer.getViewer().setInput(null); treeViewer.setCheckItems(Arrays.asList(exports.getItems())); GridData gd = (GridData) treeViewer.getViewer().getControl().getLayoutData(); gd.heightHint = 300; treeViewer.getViewer().getControl().getParent().layout(true); treeViewer.getViewer().getControl().getShell().layout(true); try { Object[] checkNodes = treeViewer.getCheckNodes(); if (checkNodes != null) { LocalTreeObjectRepository.getInstance().setOriginalXobjectsToImport((TreeObject[]) checkNodes); } } catch (Exception e) { } } }); } catch (Exception e) { log.error(e.getMessage(), e); } finally { try { if (reader != null) { reader.close(); } } catch (Exception e) { } monitor.done(); } } private int isOveride(String name, String obTypeName) { final MessageDialog dialog = new MessageDialog( getShell(), Messages.ImportItemsWizard_12, null, Messages.ImportItemsWizard_13 + obTypeName + Messages.ImportItemsWizard_14 + name + Messages.ImportItemsWizard_15, MessageDialog.QUESTION, new String[] { IDialogConstants.YES_LABEL, IDialogConstants.YES_TO_ALL_LABEL, IDialogConstants.NO_LABEL, IDialogConstants.CANCEL_LABEL }, 0); dialog.open(); int result = dialog.getReturnCode(); if (result == 0) { return IDialogConstants.YES_ID; } if (result == 1) { return IDialogConstants.YES_TO_ALL_ID; } if (result == 2) { return IDialogConstants.NO_ID; } return IDialogConstants.CANCEL_ID; } public void doImport(Object[] selectedObjs, IProgressMonitor monitor) { // empty } private boolean isV2Transformer(String inputPath) throws DocumentException, FileNotFoundException { boolean isV2Transformer = false; Document document = XmlUtil.parse(new FileInputStream(inputPath)); if (document != null && document.getRootElement() != null) { String rootElementName = document.getRootElement().getName(); if (rootElementName.equals(WSTransformerV2.class.getSimpleName())) { isV2Transformer = true; } } return isV2Transformer; } protected void importClusterContents(TreeObject item, TMDMService port, HashMap<String, String> picturePathMap) throws Exception { if (dataClusterContent.containsKey(item.getDisplayName())) { Reader reader = null; String[] paths = dataClusterContent.get(item.getDisplayName()); Map<String, List<String>> conceptMap = new HashMap<String, List<String>>(); for (String path : paths) { try { reader = new InputStreamReader(new FileInputStream(importFolder + "/" + path), "UTF-8");//$NON-NLS-1$//$NON-NLS-2$ WSItem wsItem = (WSItem) Unmarshaller.unmarshal(WSItem.class, reader); String key = wsItem.getWsDataClusterPK().getPk() + "##" + wsItem.getConceptName() + "##"//$NON-NLS-1$//$NON-NLS-2$ + wsItem.getDataModelName(); List<String> list = null; list = conceptMap.get(key); if (list == null) { list = new ArrayList<String>(); conceptMap.put(key, list); } // ymli; fix 0016875: set the right path of picture when import pictures String content = wsItem.getContent(); boolean isUpdate = false; for (String picturekey : picturePathMap.keySet()) { String fileName = picturekey.substring(picturekey.indexOf("-") + 1);//$NON-NLS-1$ if (content.contains(fileName)) { String targetPicturePath = picturePathMap.get(picturekey); content = updatePicturePath(content, picturekey, targetPicturePath); isUpdate = true; list.add(content); conceptMap.put(key, list); } } if (!isUpdate) { list.add(content); } } catch (Exception e1) { log.error(e1.getMessage(), e1); } finally { try { if (reader != null) { reader.close(); } } catch (Exception e) { } } } // store the items to db using bulkloadclient String url = item.getEndpointIpAddress() + "/datamanager/loadServlet";//$NON-NLS-1$ for (Entry<String, List<String>> entry : conceptMap.entrySet()) { String[] keys = entry.getKey().split("##");//$NON-NLS-1$ String cluster = keys[0]; String concept = keys[1]; String datamodel = keys[2]; BulkloadClient bulkloadClient = new BulkloadClient(url, item.getUsername(), item.getPassword(), null, cluster, concept, datamodel); bulkloadClient.setOptions(new BulkloadOptions(false, false, 500)); StringBuffer sb = new StringBuffer(); for (String xml : entry.getValue()) { sb.append(xml).append("\n"); //$NON-NLS-1$ } try { InputStreamMerger manager = bulkloadClient.load(); InputStream bin = new ByteArrayInputStream(sb.toString().getBytes(Messages.ImportItemsWizard_29)); manager.push(bin); // bulkloadClient.load(sb.toString()); manager.close(); } catch (Exception e) { // MessageDialog.openWarning(null, "Warning", "Importing Entity: "+ concept+ // " in Data Container: "+cluster + " Error --> "+e.getLocalizedMessage()); throw new Exception(Messages.ImportItemsWizard_30 + concept + Messages.ImportItemsWizard_31 + cluster + Messages.ImportItemsWizard_32 + e.getLocalizedMessage()); } } } } @Override public void addPages() { addPage(new SelectItemsPage()); } protected void createOverwriteBtn(Composite composite) { } class PageListener implements Listener { SelectItemsPage page; PageListener(SelectItemsPage page) { this.page = page; } public void handleEvent(Event event) { page.checkCompleted(); parse(); } }; public void checkCompleted() { } class SelectItemsPage extends WizardPage { protected SelectItemsPage() { super(Messages.ImportItemsWizard_33); setTitle(Messages.ImportItemsWizard_34); // Page isn't complete until an e-mail address has been added setPageComplete(false); } public void checkCompleted() { if (folderBtn.getSelection() && folder.getText().getText().length() > 0 && new File(folder.getText().getText()).exists()) { setPageComplete(true); } if (zipBtn.getSelection() && zip.getText().getText().length() > 0 && new File(zip.getText().getText()).getParentFile().exists()) { setPageComplete(true); } } public void createControl(Composite parent) { Composite composite = new Composite(parent, SWT.BORDER); composite.setLayout(new GridLayout(4, false)); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); setControl(composite); folderBtn = new Button(composite, SWT.RADIO); folderBtn.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); folderBtn.setText(Messages.ImportItemsWizard_35); folder = new FileSelectWidget(composite, "", new String[] { "*.*" }, "", false);//$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ // folder.getCmp().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, // false, 1, 1)); folderBtn.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { } public void widgetSelected(SelectionEvent e) { folder.setEnabled(folderBtn.getSelection()); checkCompleted(); } }); Composite padding = new Composite(composite, SWT.NONE); padding.setLayout(new GridLayout(1, false)); padding.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 1, 1)); zipBtn = new Button(composite, SWT.RADIO); zipBtn.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); zipBtn.setText(Messages.ImportItemsWizard_36); zip = new FileSelectWidget(composite, "", new String[] { "*.zip", "*.tar" }, "", true);//$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ // zip.getCmp().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, // false, 1, 1)); ((GridData) zip.getText().getLayoutData()).widthHint = 200; zip.getText().addListener(SWT.Modify, new PageListener(this)); final Button exchangeBtn = new Button(composite, SWT.PUSH); exchangeBtn.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, true, false, 1, 1)); exchangeBtn.setText(Messages.ImportItemsWizard_37); exchangeBtn.setEnabled(false); exchangeBtn.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { } public void widgetSelected(SelectionEvent e) { exchangeImport(); } }); zipBtn.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { } public void widgetSelected(SelectionEvent e) { zip.setEnabled(zipBtn.getSelection()); exchangeBtn.setEnabled(zipBtn.getSelection()); checkUpExchangeImport(false); checkCompleted(); } }); // zip.getButton().addListener(SWT.Selection, new PageListener(this)); folder.getText().addListener(SWT.Modify, new PageListener(this)); // folder.getButton().addListener(SWT.Selection, new PageListener(this)); // create viewer createViewer(); Composite itemcom = initItemTreeViewer(composite); itemcom.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 5)); folder.setEnabled(folderBtn.getSelection()); zip.setEnabled(zipBtn.getSelection()); createOverwriteBtn(composite); GridDataFactory.swtDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).hint(920, 600).applyTo(composite); } protected void refreshTree() { } } protected void exchangeImport() { ImportExchangeOptionsDialog dlg = getExchangeOptionsDialog(); dlg.setBlockOnOpen(true); if (dlg.open() == Window.OK) { zip.getText().setText(zipFileRepository.toString()); parse(); checkUpExchangeImport(false); } } protected Composite initItemTreeViewer(Composite composite) { Composite returnComposite = treeViewer.createItemList(composite); treeViewer.getViewer().setInput(null); treeViewer.setItemText(Messages.ImportItemsWizard_38); return returnComposite; } /** * @author ymli edit the path of picture fix 0016875 * @param orignalPicturepath * @param targetPicturePath * @return */ private static String updatePicturePath(String orignalPicturepath, String pictureName, String targetPicturePath) { String pictureName1 = pictureName.replace("-", "/");//$NON-NLS-1$//$NON-NLS-2$ return orignalPicturepath.replaceAll(pictureName1, targetPicturePath.substring(targetPicturePath.indexOf("/") + 1));//$NON-NLS-1$ } protected void createViewer() { treeViewer = new RepositoryCheckTreeViewer(sel); } protected ImportExchangeOptionsDialog getExchangeOptionsDialog() { FormToolkit toolkit = WidgetFactory.getWidgetFactory(); ImportExchangeOptionsDialog dlg = new ImportExchangeOptionsDialog(zipBtn.getShell(), toolkit, true, zipFileRepository); dlg.create(); dlg.fillInTable(); return dlg; } }