Android Open Source - SanDisk-HQME-SDK R U L E_ D O W N L O A D_ L I M I T






From Project

Back to project page SanDisk-HQME-SDK.

License

The source code is released under:

Apache License

If you think the Android project SanDisk-HQME-SDK listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/** 
* This reference code is an implementation of the IEEE P2200 standard.  It is not
* a contribution to the IEEE P2200 standard.
* // ww  w. j a  v  a 2 s . c  o  m
* Copyright (c) 2011 SanDisk Corporation.  All rights reserved.
* 
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use
* this file except in compliance with the License.  You may obtain a copy of the
* License at
* 
*        http://www.apache.org/licenses/LICENSE-2.0
* 
* Unless required by applicable law or agreed to in writing, software distributed
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied.
* 
* See the License for the specific language governing permissions and limitations
* under the License.
*/

package com.hqme.cm.core;

import android.content.Context;
import android.content.Intent;

import com.hqme.cm.util.CmClientUtil;

// The value is the limit, in bytes, that may be downloaded over a mobile network throughout the 
// duration of the QueueRequest.
public class RULE_DOWNLOAD_LIMIT extends RuleBase {
    // ==================================================================================================================================
    private static RULE_DOWNLOAD_LIMIT sRULE_DOWNLOAD_LIMIT_INSTANCE = new RULE_DOWNLOAD_LIMIT();

    @Override
    public void onReceive(Context arg0, Intent arg1) {
        // check the connectivity status - if connected to mobile, we care        
            super.onReceive(arg0, arg1);        
    }

    // ----------------------------------------------------------------------------------------------------------------------------------
    public static RULE_DOWNLOAD_LIMIT getInstance() {
        return sRULE_DOWNLOAD_LIMIT_INSTANCE;
    }

    // ==================================================================================================================================
    // Rule Evaluations - supporting specific pre-defined rules
    // ==================================================================================================================================

    @Override
    public boolean evaluateRule(Rule rule, WorkOrder wo) {
        
        if (RULE_CONNECTION_TYPE.isMobileSession()) {
            // only care if the download would be over the mobile network
            try {
                if (rule.getValue() != null) {                    
                    Integer totalBytes = Integer.parseInt(rule.getValue());
                    return withinLimit(totalBytes, wo);
                }
            } catch (Exception exec) {
                CmClientUtil.debugLog(getClass(), "evaluateRule", exec);
            }
        }

        return true;
    }

    public boolean withinLimit(int bytes, WorkOrder wo) {
        try {            
            long mobileBytes = 0L;
            long bytesRemaining = 0L;
            for (Package p : wo.getPackages()) {
                mobileBytes += p.getMobileDownloadBytes();
                // bytesRemaining only taken into account when the content size of a package that is part 
                // of the download is known. Otherwise, just check the current values                
                if (p.getContentSize() > 0)
                    bytesRemaining += p.getContentSize()
                        - p.getProgressBytes();
            }

            if ((long) (bytes) < (mobileBytes + bytesRemaining))
                return false;

        } catch (Exception fault) {
            CmClientUtil.debugLog(getClass(), "Mobile Download Limit", fault);
        }

        // if not exceeded return true
        return true;
    }

    @Override
    public void init(Context context) {
       
        super.init(context);
    }

    @Override
    public boolean isValid(String value) {

        if (value == null)
            return false;

        boolean parsed = false;
        try {
            Integer.parseInt(value);
            parsed = true;
        } catch (NumberFormatException exec) {
            CmClientUtil.debugLog(getClass(), "A rule specified does not exist", exec);
        } 
        
        return parsed;
    }
}




Java Source Code List

com.hqme.cm.Account.java
com.hqme.cm.EventsNotify.java
com.hqme.cm.HqmeError.java
com.hqme.cm.OriginACL.java
com.hqme.cm.Permission.java
com.hqme.cm.Property.java
com.hqme.cm.QueueRequestState.java
com.hqme.cm.ReqEvents.java
com.hqme.cm.VSDEvent.java
com.hqme.cm.VSDFunctionGroups.java
com.hqme.cm.VSDProperties.java
com.hqme.cm.cache.PlaybackTokens.java
com.hqme.cm.cache.StreamingServer.java
com.hqme.cm.cache.UntenCacheService.java
com.hqme.cm.cache.UntenMedia.java
com.hqme.cm.core.CmApplication.java
com.hqme.cm.core.DeviceDescription.java
com.hqme.cm.core.HQMEProvider.java
com.hqme.cm.core.HQME.java
com.hqme.cm.core.Package.java
com.hqme.cm.core.Policy.java
com.hqme.cm.core.ProtocolException.java
com.hqme.cm.core.ProtocolHandlerInputStream.java
com.hqme.cm.core.ProtocolHandler.java
com.hqme.cm.core.ProtocolManager.java
com.hqme.cm.core.ProtocolPluginHttp.java
com.hqme.cm.core.ProtocolPlugin.java
com.hqme.cm.core.QueueRequestObject.java
com.hqme.cm.core.QueueRequestProperties.java
com.hqme.cm.core.RULE_AVAILABLE_SPACE.java
com.hqme.cm.core.RULE_BANDWIDTH_LIMIT.java
com.hqme.cm.core.RULE_CHARGING_STATE.java
com.hqme.cm.core.RULE_CONNECTION_TYPE.java
com.hqme.cm.core.RULE_DOWNLOAD_LIMIT.java
com.hqme.cm.core.RULE_EXPIRE.java
com.hqme.cm.core.RULE_FREE_SPACE.java
com.hqme.cm.core.RULE_FUNCTIONGROUPS.java
com.hqme.cm.core.RULE_MANDATORY_TIME.java
com.hqme.cm.core.RULE_MAX_SIZE.java
com.hqme.cm.core.RULE_POWER_LEVEL.java
com.hqme.cm.core.RULE_PRIORITY.java
com.hqme.cm.core.RULE_ROAMING.java
com.hqme.cm.core.RULE_SCHEDULE.java
com.hqme.cm.core.RULE_TIME.java
com.hqme.cm.core.Record.java
com.hqme.cm.core.RuleBase.java
com.hqme.cm.core.RuleCollection.java
com.hqme.cm.core.Rule.java
com.hqme.cm.core.StorageManager.java
com.hqme.cm.core.WorkOrderManager.java
com.hqme.cm.core.WorkOrder.java
com.hqme.cm.core.policyParser.Expression.java
com.hqme.cm.core.policyParser.HqmePolicyException.java
com.hqme.cm.core.policyParser.LogicalExpression.java
com.hqme.cm.core.policyParser.NegateExpression.java
com.hqme.cm.core.policyParser.Operator.java
com.hqme.cm.core.policyParser.PolicyElementParser.java
com.hqme.cm.core.policyParser.PolicyExpression.java
com.hqme.cm.core.policyParser.Precedence.java
com.hqme.cm.core.policyParser.Token.java
com.hqme.cm.core.policyParser.Tokenizer.java
com.hqme.cm.sample.HqmeClientActivity.java
com.hqme.cm.sample.HqmeClientReceiver.java
com.hqme.cm.util.CmClientUtil.java
com.hqme.cm.util.CmDate.java
com.hqme.cm.util.CmNumber.java
com.hqme.cm.util.CmProperties.java
com.hqme.cm.util.CmUri.java