View Javadoc

1   /***
2    * Java DAB EPG API - Serialize/Deserialize To/From POJOs to XML/Binary as per
3    * ETSI specifications TS 102 818 (XML Specification for DAB EPG) and TS 102 
4    * 371 (Transportation and Binary Encoding Specification for EPG).
5    * 
6    * Copyright (C) 2007 GCap Media PLC
7    *
8    * This library is free software; you can redistribute it and/or
9    * modify it under the terms of the GNU Lesser General Public
10   * License as published by the Free Software Foundation; either
11   * version 2.1 of the License, or (at your option) any later version.
12   *
13   * This library is distributed in the hope that it will be useful,
14   * but WITHOUT ANY WARRANTY; without even the implied warranty of
15   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16   * Lesser General Public License for more details.
17   *
18   * You should have received a copy of the GNU Lesser General Public
19   * License along with this library; if not, write to the Free Software
20   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
21   */
22  package com.gcapmedia.dab.epg.binary;
23  
24  import java.io.UnsupportedEncodingException;
25  
26  /***
27   * String data using ISO/IEC 10646 with UTF-8 encoding.
28   * 
29   * TODO The ISO/IEC 10646 characters 0xE000 to xF8FF shall not be
30   * included within any binary encoded strings.
31   */
32  public class StringType implements Encodable {
33  
34  	/***
35  	 * Content value
36  	 */
37  	private String value;
38  	
39  	/***
40  	 * String encoding
41  	 */
42  	private static final String charset = "UTF-8";
43  	
44  	/***
45  	 * Create a new string type
46  	 * @param value Content value
47  	 */
48  	public StringType(String value) {
49  		this.value = value;
50  	}
51  	
52  	/***
53  	 * @see com.gcapmedia.dab.epg.binary.Encodable#getBytes()
54  	 */
55  	public byte[] getBytes() {
56  		try {
57  			return value.getBytes(charset);
58  		} catch (UnsupportedEncodingException e) {
59  			throw new IllegalArgumentException("Requested character set not supported: " + charset);
60  		}
61  	}
62  	
63  	/***
64  	 * Parse a string type from its byte array representation
65  	 */
66  	public static StringType fromBytes(byte[] bytes) {
67  		StringType result = null;
68  		try {
69  			result = new StringType(new String(bytes, charset));
70  		} catch (UnsupportedEncodingException e) {
71  			throw new IllegalArgumentException("Requested character set not supported: " + charset);
72  		}
73  		return result;
74  	}
75  
76  	/***
77  	 * @see com.gcapmedia.dab.epg.binary.Encodable#getLength()
78  	 */
79  	public int getLength() {
80  		return getBytes().length;
81  	}
82  	
83  	/***
84  	 * @see java.lang.Object#toString()
85  	 */
86  	public String toString() {
87  		return value;
88  	}
89  
90  	/***
91  	 * @see java.lang.Object#equals(java.lang.Object)
92  	 */
93  	@Override
94  	public boolean equals(Object obj) {
95  		if(!(obj instanceof StringType)) {
96  			return false;
97  		}
98  		StringType that = (StringType)obj;
99  		return this.value.equals(that.value);
100 	}
101 	
102 	
103 
104 }