/*******************************************************************************
* Copyright (c) 2008 Marcelo Mayworm. All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors: Marcelo Mayworm - initial API and implementation
*
******************************************************************************/
package org.eclipse.ecf.presence.search;
import java.util.*;
import org.eclipse.core.runtime.IAdapterManager;
import org.eclipse.ecf.internal.presence.PresencePlugin;
/**
* This Class implements {@link IResultList}. Subclasses may be created as
* appropriate.
* @since 2.0
*/
public class ResultList implements IResultList {
protected Set results;
/**
* Create a new synchronized result list from a existing one
* @param existingResults
*/
public ResultList(Collection /* <IResult> */existingResults) {
results = Collections.synchronizedSet(new HashSet());
if (existingResults != null)
addAll(existingResults);
}
/**
* Create a new synchronized result list from a existing one
*
*/
public ResultList() {
results = Collections.synchronizedSet(new HashSet());
}
/**
* Add an item for the result list
* @param item
* @return boolean
*/
public boolean add(IResult item) {
if (item == null)
return false;
if (results.add(item))
return true;
return false;
}
/**
* Add the list for the current result list
* @param existingResults
*/
public void addAll(Collection /* <IResult> */existingResults) {
if (existingResults == null)
return;
synchronized (results) {
for (Iterator i = existingResults.iterator(); i.hasNext();) {
add((IResult) i.next());
}
}
}
public Collection getResults() {
return results;
}
public boolean remove(IResult item) {
return results.remove(item);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ecf.ui.presence.search.IResultList#getResult
*/
public IResult getResult(String field, String value) {
// TODO
return null;
}
public Object getAdapter(Class adapter) {
if (adapter.isInstance(this)) {
return this;
}
IAdapterManager adapterManager = PresencePlugin.getDefault().getAdapterManager();
if (adapterManager == null)
return null;
return adapterManager.loadAdapter(this, adapter.getName());
}
public String toString() {
StringBuffer sb = new StringBuffer("ResultList["); //$NON-NLS-1$
sb.append("results=").append(getResults()).append("]"); //$NON-NLS-1$ //$NON-NLS-2$
return sb.toString();
}
}