Android Open Source - SanDisk-HQME-SDK R U L E_ F R E E_ S P A C E






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.
* //from  w  w  w  .jav  a  2s  .c om
* 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;
import com.hqme.cm.IVSD;
import com.hqme.cm.VSDProperties;

public class RULE_FREE_SPACE extends RuleBase {
    // ==================================================================================================================================
    private static RULE_FREE_SPACE sRULE_FREE_SPACE_INSTANCE = new RULE_FREE_SPACE();
    
    @Override
    public void onReceive(Context arg0, Intent arg1) {
    }

    // ----------------------------------------------------------------------------------------------------------------------------------
    public static RULE_FREE_SPACE getInstance() {
        return sRULE_FREE_SPACE_INSTANCE;
    }

    // ==================================================================================================================================
    // Rule Evaluations - supporting specific pre-defined rules
    // ==================================================================================================================================
    @Override
    public boolean evaluateRule(Rule rule, WorkOrder workOrder) {
        
        // this tests that the rule is satisfied for the storage ID that is set as workOrder's StorageId value
        if (rule.getValue() != null) {            
            try {
                // A value between 1 and 100 indicates the available free
                // storage space of
                // the device (as a percentage) required in order to execute the
                // request.

                // Integer value between 0 and 100. The value 0 has special
                // meaning and
                // indicates that this rule is not set. Any value above 100 is
                // erroneous
                // and ignored

                Integer percentage = Integer.parseInt(rule.getValue());
                IVSD store = null;
                if ((percentage > 0) && (percentage <= 100)) {
                    try {
                        store = WorkOrderManager.getContentProxy() != null ? 
                                (WorkOrderManager.getContentProxy().VSDCount() > 0 ? 
                                    WorkOrderManager.getContentProxy().getStorage(workOrder.getStorageId()) : 
                                    null) : 
                                null;  
                        if (null != store) 
                            return satisfiesFreeSpaceLimits(percentage, workOrder.getStorageId());                                                        
                    } catch (Exception fault) {
                        CmClientUtil.debugLog(getClass(), "evaluateRule", fault);
                    }
                } 
            } catch (NumberFormatException exec) {
                CmClientUtil.debugLog(getClass(), "evaluateRule", exec);
            }       
        }

        // perhaps this store is no longer available
        return false;
    }

    public boolean satisfiesFreeSpaceLimits(int percentage,int storageId) {
        try {
            IVSD store = WorkOrderManager.getContentProxy().getStorage(storageId);

            long totalCapacity = Long.parseLong(store.getProperty(VSDProperties.VSProperty.VS_TOTAL_CAPACITY.name()));
            long availableCapacity = Long.parseLong(store.getProperty(VSDProperties.VSProperty.VS_AVAILABLE_CAPACITY.name()));
            int freePercentage = (int)(100 * (availableCapacity / (double) totalCapacity));
            if (freePercentage > percentage)
                return true;

        } catch (Exception fault) {
            CmClientUtil.debugLog(getClass(), "satisfiesFreeSpaceLimits", fault);
        }

        return false;
    }

    @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(), "RULE_FREE_SPACE", 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