javauis/m2g_qt/javasrc/com/nokia/microedition/m2g/connection/file/M2GConnectionPolicyImpl.java
author hgs
Fri, 29 Oct 2010 11:49:32 +0300
changeset 87 1627c337e51e
parent 56 abc41079b313
permissions -rw-r--r--
v2.2.21_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     1
/*
87
1627c337e51e v2.2.21_1
hgs
parents: 56
diff changeset
     2
* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
56
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     3
* All rights reserved.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     8
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    11
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    12
* Contributors:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    13
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    14
* Description:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    15
*
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    16
*/
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    17
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    18
package com.nokia.microedition.m2g.connection.file;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    19
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    20
import java.io.IOException;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    21
import java.lang.NullPointerException;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    22
import java.lang.IllegalArgumentException;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    23
import java.lang.SecurityException;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    24
import com.nokia.microedition.m2g.connection.*;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    25
import com.nokia.microedition.m2g.M2GSVGConstants;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    26
import com.nokia.mj.impl.utils.Logger;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    27
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    28
/**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    29
 * Connection policy
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    30
 * <b>DRM - DECRYPTED MODE</b>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    31
 * <p>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    32
 * <b>Description</b>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    33
 * <br>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    34
 * When a MIDlet tries to open a file using a URL that starts with file:// and
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    35
 * ends either with ?drm=dec+display or with ?drm=dec+display+preview,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    36
 * this is interpreted as a request to open the file for reading of the
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    37
 * content in the plaintext form.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    38
 * Example URLs:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    39
 * file:///E:/foo.svg?drm=dec+display
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    40
 * file:///E:/foo.svg?drm=dec+display+preview
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    41
 * <br>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    42
 * Supported only if the midlet belongs to MANUFACTURER DOMAIN otherwise
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    43
 * java.lang.SecurityException is thrown.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    44
 * </p>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    45
 * <br>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    46
 * <br>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    47
 * <b>DRM - ENCRYPTED MODE</b>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    48
 * <p>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    49
 * <b>Description</b>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    50
 * <br>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    51
 * When a MIDlet tries to open a file using a URL that starts with file:// and
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    52
 * ends with ?drm=enc, this is interpreted as a request to open the
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    53
 * file for reading of the content in the encrypted form.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    54
 * Example URLs:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    55
 * file:///E:/foo.svg?drm=enc
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    56
 * <br>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    57
 * Not supported, java.lang.IllegalArgumentException is thrown always.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    58
 * </p>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    59
 * <br>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    60
 * <br>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    61
 * <b>DRM - DEFAULT MODE</b>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    62
 * <p>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    63
 * <b>Description</b>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    64
 * <br>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    65
 * When a MIDlet tries to open a file using either a normal file URL or a
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    66
 * file URL that ends with ?drm=preview, this is interpreted as a request to open the
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    67
 * file for reading of the content in the decrypted form.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    68
 * NOTE: Preview mechanism is not available to MIDlets that don't
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    69
 * belong to MANUFACTURER DOMAIN.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    70
 * Example URLs:
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    71
 * file:///E:/foo.svg
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    72
 * file:///E:/foo.svg?drm=preview
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    73
 * <br>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    74
 * Access to SVG document via DOM API is NOT allowed, i.e. only rendering of the
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    75
 * content is allowed if a MIDlet uses a default mode URL.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    76
 * If it's tryed to access to SVG document via DOM API then
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    77
 * java.lang.SecurityException is thrown.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    78
 * </p>
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    79
 */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    80
public class M2GConnectionPolicyImpl implements M2GConnectionPolicy
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    81
{
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    82
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    83
    // STATIC CONSTANTS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    84
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    85
    public static final String ENC_NOT_SUPPORTED_ESTR =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    86
        "A URL with an encrypted mode is not supported.";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    87
    public static final String DRM_PARAMETER =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    88
        "drm";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    89
    public static final String DECRYPTED_MODE =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    90
        "dec";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    91
    public static final String ENCRYPTED_MODE =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    92
        "enc";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    93
    public static final String DEFAULT_MODE =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    94
        "def";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    95
    public static final String DEFAULT_PREVIEW_MODE =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    96
        "def_preview";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    97
    public static final String DRM_PREVIEW_ATTRIBUTE =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    98
        "preview";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
    99
    public static final String DRM_DEFAULT_VALUES =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   100
        "?drm=dec+display";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   101
    public static final String DRM_DEFAULT_VALUES_AND_PREVIEW =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   102
        "?drm=dec+display+preview";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   103
    public static final String DRM_FILE_SUFFIX =
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   104
        "dcf";
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   105
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   106
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   107
    // VARIABLES
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   108
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   109
    private M2GUrlTokenizer iTokenizer;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   110
    private boolean iAccessRight = true;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   111
    private String iMode = null;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   112
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   113
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   114
    // METHODS
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   115
    //--------------------------------------------------
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   116
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   117
     * Ctor
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   118
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   119
    public M2GConnectionPolicyImpl(M2GUrlTokenizer aTokenizer)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   120
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   121
        iTokenizer = aTokenizer;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   122
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   123
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   124
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   125
     * Check domain
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   126
     * @throws SecurityException if not access rights
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   127
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   128
    public void checkDomain(boolean isManufacturerDomain) throws SecurityException
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   129
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   130
        Logger.LOG(Logger.EJavaUI, Logger.EInfo,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   131
                   "checkDomain(): manufacturer domain=" + isManufacturerDomain
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   132
                   + ", mode=" + iMode + ", access right=" + iAccessRight + " - begin");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   133
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   134
        // If drm mode then
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   135
        if (iMode != null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   136
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   137
            // If dec mode and not manufacturer domain
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   138
            if (iMode.equals(DECRYPTED_MODE))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   139
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   140
                if (!isManufacturerDomain)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   141
                {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   142
                    Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   143
                                "checkDomain() - Not manufacturer and dec: SecurityException");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   144
                    throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   145
                }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   146
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   147
            // If default + preview mode
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   148
            else if (iMode.equals(DEFAULT_PREVIEW_MODE))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   149
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   150
                if (!isManufacturerDomain)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   151
                {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   152
                    Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   153
                                "checkDomain() - Not manufacturer and def+preview: SecurityException");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   154
                    throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   155
                }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   156
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   157
            // If not default mode
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   158
            else if (!iMode.equals(DEFAULT_MODE))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   159
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   160
                Logger.ELOG(Logger.EJavaUI,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   161
                            "checkDomain() - Not def nor dec: SecurityException");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   162
                throw new SecurityException(M2GSVGConstants.ACCESS_RIGHTS_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   163
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   164
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   165
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   166
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   167
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   168
     * Check protection type
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   169
     * @param aType If type is null then file is not drm protected.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   170
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   171
    public void checkProtectionType(String aType)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   172
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   173
        Logger.LOG(Logger.EJavaUI, Logger.EInfo,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   174
                   "checkProtectionType() type=" + aType + ", mode=" + iMode +
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   175
                   ", access right=" + iAccessRight + " - begin");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   176
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   177
        if ((aType != null) && (!aType.equals("")))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   178
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   179
            if (iMode == null)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   180
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   181
                iMode = DEFAULT_MODE;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   182
                iAccessRight = false;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   183
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   184
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   185
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   186
        Logger.LOG(Logger.EJavaUI, Logger.EInfo,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   187
                   "checkProtectionType() mode=" + iMode + ", access right=" +
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   188
                   iAccessRight + " - end");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   189
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   190
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   191
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   192
       * Get access rights
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   193
       * @see M2GConnectionPolicy#getAccessRight()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   194
       */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   195
    public boolean getAccessRight()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   196
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   197
        return iAccessRight;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   198
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   199
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   200
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   201
       * Initialize
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   202
       * @param aTokenizer Tokenizer
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   203
       * @throws IllegalArgumentException if drm with encrypted mode
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   204
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   205
    public void initialize(M2GUrlTokenizer aTokenizer)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   206
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   207
        iAccessRight = true;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   208
        iMode = null; // no DRM at all
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   209
        iTokenizer = aTokenizer;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   210
        String parameters = iTokenizer.getParameters();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   211
        int pos = -1;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   212
        // Check if a url is something more than just a normal url.
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   213
        // Is the drm parameter within the parameters?
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   214
        if ((parameters != null) && (pos = parameters.indexOf(DRM_PARAMETER)) != 1)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   215
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   216
            pos += DRM_PARAMETER.length();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   217
            // Encrypted mode?
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   218
            if (parameters.indexOf(ENCRYPTED_MODE, pos) != -1)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   219
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   220
                Logger.ELOG(Logger.EJavaUI, "initialize(): drm - encrypted mode");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   221
                iAccessRight = false;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   222
                iMode = ENCRYPTED_MODE;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   223
                throw new IllegalArgumentException(ENC_NOT_SUPPORTED_ESTR);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   224
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   225
            // Decrypted mode?
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   226
            else if (parameters.indexOf(DECRYPTED_MODE, pos) != -1)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   227
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   228
                Logger.LOG(Logger.EJavaUI, Logger.EInfo,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   229
                           "initialize(): drm - decrypted mode");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   230
                iAccessRight = true;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   231
                iMode = DECRYPTED_MODE;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   232
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   233
            // Default + preview mode?
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   234
            else if (parameters.indexOf(DRM_PREVIEW_ATTRIBUTE, pos) != -1)
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   235
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   236
                Logger.LOG(Logger.EJavaUI, Logger.EInfo,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   237
                           "initialize(): drm - decrypted mode");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   238
                iAccessRight = false;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   239
                iMode = DEFAULT_PREVIEW_MODE;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   240
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   241
            // Default mode
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   242
            else
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   243
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   244
                Logger.LOG(Logger.EJavaUI, Logger.EInfo,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   245
                           "initialize(): drm - default mode");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   246
                iAccessRight = false;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   247
                iMode = DEFAULT_MODE;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   248
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   249
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   250
        Logger.LOG(Logger.EJavaUI, Logger.EInfo,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   251
                   "initialize() mode=" + iMode + ", access right="
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   252
                   + iAccessRight + " - end");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   253
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   254
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   255
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   256
     * Get drm mode
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   257
     * @return mode. Null if no drm
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   258
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   259
    public String getMode()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   260
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   261
        Logger.LOG(Logger.EJavaUI, Logger.EInfo,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   262
                   "getMode(): " + iMode + "- begin");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   263
        return iMode;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   264
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   265
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   266
    /**
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   267
     * Get url
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   268
     * @return File url
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   269
     */
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   270
    public String getUrl()
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   271
    {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   272
        Logger.LOG(Logger.EJavaUI, Logger.EInfo,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   273
                   "getUrl() mode=" + iMode + ", access right=" + iAccessRight + " - begin");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   274
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   275
        String url = iTokenizer.getUrl();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   276
        String parameters = iTokenizer.getParameters();
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   277
        // If normal url or default drm url
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   278
        if ((iMode == null) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   279
                (iMode.equals(DEFAULT_MODE)) ||
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   280
                (iMode.equals(DEFAULT_PREVIEW_MODE)))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   281
        {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   282
            Logger.LOG(Logger.EJavaUI, Logger.EInfo,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   283
                       "getUrl() parse default url");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   284
            // Url with preview attribute?
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   285
            if ((parameters != null) &&
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   286
                    (parameters.indexOf(DRM_PREVIEW_ATTRIBUTE) != -1))
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   287
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   288
                url = (iTokenizer.getBasePart() + DRM_DEFAULT_VALUES_AND_PREVIEW);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   289
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   290
            // Normal file url?
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   291
            else
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   292
            {
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   293
                // File API is able to open normal file without drm protection even
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   294
                // when the url contains the drm parameter
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   295
                url = (iTokenizer.getBasePart() + DRM_DEFAULT_VALUES);
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   296
            }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   297
        }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   298
        Logger.LOG(Logger.EJavaUI, Logger.EInfo,
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   299
                   "getUrl(): " + url + " - end");
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   300
        return url;
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   301
    }
abc41079b313 v2.2.7_1
hgs
parents:
diff changeset
   302
}