~ubuntu-branches/ubuntu/utopic/libjaudiotagger-java/utopic

« back to all changes in this revision

Viewing changes to src/org/jaudiotagger/tag/id3/framebody/FrameBodyCRM.java

  • Committer: Bazaar Package Importer
  • Author(s): Varun Hiremath, Damien Raude-Morvan, Varun Hiremath
  • Date: 2009-04-01 19:17:56 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20090401191756-bygniim270guy7o1
Tags: 1.0.9-1
[ Damien Raude-Morvan ]
* New upstream release
* debian/watch: Use java.net repository (which contains new releases!)
* debian/control:
  - Build-Depends on default-jdk-builddep
  - Bump Standards-Version to 3.8.1 (no changes needed)
  - Change section to "java"
* debian/rules: use default-java as JAVA_HOME
* debina/orig-tar.{sh|excludes}: strip audio and others binary files from ZIP
* debian/build.xml:
  - compile with "nowarn" to keep build log readable
  - exclude LogFormatter from build (use com.sun classes)
* debian/ant.properties: new source directory is "src" in orig.tar.gz
* Add myself as Uploaders

[ Varun Hiremath ]
* Accept changes made by Damien Raude-Morvan (Closes: #522130)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
 *  @author : Paul Taylor
 
3
 *  @author : Eric Farng
 
4
 *
 
5
 *  Version @version:$Id: FrameBodyCRM.java,v 1.11 2008/07/21 10:45:42 paultaylor Exp $
 
6
 *
 
7
 *  MusicTag Copyright (C)2003,2004
 
8
 *
 
9
 *  This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
 
10
 *  General Public  License as published by the Free Software Foundation; either version 2.1 of the License,
 
11
 *  or (at your option) any later version.
 
12
 *
 
13
 *  This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
 
14
 *  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
15
 *  See the GNU Lesser General Public License for more details.
 
16
 *
 
17
 *  You should have received a copy of the GNU Lesser General Public License along with this library; if not,
 
18
 *  you can get a copy from http://www.opensource.org/licenses/lgpl-license.php or write to the Free Software
 
19
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
20
 *
 
21
 * Description:
 
22
 *
 
23
 */
 
24
package org.jaudiotagger.tag.id3.framebody;
 
25
 
 
26
import org.jaudiotagger.tag.InvalidTagException;
 
27
import org.jaudiotagger.tag.datatype.ByteArraySizeTerminated;
 
28
import org.jaudiotagger.tag.datatype.DataTypes;
 
29
import org.jaudiotagger.tag.datatype.StringNullTerminated;
 
30
import org.jaudiotagger.tag.id3.ID3v22Frames;
 
31
 
 
32
import java.nio.ByteBuffer;
 
33
 
 
34
/**
 
35
 * Encrypted meta frame
 
36
 * <p/>
 
37
 * This frame contains one or more encrypted frames. This enables
 
38
 * protection of copyrighted information such as pictures and text, that
 
39
 * people might want to pay extra for. Since standardisation of such an
 
40
 * encryption scheme is beyond this document, all "CRM" frames begin with
 
41
 * a terminated string with a URL [URL] containing an email address, or a
 
42
 * link to a location where an email adress can be found, that belongs to
 
43
 * the organisation responsible for this specific encrypted meta frame.
 
44
 * <p/>
 
45
 * Questions regarding the encrypted frame should be sent to the
 
46
 * indicated email address. If a $00 is found directly after the 'Frame
 
47
 * size', the whole frame should be ignored, and preferably be removed.
 
48
 * The 'Owner identifier' is then followed by a short content description
 
49
 * and explanation as to why it's encrypted. After the
 
50
 * 'content/explanation' description, the actual encrypted block follows.
 
51
 * <p/>
 
52
 * When an ID3v2 decoder encounters a "CRM" frame, it should send the
 
53
 * datablock to the 'plugin' with the corresponding 'owner identifier'
 
54
 * and expect to receive either a datablock with one or several ID3v2
 
55
 * frames after each other or an error. There may be more than one "CRM"
 
56
 * frames in a tag, but only one with the same 'owner identifier'.
 
57
 * <p/>
 
58
 * Encrypted meta frame  "CRM"
 
59
 * Frame size            $xx xx xx
 
60
 * Owner identifier      <textstring> $00 (00)
 
61
 * Content/explanation   <textstring> $00 (00)
 
62
 * Encrypted datablock   <binary data>
 
63
 */
 
64
public class FrameBodyCRM extends AbstractID3v2FrameBody implements ID3v22FrameBody
 
65
{
 
66
    /**
 
67
     * Creates a new FrameBodyCRM datatype.
 
68
     */
 
69
    public FrameBodyCRM()
 
70
    {
 
71
        //        this.setObject(ObjectTypes.OBJ_OWNER, "");
 
72
        //        this.setObject(ObjectTypes.OBJ_DESCRIPTION, "");
 
73
        //        this.setObject("Encrypted datablock", new byte[0]);
 
74
    }
 
75
 
 
76
    public FrameBodyCRM(FrameBodyCRM body)
 
77
    {
 
78
        super(body);
 
79
    }
 
80
 
 
81
    /**
 
82
     * Creates a new FrameBodyCRM datatype.
 
83
     *
 
84
     * @param owner
 
85
     * @param description
 
86
     * @param data
 
87
     */
 
88
    public FrameBodyCRM(String owner, String description, byte[] data)
 
89
    {
 
90
        this.setObjectValue(DataTypes.OBJ_OWNER, owner);
 
91
        this.setObjectValue(DataTypes.OBJ_DESCRIPTION, description);
 
92
        this.setObjectValue(DataTypes.OBJ_ENCRYPTED_DATABLOCK, data);
 
93
    }
 
94
 
 
95
    /**
 
96
     * Creates a new FrameBodyCRM datatype.
 
97
     *
 
98
     * @throws InvalidTagException if unable to create framebody from buffer
 
99
     */
 
100
    public FrameBodyCRM(ByteBuffer byteBuffer, int frameSize) throws InvalidTagException
 
101
    {
 
102
        super(byteBuffer, frameSize);
 
103
    }
 
104
 
 
105
    /**
 
106
     * The ID3v2 frame identifier
 
107
     *
 
108
     * @return the ID3v2 frame identifier  for this frame type
 
109
     */
 
110
    public String getIdentifier()
 
111
    {
 
112
        return ID3v22Frames.FRAME_ID_V2_ENCRYPTED_FRAME;
 
113
    }
 
114
 
 
115
    /**
 
116
     * @return
 
117
     */
 
118
    public String getOwner()
 
119
    {
 
120
        return (String) getObjectValue(DataTypes.OBJ_OWNER);
 
121
    }
 
122
 
 
123
    /**
 
124
     * @param description
 
125
     */
 
126
    public void getOwner(String description)
 
127
    {
 
128
        setObjectValue(DataTypes.OBJ_OWNER, description);
 
129
    }
 
130
 
 
131
    /**
 
132
     *
 
133
     */
 
134
    protected void setupObjectList()
 
135
    {
 
136
        objectList.add(new StringNullTerminated(DataTypes.OBJ_OWNER, this));
 
137
        objectList.add(new StringNullTerminated(DataTypes.OBJ_DESCRIPTION, this));
 
138
        objectList.add(new ByteArraySizeTerminated(DataTypes.OBJ_ENCRYPTED_DATABLOCK, this));
 
139
    }
 
140
}