1 package es.inteco.eni.swing;
2
3 import java.awt.event.ActionEvent;
4 import java.awt.event.ActionListener;
5 import java.io.IOException;
6
7 import javax.swing.JOptionPane;
8
9 import org.apache.log4j.Logger;
10
11 import es.inteco.eni.commons.MessagesHelper;
12 import es.inteco.eni.utils.ExceptionUtils;
13 import es.inteco.eni.xml.ENIXmlUtils;
14 import es.inteco.eni.xml.ValidationXmlResult;
15
16
17
18
19
20
21
22 public class ValidateButtonActionListener implements ActionListener{
23
24
25
26 private static Logger log = Logger.getLogger(ValidateButtonActionListener.class);
27
28
29
30
31 private ENIValidator eniValidator;
32
33
34
35
36
37 public ValidateButtonActionListener(ENIValidator eniValidator){
38 this.eniValidator = eniValidator;
39 }
40
41
42
43
44
45 @Override
46 public void actionPerformed(ActionEvent e) {
47
48 eniValidator.getTabbedPane().setSelectedIndex(ENIValidator.XML_VIEW_TAB_INDEX);
49
50 String filePath = eniValidator.getFile()!=null ? eniValidator.getFile().getAbsolutePath() : "";
51 eniValidator.appendConsoleMessage(MessagesHelper.getText("eni.analyze.console.message") + " " + filePath + "...");
52 new XMLValidationThread(eniValidator).start();
53 }
54
55
56
57
58
59
60 public static void addValidationMessage(ValidationXmlResult validationXmlResult, ENIValidator eniValidator){
61 String newConsoleMessage = "";
62 if(validationXmlResult.isValidationError()){
63 newConsoleMessage = MessagesHelper.getText("eni.nook.validation.console.message") + validationXmlResult.getMessage();
64 }else{
65 newConsoleMessage = MessagesHelper.getText("eni.ok.validation.console.message");
66 }
67 addValidationMessage(newConsoleMessage, eniValidator);
68 }
69
70
71
72
73
74
75 public static void addValidationMessage(String newConsoleMessage, ENIValidator eniValidator){
76 eniValidator.appendConsoleMessage(newConsoleMessage);
77 log.info(newConsoleMessage);
78 }
79
80
81
82
83
84
85
86 private static final class XMLValidationThread extends Thread {
87
88
89
90
91 private ENIValidator eniValidator;
92
93
94
95
96
97 private XMLValidationThread(ENIValidator eniValidator){
98 this.eniValidator = eniValidator;
99 }
100
101
102
103
104
105 @Override
106 public void run() {
107 try{
108
109 String xmlContent = eniValidator.getXmlContentTextarea().getText();
110
111
112 if(xmlContent==null || "".equals(xmlContent)){
113 String emptyXml = MessagesHelper.getText("eni.empty.xml.message");
114 addValidationMessage(emptyXml, eniValidator);
115 }else{
116 String filePath = eniValidator.getFile()!=null && eniValidator.getParentFile()!=null? eniValidator.getParentFile().getAbsolutePath() : "";
117 ValidationXmlResult validationXmlResult = ENIXmlUtils.validateWithExtXSD(xmlContent, filePath);
118
119 addValidationMessage(validationXmlResult, eniValidator);
120 }
121 eniValidator.repaint();
122 }catch (IOException ioe) {
123 log.error(ExceptionUtils.stackTraceToString(ioe));
124 JOptionPane.showMessageDialog(eniValidator,
125 MessagesHelper.getText("eni.load.xml.error.message"),
126 MessagesHelper.getText("eni.load.xml.error.title"),
127 JOptionPane.ERROR_MESSAGE);
128 }
129 }
130 }
131 }