Revision 46517 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/searchpanel/DefaultSearchPanel.java

View differences:

DefaultSearchPanel.java
10 10
import java.awt.event.KeyAdapter;
11 11
import java.awt.event.KeyEvent;
12 12
import java.net.URL;
13
import java.sql.SQLException;
13 14
import java.text.DateFormat;
14 15
import java.text.SimpleDateFormat;
15 16
import java.util.ArrayList;
......
137 138
	private final PropertiesSupportHelper propertiesHelper;
138 139
	private TaskStatusController taskStatusController;
139 140
        private boolean automaticallySearch;
141
        private String lastErrorMessage;
140 142
    private boolean initialized;
141 143

  
142 144
	public static class UseLabelsYesAction extends AbstractAction {
......
1007 1009
		status.setAutoremove(true);
1008 1010
		status.add();
1009 1011
		this.taskStatusController.bind(status);
1012
                List<Feature> features = null;
1010 1013
		try {
1011 1014
			status.setTitle(ToolsLocator.getI18nManager().getTranslation("_Processing_search"));
1012 1015
			SwingUtilities.invokeLater(() -> {
......
1014 1017
				this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
1015 1018
                            }
1016 1019
			});
1017
			final List<Feature> features;
1018 1020
			FeatureQuery myQuery;
1019 1021
//                myQuery = this.getQuery().getCopy();
1020 1022
			List<String> resultColumnNames = searchParams.getResultColumnNames();
......
1029 1031
				features
1030 1032
			);
1031 1033
			model.setValue(tableModel);
1032
			rowCount.setValue(tableModel.getRowCount());
1034
			rowCount.setValue(features.size());
1035
                        if(rowCount.longValue() > 0){
1036
                            //Force to get first row in this thread
1037
                            Feature f = features.get(0);
1038
                        }
1033 1039
        		resultModel = (SimpleFeaturesTableModel) model.getValue();
1034
		} catch (Exception ex) {
1035
			LOGGER.warn("Search not able to be executed. Can't get features or create table model", ex);
1036
			status.setTitle(ToolsLocator.getI18nManager().getTranslation("_Errors_getting_new_feature_set") + "...");
1037
			status.abort();
1038
			resetTable();
1039
                        return STATUS_ERROR1;
1040
		} finally {
1041 1040
			SwingUtilities.invokeLater(() -> {
1042 1041
                            if(this.initialized){
1043 1042
				I18nManager i18n = ToolsLocator.getI18nManager();
......
1067 1066
				}
1068 1067
                            }
1069 1068
			});
1069
                        
1070
		} catch (Exception ex) {
1071
			LOGGER.warn("Search not able to be executed. Can't get features or create table model", ex);
1072
			status.setTitle(ToolsLocator.getI18nManager().getTranslation("_Errors_getting_new_feature_set") + "...");
1073
			status.abort();
1074
                        DisposeUtils.disposeQuietly(features);
1075
                        this.lastErrorMessage = this.getLastErrorMessage(ex);
1076
                        if(StringUtils.isNotBlank(this.lastErrorMessage)){
1077
                            status.setTitle(this.lastErrorMessage);
1078
                        }
1079
			resetTable();
1080
                        return STATUS_ERROR1;
1070 1081
		}
1071 1082
                return STATUS_OK;
1072 1083
	}
......
1885 1896
    public boolean isAutomaticallySearch(){
1886 1897
        return automaticallySearch;
1887 1898
    }
1888
        
1899

  
1900
    @Override
1901
    public String getLastErrorMessage() {
1902
        return this.lastErrorMessage;
1903
    }
1904
    
1905
    private String getLastErrorMessage(Throwable ex) {
1906
        StringBuilder builder = new StringBuilder();
1907
        while (ex != null){
1908
            if(ex instanceof SQLException){
1909
                builder.append(ex.getLocalizedMessage());
1910
                builder.append("\n");
1911
            }
1912
            ex = ex.getCause();
1913
        }
1914
        return builder.toString();
1915
    }
1916
    
1889 1917
}

Also available in: Unified diff