- added separate section for primer and cloning
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / view / datasource / handler / UpdateDataSourceHandler.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.taxeditor.view.datasource.handler;
12
13 import org.eclipse.core.commands.ExecutionEvent;
14 import org.eclipse.core.runtime.IProgressMonitor;
15 import org.eclipse.core.runtime.IStatus;
16 import org.eclipse.core.runtime.Status;
17 import org.eclipse.core.runtime.jobs.Job;
18 import org.eclipse.jface.dialogs.MessageDialog;
19 import org.eclipse.swt.widgets.Display;
20 import org.eclipse.ui.handlers.HandlerUtil;
21 import org.eclipse.ui.progress.IProgressConstants;
22
23 import eu.etaxonomy.cdm.database.update.CdmUpdater;
24 import eu.etaxonomy.taxeditor.model.CdmProgressMonitorAdapter;
25 import eu.etaxonomy.taxeditor.store.StoreUtil;
26 import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
27 import eu.etaxonomy.taxeditor.view.datasource.CdmDataSourceViewPart;
28 import eu.etaxonomy.taxeditor.view.datasource.CdmMetaDataAwareDataSourceContainer;
29
30 /**
31 * <p>UpdateDataSourceHandler class.</p>
32 *
33 * @author n.hoffmann
34 * @created Sep 22, 2010
35 * @version 1.0
36 */
37 public class UpdateDataSourceHandler extends AbstractDataSourceHandler {
38
39 /* (non-Javadoc)
40 * @see eu.etaxonomy.taxeditor.datasource.handler.AbstractDataSourceHandler#specificExecute(org.eclipse.core.commands.ExecutionEvent)
41 */
42 /** {@inheritDoc} */
43 @Override
44 public boolean specificExecute(ExecutionEvent event) {
45 final CdmMetaDataAwareDataSourceContainer container = getSelectedDataSourceContainer(event);
46
47 final Display display = Display.getCurrent();
48 if(! MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Confirm Deletion", "Are you sure you want to update the datasource?")){
49 return false;
50 }
51 Job job = new Job("Updating datasource " + container.getDataSource().getName()){
52
53 @Override
54 protected IStatus run(IProgressMonitor monitor) {
55 CdmUpdater updater = new CdmUpdater();
56 IStatus status = null;
57
58 try{
59 if(updater.updateToCurrentVersion(container.getDataSource(), CdmProgressMonitorAdapter.CreateMonitor(monitor))){
60 display.asyncExec(new Runnable(){
61
62 @Override
63 public void run() {
64
65 CdmDataSourceViewPart view = (CdmDataSourceViewPart) StoreUtil.getView(CdmDataSourceViewPart.ID, false);
66 if(view != null){
67 view.getViewer().update(new CdmMetaDataAwareDataSourceContainer[]{container}, null);
68 }
69
70 }
71 });
72 status = Status.OK_STATUS;
73 }
74 }catch(Exception e){
75 status = new Status(IStatus.ERROR, TaxeditorStorePlugin.PLUGIN_ID, e.getMessage(), e);
76 StoreUtil.errorDialog("Could not run updater", getClass(), status);
77 }
78
79
80 return status;
81 }
82
83 };
84
85 job.setPriority(Job.BUILD);
86 job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
87 job.schedule();
88
89 return false;
90 }
91 }