Revision 47347 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.xml2db/org.gvsig.xml2db.swing/org.gvsig.xml2db.swing.impl/src/main/java/org/gvsig/xml2db/swing/impl/copyxml2db/CopyXml2dbPanel.java

View differences:

CopyXml2dbPanel.java
22 22
 */
23 23
package org.gvsig.xml2db.swing.impl.copyxml2db;
24 24

  
25
import org.gvsig.xml2db.swing.impl.Task;
26 25
import java.awt.Color;
26
import java.awt.event.ActionEvent;
27 27
import java.io.File;
28
import java.nio.charset.Charset;
28 29
import java.util.ArrayList;
29 30
import java.util.List;
31
import java.util.Locale;
30 32
import javax.swing.AbstractListModel;
33
import javax.swing.ImageIcon;
31 34
import javax.swing.JComponent;
32
import org.cresques.cts.IProjection;
33
import java.nio.charset.Charset;
34
import java.util.Locale;
35 35
import javax.swing.JOptionPane;
36 36
import javax.swing.SwingUtilities;
37 37
import javax.swing.event.ChangeEvent;
38 38
import org.apache.commons.io.FilenameUtils;
39 39
import org.apache.commons.lang3.StringUtils;
40
import org.cresques.cts.IProjection;
40 41
import org.gvsig.fmap.dal.DALLocator;
41 42
import org.gvsig.fmap.dal.DataManager;
42 43
import org.gvsig.fmap.dal.store.h2.H2SpatialUtils;
......
44 45
import org.gvsig.fmap.dal.swing.DALSwingLocator;
45 46
import org.gvsig.fmap.dal.swing.DataSwingManager;
46 47
import org.gvsig.fmap.dal.swing.ProjectionPickerController;
48
import org.gvsig.tools.ToolsLocator;
49
import org.gvsig.tools.i18n.I18nManager;
47 50
import org.gvsig.tools.swing.api.ToolsSwingLocator;
48 51
import org.gvsig.tools.swing.api.ToolsSwingManager;
49 52
import org.gvsig.tools.swing.api.ToolsSwingUtils;
......
61 64
import org.gvsig.xml2db.lib.api.xmlinfo.XMLInfo;
62 65
import org.gvsig.xml2db.lib.api.xmlinfo.XMLTableInfo;
63 66
import org.gvsig.xml2db.swing.Xml2dbPanel;
67
import org.gvsig.xml2db.swing.impl.Task;
64 68
import org.gvsig.xml2db.swing.impl.Xml2dbSwingCommons;
65 69
import org.slf4j.Logger;
66 70
import org.slf4j.LoggerFactory;
......
155 159
        
156 160
        this.pickerXMLFile = toolsSwingManager.createFilePickerController(
157 161
                this.txtXMLFile, 
158
                this.btnXMLFile
162
                this.btnXMLFile,
163
                null,
164
                "Xml2db_xmlFile",
165
                null,
166
                true
159 167
        );
160 168
        this.pickerXMLFile.addChangeListener((ChangeEvent e) -> {
161 169
            doChangeXMLfile();
......
166 174
                this.cboCharset
167 175
        );
168 176
        
177
        this.btnDetectCharset.addActionListener((ActionEvent e) -> {
178
            doDetectCharset();
179
        });
180
        
169 181
        this.pickerProjection = dataSwingManager.createProjectionPickerController(
170 182
                this.txtProjection, 
171 183
                this.btnProjection
172 184
        );
173 185
        
186
        this.btnDetectProjection.addActionListener((ActionEvent e) -> {
187
            doDetectProjection();
188
        });
189
        
174 190
        this.pickerDbfile = toolsSwingManager.createFilePickerController(
175 191
                this.txtDatabaseFile, 
176 192
                this.btnDataBaseFile
......
197 213
        
198 214
        SwingUtilities.invokeLater(() -> { updateStateComponents(); });
199 215
        
200
        ToolsSwingUtils.ensureRowsCols(this, 14, 80, 16, 100);
216
        ToolsSwingUtils.ensureRowsCols(this, 15, 80, 17, 100);
201 217
    }
202 218

  
203 219
    private void translate() {
......
212 228
        toolsSwingManager.translate(this.lblConnectToRepository);
213 229
        toolsSwingManager.translate(this.lblOverwriteDatabase);
214 230
        toolsSwingManager.translate(this.lblLocale);
231
        toolsSwingManager.translate(this.btnDetectProjection);
232
        toolsSwingManager.translate(this.btnDetectCharset);
233
        
215 234
    }
216 235
    
217 236
    private boolean isProcessing() {
......
227 246
            this.pickerXMLFile.setEnabled(false);
228 247
            this.pickerCharset.setEnabled(false);
229 248
            this.pickerProjection.setEnabled(false);
249
            this.btnDetectCharset.setEnabled(false);
250
            this.btnDetectProjection.setEnabled(false);
230 251
            if( this.dialog!=null ) {
231 252
                this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false);
232 253
            }
......
236 257
        this.pickerCharset.setEnabled(true);
237 258
        this.pickerProjection.setEnabled(true);
238 259
        
260
        I18nManager i18n = ToolsLocator.getI18nManager();
261
        
239 262
        File xmlfile = this.pickerXMLFile.get();
240 263
        if( xmlfile == null || !xmlfile.exists() ) {
264
            this.btnDetectCharset.setEnabled(false);
265
            this.btnDetectProjection.setEnabled(false);
241 266
            if( xmlfile==null ) {
242
                this.message("_XML_file_is_required", JOptionPane.WARNING_MESSAGE);
267
                this.message(i18n.getTranslation("_XML_file_is_required"), JOptionPane.WARNING_MESSAGE);
243 268
            } else {
244
                this.message("_XML_file_not_exists", JOptionPane.WARNING_MESSAGE);
269
                this.message(i18n.getTranslation("_XML_file_not_exists"), JOptionPane.WARNING_MESSAGE);
245 270
            }
246 271
            if( this.dialog!=null ) {
247 272
                this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false);
248 273
            }
249 274
            return;
250 275
        }
276
        this.btnDetectCharset.setEnabled(true);
277
        this.btnDetectProjection.setEnabled(true);
251 278
        File dbfile = this.pickerDbfile.get();
252 279
        if( dbfile == null ) {
253
            this.message("_Database_file_is_required", JOptionPane.WARNING_MESSAGE);
280
            this.message(i18n.getTranslation("_Database_file_is_required"), JOptionPane.WARNING_MESSAGE);
254 281
            if( this.dialog!=null ) {
255 282
                this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false);
256 283
            }
257 284
            return;
258 285
        }
259 286
        if( H2SpatialUtils.existsH2db(dbfile) && !this.chkOverwriteDatabase.isSelected() ) {
260
            this.message("_Database_file_already_exists", JOptionPane.WARNING_MESSAGE);
287
            this.message(i18n.getTranslation("_Database_file_already_exists"), JOptionPane.WARNING_MESSAGE);
261 288
            if( this.dialog!=null ) {
262 289
                this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false);
263 290
            }
264 291
            return;
265 292
        }
266 293
        if( StringUtils.isBlank(this.txtRepositoryName.getText()) ) {
267
            this.message("_Repository_name_is_required", JOptionPane.WARNING_MESSAGE);
294
            this.message(i18n.getTranslation("_Repository_name_is_required"), JOptionPane.WARNING_MESSAGE);
268 295
            if( this.dialog!=null ) {
269 296
                this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false);
270 297
            }
......
318 345
        boolean connectToRepository = this.chkConnectToRepository.isSelected();
319 346
        
320 347
        Xml2dbManager manager = Xml2dbLocator.getXml2dbManager();
348
        I18nManager i18n = ToolsLocator.getI18nManager();
321 349
        
322 350
        if( H2SpatialUtils.existsH2db(dbfile) ) {
323 351
            if( !this.chkOverwriteDatabase.isSelected() ) {
324
                message("Database already exists", JOptionPane.WARNING_MESSAGE);
352
                message(i18n.getTranslation("_Database_file_already_exists"), JOptionPane.WARNING_MESSAGE);
325 353
                return;
326 354
            }
327 355
        }  
......
330 358

  
331 359
        this.lastTask = new Task(                
332 360
                "Xml2db_copy", 
333
                "Copy xml to database", 
361
                i18n.getTranslation("_Copy_xml_to_database"),
334 362
                this::updateStateComponents, 
335 363
                taskStatusController
336 364
            ) {
......
338 366
            protected void task(SimpleTaskStatus taskStatus) throws Throwable{
339 367
                try {
340 368
                    if( H2SpatialUtils.existsH2db(dbfile) ) {
341
                        taskStatus.message("Removing existing database...");
369
                        taskStatus.message(i18n.getTranslation("_Removing_existing_database"));
342 370
                        H2SpatialUtils.server_stop();
343 371
                        H2SpatialUtils.removeH2db(dbfile);
344 372
                        H2SpatialUtils.server_start();
......
415 443
        }
416 444
        updateStateComponents();
417 445
    }
418
    
446

  
447
    private void doDetectCharset() {
448
        Xml2dbManager manager = Xml2dbLocator.getXml2dbManager();
449
        this.pickerCharset.set(manager.detectCharset(this.pickerXMLFile.get()));
450
    }
451

  
452
    private void doDetectProjection() {
453
        Xml2dbManager manager = Xml2dbLocator.getXml2dbManager();
454
        
455
        I18nManager i18n = ToolsLocator.getI18nManager();
456
        
457
        Task task = new Task(                
458
                "Xml2db_detectProjection", 
459
                i18n.getTranslation("_Detecting_projection"),
460
                this::updateStateComponents, 
461
                taskStatusController
462
        ) {
463
            @Override
464
            protected void task(SimpleTaskStatus taskStatus) throws Throwable{
465
                try {
466
                    pickerProjection.set(manager.detectProjection(pickerXMLFile.get(),taskStatus));
467
                } catch(Exception ex) {
468
                    LOGGER.warn("Can't detect projection",ex);
469
                    throw ex;
470
                }
471
            }
472
        };
473
        
474
        task.start();
475

  
476
    }
477

  
419 478
    private void message(String msg) {
420 479
        message(msg,JOptionPane.INFORMATION_MESSAGE);
421 480
    }
......
436 495
        this.lblStatusMsg.setText(s);
437 496
        this.lblStatusMsg.setVisible(true);
438 497
    }
498

  
499
    @Override
500
    public ImageIcon loadImage(String imageName) {
501
        return ToolsSwingUtils.loadImage(this, imageName);
502
    }
439 503
    
504
    
505
    
440 506
}

Also available in: Unified diff