/*
* NetcastPOSTRequestParser
* 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.netcast;
import org.json.JSONException;
import org.json.JSONObject;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class NetcastPOSTRequestParser extends DefaultHandler {
public JSONObject object;
public JSONObject subObject;
boolean textEditMode = false;
boolean keyboardVisibleMode = false;
public String value;
public final String CHANNEL_TYPE = "chtype";
public final String MAJOR = "major";
public final String MINOR = "minor";
public final String DISPLAY_MAJOR = "displayMajor";
public final String DISPLAY_MINOR = "displayMinor";
public final String SOURCE_INDEX = "sourceIndex";
public final String PHYSICAL_NUM = "physicalNum";
public final String CHANNEL_NAME = "chname";
public final String PROGRAM_NAME = "progName";
public final String AUDIO_CHANNEL = "audioCh";
public final String INPUT_SOURCE_NAME = "inputSourceName";
public final String INPUT_SOURCE_TYPE = "inputSourceType";
public final String LABEL_NAME = "labelName";
public final String INPUT_SOURCE_INDEX = "inputSourceIdx";
public final String VALUE = "value";
public final String MODE = "mode";
public final String STATE = "state";
public NetcastPOSTRequestParser() {
object = new JSONObject();
subObject = new JSONObject();
value = null;
}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
}
@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
try {
System.out.println("XML key: " + qName + ", value: " + value);
if (qName.equalsIgnoreCase(CHANNEL_TYPE)) {
object.put("channelModeName", value);
}
else if (qName.equalsIgnoreCase(MAJOR)) {
object.put("majorNumber", Integer.parseInt(value));
}
else if (qName.equalsIgnoreCase(DISPLAY_MAJOR)) {
object.put("displayMajorNumber", Integer.parseInt(value));
}
else if (qName.equalsIgnoreCase(MINOR)) {
object.put("minorNumber", Integer.parseInt(value));
}
else if (qName.equalsIgnoreCase(DISPLAY_MINOR)) {
object.put("displayMinorNumber", Integer.parseInt(value));
}
else if (qName.equalsIgnoreCase(SOURCE_INDEX)) {
object.put("sourceIndex", value);
}
else if (qName.equalsIgnoreCase(PHYSICAL_NUM)) {
object.put("physicalNumber", Integer.parseInt(value));
}
else if (qName.equalsIgnoreCase(CHANNEL_NAME)) {
object.put("channelName", value);
}
else if (qName.equalsIgnoreCase(PROGRAM_NAME)) {
object.put("programName", value);
}
else if (qName.equalsIgnoreCase(AUDIO_CHANNEL)) {
object.put("audioCh", value);
}
else if (qName.equalsIgnoreCase(INPUT_SOURCE_NAME)) {
object.put("inputSourceName", value);
}
else if (qName.equalsIgnoreCase(INPUT_SOURCE_TYPE)) {
object.put("inputSourceType", value);
}
else if (qName.equalsIgnoreCase(LABEL_NAME)) {
object.put("labelName", value);
}
else if (qName.equalsIgnoreCase(INPUT_SOURCE_INDEX)) {
object.put("inputSourceIndex", value);
}
else if (qName.equalsIgnoreCase(VALUE)) {
if (keyboardVisibleMode) {
if (value.equalsIgnoreCase("true"))
subObject.put("focus", true);
else
subObject.put("focus", false);
object.put("currentWidget", subObject);
}
else {
object.put("value", value);
}
}
else if (qName.equalsIgnoreCase(MODE)) {
if (keyboardVisibleMode) {
if (value.equalsIgnoreCase("default"))
subObject.put("hiddenText", false);
else
subObject.put("hiddenText", true);
object.put("currentWidget", subObject);
}
}
else if (qName.equalsIgnoreCase(STATE)) {
}
else if (value != null && value.equalsIgnoreCase("KeyboardVisible")) {
keyboardVisibleMode = true;
try {
subObject.put("contentType", "normal");
subObject.put("focus", false);
subObject.put("hiddenText", false);
subObject.put("predictionEnabled", false);
subObject.put("correctionEnabled", false);
subObject.put("autoCapitalization", false);
} catch (JSONException e) {
e.printStackTrace();
}
}
else if (value != null && value.equalsIgnoreCase("TextEdited")) {
textEditMode = true;
}
value = null;
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
value = new String(ch, start, length);
}
public JSONObject getJSONObject() {
return object;
}
}