package pl.llp.aircasting.sensor;
import pl.llp.aircasting.activity.extsens.SensorAdapter;
import android.bluetooth.BluetoothDevice;
import com.google.common.base.Strings;
import com.google.gson.annotations.Expose;
import java.util.HashMap;
import java.util.Map;
import static com.google.common.collect.Maps.newHashMap;
public class ExternalSensorDescriptor
{
@Expose String name;
@Expose String address;
@Expose String action;
public ExternalSensorDescriptor(String name, String address, String action)
{
if (Strings.isNullOrEmpty(name))
{
name = "Unnamed";
}
this.name = name;
this.address = address;
this.action = action;
}
public ExternalSensorDescriptor(BluetoothDevice device)
{
this(device.getName(), device.getAddress(), "connect");
}
public String getAddress()
{
return address;
}
public String getName()
{
return name;
}
public String getAction()
{
return action;
}
public void setAction(String action) {
this.action = action;
}
public Map<String, String> asMap()
{
HashMap<String, String> result = newHashMap();
result.put(SensorAdapter.ADDRESS, address);
result.put(SensorAdapter.NAME, name);
result.put(SensorAdapter.ACTION, action);
return result;
}
public static ExternalSensorDescriptor from(Map<String, String> map)
{
return new ExternalSensorDescriptor(map.get(SensorAdapter.NAME), map.get(SensorAdapter.ADDRESS), map.get(SensorAdapter.ACTION));
}
public boolean matches(Map<String, String> stringStringMap)
{
return address.equalsIgnoreCase(stringStringMap.get(SensorAdapter.ADDRESS))
&& name.equalsIgnoreCase(stringStringMap.get(SensorAdapter.NAME));
}
@Override
public boolean equals(Object o)
{
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ExternalSensorDescriptor that = (ExternalSensorDescriptor) o;
if (!address.equals(that.address)) return false;
return true;
}
@Override
public int hashCode()
{
return address.hashCode();
}
}