package com.vividsolutions.jump.workbench.datasource;
import java.util.Collection;
import com.vividsolutions.jts.util.Assert;
import com.vividsolutions.jump.I18N;
import com.vividsolutions.jump.io.datasource.Connection;
import com.vividsolutions.jump.io.datasource.DataSourceQuery;
import com.vividsolutions.jump.task.TaskMonitor;
import com.vividsolutions.jump.workbench.WorkbenchContext;
import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory;
import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck;
import com.vividsolutions.jump.workbench.plugin.PlugInContext;
import com.vividsolutions.jump.workbench.plugin.ThreadedBasePlugIn;
import com.vividsolutions.jump.workbench.ui.GUIUtil;
import com.vividsolutions.jump.workbench.ui.plugin.PersistentBlackboardPlugIn;
public abstract class AbstractSaveDatasetAsPlugIn
extends
AbstractLoadSaveDatasetPlugIn {
public void run(TaskMonitor monitor, PlugInContext context)
throws Exception {
Assert.isTrue(getDataSourceQueries().size() == 1);
DataSourceQuery dataSourceQuery = (DataSourceQuery) getDataSourceQueries().iterator().next();
Assert.isTrue(dataSourceQuery.getDataSource().isWritable());
monitor.report(I18N.get("datasource.SaveDatasetAsPlugIn.saving") + " "
+ dataSourceQuery.toString() + "...");
Connection connection = dataSourceQuery.getDataSource().getConnection();
try {
connection
.executeUpdate(dataSourceQuery.getQuery(), context
.getSelectedLayer(0).getFeatureCollectionWrapper(),
monitor);
} finally {
connection.close();
}
context.getSelectedLayer(0).setDataSourceQuery(dataSourceQuery)
.setFeatureCollectionModified(false);
}
public static MultiEnableCheck createEnableCheck(
final WorkbenchContext workbenchContext) {
EnableCheckFactory checkFactory = new EnableCheckFactory(
workbenchContext);
return new MultiEnableCheck().add(
checkFactory.createWindowWithLayerNamePanelMustBeActiveCheck())
.add(checkFactory.createExactlyNLayersMustBeSelectedCheck(1));
}
}