EMMA Coverage Report (generated Tue Dec 18 20:38:46 CET 2007)
[all classes][cz.vutbr.feec.packets.rtcp]

COVERAGE SUMMARY FOR SOURCE FILE [SDESItem.java]

nameclass, %method, %block, %line, %
SDESItem.java100% (1/1)100% (13/13)67%  (212/317)81%  (46/57)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class SDESItem100% (1/1)100% (13/13)67%  (212/317)81%  (46/57)
setType (int): void 100% (1/1)40%  (6/15)73%  (2,2/3)
parse (byte [], int, int): int 100% (1/1)48%  (38/79)71%  (10/14)
generate (byte [], int): int 100% (1/1)51%  (45/89)69%  (9,6/14)
setText (String): void 100% (1/1)56%  (10/18)80%  (3,2/4)
<static initializer> 100% (1/1)88%  (7/8)87%  (0,9/1)
equals (Object): boolean 100% (1/1)95%  (36/38)88%  (7/8)
SDESItem (): void 100% (1/1)100% (12/12)100% (4/4)
getLengthOctets (): int 100% (1/1)100% (4/4)100% (1/1)
getText (): String 100% (1/1)100% (3/3)100% (1/1)
getTextLength (): int 100% (1/1)100% (4/4)100% (1/1)
getType (): int 100% (1/1)100% (3/3)100% (1/1)
hashCode (): int 100% (1/1)100% (22/22)100% (3/3)
toString (): String 100% (1/1)100% (22/22)100% (3/3)

1package cz.vutbr.feec.packets.rtcp;
2 
3import cz.vutbr.feec.packets.IPacket;
4import cz.vutbr.feec.packets.PacketGenerateException;
5import cz.vutbr.feec.packets.PacketParseException;
6import cz.vutbr.feec.packets.PacketUtils;
7import org.apache.commons.lang.builder.ToStringBuilder;
8import org.apache.commons.lang.builder.EqualsBuilder;
9import org.apache.commons.lang.builder.HashCodeBuilder;
10 
11/**
12 * This class encapsulates all the necessary parameters of a SDES Item that
13 * needs to be handed to the Application when a SDES Packet is received.
14 */
15public class SDESItem implements IPacket {
16 
17        public int generate(byte[] buffer, int offset)
18                        throws PacketGenerateException {
19                assert getType() > 0 && getType() < 8; 
20                assert PacketUtils.checkSize(getType(), 8);
21                assert PacketUtils.checkSize(getLengthOctets(), 8);
22                assert PacketUtils.checkSize(getText().getBytes().length,
23                                getTextLength());
24 
25                int len = 0;
26                PacketUtils.setOctet1(buffer, offset + len, getType());
27                len++;
28                PacketUtils.setOctet1(buffer, offset + len, getLengthOctets());
29                len++;
30                PacketUtils.setOctets(buffer, offset + len, getText(),
31                                getTextLength());
32                
33                // TODO overit zdali funguje spravne
34                len += getLengthOctets();
35                return len;
36        }
37 
38        public int parse(byte[] buffer, int offset, int length)
39                        throws PacketParseException {
40                int len = 0;
41                setType(PacketUtils.getOctet1(buffer, offset + len));
42                len++;
43                textLength = PacketUtils.getOctet1(buffer, offset + len);
44                len++;
45                if(type == PRIV) {
46                        this.prefixLength = PacketUtils.getOctet1(buffer, offset+len);
47                        for(int i=0; i<prefixLength; ++i){
48                                text += (char)buffer[len + offset + i]; 
49                        }
50                        len += 1 + prefixLength;
51                }
52                setText(PacketUtils.getOctets(buffer, offset + len,
53                                textLength));
54                len = len + textLength;
55 
56                return len;
57        }
58 
59        /** The Constant END. */
60        final static public int END = 0;
61 
62        /** The Constant CNAME. */
63        final static public int CNAME = 1;
64 
65        /** The Constant NAME. */
66        final static public int NAME = 2;
67 
68        /** The Constant EMAIL. */
69        final static public int EMAIL = 3;
70 
71        /** The Constant PHONE. */
72        final static public int PHONE = 4;
73 
74        /** The Constant LOC. */
75        final static public int LOC = 5;
76 
77        /** The Constant TOOL. */
78        final static public int TOOL = 6;
79 
80        /** The Constant NOTE. */
81        final static public int NOTE = 7;
82 
83        /** The Constant PRIV. */
84        final static public int PRIV = 8;
85 
86        /** The type. */
87        private int type = -1;
88 
89        /** The text length. */
90        private int textLength;
91 
92        /** The prefix length. */
93        private int prefixLength;
94 
95        /** The text. */
96        private String text = "";
97 
98        /** The prefix text. */
99        private String prefixText = "";
100 
101        /**
102         * Gets the length octets.
103         * 
104         * @return length of packet (aligned to 32 bits)
105         */
106        public int getLengthOctets() {
107                // header (SSRC+TYPE+LEN)
108                // text char = 1 octet
109                // prvni dva bytey se dle rfc neberou v potaz
110                return text.length();
111        }
112 
113        /**
114         * Gets the text length.
115         * 
116         * @return the text length
117         */
118        public int getTextLength() {
119                return text.length();
120        }
121 
122        /**
123         * Gets the text.
124         * 
125         * @return the text
126         */
127        public String getText() {
128                return text;
129        }
130 
131        /**
132         * String needs to be not longer than 255 characters.
133         * 
134         * @param text
135         *            the text
136         */
137        public void setText(String text) {
138                // max. 255 chars
139                assert (text.length() <= 255);
140                this.textLength = text.length();
141                this.text = text;
142        }
143 
144        /**
145         * Gets the type.
146         * 
147         * @return the type
148         */
149        public int getType() {
150                return type;
151        }
152 
153        /**
154         * Sets the type.
155         * 
156         * @param type
157         *            the type
158         */
159        public void setType(int type) {
160                assert type > 0 && type < 8;
161                this.type = type;
162        }
163 
164        /**
165         * @see java.lang.Object#toString()
166         */
167        public String toString() {
168                return new ToStringBuilder(this).append("text", this.text).append(
169                                "type", this.type).append("textLength", this.textLength)
170                                .append("lengthOctets", this.getLengthOctets()).toString();
171        }
172 
173        /**
174         * @see java.lang.Object#equals(Object)
175         */
176        public boolean equals(Object object) {
177                if (!(object instanceof SDESItem)) {
178                        return false;
179                }
180                SDESItem rhs = (SDESItem) object;
181                return new EqualsBuilder().append(this.text, rhs.text)
182                                .append(this.textLength, rhs.textLength).append(this.type,
183                                                rhs.type).append(this.prefixLength, rhs.prefixLength)
184                                                .append(this.prefixText, rhs.prefixText)
185                                .isEquals();
186        }
187 
188        /**
189         * @see java.lang.Object#hashCode()
190         */
191        public int hashCode() {
192                return new HashCodeBuilder(1034310855, -1906885237).append(this.prefixText).append(this.text)
193                                .append(this.textLength).append(this.type).append(
194                                                this.prefixLength).toHashCode();
195        }
196        
197        
198}

[all classes][cz.vutbr.feec.packets.rtcp]
EMMA 2.0.5312 EclEmma Fix 1 (C) Vladimir Roubtsov