package com.thoughtworks.calabash.android;
import java.util.ArrayList;
import java.util.List;
public class DeviceList {
List<Device> devices = new ArrayList<Device>();
public static final String[] STATES = new String[]{"no device", "device", "offline"};
public static final String HEADER = "List of devices attached ";
public DeviceList(String outputFromAdbDeviceList) {
parseForDevices(outputFromAdbDeviceList);
}
private void parseForDevices(String outputFromAdbDeviceList) {
int startIndex = outputFromAdbDeviceList.indexOf(HEADER) + HEADER.length();
String devices = outputFromAdbDeviceList.substring(startIndex);
String[] devicesNameSerialList = devices.split("\t");
String nextSerial = devicesNameSerialList[0];
for (int i = 1; i < devicesNameSerialList.length; i++) {
String serial = nextSerial;
String state = getState(devicesNameSerialList[i]);
Device device = new Device(serial, state);
this.add(device);
nextSerial = getNextSerial(devicesNameSerialList[i], state);
}
}
private String getNextSerial(String split, String state) {
return split.substring(state.length(), split.length());
}
private String getState(String split) {
for (String state : STATES) {
if (split.contains(state))
return state;
}
return null;
}
private void add(Device device) {
devices.add(device);
}
public int size() {
return devices.size();
}
public Device get(int index) {
return devices.get(index);
}
public boolean contains(Device device) {
return devices.contains(device);
}
}