plugins/org.symbian.tools.wrttools/src/org/symbian/tools/wrttools/core/internal/validation/CssBuildValidator.java
changeset 484 f5df819c1852
parent 470 d4809db37847
equal deleted inserted replaced
483:109da596fa9d 484:f5df819c1852
    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 }