Revision 43215 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toc/actions/LayerErrorsPanel.java

View differences:

LayerErrorsPanel.java
4 4
import java.awt.event.ActionEvent;
5 5
import java.awt.event.ActionListener;
6 6
import java.util.ArrayList;
7
import java.util.HashSet;
7 8
import java.util.List;
9
import java.util.Set;
8 10

  
9 11
import org.apache.commons.lang3.exception.ExceptionUtils;
10 12

  
......
13 15
import org.gvsig.fmap.mapcontrol.swing.dynobject.DynObjectEditor;
14 16
import org.gvsig.tools.ToolsLocator;
15 17
import org.gvsig.tools.i18n.I18nManager;
18
import org.gvsig.tools.util.impl.CallableException;
16 19

  
17 20
import org.slf4j.Logger;
18 21
import org.slf4j.LoggerFactory;
19 22

  
20
public class LayerErrorsPanel extends LayerErrorsView {
23
public class LayerErrorsPanel
24
    extends LayerErrorsView {
21 25

  
22 26
    private static final Logger logger = LoggerFactory.getLogger(LayerErrorsPanel.class);
23 27
    private static final long serialVersionUID = -5972995402218954892L;
......
54 58
        this.setPreferredSize(new Dimension(550, 400));
55 59
    }
56 60

  
57
    public void setName(String name){
61
    @Override
62
    public void setName(String name) {
58 63
        this.txtLayerName.setText(name);
59 64
    }
60 65

  
61
    public void setError(Exception e){
62
        List<Exception> exs = new ArrayList<Exception>();
66
    public void setError(Throwable e) {
67
        List<Throwable> exs = new ArrayList<>();
63 68
        exs.add(e);
64
        this.txtMessage.setText(this.getMessageAsHTML(exs));
69
        this.txtMessage.setText(new MessageAsHTML(exs).toString());
65 70
        this.btnViewParameters.setEnabled(false);
66 71
    }
67 72

  
68 73
    public void setLayer(FLayer layer) {
69 74
        this.layer = layer;
70 75
        setName(layer.getName());
71
        this.txtMessage.setText(this.getMessageAsHTML(layer.getErrors()));
76
        this.txtMessage.setText(new MessageAsHTML(layer.getErrors()).toString());
72 77
        this.btnViewParameters.setEnabled(this.layer instanceof SingleLayer);
73 78
    }
74 79

  
75
    private String getMessageAsHTML(List<Exception> exs) {
76
        StringBuilder html = new StringBuilder();
77
        //html.append("<html>\n");
78
        for (Exception ex : exs) {
79
            String lastmsg = "";
80
            html.append("<ul>\n");
81
            for( Throwable cause : ExceptionUtils.getThrowableList(ex) ) {
82
                String message = cause.getMessage();
83
                if (message != null) {
84
                    if (!message.equalsIgnoreCase(lastmsg)) {
85
                        lastmsg = message;
86
                        html.append("<li>");
87
                        html.append(message.replace("\n", "<br>\n"));
88
                        html.append("</li>\n");
80
    private class MessageAsHTML {
81

  
82
        StringBuilder html;
83
        Set<String> usedMsgs;
84

  
85
        public MessageAsHTML(List<Throwable> exs) {
86
            this.clear();
87
            this.build(exs);
88
        }
89

  
90
        public MessageAsHTML() {
91
            this.clear();
92
        }
93

  
94
        public void clear() {
95
            this.html = new StringBuilder();
96
            this.usedMsgs = new HashSet<>();
97
        }
98

  
99
        public void build(List<Throwable> exs) {
100
            for( Throwable ex : exs ) {
101
//                html.append("<ul>\n");
102
                List<Throwable> causes = new ArrayList<>();
103
                causes.addAll(ExceptionUtils.getThrowableList(ex));
104
                if( ex instanceof List ) {
105
                    causes.addAll((List<Throwable>) ex);
106
                }
107
                for( Throwable cause : causes ) {
108
                    if( cause instanceof List ) {
109
                        continue;
89 110
                    }
111
                    if( cause instanceof CallableException ) {
112
                        cause = ((CallableException) cause).getCause();
113
                    }
114
                    if( cause == null ) {
115
                        continue;
116
                    }
117
                    String message = cause.getMessage();
118
                    if( message != null ) {
119
                        if( !this.usedMsgs.contains(message) ) {
120
                            this.usedMsgs.add(message);
121
                            html.append("<li>");
122
                            html.append(message.replace("\n", "<br>\n"));
123
                            if( cause.getCause() != null ) {
124
                                this.build(ExceptionUtils.getThrowableList(
125
                                    cause.getCause()));
126
                            }
127
                            html.append("</li>\n");
128
                        }
129
                    }
90 130
                }
131

  
132
//                html.append("</ul>\n");
91 133
            }
92
            html.append("</ul><br>\n");
93 134
        }
94
        //html.append("</html>\n");
95
        return html.toString();
135

  
136
        @Override
137
        public String toString() {
138
            return "<ul>\n" + html.toString() + "</ul>\n";
139
        }
96 140
    }
97 141

  
98 142
    private void translate() {
......
109 153

  
110 154
    private void doViewParameters() {
111 155
        try {
112
            DynObjectEditor editor = new DynObjectEditor( ((SingleLayer)layer).getDataStore().getParameters() );
156
            DynObjectEditor editor = new DynObjectEditor(
157
                ((SingleLayer) layer).getDataStore().getParameters()
158
            );
113 159
            editor.editObject(true);
114 160
        } catch (Throwable th) {
115
            logger.warn("Can't show standard properties dialog for this parameters.",th);
161
            logger.warn(
162
                "Can't show standard properties dialog for this parameters.",
163
                th);
116 164
        }
117 165
    }
118 166

  

Also available in: Unified diff