package eclipse.model.data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* A Device is a physical Item in the car such as Drive, Motor, MPPTs, etc
* @author Marco
*
*/
public class Device implements Serializable{
private static final long serialVersionUID = -8127694385946744198L;
//Properties of the Device
private Integer deviceId;
private String deviceName;
//List of all Item incide this Device
private List<DeviceItem> items;
private List<Trame> trames;
/**
* Create device
* @param deviceId id name
* @param deviceName device name
*/
public Device(Integer deviceId, String deviceName) {
this.deviceId = deviceId;
this.deviceName = deviceName;
// Create the device's DeviceItem arraylist
items = Collections.synchronizedList(new ArrayList<DeviceItem>());
// Create the device's Trame arraylist
trames = Collections.synchronizedList(new ArrayList<Trame>());
}
/**
* @param item item to be added
*/
public void addItem(DeviceItem item) {
items.add(item);
}
/**
* Return first Item with name
* @param itemName name that we search
* @return
*/
public DeviceItem getItemByName(String itemName) {
for (DeviceItem iDev : items)
if (iDev.getName().toUpperCase().compareTo(itemName.toUpperCase())==0)
return iDev;
return null;
}
/**
* Return item by ID
* @param itemId
* @return
*/
public DeviceItem getItemByID (Integer itemId) {
for (DeviceItem iDev : items)
if (iDev.getItemId().equals(itemId))
return iDev;
return null;
}
/**
* Return all items
* @return
*/
public List<DeviceItem> getItems() {
return items;
}
/**
* Add trame to the tram list of this device
* Use this tram to create Item and add data
* @param trame to be add
*/
public void addTrame(Trame trame){
trames.add(trame);
}
/**
* Return a tram with a particular Identifier (tram identifier from the CAN itself)
* Can return null if not exist
* @param identifier
* @return
*/
public Trame getTrameByidentifier(int identifier){
for(Trame t : trames)
if(t.getIdentifier()==identifier)
return t;
return null;
}
//Getter and Setter
public Integer getDeviceId() {
return deviceId;
}
public String getDeviceName() {
return deviceName;
}
public List<Trame> getTrames(){
return trames;
}
}