/**
 *
 * 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 Host
	@constructor
	@property {User} author - Contains the author's information.
	@property {String} title - the title of the Host
	@property {Date} published - the published date
	@property {Date} updated - the updated date
	@property {Object} project - the host's project
	@property {Array} modes - an array of host modes
	@property {String} transport - the host's transport
	@see UserLaneList
	@see Resource
	@example  load hosts
	var hl = new HostList();
	hl.load({
	  onSuccess:function(){
		alert(hl.hosts.length);
	  }
	});
*/
function Host(){
	this.author = new User();
	this.title;
	this.published;
	this.updated;
	this.project=new Project();
	this.modes=[];
	this.transport;
};
/**
	 @borrows
	 Inherits Resource
*/
Host.prototype = new  Resource();
/**
	Overrides Resource's loadPreset method.
	@method
	@see Resource#loadPreset
*/
Host.prototype.loadPreset = function () {
	/**
		Overrides Resource's generateUrl method to return the request url
		@method
		@see Resource#generateUrl
	*/
	this.generateUrl = function () {
		return this.selfUrl;
	};
};
/**
	Overrides Resource's loadSet method to set local variables after request.
	@method
	@param {json} rObject - JSON representation of the loaded data.
	@see Resource#loadSet
*/
Host.prototype.loadSet = function (rObject) {
	var father = this;
	father.title = rObject.title;
	father.author.name = rObject.author.name;
	father.author.selfUrl = rObject.author.uri;
	father.updated = new Date(rObject.updated);
	father.published = new Date(father.entries[0].published);//NOT IN LOAD
	father.rights = rObject.rights;
	father.transport = father.termSearch('transport',father.category);
	father.project = new Project();
	var projectLink = father.linkObjectSearch('project',father.entries[0].link);
	if (projectLink){
		father.project.title = projectLink.title;
		father.project.selfUrl = projectLink.href;
		father.project.type = projectLink.type;
	}
	father.modes = [];
	var ent=this.getArray(rObject, "entry");	
	for (var i = 0; i < ent.length; i++) {
		var hm = new HostMode();
		hm.id = ent[i].id;
		hm.links = mh.getArray(ent[i], "link");
		hm.title = ent[i].title;
		hm.category = ent[i].category;
		hm.updated = new Date(ent[i].updated);
		hm.published = new Date(ent[i].published);
		hm.rights = ent[i].rights;
		hm.project = new Project();
		var projectLink = hm.linkObjectSearch('project',hm.links);
		if (projectLink){
			hm.project.title = projectLink.title;
			hm.project.selfUrl = projectLink.href;
			hm.project.type = projectLink.type;
		}
		
		father.modes.push(hm);
	}
};
