Android Open Source - SanDisk-HQME-SDK Rule Collection






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.
* /*  w w  w  .  j ava2s  .co 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.util.Xml;

import com.hqme.cm.util.CmClientUtil;

import org.xmlpull.v1.XmlSerializer;

import java.io.StringWriter;
import java.util.ArrayList;


/**
 * The RuleCollection class allows a "Rule Group" to be specified.
 * Rule Groups are combinations of individual Rule objects.
 * 
 * Rules are combined to form RuleCollection objects using 
 * the "and" operators. 
 *  
 *  The current XML specification of this would be:
 * <Rule name="uniqueID"> 
 *      <Property key="WifiRule">UMTS</Property>      
 *      <Property key="PowerRule">true</Property>
 *      <Property key="PowerLevel">50</Property>  
 * </RuleCollection>
 *      
 */
public class RuleCollection {
    // ==================================================================================================================================

    private ArrayList<Rule> mRules;
    private String mName;
    
    public String getName() {
        return mName;
    }

       // ==================================================================================================================================
    protected ArrayList<Rule> getRules() {
        return this.mRules;
    }

    protected void setRules(ArrayList<Rule> rules) {
        this.mRules = rules == null ? new ArrayList<Rule>(0) : rules;
    }

    // ==================================================================================================================================
    public RuleCollection(String name, ArrayList<Rule> ruleSet) {
        this.setRules(ruleSet);
        this.mName = name;
    }

    public RuleCollection() {        
        this.mRules = new ArrayList<Rule>(0);
        this.mName = new String();
    }

    // ----------------------------------------------------------------------------------------------------------------------------------
    public boolean evaluateRuleSet(WorkOrder workOrder) {
        for (Rule rule : this.mRules) {
            try {
                if (!rule.evaluateRule(workOrder)) {
                    CmClientUtil.debugLog(getClass(), "evaluateAndRuleSet @ this.rules",
                            "Stop rule = %s", rule);
                    return false;
                }
            } catch (Throwable fault) {
                CmClientUtil.debugLog(getClass(), "evaluateAndRuleSet @ this.rules", fault);
                return false;
            }
        }
        return true;
    }

    // ==================================================================================================================================
    // Serialization Methods
    // ==================================================================================================================================
    public static final String NAMESPACE = null;

    public static final String TAG_PROPERTY = "Property";

    public static final String TAG_RULE = "Rule";
    public static final String TAG_NAME = "name";

    public void bodyToString(XmlSerializer serializer) {

        try {
            serializer.startTag(NAMESPACE, TAG_RULE);
            if (mName != null)
                serializer.attribute(NAMESPACE, TAG_NAME , mName);
            if (mRules != null)
                for (Rule rule : mRules) {
                    rule.bodyToString(serializer);
                }
            
            serializer.endTag(NAMESPACE, TAG_RULE);
        } catch (Exception fault) {
            CmClientUtil.debugLog(getClass(), "bodyToString", fault);
        }

    }

    // ----------------------------------------------------------------------------------------------------------------------------------
    public String toString() {
        try {
            StringWriter writer = new StringWriter();
            XmlSerializer serializer = Xml.newSerializer();
            serializer.setOutput(writer);
            serializer.startDocument("UTF-8", true);
            bodyToString(serializer);
            serializer.endDocument();

            return writer.toString();
        } catch (Exception fault) {
            CmClientUtil.debugLog(getClass(), "toString", fault);
        }
        return "";
    }

    boolean isValid() {

        if (mRules != null)
            for (Rule rule : mRules) {
                if (!rule.isValid()) {
                    return false;
                }
            }

        return true;

    }
    
   
}




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