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  import java.io.ByteArrayOutputStream;
22  import java.io.IOException;
23  import java.util.ArrayList;
24  import java.util.Iterator;
25  import java.util.List;
26  
27  /***
28   * @author christoph
29   */
30  public class TLVCollection {
31    private List tlvs;
32  
33    public TLVCollection() {
34      tlvs = new ArrayList();
35    }
36  
37    public void add(TLV tlv) {
38      this.tlvs.add(tlv);
39    }
40  
41    public TLV get(int index) {
42      return (TLV)tlvs.get(index);
43    }
44  
45    public TLV getSingle() {
46      return get(0);
47    }
48    
49    public boolean isSingle() {
50      return size() == 1;  
51    }
52    
53    public Iterator iterator() {
54      return tlvs.iterator();
55    }
56  
57    public TLVCollection getType(int type) {
58      TLVCollection returnValue = new TLVCollection();
59  
60      for (Iterator iter = tlvs.iterator(); iter.hasNext();) {
61        TLV tlv = (TLV)iter.next();
62  
63        if (tlv.getType() == type) {
64          returnValue.add(tlv);
65        }
66      }
67  
68      return returnValue;
69    }
70    
71    public int size() {
72      return tlvs.size();
73    }
74  
75    public int getLength() {
76      int returnValue = 0;
77  
78      for (Iterator iter = tlvs.iterator(); iter.hasNext();) {
79        TLV tlv = (TLV)iter.next();
80        returnValue += tlv.getLength();
81      }
82      return returnValue;
83    }
84  
85    public byte[] toByteArray() {
86      ByteArrayOutputStream out = new ByteArrayOutputStream();
87  
88      for (Iterator iter = tlvs.iterator(); iter.hasNext();) {
89        TLV tlv = (TLV)iter.next();
90  
91        try {
92          out.write(tlv.toByteArray());
93        } catch (IOException e) {
94          e.printStackTrace();
95        }
96      }
97  
98      return out.toByteArray();
99    }
100 }