/*
* Copyright (C) 2012 The Android Open Source Project
*
* 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.motorola.studio.android.emulator.device;
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.sequoyah.device.common.utilities.exception.SequoyahException;
import org.eclipse.sequoyah.device.framework.DeviceUtils;
import org.eclipse.sequoyah.device.framework.factory.InstanceRegistry;
import org.eclipse.sequoyah.device.framework.model.IDeviceType;
import org.eclipse.sequoyah.device.framework.model.IInstance;
import org.eclipse.sequoyah.device.framework.model.IService;
import org.eclipse.sequoyah.device.framework.model.handler.ServiceHandler;
import com.motorola.studio.android.emulator.core.devfrm.IDeviceFrameworkSupport;
import com.motorola.studio.android.emulator.core.model.IAndroidEmulatorInstance;
/**
* DESCRIPTION:
* This class attaches the TmL device framework to the Android Emulator plug-ins
*
* RESPONSIBILITY:
* to work with the TmL device framework
*
* COLABORATORS:
* None.
*
* USAGE:
* The class should be used by Eclipse only
*/
public class TmLDeviceFrameworkSupport implements IDeviceFrameworkSupport
{
/**
* @see IDeviceFrameworkSupport#getAllInstances()
*/
public Collection<IAndroidEmulatorInstance> getAllInstances()
{
List<IInstance> tmlInstances = InstanceRegistry.getInstance().getInstances();
Collection<IAndroidEmulatorInstance> androidCollection =
new HashSet<IAndroidEmulatorInstance>();
for (IInstance tmlInstance : tmlInstances)
{
if (tmlInstance instanceof IAndroidEmulatorInstance)
{
androidCollection.add((IAndroidEmulatorInstance) tmlInstance);
}
}
return androidCollection;
}
// This should be a contribution to TmL.
public static IStatus runService(IInstance instance, String serviceID,
Map<Object, Object> arguments, IProgressMonitor monitor) throws SequoyahException
{
IStatus runStatus = null;
IDeviceType deviceType = DeviceUtils.getDeviceType(instance);
for (IService service : deviceType.getServices())
{
if (service.getId().equals(serviceID))
{
ServiceHandler serviceHandler = (ServiceHandler) service.getHandler();
runStatus = serviceHandler.run(instance, arguments, monitor);
break;
}
}
return runStatus;
}
}