Statistics
| Revision:

root / branches / F2 / extensions / extJCRS / src / org / gvsig / crs / gui / panels / NewCRSPanel.java @ 12202

History | View | Annotate | Download (21.2 KB)

1 10786 lmfernandez
package org.gvsig.crs.gui.panels;
2
3
import java.awt.BorderLayout;
4 11543 jlgomez
import java.awt.Color;
5 10786 lmfernandez
import java.awt.Dimension;
6
import java.awt.FlowLayout;
7
import java.awt.GridLayout;
8
import java.awt.event.ActionEvent;
9
import java.awt.event.ActionListener;
10
import java.awt.event.KeyEvent;
11
import java.awt.event.KeyListener;
12 11543 jlgomez
import java.sql.ResultSet;
13
import java.sql.SQLException;
14 10786 lmfernandez
15
import javax.swing.ButtonGroup;
16
import javax.swing.JButton;
17
import javax.swing.JLabel;
18 11543 jlgomez
import javax.swing.JOptionPane;
19 10786 lmfernandez
import javax.swing.JPanel;
20
import javax.swing.JRadioButton;
21
import javax.swing.JScrollPane;
22
import javax.swing.JTable;
23
import javax.swing.JTextField;
24
import javax.swing.ListSelectionModel;
25
import javax.swing.border.CompoundBorder;
26
import javax.swing.border.EmptyBorder;
27
import javax.swing.table.DefaultTableModel;
28
import javax.swing.table.TableColumn;
29
30 11543 jlgomez
import org.gvsig.crs.CrsException;
31
import org.gvsig.crs.CrsFactory;
32
import org.gvsig.crs.ICrs;
33 10786 lmfernandez
import org.gvsig.crs.gui.panels.wizard.MainPanel;
34 11543 jlgomez
import org.gvsig.crs.ogr.Iau2wkt;
35 11812 jlgomez
import org.gvsig.crs.persistence.CrsData;
36
import org.gvsig.crs.persistence.RecentCRSsPersistence;
37 10786 lmfernandez
38
import com.iver.andami.PluginServices;
39
import com.iver.cit.gvsig.gui.TableSorter;
40
41 11543 jlgomez
import es.idr.teledeteccion.connection.EpsgConnection;
42
import es.idr.teledeteccion.connection.Query;
43
44 10786 lmfernandez
/**
45 11543 jlgomez
 * Crea la interfaz de definicin de un nuevo crs por el usuario
46 10786 lmfernandez
 * @author Luisa Marina Fernandez Ruiz (luisam.fernandez@uclm.es)
47 11854 jlgomez
 * @author Jose Luis Gomez Martinez (joseluis.gomez@uclm.es)
48 10786 lmfernandez
 *
49
 */
50
public class NewCRSPanel extends JPanel implements ActionListener,KeyListener{
51
        private static final long serialVersionUID = 1L;
52
53
        private JRadioButton codeRadioButton = null;
54
        private JRadioButton nameRadioButton = null;
55
        private JLabel lblCriterio=null;
56
        private JButton searchButton = null;
57
        private JTextField searchTextField = null;
58
        private JButton infoCrs;
59
        private JButton btnNuevo;
60
        private JButton btnEditar;
61
        private JButton btnEliminar;
62
        private JScrollPane jScrollPane=null;
63
        private JTable jTable;
64
        public TableSorter sorter = null;
65
        public DefaultTableModel dtm = null;
66
67 11543 jlgomez
        public String key;
68
        public EpsgConnection connect = null;
69
        public int selectedRowTable = -1;
70
        String cadWkt = "";
71 11570 jlgomez
        private int codeCRS = -1;
72
        private ICrs currentCrs;
73 11543 jlgomez
74 11570 jlgomez
        public NewCRSPanel(ICrs crs) {
75 10786 lmfernandez
                super();
76 11570 jlgomez
                currentCrs = crs;
77 10786 lmfernandez
                initialize();
78
                //fijar los listener de todos los componentes
79
                setListener();
80
                habilitarJbuttons(false);
81
        }
82
        /**
83
         * Inicializa this
84
         *
85
         */
86
        private void initialize(){
87
                this.setLayout(new BorderLayout());
88
                this.setBorder(new EmptyBorder(1,1,1,1));
89
                //Este panel contiene los componentes de radio button
90
                JPanel radio=new JPanel();
91
                radio.setLayout(new GridLayout(1,4,10,0));
92
                radio.add(getLblCriterio());
93
                radio.add(getCodeRadioButton());
94
                radio.add(getNameRadioButton());
95
                //Agrupar los radioButtons
96
                agruparRadioButtons();
97 11543 jlgomez
                //Este panel contiene los componentes relacionados con la bsqueda
98 10786 lmfernandez
                JPanel busqueda=new JPanel();
99
                busqueda.setLayout(new FlowLayout(FlowLayout.LEFT,10,1));
100
                busqueda.add(getSearchButton());
101
                busqueda.add(getSearchTextField());
102
                //busqueda.setBackground(Color.red);
103
                JPanel pNorth=new JPanel();
104
                pNorth.setLayout(new GridLayout(2,1));
105
                pNorth.add(radio);
106
                pNorth.add(busqueda);
107
                this.add(pNorth,BorderLayout.NORTH);
108
                //agregar los botones de la tabla
109
                JPanel pInSouth=new JPanel();
110
                pInSouth.setLayout(new FlowLayout(FlowLayout.LEFT,10,0));
111
                pInSouth.add(getInfoCrs());
112
                pInSouth.add(getBtnNuevo());
113
                pInSouth.add(getBtnEditar());
114
                pInSouth.add(getBtnEliminar());
115
                JPanel pCenter=new JPanel();
116
                pCenter.setLayout(new BorderLayout());
117
                pCenter.add(getJScrollPane(),BorderLayout.CENTER);
118
                pCenter.add(pInSouth,BorderLayout.SOUTH);
119
                this.add(pCenter,BorderLayout.CENTER);
120 11543 jlgomez
121
        }
122 10786 lmfernandez
123 11543 jlgomez
        public void connection(){
124
                connect = new EpsgConnection();
125
                connect.setConnectionUsr();
126 10786 lmfernandez
127
        }
128 11543 jlgomez
129 10786 lmfernandez
        /**
130 11543 jlgomez
         * Inicializa el botn que muestra la informacin de CRS seleccionado
131 10786 lmfernandez
         * @return
132
         */
133
        public JButton getInfoCrs() {
134
                if(infoCrs == null) {
135
                        infoCrs = new JButton();
136
                        infoCrs.setPreferredSize(new Dimension(85,23));
137
                        infoCrs.setText(PluginServices.getText(this,"infocrs"));
138
                        infoCrs.setMnemonic('I');
139 10789 lmfernandez
                        infoCrs.setToolTipText(PluginServices.getText(this,"more_info"));
140 12202 jlgomez
                        infoCrs.addActionListener(this);
141 10786 lmfernandez
142
                }
143
                return infoCrs;
144
        }
145
        /**
146
         * Inicializa el panel que contiene la tabla de resultados
147
         * @return
148
         */
149
        private JScrollPane getJScrollPane() {
150
                if (jScrollPane == null) {
151
                        jScrollPane = new JScrollPane(getJTable(),JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
152
                        jScrollPane.setPreferredSize(new Dimension(500,150));
153
                        jScrollPane.setBorder(new CompoundBorder(new EmptyBorder(3,10,3,10),jScrollPane.getBorder()));
154
                        jScrollPane.setViewportView(getJTable());
155
                }
156
                return jScrollPane;
157
        }
158
        /**
159
         * Inicializa la tabla que se utiliza para mostrar
160 11543 jlgomez
         * los resultados de la bsqueda
161 10786 lmfernandez
         * @return
162
         */
163
        public JTable getJTable() {
164
                if (jTable == null) {
165 10788 lmfernandez
                        //TODO: Poner los titulos de las columnas correspondientes
166 10786 lmfernandez
                        String[] columnNames= {PluginServices.getText(this,"codigo"),
167
                                        PluginServices.getText(this,"nombre"),
168 11543 jlgomez
                                        PluginServices.getText(this,"projected"),
169
                                        PluginServices.getText(this,"datum")};
170 10786 lmfernandez
                        Object[][]data = {};
171
                        dtm = new DefaultTableModel(data, columnNames)
172
                         {
173
                                private static final long serialVersionUID = 1L;
174
                                public boolean isCellEditable(int row, int column) {
175
                                        return false;
176
                                }
177
                                /*
178
                                 * metodo necesario para cuando utilizamos tablas ordenadas
179
                                 * ya que sino al ordenar por algun campo no se queda con el orden
180
                                 * actual al seleccionar una fila (non-Javadoc)
181
                                 * @see javax.swing.table.TableModel#getColumnClass(int)
182
                                 */
183
                                public Class getColumnClass(int column)
184
                                {
185
                                        return getValueAt(0, column).getClass();
186
                                }
187
                                };
188
                        sorter = new TableSorter(dtm);
189
190
                        jTable = new JTable(sorter);
191
                        sorter.setTableHeader(jTable.getTableHeader());
192
                        jTable.setCellSelectionEnabled(false);
193
                        jTable.setRowSelectionAllowed(true);
194
                        jTable.setColumnSelectionAllowed(false);
195
                        jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
196
                        TableColumn column = null;
197
                        for (int i = 0; i < columnNames.length; i++) {
198
                            column = jTable.getColumnModel().getColumn(i);
199
                            if (i == 0) {
200 11543 jlgomez
                                column.setPreferredWidth(80); //code column is shorter
201
                            }else if (i ==2) {
202
                                    column.setPreferredWidth(50);
203
                            } else {
204
                                    column.setPreferredWidth(175);
205 10786 lmfernandez
                            }
206 11543 jlgomez
207 12170 jlgomez
                        }
208
                        initializeTable();
209 10786 lmfernandez
                }
210
211
                return jTable;
212
213
        }
214 12170 jlgomez
215
        public void initializeTable() {
216
                // Eliminar filas en cada nueva bsqueda
217
                int numRow = dtm.getRowCount();
218
                while (numRow != 0) {
219
                        numRow = numRow - 1;
220
                        dtm.removeRow(numRow);
221
                }
222
223
                String sentence = "SELECT usr_code, usr_wkt, usr_proj, usr_geog, usr_datum " +
224
                  "FROM USR ORDER BY usr_code ASC";
225
226
                connect = new EpsgConnection();
227
                connect.setConnectionUsr();
228
                ResultSet result = Query.select(sentence,connect.getConnection());
229
                try {
230
                        connect.shutdown();
231
                } catch (SQLException e) {
232
                        // TODO Auto-generated catch block
233
                        e.printStackTrace();
234
                }
235
236
                Object[] data = new Object[4];
237
                try {
238
                        while (result.next()){
239
                                data[0]        = result.getString("usr_code");
240
                                data[1] = result.getString("usr_wkt");
241
                                String proj = result.getString("usr_proj");
242
                                if (!proj.equals("")){
243
                                        data[1] = proj;
244
                                        data[2] = PluginServices.getText(this,"si");
245
                                }
246
                                else
247
                                {
248
                                        data[1] = result.getString("usr_geog");
249
                                        data[2] = PluginServices.getText(this,"no");
250
                                }
251
252
                                data[3] = result.getString("usr_datum");
253
                                dtm.addRow(data);
254
                        }
255
                } catch (SQLException e1) {
256
                        e1.printStackTrace();
257
                }
258
259
                int numr = dtm.getRowCount();
260
                if (numr > 0){
261
                        this.getJTable().setRowSelectionInterval(0,0);
262
                        //getBtnEditar().setEnabled(true);
263
                        //getBtnEliminar().setEnabled(true);
264
                }
265
266
        }
267 10786 lmfernandez
        /**
268
         * Inicializa el radioButton 'Codigo'
269
         * @return jRadioButton
270
         */
271
        public JRadioButton getCodeRadioButton() {
272
                if (codeRadioButton == null) {
273
                        codeRadioButton = new JRadioButton();
274
                        codeRadioButton.setText(PluginServices.getText(this,"por_codigo"));
275
                        codeRadioButton.setSelected(true);
276
                        codeRadioButton.addActionListener(this);
277
                }
278
                return codeRadioButton;
279
        }
280
        /**
281
         * Inicializa el radioButton 'Name'
282
         * @return jRadioButton
283
         */
284
        public JRadioButton getNameRadioButton() {
285
                if (nameRadioButton == null) {
286
                        nameRadioButton = new JRadioButton();
287
                        nameRadioButton.setText(PluginServices.getText(this,"por_nombre"));
288
                        nameRadioButton.addActionListener(this);
289
                }
290
                return nameRadioButton;
291
        }
292 11543 jlgomez
293 10786 lmfernandez
        /**
294
         * Agrupa los radioButtons
295
         */
296
        private void agruparRadioButtons(){
297
                ButtonGroup group= new ButtonGroup();
298
                group.add(getCodeRadioButton());
299 11543 jlgomez
                group.add(getNameRadioButton());
300 10786 lmfernandez
        }
301
        /**
302 11543 jlgomez
         * Inicializa el label 'Criterio de Bsqueda'
303 10786 lmfernandez
         * @return jLabel
304
         */
305
        public JLabel getLblCriterio() {
306
                lblCriterio = new JLabel();
307
                lblCriterio.setText(PluginServices.getText(this, "criterio_busqueda")+":");
308
                return lblCriterio;
309
        }
310
        /**
311 11543 jlgomez
         * Inicializa el botn 'Buscar'
312 10786 lmfernandez
         * @return jButton
313
         */
314
        public JButton getSearchButton() {
315
                if (searchButton == null) {
316
                        searchButton = new JButton();
317
                        searchButton.setPreferredSize(new Dimension(75,20));
318
                        searchButton.setText(PluginServices.getText(this,"buscar"));
319
                        searchButton.setMnemonic('S');
320 10789 lmfernandez
                        searchButton.setToolTipText(PluginServices.getText(this,"buscar_por_criterio_seleccion"));
321 10786 lmfernandez
322
                }
323
                return searchButton;
324
        }
325
        /**
326
         * Inicializa el TextField
327
         * en el que se incluye el texto a buscar
328
         * @return jTextField
329
         */
330
        public JTextField getSearchTextField() {
331
                if (searchTextField == null) {
332
                        searchTextField = new JTextField();
333
                        searchTextField.setPreferredSize(new Dimension(340,20));
334
335
                }
336
                return searchTextField;
337
        }
338
        /**
339
         * Manejador de eventos
340
         */
341
        public void actionPerformed(ActionEvent e) {
342
                if (e.getSource().equals(getCodeRadioButton())){
343
                        getSearchTextField().setText("");
344
                }else if (e.getSource().equals(getNameRadioButton())){
345
                        getSearchTextField().setText("");
346
                }else if (e.getSource().equals(getBtnEditar())){
347
                        //editar la fila seleccionada de la tabla (si hay)
348 11770 jlgomez
                        ICrs crs = null;
349
                        try {
350
                                crs = new CrsFactory().getCRS("USR:"+getCodeCRS());
351
                        } catch (CrsException e1) {
352
                                // TODO Auto-generated catch block
353
                                e1.printStackTrace();
354
                        }
355
                        MainPanel wizard = new MainPanel(crs);
356
                        wizard.setEditing(true);
357
                        wizard.setEditingPanel();
358
                        PluginServices.getMDIManager().addWindow(wizard);
359
                        getNewCrs(wizard.getNewCrsCode());
360 11812 jlgomez
361
                        /**
362
                         * Actualizamos recientes para que coja los cambios del crs
363
                         */
364
                        /*
365
                     * Actualizar recientes...
366
                     */
367
                    String authority = "USR";
368
                    String name = "";
369
                    if (wizard.getPSistCoord().getTxtNombreProy().getText().equals("")) {
370
                            name = wizard.getPDatum().getTxtNombreCrs().getText();
371
                    } else {
372
                            name = wizard.getPSistCoord().getTxtNombreProy().getText();
373
                    }
374
                    int code = getCodeCRS();
375
                    CrsData crsData = new CrsData(authority,code,name);
376
                    RecentCRSsPersistence persistence = new RecentCRSsPersistence(RecentCRSsPersistence.pluginClassInstance);
377
                    persistence.addCrsData(crsData);
378
379 10786 lmfernandez
                }else if (e.getSource().equals(getBtnEliminar())){
380
                        //eliminar la fila seleccionada de la tabla
381 11770 jlgomez
                        connect = new EpsgConnection();
382
                        connect.setConnectionUsr();
383
                        String sentence = "DELETE FROM USR WHERE usr_code =" + getCodeCRS();
384
                        ResultSet result = Query.select(sentence,connect.getConnection());
385
                        try {
386
                                connect.shutdown();
387
                        } catch (SQLException arg0) {
388
                                // TODO Auto-generated catch block
389
                                arg0.printStackTrace();
390
                        }
391
                        dtm.removeRow(getJTable().getSelectedRow());
392
                        //searchButton();
393 10786 lmfernandez
                }else if (e.getSource().equals(getBtnNuevo())){
394
                        //mostrar el asistente de nuevo crs
395
396 11570 jlgomez
                        MainPanel wizard = new MainPanel(currentCrs);
397 11775 jlgomez
                        if ((wizard.getPCard().getSelectedIndex() == 0) && wizard.getPCrsUsr().getRbCrsExistente().isSelected() ){
398
                                ICrs crs = wizard.getPCrsUsr().getCrs();
399
                                if (crs != null){
400
                                        wizard.fillData(crs);
401
                                }
402
                                else wizard.fillData(wizard.getCrs());
403
                        }
404
                        else if ((wizard.getPCard().getSelectedIndex() == 0)  && wizard.getPCrsUsr().getRbNuevoCrs().isSelected() ){
405
                                wizard.cleanData();
406
                        }
407 10786 lmfernandez
                        PluginServices.getMDIManager().addWindow(wizard);
408 11581 jlgomez
                        getNewCrs(wizard.getNewCrsCode());
409 10786 lmfernandez
410
                }else if (e.getSource().equals(getSearchButton())){
411 11543 jlgomez
                        searchTextField.setBackground(Color.white);
412
                        if (searchTextField.getText().equals("")) {
413
                                searchTextField.setBackground(new Color(255,204,204));
414
                                JOptionPane.showMessageDialog(NewCRSPanel.this,
415
                                                PluginServices.getText(this,"fill_name"),
416
                                                "Warning...", JOptionPane.WARNING_MESSAGE);
417
                        }
418
                        else {
419
                                searchButton();
420
                        }
421 12202 jlgomez
                }
422
                /*Si el objeto que genera el evento es el JButton 'InfoCrs'
423
                se muestra la informacin ralicionada con el Crs seleccionado en la tabla*/
424
                if (e.getSource().equals(getInfoCrs())) {
425
                        InfoCRSPanel info = new InfoCRSPanel("USR", getCodeCRS());
426
                        PluginServices.getMDIManager().addWindow(info);
427 10786 lmfernandez
                }
428
        }
429
        public void keyPressed(KeyEvent e) {
430
                //Si se pulsa intro-->Buscar
431
                if (e.getSource() == this.getSearchTextField()) {
432
                        if (e.getKeyCode() == 10) {
433 11543 jlgomez
                                searchTextField.setBackground(Color.white);
434
                                if (searchTextField.getText().equals("")) {
435 12170 jlgomez
                                        initializeTable();
436 11543 jlgomez
                                }
437
                                else {
438
                                        searchButton();
439
                                }
440 10786 lmfernandez
                        }
441
                }
442
        }
443
        public void keyReleased(KeyEvent e) {
444
445
        }
446
        public void keyTyped(KeyEvent e) {
447
448
        }
449
        /**
450 11543 jlgomez
         * Inicializa el botn 'Editar'  una fila de la tabla
451 10786 lmfernandez
         * @return jButton
452
         */
453
        public JButton getBtnEditar() {
454
                if (btnEditar==null){
455
                        btnEditar=new JButton();
456
                        btnEditar.setText(PluginServices.getText(this,"editar"));
457
                }
458
                return btnEditar;
459
        }
460
        /**
461 11543 jlgomez
         * Inicializa el botn 'Eliminar' una fila de la tabla
462 10786 lmfernandez
         * @return
463
         */
464
        public JButton getBtnEliminar() {
465
                if (btnEliminar==null){
466
                        btnEliminar=new JButton();
467
                        btnEliminar.setText(PluginServices.getText(this,"eliminar"));
468
                }
469
                return btnEliminar;
470
        }
471
        /**
472 11543 jlgomez
         * Inicializa el botn 'Nuevo' para la creacin de un nuevo Crs
473 10786 lmfernandez
         * @return
474
         */
475
        public JButton getBtnNuevo() {
476
                if (btnNuevo==null){
477
                        btnNuevo=new JButton();
478
                        btnNuevo.setText(PluginServices.getText(this,"nuevo"));
479
                }
480
                return btnNuevo;
481
        }
482
        /**
483
         * Establece los listener de todos los componentes
484
         */
485
        private void setListener(){
486
                getBtnEditar().addActionListener(this);
487
                getBtnEliminar().addActionListener(this);
488
                getBtnNuevo().addActionListener(this);
489
                getInfoCrs().addActionListener(this);
490
                getCodeRadioButton().addActionListener(this);
491
                getNameRadioButton().addActionListener(this);
492
                getSearchButton().addActionListener(this);
493
                getSearchTextField().addKeyListener(this);
494
495
        }
496
        private void habilitarJbuttons(boolean b){
497
                getInfoCrs().setEnabled(b);
498
                getBtnEditar().setEnabled(b);
499
                getBtnEliminar().setEnabled(b);
500
        }
501 11543 jlgomez
502
        /**
503
         * Mtodo que controla la bsqueda de los CRS siguiendo los criterios
504
         * de bsqueda que le hemos definido. Tambin gestiona los casos en que
505
         * no encuentre CRS, o que los parmetros de bsqueda sean errneos. Si
506
         * encuentra algn CRS pero no es soportado por la aplicacin
507
         * aparecer el mensaje de informacin correspondiente.
508
         *
509
         */
510
        private void searchButton() {
511
                searchTextField.setBackground(Color.white);
512
513
                if (searchTextField.getText().equals("")) {
514
                        searchTextField.setBackground(new Color(255,204,204));
515
                        JOptionPane.showMessageDialog(this, PluginServices.getText(this,"fill_name"), "Warning...", JOptionPane.WARNING_MESSAGE);
516
                }
517
518
                else {
519
                        if (codeRadioButton.isSelected() && (searchTextField.getText().length()!=searchTextField.getText().replaceAll("[^0-9]", "").length())){
520
                                JOptionPane.showMessageDialog(NewCRSPanel.this,
521
                                                PluginServices.getText(this,"numeric_format"),
522
                                                "Warning...", JOptionPane.WARNING_MESSAGE);
523
                                searchTextField.setText("");
524
                                return;
525
                        }
526
527
            //Eliminar filas en cada nueva bsqueda
528
                        int numRow = dtm.getRowCount();
529
                        while (numRow != 0) {
530
                                numRow = numRow - 1;
531
                                dtm.removeRow(numRow);
532
                        }
533
//                        Dependiendo de la opcion se realizada una busqueda
534
                        ResultSet result = null;
535
536
                        if (codeRadioButton.isSelected()) {
537
538
                                key = searchTextField.getText();
539
                                int code = Integer.parseInt(key);
540
                                String sentence = "SELECT usr_code, usr_wkt, usr_proj, usr_geog, usr_datum " +
541
                                                                  "FROM USR " +
542
                                      "WHERE usr_code = " + code;
543
                                connect = new EpsgConnection();
544
                                connect.setConnectionUsr();
545
                                result = Query.select(sentence,connect.getConnection());
546
                                try {
547
                                        connect.shutdown();
548
                                } catch (SQLException e) {
549
                                        // TODO Auto-generated catch block
550
                                        e.printStackTrace();
551
                                }
552
553
                                Object[] data = new Object[4];
554
                                try {
555
                                        while (result.next()){
556
                                                data[0]        = result.getString("usr_code");
557
                                                data[1] = result.getString("usr_wkt");
558
                                                String proj = result.getString("usr_proj");
559
                                                if (!proj.equals("")){
560
                                                        data[1] = proj;
561
                                                        data[2] = PluginServices.getText(this,"si");
562
                                                }
563
                                                else
564
                                                {
565
                                                        data[1] = result.getString("usr_geog");
566
                                                        data[2] = PluginServices.getText(this,"no");
567
                                                }
568
569
                                                data[3] = result.getString("usr_datum");
570
                                                dtm.addRow(data);
571
                                        }
572
                                } catch (SQLException e1) {
573
                                        e1.printStackTrace();
574
                                }
575
                        }
576
                        else if (nameRadioButton.isSelected()) {
577
                                key = searchTextField.getText();
578
                                String key2 = key.substring(0,1);
579
                                String key3 = key.substring(1,key.length());
580
                                key2 = key2.toUpperCase();
581
582
                                String sentence = "SELECT usr_code, usr_wkt, usr_proj, usr_geog, usr_datum " +
583
                                        "FROM USR " +
584
                                        "WHERE (usr_proj LIKE '%" + key + "%') OR (usr_proj LIKE '%"+
585
                                        key.toUpperCase() +"%') " +
586
                                        "OR (usr_proj LIKE '%" + key2+key3 +"%') OR " +
587
                                                        "(usr_geog LIKE '%" + key + "%') OR (usr_geog LIKE '%"+
588
                                        key.toUpperCase() +"%') " +
589
                                        "OR (usr_geog LIKE '%" + key2+key3 +"%')";
590
591
                                connect = new EpsgConnection();
592
                                connect.setConnectionUsr();
593
                                result = Query.select(sentence,connect.getConnection());
594
                                try {
595
                                        connect.shutdown();
596
                                } catch (SQLException e) {
597
                                        // TODO Auto-generated catch block
598
                                        e.printStackTrace();
599
                                }
600
601
                                Object[] data = new Object[4];
602
                                try {
603
                                        while (result.next()){
604
                                                data[0]        = result.getString("usr_code");
605
                                                data[1] = result.getString("usr_wkt");
606
                                                String proj = result.getString("usr_proj");
607
                                                if (!proj.equals("")){
608
                                                        data[1] = proj;
609
                                                        data[2] = PluginServices.getText(this,"si");
610
                                                }
611
                                                else
612
                                                {
613
                                                        data[1] = result.getString("usr_geog");
614
                                                        data[2] = PluginServices.getText(this,"no");
615
                                                }
616
617
                                                data[3] = result.getString("usr_datum");
618
                                                dtm.addRow(data);
619
                                        }
620
                                } catch (SQLException e1) {
621
                                        e1.printStackTrace();
622
                                }
623
                        }
624
625
                        int numr = dtm.getRowCount();
626
                        if (numr == 0){
627
                                JOptionPane.showMessageDialog(this, PluginServices.getText(this,"no_results"), "Warning...",
628
                                                JOptionPane.WARNING_MESSAGE);
629
                        }
630
                        else {
631
                                this.getJTable().setRowSelectionInterval(0,0);
632
                        }
633
                }
634
        }
635
636
        public void setCodeCRS(int code) {
637
                codeCRS = code;
638
        }
639
640
        public int getCodeCRS() {
641
                return codeCRS;
642
        }
643
644
        /**
645
         * Consigue la cadena wkt del CRS seleccionado, y genera la cadena que ms
646
         * tarde volver a ser tratada para la consecucin de una cadena wkt
647
         * legible por la proj4.
648
         *
649
         */
650
        public void setWKT(){
651
                int code = getCodeCRS();
652
                String sentence = "SELECT usr_wkt " +
653
                                                  "FROM USR " +
654
                          "WHERE usr_code = " + code;
655
656
657
                connect = new EpsgConnection();
658
                connect.setConnectionUsr();
659
                ResultSet result = Query.select(sentence,connect.getConnection());
660
                try {
661
                        connect.shutdown();
662
                } catch (SQLException e) {
663
                        // TODO Auto-generated catch block
664
                        e.printStackTrace();
665
                }
666
                try {
667
                        result.next();
668
                        cadWkt = result.getString("usr_wkt");
669
                } catch (SQLException e1) {
670
                        e1.printStackTrace();
671
                }
672
                cadWkt = cadWkt.substring(0, cadWkt.length()-1) + ", AUTHORITY[\"USR\","+ getCodeCRS()+"]]";
673
674
        }
675
676
        public String getWKT(){
677
                return cadWkt;
678
        }
679
680
        public ICrs getProjection() {
681
                try {
682
                        ICrs crs = new CrsFactory().getCRS("USR:"+getCodeCRS());
683
                        return crs ;
684
                } catch (CrsException e) {
685
                        e.printStackTrace();
686
                }
687
                return null;
688
        }
689 11581 jlgomez
690
        private void getNewCrs(int code) {
691 11629 jlgomez
                if (code != -1) {
692
                        //                Eliminar filas en cada nueva bsqueda
693
                        int numRow = dtm.getRowCount();
694
                        while (numRow != 0) {
695
                                numRow = numRow - 1;
696
                                dtm.removeRow(numRow);
697
                        }
698
                        String sentence = "SELECT usr_code, usr_wkt, usr_proj, usr_geog, usr_datum " +
699
                                                                "FROM USR " +
700
                                                                "WHERE usr_code = " + code;
701
                        connect = new EpsgConnection();
702
                        connect.setConnectionUsr();
703
                        ResultSet result = Query.select(sentence,connect.getConnection());
704
                        try {
705
                        connect.shutdown();
706
                        } catch (SQLException e) {
707
                                // TODO Auto-generated catch block
708
                                e.printStackTrace();
709
                        }
710
711
                        Object[] data = new Object[4];
712
                        try {
713
                                while (result.next()){
714
                                        data[0]        = result.getString("usr_code");
715
                                        data[1] = result.getString("usr_wkt");
716
                                        String proj = result.getString("usr_proj");
717
                                        if (!proj.equals("")){
718
                                                data[1] = proj;
719
                                                data[2] = PluginServices.getText(this,"si");
720
                                        }
721
                                        else
722
                                        {
723
                                                data[1] = result.getString("usr_geog");
724
                                                data[2] = PluginServices.getText(this,"no");
725
                                        }
726
727
                                        data[3] = result.getString("usr_datum");
728
                                        dtm.addRow(data);
729 11581 jlgomez
                                }
730 11629 jlgomez
                        } catch (SQLException e1) {
731
                        e1.printStackTrace();
732 11581 jlgomez
                        }
733 11629 jlgomez
                        this.getJTable().setRowSelectionInterval(0,0);
734
                }
735 11581 jlgomez
        }
736 10786 lmfernandez
737
}