1984e52f31d596840cfa51b1238e1c43d2e1918f8saberian/* 2984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * Copyright (C) 2012 The Android Open Source Project 3984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * 4984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * Licensed under the Apache License, Version 2.0 (the "License"); 5984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * you may not use this file except in compliance with the License. 6984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * You may obtain a copy of the License at 7984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * 8984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * http://www.apache.org/licenses/LICENSE-2.0 9984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * 10984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * Unless required by applicable law or agreed to in writing, software 11984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * distributed under the License is distributed on an "AS IS" BASIS, 12984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * See the License for the specific language governing permissions and 14984e52f31d596840cfa51b1238e1c43d2e1918f8saberian * limitations under the License. 15984e52f31d596840cfa51b1238e1c43d2e1918f8saberian */ 16984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 17984e52f31d596840cfa51b1238e1c43d2e1918f8saberianpackage android.bordeaux.services; 18984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 19984e52f31d596840cfa51b1238e1c43d2e1918f8saberianimport android.os.IBinder; 20984e52f31d596840cfa51b1238e1c43d2e1918f8saberianimport android.util.Log; 21984e52f31d596840cfa51b1238e1c43d2e1918f8saberianimport java.util.HashMap; 22984e52f31d596840cfa51b1238e1c43d2e1918f8saberianimport java.util.Map; 23984e52f31d596840cfa51b1238e1c43d2e1918f8saberianimport java.util.List; 24984e52f31d596840cfa51b1238e1c43d2e1918f8saberianimport java.util.Arrays; 25984e52f31d596840cfa51b1238e1c43d2e1918f8saberianimport java.util.HashSet; 26984e52f31d596840cfa51b1238e1c43d2e1918f8saberianimport java.util.Set; 27984e52f31d596840cfa51b1238e1c43d2e1918f8saberianimport java.util.Iterator; 28984e52f31d596840cfa51b1238e1c43d2e1918f8saberianimport android.bordeaux.services.AggregatorManager; 29984e52f31d596840cfa51b1238e1c43d2e1918f8saberianimport android.bordeaux.services.Aggregator; 30984e52f31d596840cfa51b1238e1c43d2e1918f8saberianimport java.io.Serializable; 31984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 32984e52f31d596840cfa51b1238e1c43d2e1918f8saberianpublic class FeatureAssembly { 33984e52f31d596840cfa51b1238e1c43d2e1918f8saberian private static final String TAG = "FeatureAssembly"; 34984e52f31d596840cfa51b1238e1c43d2e1918f8saberian private List<String> mPossibleFeatures; 35984e52f31d596840cfa51b1238e1c43d2e1918f8saberian private HashSet<String> mUseFeatures; 36984e52f31d596840cfa51b1238e1c43d2e1918f8saberian private AggregatorManager mAggregatorManager; 37984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 38984e52f31d596840cfa51b1238e1c43d2e1918f8saberian public FeatureAssembly() { 39984e52f31d596840cfa51b1238e1c43d2e1918f8saberian mAggregatorManager = AggregatorManager.getInstance(); 40984e52f31d596840cfa51b1238e1c43d2e1918f8saberian mPossibleFeatures = Arrays.asList(mAggregatorManager.getListOfFeatures()); 41984e52f31d596840cfa51b1238e1c43d2e1918f8saberian mUseFeatures = new HashSet<String>(); 42984e52f31d596840cfa51b1238e1c43d2e1918f8saberian } 43984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 44984e52f31d596840cfa51b1238e1c43d2e1918f8saberian public boolean registerFeature(String s) { 45984e52f31d596840cfa51b1238e1c43d2e1918f8saberian boolean res = mPossibleFeatures.contains(s); 46984e52f31d596840cfa51b1238e1c43d2e1918f8saberian if (res){ 47984e52f31d596840cfa51b1238e1c43d2e1918f8saberian if (!mUseFeatures.contains(s)) 48984e52f31d596840cfa51b1238e1c43d2e1918f8saberian mUseFeatures.add(s); 49984e52f31d596840cfa51b1238e1c43d2e1918f8saberian } 50984e52f31d596840cfa51b1238e1c43d2e1918f8saberian return res; 51984e52f31d596840cfa51b1238e1c43d2e1918f8saberian } 52984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 53984e52f31d596840cfa51b1238e1c43d2e1918f8saberian public Set<String> getUsedFeatures() { 54984e52f31d596840cfa51b1238e1c43d2e1918f8saberian return (Set) mUseFeatures; 55984e52f31d596840cfa51b1238e1c43d2e1918f8saberian } 56984e52f31d596840cfa51b1238e1c43d2e1918f8saberian 57984e52f31d596840cfa51b1238e1c43d2e1918f8saberian public String augmentFeatureInputString(String s) { 58984e52f31d596840cfa51b1238e1c43d2e1918f8saberian String fs = s; 59984e52f31d596840cfa51b1238e1c43d2e1918f8saberian Iterator itr = mUseFeatures.iterator(); 60984e52f31d596840cfa51b1238e1c43d2e1918f8saberian while(itr.hasNext()) { 61984e52f31d596840cfa51b1238e1c43d2e1918f8saberian String f = (String) itr.next(); 62984e52f31d596840cfa51b1238e1c43d2e1918f8saberian fs = fs + "+" + mAggregatorManager.getDataMap(f).get(f); 63984e52f31d596840cfa51b1238e1c43d2e1918f8saberian } 64984e52f31d596840cfa51b1238e1c43d2e1918f8saberian return fs; 65984e52f31d596840cfa51b1238e1c43d2e1918f8saberian } 66984e52f31d596840cfa51b1238e1c43d2e1918f8saberian} 67