34 import org.w3c.css.properties.PropertiesLoader; |
34 import org.w3c.css.properties.PropertiesLoader; |
35 import org.w3c.css.util.ApplContext; |
35 import org.w3c.css.util.ApplContext; |
36 import org.w3c.css.util.Warning; |
36 import org.w3c.css.util.Warning; |
37 |
37 |
38 public class CssBuildValidator extends AbstractValidator { |
38 public class CssBuildValidator extends AbstractValidator { |
|
39 @Override |
|
40 public ValidationResult validate(IResource resource, int kind, ValidationState state, IProgressMonitor monitor) { |
|
41 return main(resource.getLocationURI().toString(), resource); |
|
42 } |
39 |
43 |
40 @Override |
44 public ValidationResult main(String uri, IResource resource) { |
41 public ValidationResult validate(IResource resource, int kind, |
45 String language = "en"; |
42 ValidationState state, IProgressMonitor monitor) { |
46 String profile = "css3"; // css2, css21 (default), css3, svg, svgbasic, |
43 return main(resource.getLocationURI().toString(), resource); |
47 // svgtiny, atsc-tv, mobile, tv |
44 } |
48 String medium = ""; // (default), aural, braille, embossed, |
|
49 // handheld, print, projection, screen, |
|
50 // tty, tv, presentation |
|
51 int warningLevel = 2; // -1 (no warning), 0, 1, 2 (default, all the |
|
52 // warnings) |
45 |
53 |
46 public ValidationResult main(String uri, IResource resource) { |
54 // first, we get the parameters and create an application context |
47 String language = "en"; |
55 ApplContext ac = new ApplContext(language); |
48 String profile = "css3"; // css2, css21 (default), css3, svg, svgbasic, |
|
49 // svgtiny, atsc-tv, mobile, tv |
|
50 String medium = ""; // (default), aural, braille, embossed, |
|
51 // handheld, print, projection, screen, |
|
52 // tty, tv, presentation |
|
53 int warningLevel = 2; // -1 (no warning), 0, 1, 2 (default, all the |
|
54 // warnings) |
|
55 |
56 |
56 // first, we get the parameters and create an application context |
57 if (profile != null && !"none".equals(profile)) { |
57 ApplContext ac = new ApplContext(language); |
58 if ("css1".equals(profile) || "css2".equals(profile) || "css21".equals(profile) || "css3".equals(profile) |
|
59 || "svg".equals(profile) || "svgbasic".equals(profile) || "svgtiny".equals(profile)) { |
|
60 ac.setCssVersion(profile); |
|
61 } else { |
|
62 ac.setProfile(profile); |
|
63 ac.setCssVersion(PropertiesLoader.config.getProperty("defaultProfile")); |
|
64 } |
|
65 } else { |
|
66 ac.setProfile(profile); |
|
67 ac.setCssVersion(PropertiesLoader.config.getProperty("defaultProfile")); |
|
68 } |
58 |
69 |
59 if (profile != null && !"none".equals(profile)) { |
70 // medium to use |
60 if ("css1".equals(profile) || "css2".equals(profile) |
71 ac.setMedium(medium); |
61 || "css21".equals(profile) || "css3".equals(profile) |
|
62 || "svg".equals(profile) || "svgbasic".equals(profile) |
|
63 || "svgtiny".equals(profile)) { |
|
64 ac.setCssVersion(profile); |
|
65 } else { |
|
66 ac.setProfile(profile); |
|
67 ac.setCssVersion(PropertiesLoader.config |
|
68 .getProperty("defaultProfile")); |
|
69 } |
|
70 } else { |
|
71 ac.setProfile(profile); |
|
72 ac.setCssVersion(PropertiesLoader.config |
|
73 .getProperty("defaultProfile")); |
|
74 } |
|
75 |
72 |
76 // medium to use |
73 // HTML document |
77 ac.setMedium(medium); |
74 try { |
|
75 DocumentParser urlParser = new DocumentParser(ac, uri); |
78 |
76 |
79 // HTML document |
77 return handleRequest(ac, uri, urlParser.getStyleSheet(), warningLevel, true, resource); |
80 try { |
78 } catch (Exception e) { |
81 DocumentParser URLparser = new DocumentParser(ac, uri); |
79 Activator.log(e); |
|
80 } |
|
81 return null; |
|
82 } |
82 |
83 |
83 return handleRequest(ac, uri, URLparser.getStyleSheet(), |
84 private ValidationResult handleRequest(ApplContext ac, String title, StyleSheet styleSheet, int warningLevel, |
84 warningLevel, true, resource); |
85 boolean errorReport, IResource resource) throws Exception { |
85 } catch (Exception e) { |
|
86 Activator.log(e); |
|
87 } |
|
88 return null; |
|
89 } |
|
90 |
86 |
91 private ValidationResult handleRequest(ApplContext ac, String title, |
87 if (styleSheet == null) { |
92 StyleSheet styleSheet, int warningLevel, |
88 throw new IOException(ac.getMsg().getServletString("process") + " " + title); |
93 boolean errorReport, IResource resource) throws Exception { |
89 } |
94 |
90 |
95 if (styleSheet == null) { |
91 styleSheet.findConflicts(ac); |
96 throw new IOException(ac.getMsg().getServletString("process") + " " |
92 ValidationResult result = new ValidationResult(); |
97 + title); |
93 CssError[] errors = styleSheet.getErrors().getErrors(); |
98 } |
94 for (CssError cssError : errors) { |
|
95 String msg = cssError.getException().getLocalizedMessage(); |
|
96 if (msg != null && msg.trim().length() > 0) { |
|
97 ValidatorMessage message = createMessage(resource, cssError.getLine(), msg, IMarker.SEVERITY_WARNING); |
|
98 result.add(message); |
|
99 } |
|
100 } |
|
101 Warning[] warnings = styleSheet.getWarnings().getWarnings(); |
|
102 for (Warning warning : warnings) { |
|
103 ValidatorMessage message = createMessage(resource, warning.getLine(), warning.getWarningMessage(), |
|
104 IMarker.SEVERITY_WARNING); |
|
105 result.add(message); |
|
106 } |
|
107 return result; |
|
108 } |
99 |
109 |
100 styleSheet.findConflicts(ac); |
110 private ValidatorMessage createMessage(IResource resource, int line, String msg, int severity) { |
101 ValidationResult result = new ValidationResult(); |
111 ValidatorMessage message = ValidatorMessage.create(msg, resource); |
102 CssError[] errors = styleSheet.getErrors().getErrors(); |
112 message.setAttribute(IMarker.LINE_NUMBER, line); |
103 for (CssError cssError : errors) { |
113 message.setAttribute(IMarker.SEVERITY, severity); |
104 String msg = cssError.getException().getLocalizedMessage(); |
114 return message; |
105 if (msg != null && msg.trim().length() > 0) { |
115 } |
106 ValidatorMessage message = createMessage(resource, cssError |
|
107 .getLine(), msg, IMarker.SEVERITY_WARNING); |
|
108 result.add(message); |
|
109 } |
|
110 } |
|
111 Warning[] warnings = styleSheet.getWarnings().getWarnings(); |
|
112 for (Warning warning : warnings) { |
|
113 ValidatorMessage message = createMessage(resource, warning |
|
114 .getLine(), warning.getWarningMessage(), |
|
115 IMarker.SEVERITY_WARNING); |
|
116 result.add(message); |
|
117 } |
|
118 return result; |
|
119 } |
|
120 |
|
121 private ValidatorMessage createMessage(IResource resource, int line, |
|
122 String msg, int severity) { |
|
123 ValidatorMessage message = ValidatorMessage.create(msg, resource); |
|
124 message.setAttribute(IMarker.LINE_NUMBER, line); |
|
125 message.setAttribute(IMarker.SEVERITY, severity); |
|
126 return message; |
|
127 } |
|
128 } |
116 } |