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
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