public boolean hasCapability(int capability) { if (capability == CAPABILITY_MULTIPLESOURCES) { return true; } if (dataProviders != null && !dataProviders.isEmpty()) { int count = dataProviders.size(); for (int i = 0; i < count; i++) { INamePickerData e = dataProviders.get(i); // If one provider miss the capability, then it is not available... if (!e.hasCapability(capability)) { return false; } } // Else, we have it return true; } return false; }
public String[] getSourceLabels() { if (dataProviders != null && !dataProviders.isEmpty()) { ArrayList<String> list = new ArrayList<String>(); int count = dataProviders.size(); for (int i = 0; i < count; i++) { INamePickerData data = dataProviders.get(i); String[] labels = data.getSourceLabels(); if (labels != null) { for (int j = 0; j < labels.length; j++) { list.add(labels[j]); } } } return list.toArray(new String[list.size()]); } return null; }
public IPickerResult readEntries(IPickerOptions options) { if (dataProviders != null && !dataProviders.isEmpty()) { // // Aggregated results? // int count = dataProviders.size(); // for(int i=0; i<count; i++) { // IPickerResult r = dataProviders.get(i).readEntries(options); // NamePickerAggregatorEntry e = dataProviders.get(i); // } int source = options.getSource(); int off = 0; for (int i = 0; i < dataProviders.size(); i++) { INamePickerData pd = dataProviders.get(i); int srcCount = pd.getSourceLabels().length; int relIdx = source - off; if (relIdx < srcCount) { IPickerOptions newOptions = new AggregatedPickerOptions(options, relIdx); return pd.readEntries(newOptions); } off += srcCount; } } return null; }