/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package de.cismet.cismap.commons.tools; import org.openide.util.Lookup; import org.openide.util.NbBundle; import java.io.File; import java.util.Collection; import de.cismet.cismap.commons.features.FeatureServiceFeature; import de.cismet.tools.gui.downloadmanager.Download; /** * DOCUMENT ME! * * @author therter * @version $Revision$, $Date$ */ public class ExportShapeDownload extends ExportDownload { //~ Constructors ----------------------------------------------------------- /** * Creates a new ExportShapeDownload object. The init method must be invoked before the download can be started, if * this constructor is used. */ public ExportShapeDownload() { } /** * Creates a new ExportShapeDownload object. * * @param filename DOCUMENT ME! * @param extension DOCUMENT ME! * @param features DOCUMENT ME! */ public ExportShapeDownload(final String filename, final String extension, final FeatureServiceFeature[] features) { init(filename, extension, features, null, null); } //~ Methods ---------------------------------------------------------------- @Override public void run() { if (status != Download.State.WAITING) { return; } status = Download.State.RUNNING; stateChanged(); try { loadFeaturesIfRequired(); } catch (Exception e) { log.error("Error while retrieving features", e); error(e); return; } if ((features != null) && (features.length > 0)) { try { final Collection<? extends ShapeWriter> writer = Lookup.getDefault().lookupAll(ShapeWriter.class); if (writer.size() > 0) { if (extension.equalsIgnoreCase(".dbf")) { writer.iterator().next().writeDbf(features, aliasAttributeList, fileToSaveTo); } else { writer.iterator().next().writeShape(features, aliasAttributeList, fileToSaveTo); } } } catch (Exception ex) { error(ex); } } else { error(new Exception("No features found")); } if (status == Download.State.RUNNING) { status = Download.State.COMPLETED; stateChanged(); } } /** * DOCUMENT ME! * * @param fileName DOCUMENT ME! */ private void deleteFileIfExists(final String fileName) { final File fileToDelete = new File(fileName); if (fileToDelete.exists()) { fileToDelete.delete(); } } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ private String getId() { return String.valueOf(System.currentTimeMillis()); } @Override public String getDefaultExtension() { return ".shp"; } @Override public String toString() { return NbBundle.getMessage(ExportShapeDownload.class, "ExportShapeDownload.toString"); } }