/**
* Copyright (c) 2010-2016 by the respective copyright holders.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.openhab.binding.lgtv.lginteraction;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
/**
* This class handles xml encoded channel changed messages receiver.
*
* @author Martin Fluch
* @since 1.6.0
*/
public class LgTvEventChannelChanged {
@XmlRootElement(name = "envelope")
@XmlAccessorType(XmlAccessType.FIELD)
public static class envelope {
@XmlElement(name = "api")
private onechannel channel;
public onechannel getchannel() {
return channel;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
public static class onechannel {
@XmlElement(name = "name")
private String eventname;
@XmlElement(name = "chtype")
private String chtype;
@XmlElement(name = "major")
private int major;
@XmlElement(name = "minor")
private int minor;
@XmlElement(name = "sourceIndex")
private int sourceindex;
@XmlElement(name = "physicalNum")
private int physicalnum;
@XmlElement(name = "chname")
private String chname;
public int getmajor() {
return major;
}
public int getminor() {
return minor;
}
public int getsourceindex() {
return sourceindex;
}
public int getphysicalnum() {
return physicalnum;
}
public String getchname() {
return chname;
}
public String geteventname() {
return eventname;
}
}
private envelope envel;
public String readevent(String s) throws JAXBException {
JAXBContext jc;
jc = JAXBContext.newInstance(envelope.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
int start = s.indexOf("<envelope>");
int stop = s.indexOf("</envelope>") + "</envelope>".length();
String t = s.substring(start, stop);
// System.out.println(t);
StringReader reader = new StringReader(t);
envel = null;
envel = (envelope) unmarshaller.unmarshal(reader);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter sw = new StringWriter();
marshaller.marshal(envel, sw);
return new String(sw.toString());
}
public envelope getenvel() {
return envel;
}
}