Android Open Source - SanDisk-HQME-SDK Rule Base






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  .j  av 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.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

import com.hqme.cm.util.CmClientUtil;


import java.lang.ref.WeakReference;

/**
 * This class is a base class whose subclasses are used to evaluate all rules/policies based on 
 * underlying system properties. Each subclass is associated with a specific system property 
 * (or group of related properties).  
 * 
 * Its two main roles are:
 * 1) to provide a BroadcastReceiver function which incites the WorkOrderManager to re-evaluate the
 *  execution priority of pendingWorkOrders when some aspect of the system status changes
 * 2) to allow the creation of subclasses which are responsible for reacting to system state, and 
 * where relevant, storing the most recent state of the observed property for access by subsequent 
 * calls to evaluateRule   
 */
abstract class RuleBase extends BroadcastReceiver {    
    private WeakReference<WorkOrderManager> mWorkOrderManager = new WeakReference<WorkOrderManager>(
            WorkOrderManager.getInstance());
    private boolean sInitialized;
    // ==================================================================================================================================
    /**
     * Subclasses of RuleBase call this function to incite the WorkOrderManager to re-evaluate the pendingWorkOrders queue.
     * The onReceive function of each subclass gets called in response to some Intent triggered when a system property has changed.
     * Where relevant, the subclasses' onReceive also saves the value of relevant system properties for future use.
     * 
     */    
    @Override
    public void onReceive(Context arg0, Intent arg1) {
        final WorkOrderManager workOrderManager = mWorkOrderManager.get();

        if (workOrderManager != null) {
            if (WorkOrderManager.isActive()) {
                try {
                    workOrderManager.mInciteHysteresisTask.resume(false);
                } catch (Exception fault) {
                    CmClientUtil.debugLog(getClass(), "onReceive", fault);
                }
            } 
        } else {
            WorkOrderManager.startWorkOrderManager(arg0);    
        }
    }

    /**
     * Subclasses of RuleBase get initialized before use.
     * 
     * In the current implementation, init gets called when a Rule object 
     * containing a reference to one of those subclasses is parsed 
     * 
     * See RuleCollectionParser.endElement, initMethod.invoke
     * 
     */    
    public void init(Context context) {
        sInitialized = true;
    }

    /**
     *  
     * @return          <code>true</code> if the String provided is valid according to the definition of 
     * this rule given in the documentation, otherwise<code>false</code>
     * 
     * For instance, <RULE_FREE_SPACE/> should be an integer value between 0 and 100. 
     */
    public abstract boolean isValid(String value);

    /**
     * 
     * @param rule      The specific instance of a Rule that will be evaluated using a subclass of RuleBase
     * 
     * @return          <code>true</code> if the evaluation function based on the given Rule.mValues and Rule.mCondition 
     * returns true, otherwise <code>false</code>
     */
    public abstract boolean evaluateRule(Rule rule,WorkOrder workOrder);

    public boolean isSInitialized() {
        return sInitialized;
    }

}




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