CVS: jfor/src/org/jfor/jfor/converter Converter.java,1.13,1.14 ConverterLogChannel.java,1.3,1.4 TextBuilder.java,1.5,1.6

Bertrand Delacretaz <[email protected]> Tue, 24 Sep 2002 03:12:13 -0700
Newsgroups gmane.text.xml.jfor.cvs
Message-ID <[email protected]>
Update of /cvsroot/jfor/jfor/src/org/jfor/jfor/converter
In directory usw-pr-cvs1:/tmp/cvs-serv14993/src/org/jfor/jfor/converter

Modified Files:
	Converter.java ConverterLogChannel.java TextBuilder.java 
Log Message:
 V0.7.2dev-e - uses Apache logkit for more precise and configurable logging

Index: Converter.java
===================================================================
RCS file: /cvsroot/jfor/jfor/src/org/jfor/jfor/converter/Converter.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** Converter.java	17 Sep 2002 12:21:23 -0000	1.13
--- Converter.java	24 Sep 2002 10:12:11 -0000	1.14
***************
*** 8,11 ****
--- 8,13 ----
  import org.jfor.jfor.main.JForVersionInfo;
  import org.jfor.jfor.tools.DomToSaxAdapter;
+ import org.apache.log.Hierarchy; 
+ import org.apache.log.Logger; 
  
  /*-----------------------------------------------------------------------------
***************
*** 72,75 ****
--- 74,80 ----
  // $Id$
  // $Log$
+ // Revision 1.14  2002/09/24 10:12:11  bdelacretaz
+ //  V0.7.2dev-e - uses Apache logkit for more precise and configurable logging
+ //
  // Revision 1.13  2002/09/17 12:21:23  bdelacretaz
  // V0.7.2dev-c - extraneous stdout/stderr output removed
***************
*** 142,147 ****
  extends DefaultHandler {
  
- 	private boolean m_debugSaxEvents=false;
- 
  	/** used to process text nodes */
  	private StringBuffer m_characterBuffer=new StringBuffer();
--- 147,150 ----
***************
*** 158,164 ****
  	private final IConverterOption m_options;
  
! 	/** log channel */
  	private final ConverterLogChannel m_log;
  
  	/** List of IBuilders in priority order */
  	private final List m_builders = new LinkedList();
--- 161,173 ----
  	private final IConverterOption m_options;
  
! 	/** "old" jfor log channel */
  	private final ConverterLogChannel m_log;
+     
+     /** logkit channel used to debug which Builders are used to process the input */
+     private static final Logger m_builderLog = Hierarchy.getDefaultHierarchy().getLoggerFor("jfor").getChildLogger("converter").getChildLogger("builder").getChildLogger("actions");
  
+     /** logkit channel used to debug SAX events */
+     private static final Logger m_saxLog = Hierarchy.getDefaultHierarchy().getLoggerFor("jfor").getChildLogger("converter").getChildLogger("sax").getChildLogger("events");
+     
  	/** List of IBuilders in priority order */
  	private final List m_builders = new LinkedList();
***************
*** 270,296 ****
  	}
  
! 
! 	/** print sax events */
! 	private void debugSaxEvents(String localName,String rawName, Attributes attrs,boolean start) {
! 		if (rawName==null) rawName="null";
! 		if (attrs!=null) {
! 			if (start) {
! 				for (int i = 0; i<attrs.getLength(); i++) {
! 					System.out.println ("     "+attrs.getLocalName(i)+"-"+attrs.getValue(i));
! 				}
  			}
  		}
  	}
  
- 
- 
  	/* Parser calls this for each element in a document */
  	public void startElement(String namespaceURI,String localName,String rawName, Attributes attrs)
  	throws SAXException {
  		maybeProcessCharacters();
  
- 		if(m_debugSaxEvents) debugSaxEvents(localName,rawName,attrs,true);
- 
- 
  		// find appropriate builder
  		IBuilder newBuilder = null;
--- 279,312 ----
  	}
  
! 	/** write sax events to m_saxLog if it is enabled */
! 	private void logSaxEvent(String what,String localName,String rawName, Attributes attrs) {
!         if(!m_saxLog.isDebugEnabled()) return;
!         
!         final StringBuffer sb = new StringBuffer();
!         sb.append(what);
!         sb.append(": localName:");
!         sb.append(localName);
!         sb.append(", rawName:");
!         sb.append(rawName);
!         sb.append(", attributes:{");
! 		if(attrs!=null) {
!             for (int i = 0; i<attrs.getLength(); i++) {
!                 sb.append(attrs.getLocalName(i));
!                 sb.append("=");
!                 sb.append(attrs.getValue(i));
!                 sb.append(",");
  			}
  		}
+         sb.append("}");
+         
+         m_saxLog.debug(sb.toString());
  	}
  
  	/* Parser calls this for each element in a document */
  	public void startElement(String namespaceURI,String localName,String rawName, Attributes attrs)
  	throws SAXException {
+         if(m_saxLog.isDebugEnabled()) logSaxEvent("startElement",localName,rawName,attrs);
  		maybeProcessCharacters();
  
  		// find appropriate builder
  		IBuilder newBuilder = null;
***************
*** 314,322 ****
  		if(newBuilder == null) throw new SAXException("no builder found for element '" + rawName + "'");
  		m_builder = newBuilder;
  		m_context.pushBuilder(m_builder);
  
  		//  let current builder process the element
  		try {
- 
  			m_builder.preStart(rawName,attrs);
  			m_builder.start(rawName,attrs);
--- 330,340 ----
  		if(newBuilder == null) throw new SAXException("no builder found for element '" + rawName + "'");
  		m_builder = newBuilder;
+         if(m_builderLog.isDebugEnabled()) {
+             m_builderLog.debug("startElement (" + localName + "): using builder " + m_builder); 
+         }
  		m_context.pushBuilder(m_builder);
  
  		//  let current builder process the element
  		try {
  			m_builder.preStart(rawName,attrs);
  			m_builder.start(rawName,attrs);
***************
*** 329,335 ****
  	public void endElement(String namespaceURI, String localName,String rawName)
  	throws SAXException {
- 		if(m_debugSaxEvents) debugSaxEvents(localName,rawName,null,false);
- 		
  		maybeProcessCharacters();
  		try {
  			m_builder.end();
--- 347,355 ----
  	public void endElement(String namespaceURI, String localName,String rawName)
  	throws SAXException {
  		maybeProcessCharacters();
+         if(m_saxLog.isDebugEnabled()) logSaxEvent("endElement",localName,rawName,null);
+         if(m_builderLog.isDebugEnabled()) {
+             m_builderLog.debug("endElement (" + localName + "): using builder " + m_builder); 
+         }
  		try {
  			m_builder.end();
***************
*** 341,348 ****
--- 361,374 ----
  		// return to previous builder
  		m_builder = m_context.popBuilderAndGetPreviousOne();
+         if(m_builderLog.isDebugEnabled()) {
+             m_builderLog.debug("endElement: back to builder " + m_builder); 
+         }
  	}
  
  	/** Parser calls this to process text nodes */
  	public void characters(char ch[], int start, int length) {
+         if(m_saxLog.isDebugEnabled()) {
+             m_saxLog.debug("characters:" + toPrintableChars(new String(ch,start,length)));
+         }
  		m_characterBuffer.append(ch,start,length);	
  	}
***************
*** 352,355 ****
--- 378,384 ----
  	throws SAXException {
  		try {
+             if(m_builderLog.isDebugEnabled()) {
+                 m_builderLog.debug("processCharacters: using builder " + m_builder + " (chars=" + toPrintableChars(txt) + ")"); 
+             }
  			if(m_builder!=null) m_builder.characters(txt);
  		} catch(IOException ioe) {
***************
*** 366,382 ****
  	}
  
- //	public void characters(char ch[], int start, int length)
- //	throws SAXException {
- //		try {
- //			final String txt = new String(ch,start,length);
- //			if(m_builder!=null) m_builder.characters(txt);
- //		} catch(IOException ioe) {
- //			throw new SAXException("IOException in IBuilder: " + ioe.toString());
- //		}
- //	}
- 
- 
  	/** Receive notification of the beginning of the document */
      public void startDocument()  throws SAXException {
      	maybeProcessCharacters();
      }
--- 395,403 ----
  	}
  
  	/** Receive notification of the beginning of the document */
      public void startDocument()  throws SAXException {
+         if(m_saxLog.isDebugEnabled()) {
+             m_saxLog.debug("startDocument)");
+         }
      	maybeProcessCharacters();
      }
***************
*** 385,389 ****
      public void endDocument() 
      throws SAXException {
!     	
      	maybeProcessCharacters();
      	
--- 406,412 ----
      public void endDocument() 
      throws SAXException {
!         if(m_saxLog.isDebugEnabled()) {
!             m_saxLog.debug("endDocument)");
!         }
      	maybeProcessCharacters();
      	
***************
*** 412,414 ****
--- 435,456 ----
  		return new ConverterOption (debug, info, warning, error);
  	}
+     
+     /** logging utility */
+     static String toPrintableChars(String input)
+     {
+         final String okChars = " .-:/,;{}[]()+\"'*%&?";
+         final StringBuffer sb = new StringBuffer();
+         for(int i=0; i  < input.length(); i++) {
+             final char c = input.charAt(i);
+             if(Character.isLetterOrDigit(c) || okChars.indexOf(c) >= 0) {
+                 sb.append(c);
+             } else {
+                 sb.append("&#");
+                 sb.append((int)c);
+                 sb.append(";");
+             }
+         }
+         return sb.toString();
+     }
+     
  }

Index: ConverterLogChannel.java
===================================================================
RCS file: /cvsroot/jfor/jfor/src/org/jfor/jfor/converter/ConverterLogChannel.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** ConverterLogChannel.java	12 Jul 2002 08:08:31 -0000	1.3
--- ConverterLogChannel.java	24 Sep 2002 10:12:11 -0000	1.4
***************
*** 2,5 ****
--- 2,7 ----
  
  import java.io.*;
+ import org.apache.log.Hierarchy; 
+ import org.apache.log.Logger; 
  
  /*-----------------------------------------------------------------------------
***************
*** 60,63 ****
--- 62,68 ----
  // $Id$
  // $Log$
+ // Revision 1.4  2002/09/24 10:12:11  bdelacretaz
+ //  V0.7.2dev-e - uses Apache logkit for more precise and configurable logging
+ //
  // Revision 1.3  2002/07/12 08:08:31  bdelacretaz
  // License changed to jfor Apache-style license
***************
*** 82,147 ****
  public class ConverterLogChannel
  {
! 	public static final String DEBUG_IDENT = "jfor.DEBUG:";
! 	public static final String INFO_IDENT = "jfor.INFO:";
! 	public static final String WARNING_IDENT = "jfor.WARNING:";
! 	public static final String ERROR_IDENT = "jfor.ERROR:";
! 
! 	private final Writer mDebugWriter;
! 	private final Writer mInfoWriter;
! 	private final Writer mWarningWriter;
! 	private final Writer mErrorwriter;
  
! 	/** build a log channel that logs to given Writer */
  	public ConverterLogChannel(Writer w)
  	{
- 		mDebugWriter = w;
- 		mInfoWriter = w;
- 		mWarningWriter = w;
- 		mErrorwriter = w;
  	}
  
  	public ConverterLogChannel (Writer debugWriter, Writer infoWriter, Writer warningWriter, Writer errorWriter)
  	{
- 		mDebugWriter = debugWriter;
- 		mInfoWriter = infoWriter;
- 		mWarningWriter = warningWriter;
- 		mErrorwriter = errorWriter;
- 	}
- 
- 	private void doLog(String msg,String str, Writer writer)
- 	{
- 		if (writer == null)
- 			return;
- 
- 		try {
- 			synchronized(writer) {
- 				writer.write(msg);
- 				writer.write(str);
- 				writer.write('\n');
- 				writer.flush();
- 			}
- 		} catch(IOException ioe) {
- 			// ignore
- 		}
  	}
  
  	public void logDebug(String str)
  	{
! 		doLog(DEBUG_IDENT,str, mDebugWriter);
  	}
  
  	public void logInfo(String str)
  	{
! 		doLog(INFO_IDENT,str, mInfoWriter);
  	}
  
  	public void logWarning(String str)
  	{
! 		doLog(WARNING_IDENT,str, mWarningWriter);
  	}
  
  	public void logError(String str)
  	{
! 		doLog(ERROR_IDENT,str, mErrorwriter);
  	}
  }
--- 87,125 ----
  public class ConverterLogChannel
  {
!     private static final Logger m_logger = Hierarchy.getDefaultHierarchy().getLoggerFor("jfor").getChildLogger("converter").getChildLogger("MainLog");
  
!     static {
!         // make sure the logging system is configured
!         org.jfor.jfor.main.JForLogConfig.configure();
!     }
!     
! 	/** @param w ignored, using log4j configuration */
  	public ConverterLogChannel(Writer w)
  	{
  	}
  
+ 	/** all parameters ignored, using log4j configuration */
  	public ConverterLogChannel (Writer debugWriter, Writer infoWriter, Writer warningWriter, Writer errorWriter)
  	{
  	}
  
  	public void logDebug(String str)
  	{
!         m_logger.debug(str);
  	}
  
  	public void logInfo(String str)
  	{
! 		m_logger.info(str);
  	}
  
  	public void logWarning(String str)
  	{
! 		m_logger.warn(str);
  	}
  
  	public void logError(String str)
  	{
! 		m_logger.error(str);
  	}
  }

Index: TextBuilder.java
===================================================================
RCS file: /cvsroot/jfor/jfor/src/org/jfor/jfor/converter/TextBuilder.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** TextBuilder.java	12 Jul 2002 08:08:31 -0000	1.5
--- TextBuilder.java	24 Sep 2002 10:12:11 -0000	1.6
***************
*** 62,65 ****
--- 62,68 ----
  // $Id$
  // $Log$
+ // Revision 1.6  2002/09/24 10:12:11  bdelacretaz
+ //  V0.7.2dev-e - uses Apache logkit for more precise and configurable logging
+ //
  // Revision 1.5  2002/07/12 08:08:31  bdelacretaz
  // License changed to jfor Apache-style license
***************
*** 107,110 ****
--- 110,128 ----
          m_attributes = cAttr == null ? null : (RtfAttributes)cAttr.clone();
          whitespaceConvert = false;
+     }
+     
+     /** debugging info */
+     public String toString()
+     {
+         final StringBuffer sb = new StringBuffer();
+         sb.append(super.toString());
+         if(m_container == null) {
+             sb.append(" (null IRtfTextContainer)");
+         } else {
+             sb.append(" (IRtfTextContainer=");
+             sb.append(m_container.toString());
+             sb.append(")");
+         }
+         return sb.toString();
      }
      



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf