Coverage report

  %line %branch
tsukuba_bunko.resource.ListDeserializer
73% 
58% 

 1  
 /*
 2  
  * Common Library for TBAS Softwares
 3  
  * Language: Java
 4  
  *
 5  
  * All Rights Reserved.
 6  
  * (c) Copyright 2002 by Tsukuba Bunko.
 7  
  *
 8  
  * $Id: ListDeserializer.java,v 1.1 2005/07/11 12:49:18 ppoi Exp $
 9  
  */
 10  
 package tsukuba_bunko.resource;
 11  
 
 12  
 import	java.util.List;
 13  
 
 14  
 import	org.xml.sax.Attributes;
 15  
 import	org.xml.sax.ContentHandler;
 16  
 import	org.xml.sax.SAXException;
 17  
 
 18  
 
 19  
 /**
 20  
  * List 構造を取得する <code>ValueDescerializer</code> です.
 21  
  * @author	$Author: ppoi $
 22  
  */
 23  
 public class ListDeserializer	extends BasicDeserializer	{
 24  
 
 25  
 	/**
 26  
 	 * リスト
 27  
 	 */
 28  160
 	private	List	_list = null;
 29  
 
 30  
 	/**
 31  
 	 * 要素を解析するための ResourceDeserializer
 32  
 	 */
 33  160
 	private ResourceDeserializer	_itemDeserializer = null;
 34  
 
 35  
 	/**
 36  
 	 * 要素を解析するための ContentHandler
 37  
 	 */
 38  160
 	private ContentHandler	_itemHandler = null;
 39  
 
 40  
 	/**
 41  
 	 * リスト要素のデータ型
 42  
 	 */
 43  160
 	private String	_itemType = null;
 44  
 
 45  
 	/**
 46  
 	 * レベル
 47  
 	 */
 48  160
 	private int	_level = 0;
 49  
 
 50  
 
 51  
 	/**
 52  
 	 * <code>ListDeserializer</code> のインスタンスを作成します.
 53  
 	 */
 54  
 	public ListDeserializer()
 55  
 	{
 56  160
 		super();
 57  160
 	}
 58  
 
 59  
 
 60  
 //
 61  
 //	BasicDeserialzier の実装
 62  
 //
 63  
 	public void setTypeName( String typeName )
 64  
 	{
 65  160
 		super.setTypeName( typeName );
 66  160
 		int	index = typeName.indexOf( '/' );
 67  160
 		if( index == -1 )	{
 68  0
 			throw new IllegalArgumentException( "illegal list item type. \"" + typeName + "\"" );
 69  
 		}
 70  
 		else	{
 71  160
 			_itemType = typeName.substring( index + 1 );
 72  
 		}
 73  160
 	}
 74  
 
 75  
 
 76  
 //
 77  
 //	ContentHandler の実装
 78  
 //
 79  
 	public void startDocument()
 80  
 	{
 81  30
 		_list = null;
 82  30
 		_level = 0;
 83  30
 	}
 84  
 
 85  
 	public void endDocument()
 86  
 	{
 87  20
 		setValue( _list );
 88  20
 		_list = null;
 89  20
 	}
 90  
 
 91  
 	public void startPrefixMapping( String namespaceURI, String prefix )
 92  
 		throws SAXException
 93  
 	{
 94  0
 		if( _itemHandler != null )	{
 95  0
 			_itemHandler.startPrefixMapping( namespaceURI, prefix );
 96  
 		}
 97  0
 	}
 98  
 
 99  
 	public void endPrefixMapping( String namespaceURI )
 100  
 		throws SAXException
 101  
 	{
 102  0
 		if( _itemHandler != null )	{
 103  0
 			_itemHandler.endPrefixMapping( namespaceURI );
 104  
 		}
 105  0
 	}
 106  
 
 107  
 	public void startElement( String namespaceURI, String localName, String qName, Attributes attrs )
 108  
 		throws SAXException
 109  
 	{
 110  110
 		if( _list == null )	{
 111  30
 			_list = new java.util.ArrayList();
 112  30
 			_itemDeserializer = _mapping.getResourceDeserializer( _itemType );
 113  30
 			if( _itemDeserializer == null )	{
 114  0
 				throw new SAXException( "no deserializer for \"" + _itemType + "\"" );
 115  
 			}
 116  
 		}
 117  80
 		else if( _itemHandler == null )	{
 118  75
 			if( localName.equals("item") )	{
 119  70
 				_level++;
 120  70
 				_itemHandler = _itemDeserializer;
 121  70
 				_itemHandler.startElement( namespaceURI, localName, qName, attrs );
 122  70
 			}
 123  
 			else	{
 124  5
 				throw new SAXException( "illegal structure. : non-item element \"" + qName + "\"" );
 125  
 			}
 126  
 		}
 127  
 		else	{
 128  5
 			_level++;
 129  5
 			_itemHandler.startElement( namespaceURI, localName, qName, attrs );
 130  
 		}
 131  100
 	}
 132  
 
 133  
 	public void endElement( String namespaceURI, String localName, String qName )
 134  
 		throws SAXException
 135  
 	{
 136  
 		try	{
 137  90
 		if( _itemHandler != null )	{
 138  70
 			_level--;
 139  70
 			_itemHandler.endElement( namespaceURI, localName, qName );
 140  65
 			if( _level == 0 )	{
 141  65
 				_list.add( _itemDeserializer.getValue() );
 142  65
 				_itemHandler = null;
 143  
 			}
 144  
 		}
 145  5
 		}catch( Exception e	)	{
 146  5
 			e.printStackTrace();
 147  85
 		}
 148  90
 	}
 149  
 
 150  
 	public void processingInstruction( String target, String data )
 151  
 		throws SAXException
 152  
 	{
 153  0
 		if( _itemHandler != null )	{
 154  0
 			_itemHandler.processingInstruction( target, data );
 155  
 		}
 156  0
 	}
 157  
 
 158  
 	public void skippedEntity( String name )
 159  
 		throws SAXException
 160  
 	{
 161  0
 		if( _itemHandler != null )	{
 162  0
 			_itemHandler.skippedEntity( name );
 163  
 		}
 164  0
 	}
 165  
 
 166  
 	public void characters( char[] ch, int begin, class="keyword">int length )
 167  
 		throws SAXException
 168  
 	{
 169  170
 		if( _itemHandler != null )	{
 170  75
 			_itemHandler.characters( ch, begin, length );
 171  
 		}
 172  170
 	}
 173  
 
 174  
 	public void ignorableWhitespace( char[] ch, int begin, class="keyword">int length )
 175  
 		throws SAXException
 176  
 	{
 177  0
 		if( _itemHandler != null )	{
 178  0
 			_itemHandler.ignorableWhitespace( ch, begin, length );
 179  
 		}
 180  0
 	}
 181  
 }

This report is generated by jcoverage, Maven and Maven JCoverage Plugin.