/*
* ServiceDescription
* Connect SDK
*
* Copyright (c) 2014 LG Electronics.
* Created by Hyun Kook Khang on 19 Jan 2014
*
* 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.connectsdk.service.config;
import java.util.List;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
import com.connectsdk.discovery.provider.ssdp.Service;
public class ServiceDescription implements Cloneable {
public static final String KEY_FILTER = "filter";
public static final String KEY_IP_ADDRESS = "ipAddress";
public static final String KEY_UUID = "uuid";
public static final String KEY_FRIENDLY = "friendlyName";
public static final String KEY_MODEL_NAME = "modelName";
public static final String KEY_MODEL_NUMBER = "modelNumber";
public static final String KEY_PORT = "port";
public static final String KEY_VERSION = "version";
public static final String KEY_SERVICE_ID = "serviceId";
String UUID;
String ipAddress;
String friendlyName;
String modelName;
String modelNumber;
String manufacturer;
String modelDescription;
String serviceFilter;
int port;
String applicationURL;
String version;
List<Service> serviceList;
String locationXML;
String serviceURI;
Map<String, List<String>> responseHeaders;
String serviceID;
Object device;
long lastDetection = Long.MAX_VALUE;
public ServiceDescription() { }
public ServiceDescription(String serviceFilter, String UUID, String ipAddress) {
this.serviceFilter = serviceFilter;
this.UUID = UUID;
this.ipAddress = ipAddress;
}
public ServiceDescription(JSONObject json) {
serviceFilter = json.optString(KEY_FILTER, null);
ipAddress = json.optString(KEY_IP_ADDRESS, null);
UUID = json.optString(KEY_UUID, null);
friendlyName = json.optString(KEY_FRIENDLY, null);
modelName = json.optString(KEY_MODEL_NAME, null);
modelNumber = json.optString(KEY_MODEL_NUMBER, null);
port = json.optInt(KEY_PORT, -1);
version = json.optString(KEY_VERSION, null);
serviceID = json.optString(KEY_SERVICE_ID, null);
}
public static ServiceDescription getDescription(JSONObject json) {
return new ServiceDescription(json);
}
public String getServiceFilter() {
return serviceFilter;
}
public void setServiceFilter(String serviceFilter) {
this.serviceFilter = serviceFilter;
}
public String getUUID() {
return UUID;
}
public void setUUID(String uUID) {
UUID = uUID;
}
public String getIpAddress() {
return ipAddress;
}
public void setIpAddress(String getIpAddress) {
this.ipAddress = getIpAddress;
}
public void setPort(int port) {
this.port = port;
}
public int getPort() {
return port;
}
public String getFriendlyName() {
return friendlyName;
}
public void setFriendlyName(String friendlyName) {
this.friendlyName = friendlyName;
}
public String getModelName() {
return modelName;
}
public void setModelName(String modelName) {
this.modelName = modelName;
}
public String getModelNumber() {
return modelNumber;
}
public void setModelNumber(String modelNumber) {
this.modelNumber = modelNumber;
}
public String getManufacturer() {
return manufacturer;
}
public void setManufacturer(String manufacturer) {
this.manufacturer = manufacturer;
}
public String getModelDescription() {
return modelDescription;
}
public void setModelDescription(String modelDescription) {
this.modelDescription = modelDescription;
}
public void setServiceList(List<Service> serviceList) {
this.serviceList = serviceList;
}
public String getApplicationURL() {
return applicationURL;
}
public void setApplicationURL(String applicationURL) {
this.applicationURL = applicationURL;
}
public List<Service> getServiceList() {
return serviceList;
}
public long getLastDetection() {
return lastDetection;
}
public void setLastDetection(long last) {
lastDetection = last;
}
public String getServiceID() {
return serviceID;
}
public void setServiceID(String serviceID) {
this.serviceID = serviceID;
}
public Map<String, List<String>> getResponseHeaders() {
return responseHeaders;
}
public void setResponseHeaders(Map<String, List<String>> responseHeaders) {
this.responseHeaders = responseHeaders;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public String getLocationXML() {
return locationXML;
}
public void setLocationXML(String locationXML) {
this.locationXML = locationXML;
}
public String getServiceURI() {
return serviceURI;
}
public void setServiceURI(String serviceURI) {
this.serviceURI = serviceURI;
}
public Object getDevice() {
return device;
}
public void setDevice(Object device) {
this.device = device;
}
public JSONObject toJSONObject() {
JSONObject jsonObj = new JSONObject();
try {
jsonObj.putOpt(KEY_FILTER, serviceFilter);
jsonObj.putOpt(KEY_IP_ADDRESS, ipAddress);
jsonObj.putOpt(KEY_UUID, UUID);
jsonObj.putOpt(KEY_FRIENDLY, friendlyName);
jsonObj.putOpt(KEY_MODEL_NAME, modelName);
jsonObj.putOpt(KEY_MODEL_NUMBER, modelNumber);
jsonObj.putOpt(KEY_PORT, port);
jsonObj.putOpt(KEY_VERSION, version);
jsonObj.putOpt(KEY_SERVICE_ID, serviceID);
} catch (JSONException e) {
e.printStackTrace();
}
return jsonObj;
}
public ServiceDescription clone() {
ServiceDescription service = new ServiceDescription();
service.setPort(this.port);
// we can ignore all these NullPointerExceptions, it's OK if those properties don't have values
try { service.setServiceID(this.serviceID); } catch (NullPointerException ex) { }
try { service.setIpAddress(this.ipAddress); } catch (NullPointerException ex) { }
try { service.setUUID(this.UUID); } catch (NullPointerException ex) { }
try { service.setVersion(this.version); } catch (NullPointerException ex) { }
try { service.setFriendlyName(this.friendlyName); } catch (NullPointerException ex) { }
try { service.setManufacturer(this.manufacturer); } catch (NullPointerException ex) { }
try { service.setModelName(this.modelName); } catch (NullPointerException ex) { }
try { service.setModelNumber(this.modelNumber); } catch (NullPointerException ex) { }
try { service.setModelDescription(this.modelDescription); } catch (NullPointerException ex) { }
try { service.setApplicationURL(this.applicationURL); } catch (NullPointerException ex) { }
try { service.setLocationXML(this.locationXML); } catch (NullPointerException ex) { }
try { service.setResponseHeaders(this.responseHeaders); } catch (NullPointerException ex) { }
try { service.setServiceList(this.serviceList); } catch (NullPointerException ex) { }
try { service.setServiceFilter(this.serviceFilter); } catch (NullPointerException ex) { }
return service;
}
}