/**
 *
 * Copyright (C) 2021 Akorbi Digital RMP
 *
 * This file is part of RunMyProcess SDK-JS.
 *
 * RunMyProcess SDK-JS is free software: you can redistribute it and/or modify
 * it under the terms of 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.
 */
 /**
   Create a new instance of Metadata
  	@constructor
	@property {JSON} data - Json representation of the metadata xml
	@see User
	@see Resource
 */
function Metadata(){
	this.data = [];
};
/**
	 @borrows
	 Inherits Resource
*/
Metadata.prototype = new  Resource();
/**
	Overrides Resource's loadPreset method.
	@method
	@see Resource#loadPreset
*/
Metadata.prototype.loadPreset = function () {
	/**
		Overrides Resource's generateUrl method to return the request url
		@method
		@see Resource#generateUrl
	*/
	this.generateUrl=function () {
	   return this.selfurl || context.link.metadata;
	};
};
/**
	Overrides Resource's loadSet method to set local variables after request.
	@method
	@param {json} rObject - JSON representation of the loaded data.
	@see Resource#loadSet
*/
Metadata.prototype.loadSet = function (rObject) {
	if (!rObject.entry.content)return [];
	var xmlstr= Resource.decodeBase64(rObject.entry.content.P_value);
	var pattern = /<([:A-Z_a-z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][-.0-9\xB7\u0300-\u036F\u0203F-\u2040]*)([^>]*?)\s*?\/>/g;
	xmlstr = xmlstr.replace(pattern, '<$1$2></$1>');
	xmlstr = xmlstr.replace(/>\s*/g, '>');  // Remove space after >
	xmlstr = xmlstr.replace(/\s*</g, '<');  // Remove space before <
	xmlstr = xmlstr.replace(/[\n\r\u0000\\]/g, '');
	var xmlDoc = this.stringtoXML(xmlstr);
	var jsonrep =this.xmlToJson(xmlDoc);
	this.data = eval(jsonrep.item.item);
};
