/*
HitoeDevice
Copyright (c) 2016 NTT DOCOMO,INC.
Released under the MIT license
http://opensource.org/licenses/mit-license.php
*/
package org.deviceconnect.android.deviceplugin.hitoe.data;
import java.util.ArrayList;
import java.util.List;
/**
* This class is information of a hitoe device.
* @author NTT DOCOMO, INC.
*/
public class HitoeDevice {
/** device type. */
private String mType;
/** device name. */
private String mName;
/** device id. */
private String mId = "-1";
/** device connect mode. */
private String mConnectMode;
/** device pin code. */
private String mPin;
/** device register flag. */
private boolean mRegisterFlag;
/** memory setting. */
private String mMemorySetting;
/** available raw datalist. */
private List<String> mAvailableRawDataList = new ArrayList<>();
/** available ba datalist. */
private List<String> mAvailableBaDataList = new ArrayList<>();
/** available ex datalist. */
private List<String> mAvailableExDataList = new ArrayList<>();
/** session id. */
private String mSessionId;
/** Raw connection id. */
private String mRawConnectionId;
/** Ba connection id. */
private String mBaConnectionId;
/** Ex connection id. */
private String mExConnectionId;
/** ex connection list. */
private List<String> mExConnectionList = new ArrayList<>();
/** Response id. */
private int mResponseId;
/**
* Constructor.
* @param raw raw data
*/
public HitoeDevice(final String raw) {
setData(raw);
String[] dataList = HitoeConstants.AVAILABLE_EX_DATA_STR.split("\n");
for (int i = 0; i < dataList.length; i++) {
mAvailableExDataList.add(dataList[i]);
}
}
/**
* Get Device type.
* @return Device type
*/
public String getType() {
return mType;
}
/**
* Set Device Type.
* @param type Device Type
*/
public void setType(final String type) {
mType = type;
}
/**
* Get device id.
* @return device id
*/
public String getId() {
return mId;
}
/**
* Set device id.
* @param id device id
*/
public void setId(final String id) {
mId = id;
}
/**
* Get device Name.
* @return device name
*/
public String getName() {
return mName;
}
/**
* Set device name.
* @param name device name
*/
public void setName(final String name) {
mName = name;
}
/**
* Get pin code.
* @return pin code
*/
public String getPinCode() {
return mPin;
}
/**
* Set pin code.
* @param pin pin code
*/
public void setPinCode(final String pin) {
mPin = pin;
}
/**
* Get connect mode.
* @return connect mode
*/
public String getConnectMode() { return mConnectMode; }
/**
* Set connect mdoe.
* @param connectMode connect mode
*/
public void setConnectMode(final String connectMode) { mConnectMode = connectMode; }
/**
* Is register flag.
* @return register flag
*/
public boolean isRegisterFlag() {
return mRegisterFlag;
}
/**
* Set register flag.
* @param registerFlag register flag
*/
public void setRegisterFlag(final boolean registerFlag) {
mRegisterFlag = registerFlag;
}
/**
* Get Memory setting.
* @return memory setting
*/
public String getMemorySetting() {
return mMemorySetting;
}
/**
* Set memory setting.
* @param memorySetting memory setting
*/
public void setMemorySetting(final String memorySetting) {
mMemorySetting = memorySetting;
}
/**
* Get available raw data list.
* @return available raw data list
*/
public List<String> getAvailableRawDataList() {
return mAvailableRawDataList;
}
/**
* Set available raw data list.
* @param availableRawDataList available raw data list
*/
public void setAvailableRawDataList(final List<String> availableRawDataList) {
mAvailableRawDataList = availableRawDataList;
}
/**
* Get Available ba data list.
* @return available ba data list
*/
public List<String> getAvailableBaDataList() {
return mAvailableBaDataList;
}
/**
* Set available ba data list.
* @param availableBaDataList available ba data list
*/
public void setAvailableBaDataList(final List<String> availableBaDataList) {
mAvailableBaDataList = availableBaDataList;
}
/**
* Get available Ex data list.
* @return available ex data list
*/
public List<String> getAvailableExDataList() {
return mAvailableExDataList;
}
/**
* Set available ex data list.
* @param availableExDataList available ex data list
*/
public void setAvailableExDataList(final List<String> availableExDataList) {
mAvailableExDataList = availableExDataList;
}
/**
* Get session id.
* @return session id
*/
public String getSessionId() {
return mSessionId;
}
/**
* Set session id.
* @param sessionId session id
*/
public void setSessionId(final String sessionId) {
mSessionId = sessionId;
}
/**
* Get raw connection id.
* @return Raw connection id
*/
public String getRawConnectionId() {
return mRawConnectionId;
}
/**
* Set raw connection id.
* @param rawConnectionId raw connection id
*/
public void setRawConnectionId(final String rawConnectionId) {
mRawConnectionId = rawConnectionId;
}
/**
* Get ba connection id.
* @return ba connection id
*/
public String getBaConnectionId() {
return mBaConnectionId;
}
/**
* Set ba connection id.
* @param baConnectionId ba connection id
*/
public void setBaConnectionId(final String baConnectionId) {
mBaConnectionId = baConnectionId;
}
/**
* Get ex connection id.
* @return ex connection id
*/
public String getExConnectionId() {
return mExConnectionId;
}
/**
* Set ex connection id.
* @param exConnectionId ex connection id
*/
public void setExConnectionId(final String exConnectionId) {
mExConnectionId = exConnectionId;
}
/**
* Get Ex connection list.
* @return ex connection list
*/
public List<String> getExConnectionList() {
return mExConnectionList;
}
/**
* Set ex connection list.
* @param exConnectionList ex connection list
*/
public void setExConnectionList(final ArrayList<String> exConnectionList) {
this.mExConnectionList = exConnectionList;
}
/**
* Get Response id.
* @return response id
*/
public int getResponseId() {
return mResponseId;
}
/**
* Set Response id.
* @param responseId response id
*/
public void setResponseId(final int responseId) {
mResponseId = responseId;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("{\"type\": ").append(mType).append(", ");
builder.append("\"name\": ").append(mName).append(", ");
builder.append("\"id\": ").append(mId).append(", ");
builder.append("\"address\": ").append(mPin).append(", ");
builder.append("\"connectMode\": ").append(mConnectMode).append(", ");
builder.append("\"registerFlag\": ").append(mRegisterFlag).append("} ");
return builder.toString();
}
/**
* Set Data.
* @param val raw data
*/
public void setData(final String val) {
if (val == null) {
return;
}
String[] list = val.split(HitoeConstants.COMMA, -1);
this.mType = list[0];
this.mName = list[1];
this.mId = list[2];
this.mConnectMode = list[3];
if (list[4].equals("memory_setting")) {
this.mMemorySetting = list[4];
}
}
/**
* Set available data.
* @param availableData available data
*/
public void setAvailableData(final String availableData) {
String[] dataList = availableData.split(HitoeConstants.BR);
for (int i = 0; i < dataList.length; i++) {
if (dataList[i].startsWith(HitoeConstants.RAW_DATA_PREFFIX)) {
if (!mAvailableRawDataList.contains(dataList[i])) {
mAvailableRawDataList.add(dataList[i]);
}
} else if (dataList[i].startsWith(HitoeConstants.BA_DATA_PREFFIX)) {
if (!mAvailableBaDataList.contains(dataList[i])) {
mAvailableBaDataList.add(dataList[i]);
}
} else if (dataList[i].startsWith(HitoeConstants.EX_DATA_PREFFIX)) {
if (!mAvailableExDataList.contains(dataList[i])) {
mAvailableExDataList.add(dataList[i]);
}
}
}
}
/**
* Set Connection Id.
* @param connectionId connection id
*/
public void setConnectionId(final String connectionId) {
if (connectionId.startsWith(HitoeConstants.RAW_CONNECTION_PREFFIX)) {
mRawConnectionId = connectionId;
} else if (connectionId.startsWith(HitoeConstants.BA_CONNECTION_PREFFIX)) {
mBaConnectionId = connectionId;
} else if (connectionId.startsWith(HitoeConstants.EX_CONNECTION_PREFFIX)) {
getExConnectionList().add(connectionId);
}
}
/**
* Remove connection id.
* @param connectionId connection id
*/
public void removeConnectionId(final String connectionId) {
if (mRawConnectionId != null && mRawConnectionId.equals(connectionId)) {
mRawConnectionId = null;
} else if (mBaConnectionId != null && mBaConnectionId.equals(connectionId)) {
mBaConnectionId = null;
} else if (mExConnectionList != null && mExConnectionList.contains(connectionId)) {
mExConnectionList.remove(connectionId);
}
}
}