View Javadoc

1   //////////////////////////////////////////////////////////////////////////////
2   // dexterIM - Instant Messaging Framework
3   // Copyright (C) 2003  Christoph Walcher
4   //
5   // This program is free software; you can redistribute it and/or modify
6   // it under the terms of the GNU General Public License as published by
7   // the Free Software Foundation; either version 2 of the License, or
8   // (at your option) any later version.
9   //
10  // This program is distributed in the hope that it will be useful,
11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  // GNU General Public License for more details.
14  //
15  // You should have received a copy of the GNU General Public License
16  // along with this program; if not, write to the Free Software
17  // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  //////////////////////////////////////////////////////////////////////////////
19  package net.sf.dexterim.oscar.entity;
20  
21  /***
22   * @author christoph
23   * TODO Document
24   */
25  public class VariableByte implements ByteBased {
26  
27    private byte[] data;
28    
29    /***
30     * @param value
31     */
32    public VariableByte(String data) {
33      this.data = data.getBytes();
34    }
35  
36    /***
37     * @param value
38     */
39    public VariableByte(byte[] data) {
40      this.data = data;
41    }
42    
43  
44    /***
45     * @param value
46     */
47    public VariableByte(int[] data) {
48      this.data = new byte[data.length];
49      
50      for (int i=0; i<data.length; i++) {
51        this.data[i] = (byte)data[i];
52      }
53    }
54    
55    /* 
56     * @see net.sf.dexterim.oscar.entity.ByteBase#getLength()
57     * TODO Document
58     */
59    public int getLength() {
60      return data.length;
61    }
62  
63    /* Copies the array. Unefficient but leaves Type immutable.
64     * @see net.sf.dexterim.oscar.entity.ByteBased#toByteArray()
65     */
66    public byte[] toByteArray() {
67      byte returnValue[] = new byte[data.length];
68      
69      System.arraycopy(data, 0, returnValue, 0, data.length);
70      
71      return returnValue;
72    }
73  
74    public String toString() {
75    	StringBuffer builder = new StringBuffer();
76    	
77    	builder.append("[Variable Bytes ");
78    	builder.append(new String(this.data));
79    	builder.append("]");
80    	
81    	return builder.toString();
82    }
83  }