<xsl:variable name="newDataSource" select="concat($tab, 'app.ds.', $dataModel_name, ' = new uibinding.')"/>
<xsl:choose>
- <xsl:when test="@modelType = 'REMOTECALL'">
+ <xsl:when test="@modelType = 'Remote Call'">
<xsl:value-of select="concat($newDataSource, 'dataSourceRemote', '({', $newline)"/>
<xsl:value-of select="concat($tab, $tab, 'url: ', '"', @url, '"', ',', $newline)" disable-output-escaping="yes"/>
<xsl:value-of select="concat($tab, $tab, 'method: ', '"', @type, '"', ',', $newline)"/>
<xsl:value-of select="concat($tab, $tab, 'proxy: ', '"', @proxy, '"', ',', $newline)"/>
- <xsl:value-of select="concat($tab, $tab, 'query: ', '"', @query, '"', ',', $newline)"/>
<xsl:value-of select="concat($tab, $tab, 'sourceType: ', '"', @sourceType, '"', ',', $newline)"/>
- <xsl:value-of select="concat($tab, $tab, 'timeout: ', '"', @timeout, '"', $newline)"/>
+ <xsl:value-of select="concat($tab, $tab, 'timeout: ', '"', @timeout, '"', ',', $newline)"/>
+ <xsl:if test="@query != ''">
+ <xsl:value-of select="concat($tab, $tab, 'query: {', $newline)"/>
+ <xsl:call-template name="splitQuery">
+ <xsl:with-param name="stringtosplit" select ="@query" />
+ </xsl:call-template>
+ <xsl:value-of select="concat($tab, $tab, '},', $newline)"/>
+ </xsl:if>
+ <xsl:if test="@headers != ''">
+ <xsl:value-of select="concat($tab, $tab, 'headers: {', $newline)"/>
+ <xsl:call-template name="splitQuery">
+ <xsl:with-param name="stringtosplit" select ="@headers" />
+ </xsl:call-template>
+ <xsl:value-of select="concat($tab, $tab, '},', $newline)"/>
+ </xsl:if>
<xsl:value-of select="concat($tab, '});', $newline)"/>
</xsl:when>
- <xsl:when test="@modelType = 'STATIC'">
+ <xsl:when test="@modelType = 'Static'">
<xsl:value-of select="concat($newDataSource, 'dataSourceStatic', '({', $newline)"/>
<xsl:value-of select="concat($tab, $tab, 'data: ', @jsonData, $newline)" disable-output-escaping="yes"/>
<xsl:value-of select="concat($tab, '});', $newline)"/>
</xsl:when>
- <xsl:when test="@modelType = 'RUNTIMEAPI'">
- <xsl:value-of select="concat($newDataSource, 'dataSourceRuntime', '({', $newline)"/>
- <xsl:value-of select="concat($tab, $tab, 'url: ', '"', @api, '"', $newline)"/>
+ <xsl:when test="@modelType = 'Contact'">
+ <xsl:value-of select="concat($newDataSource, 'dataSourceContact', '({', $newline)"/>
+ <xsl:value-of select="concat($tab, $tab, 'method: ', '"', @method, '"')"/>
+ <xsl:choose>
+ <xsl:when test="@addressBookId = ''">
+ <xsl:value-of select="concat($newline)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat(',', $newline, $tab, $tab, 'addressBookId: ', '"', @addressBookId, '"', $newline)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="concat($tab, '});', $newline)"/>
+ </xsl:when>
+ <xsl:when test="@modelType = 'Calendar'">
+ <xsl:value-of select="concat($newDataSource, 'dataSourceCalendar', '({', $newline)"/>
+ <xsl:value-of select="concat($tab, $tab, 'method: ', '"', @method, '"', ',', $newline)"/>
+ <xsl:value-of select="concat($tab, $tab, 'calendarType: ', '"', @calendarType, '"')"/>
+ <xsl:choose>
+ <xsl:when test="@calendarId = ''">
+ <xsl:value-of select="concat($newline)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="concat(',', $newline, $tab, $tab, 'calendarId: ', '"', @calendarId, '"', $newline)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ <xsl:value-of select="concat($tab, '});', $newline)"/>
+ </xsl:when>
+ <xsl:when test="@modelType = 'Call History'">
+ <xsl:value-of select="concat($newDataSource, 'dataSourceCallhistory', '({', $newline)"/>
+ <xsl:value-of select="concat($tab, $tab, 'type: ', '"', @type, '"', ',', $newline)"/>
+ <xsl:value-of select="concat($tab, $tab, 'direction: ', '"', @direction, '"', ',', $newline)"/>
+ <xsl:value-of select="concat($tab, $tab, 'starttimeorder: ', '"', @starttimeorder, '"', $newline)"/>
<xsl:value-of select="concat($tab, '});', $newline)"/>
</xsl:when>
</xsl:choose>
<xsl:template match="observableObject" mode="fake">
<xsl:choose>
- <xsl:when test="@type = 'JSONArray'">
+ <xsl:when test="@type = 'Array'">
<xsl:value-of select="concat($tab, $tab, @name, ': [{', $newline)"/>
<xsl:apply-templates select="observableObject" mode="fake"/>
<xsl:value-of select="concat($tab, $tab, '}],', $newline)"/>
</xsl:when>
- <xsl:when test="@type = 'JSONObject'">
+ <xsl:when test="@type = 'Object'">
<xsl:value-of select="concat($tab, $tab, @name, ': {', $newline)"/>
<xsl:apply-templates select="observableObject" mode="fake"/>
<xsl:value-of select="concat($tab, $tab, '},', $newline)"/>
<xsl:template match="observableObject" mode="origin">
<xsl:choose>
- <xsl:when test="@type = 'JSONArray'">
+ <xsl:when test="@type = 'Array'">
<xsl:value-of select="concat($tab, $tab, $tab, $tab, '_self.', '_', @name, ' = function(obj) {', $newline)"/>
<xsl:value-of select="concat($tab, $tab, $tab, $tab, $tab, 'var _self = this;', $newline)"/>
<xsl:apply-templates select="observableObject" mode="origin"/>
<xsl:value-of select="concat($tab, $tab, $tab, $tab, $tab, '_self.', @name, '.push(new _self._', @name, '(_obj));', $newline)"/>
<xsl:value-of select="concat($tab, $tab, $tab, $tab, '}', $newline)"/>
</xsl:when>
- <xsl:when test="@type = 'JSONObject'">
+ <xsl:when test="@type = 'Object'">
<xsl:value-of select="concat($tab, $tab, $tab, $tab, '_self.', '_', @name, ' = function(obj) {', $newline)"/>
<xsl:value-of select="concat($tab, $tab, $tab, $tab, $tab, 'var _self = this;', $newline)"/>
<xsl:apply-templates select="observableObject" mode="origin"/>
</xsl:choose>
</xsl:template>
+<xsl:template name="splitQuery">
+ <xsl:param name="stringtosplit" />
+ <xsl:variable name="first" select="substring-before($stringtosplit, '&')" />
+ <xsl:variable name="remaining" select="substring-after($stringtosplit, '&')" />
+
+ <xsl:choose>
+ <xsl:when test="$first = ''">
+ <xsl:if test="$stringtosplit">
+ <xsl:variable name="key" select="substring-before($stringtosplit, '=')" />
+ <xsl:variable name="value" select="substring-after($stringtosplit, '=')" />
+ <xsl:value-of select="concat($tab, $tab, $tab, $key,': ', '"', $value, '"', ',', $newline)"/>
+ </xsl:if>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:variable name="key" select="substring-before($first, '=')" />
+ <xsl:variable name="value" select="substring-after($first, '=')" />
+ <xsl:value-of select="concat($tab, $tab, $tab, $key,': ', '"', $value, '"', ',', $newline)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:if test="$remaining">
+ <xsl:call-template name="splitQuery">
+ <xsl:with-param name="stringtosplit" select="$remaining" />
+ </xsl:call-template>
+ </xsl:if>
+</xsl:template>
+
<xsl:template match="updateOnStartUp">
<xsl:value-of select="concat($tab, 'app.ds.', @name, '.update();', $newline)"/>
</xsl:template>
<xsl:for-each select=".//observableObject">
<xsl:variable name="observableObject_value" select="concat('"', @value, '"')"/>
<xsl:choose>
- <xsl:when test="@type = 'JSONArray'">
+ <xsl:when test="@type = 'Array'">
<xsl:value-of select="concat($tab, $tab, @name, ': ko.observableArray(),', $newline)"/>
</xsl:when>
<xsl:otherwise>
package org.tizen.webuibuilder.model.app.io;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
String sourceType = element2.getAttribute(BuilderConstants.ATTRIBUTE_SOURCETYPE);
String timeout = element2.getAttribute(BuilderConstants.ATTRIBUTE_TIMEOUT);
String jsonData = element2.getAttribute(BuilderConstants.ATTRIBUTE_JSONDATA);
+ String headersInfo = element2.getAttribute(BuilderConstants.ATTRIBUTE_HEADERS);
+ Map<String, String> headers = makeHeaders(headersInfo);
BindingData dataModel =
new BindingData(sourceName, modelType, url, type, proxy, query, sourceType,
- timeout, jsonData);
+ timeout, jsonData, headers);
parseObservableObject(element2, dataModel);
parseObservableObject(element2, dataModel);
fileData.addDataSource(dataModel);
- } else if ((modelType != null) && (modelType.equals("RUNTIMEAPI"))) {
- String api = element2.getAttribute(BuilderConstants.ATTRIBUTE_API);
+ } else if ((modelType != null) && (modelType.equals("Contact"))) {
+ String method = element2.getAttribute(BuilderConstants.ATTRIBUTE_METHOD);
+ String addressBookId = element2.getAttribute(BuilderConstants.ATTRIBUTE_ADDRESS_BOOK_ID);
- BindingData dataModel = new BindingData(sourceName, modelType, api);
+ BindingData dataModel = new BindingData();
+ dataModel.setSourceName(sourceName);
+ dataModel.setModelType(modelType);
+ dataModel.setRuntimeApiName(method);
+ dataModel.setRuntimeApiAddressBookID(addressBookId);
+ parseObservableObject(element2, dataModel);
+ fileData.addDataSource(dataModel);
+ } else if ((modelType != null) && (modelType.equals("Calendar"))) {
+ String method = element2.getAttribute(BuilderConstants.ATTRIBUTE_METHOD);
+ String calendarType = element2.getAttribute(BuilderConstants.ATTRIBUTE_CALENDAR_TYPE);
+ String calendarId = element2.getAttribute(BuilderConstants.ATTRIBUTE_CALENDAR_ID);
+
+ BindingData dataModel = new BindingData();
+ dataModel.setSourceName(sourceName);
+ dataModel.setModelType(modelType);
+ dataModel.setCalendarName(method);
+ dataModel.setCalendarType(calendarType);
+ dataModel.setCalendarID(calendarId);
+ parseObservableObject(element2, dataModel);
+ fileData.addDataSource(dataModel);
+ } else if ((modelType != null) && (modelType.equals("Call History"))) {
+ String type = element2.getAttribute(BuilderConstants.ATTRIBUTE_TYPE);
+ String direction = element2.getAttribute(BuilderConstants.ATTRIBUTE_DIRECTION);
+ String startTimeOrder = element2.getAttribute(BuilderConstants.ATTRIBUTE_START_TIME_ORDER);
+
+ BindingData dataModel = new BindingData();
+ dataModel.setSourceName(sourceName);
+ dataModel.setModelType(modelType);
+ dataModel.setCallHistoryType(type);
+ dataModel.setCallHistoryDirection(direction);
+ dataModel.setCallHistoryStartTimeOrder(startTimeOrder);
+ parseObservableObject(element2, dataModel);
fileData.addDataSource(dataModel);
} else {
BindingData dataModel = new BindingData();
}
}
- private static void parseViewModel(HtmlMetaFileData fileData, Element element) {
+ private static Map<String, String> makeHeaders(String headersInfo) {
+ Map<String, String> headers = new HashMap<String, String>();
+ if (!headersInfo.isEmpty()) {
+ String[] headersInfoArray;
+ headersInfoArray = headersInfo.split("&");
+ for (String info : headersInfoArray) {
+ String[] infoArray = info.split("=");
+ if (infoArray.length == 2) {
+ headers.put(infoArray[0], infoArray[1]);
+ }
+ }
+ }
+ return headers;
+ }
+
+ private static void parseViewModel(HtmlMetaFileData fileData, Element element) {
NodeList elementList = element.getElementsByTagName(BuilderConstants.ELEMENT_VIEWMODEL);
for (int i = 0; i < elementList.getLength(); i++) {
Element element2 = (Element) elementList.item(i);
element.setAttribute(BuilderConstants.ATTRIBUTE_MODELTYPE, dataModel.getModelType());
if ((dataModel.getModelType() != null) && (dataModel.getModelType().equals(BuilderConstants.DATABINDING_TYPE_REMOTECALL))) {
+ String headerInfo = "";
+ if (dataModel.getHeaders() != null) {
+ for (Entry<String, String> info : dataModel.getHeaders().entrySet()) {
+ headerInfo += info.getKey() + "=" + info.getValue() + "&";
+ }
+ }
+
element.setAttribute(BuilderConstants.ATTRIBUTE_URL, dataModel.getURL());
element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, dataModel.getMethod());
element.setAttribute(BuilderConstants.ATTRIBUTE_PROXY, dataModel.getProxy());
element.setAttribute(BuilderConstants.ATTRIBUTE_SOURCETYPE, dataModel.getSourceType());
element.setAttribute(BuilderConstants.ATTRIBUTE_TIMEOUT, dataModel.getTimeout());
element.setAttribute(BuilderConstants.ATTRIBUTE_JSONDATA, dataModel.getJsonData());
+ element.setAttribute(BuilderConstants.ATTRIBUTE_HEADERS, headerInfo);
List<BindingObject> observableObjects = dataModel.getDataSourceObjects();
int size = observableObjects.size();
element.setAttribute(BuilderConstants.ATTRIBUTE_JSONDATA, jsonData);
element.setAttribute(BuilderConstants.ATTRIBUTE_FILEPATH, dataModel.getStaticFilePath());
} else if ((dataModel.getModelType() != null)
- && (dataModel.getModelType().equals("RUNTIMEAPI"))) {
- element.setAttribute(BuilderConstants.ATTRIBUTE_API, dataModel.getRuntimeApiName());
- }
+ && (dataModel.getModelType().equals("Contact"))) {
+ element.setAttribute(BuilderConstants.ATTRIBUTE_METHOD, dataModel.getRuntimeApiName());
+ element.setAttribute(BuilderConstants.ATTRIBUTE_ADDRESS_BOOK_ID, dataModel.getRuntimeApiAddressBookID());
+ List<BindingObject> observableObjects = dataModel.getDataSourceObjects();
+ int size = observableObjects.size();
+ for (int i = 0; i < size; i++) {
+ element.appendChild(writeObservableObjects(doc, observableObjects.get(i)));
+ }
+ } else if ((dataModel.getModelType() != null)
+ && (dataModel.getModelType().equals("Calendar"))) {
+ element.setAttribute(BuilderConstants.ATTRIBUTE_METHOD, dataModel.getCalendarName());
+ element.setAttribute(BuilderConstants.ATTRIBUTE_CALENDAR_TYPE, dataModel.getCalendarType());
+ element.setAttribute(BuilderConstants.ATTRIBUTE_CALENDAR_ID, dataModel.getCalendarID());
+ List<BindingObject> observableObjects = dataModel.getDataSourceObjects();
+ int size = observableObjects.size();
+ for (int i = 0; i < size; i++) {
+ element.appendChild(writeObservableObjects(doc, observableObjects.get(i)));
+ }
+ } else if ((dataModel.getModelType() != null)
+ && (dataModel.getModelType().equals("Call History"))) {
+ element.setAttribute(BuilderConstants.ATTRIBUTE_TYPE, dataModel.getCallHistoryType());
+ element.setAttribute(BuilderConstants.ATTRIBUTE_DIRECTION, dataModel.getCallHistoryDirection());
+ element.setAttribute(BuilderConstants.ATTRIBUTE_START_TIME_ORDER, dataModel.getCallHistoryStartTimeOrder());
+ List<BindingObject> observableObjects = dataModel.getDataSourceObjects();
+ int size = observableObjects.size();
+ for (int i = 0; i < size; i++) {
+ element.appendChild(writeObservableObjects(doc, observableObjects.get(i)));
+ }
+ }
return element;
}