1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 }