/**
  * Try to create a Location from inparam Exception, return null if inparam is not successfully
  * transformed.
  */
 public static Location newLocation(Exception e) {
   if (e instanceof SAXParseException) {
     return LocusTransformer.newLocation((SAXParseException) e);
   } else if (e instanceof CSSParseException) {
     return LocusTransformer.newLocation((CSSParseException) e);
   } else if (e instanceof FilesetFileException) {
     return LocusTransformer.newLocation((FilesetFileException) e);
   } else if (e instanceof TransformerException) {
     return LocusTransformer.newLocation((TransformerException) e);
   }
   return null;
 }
  public static Location newLocation(FilesetFileException ffe) {
    LocationImpl loc = new LocusTransformer().new LocationImpl();
    try {
      Throwable cause = ffe.getRootCause();
      if (cause == null) cause = ffe.getCause();

      Location innerLocation = null;
      if (cause instanceof CSSParseException) {
        innerLocation = LocusTransformer.newLocation((CSSParseException) cause);
      } else if (cause instanceof SAXParseException) {
        innerLocation = LocusTransformer.newLocation((SAXParseException) cause);
      }

      loc.setSystemId(ffe.getOrigin().getFile().toURI().toString());
      if (innerLocation != null) {
        loc.setLineNumber(innerLocation.getLineNumber());
        loc.setColumnNumber(innerLocation.getColumnNumber());
      }
    } catch (Exception e) {
    }

    return loc;
  }
 /*
  * (non-Javadoc)
  * @see org.w3c.dom.DOMErrorHandler#handleError(org.w3c.dom.DOMError)
  */
 public boolean handleError(DOMError error) {
   Location loc = LocusTransformer.newLocation(error.getLocation());
   MessageEvent.Type type = null;
   if (error.getSeverity() == DOMError.SEVERITY_WARNING) {
     type = MessageEvent.Type.WARNING;
   } else {
     type = MessageEvent.Type.ERROR;
   }
   this.sendMessage(error.getMessage(), type, MessageEvent.Cause.INPUT, loc);
   if (error.getSeverity() == DOMError.SEVERITY_WARNING) {
     return true;
   }
   return false;
 }