Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 | 6x 6x 6x 6x 6x 18x 18x 6x 1x 1x 1x 6x 6x 6x 6x 6x 6x 6x 6x 6x 1x 1x 2x 2x 2x 2x 2x 2x 17x 17x 3x 3x 3x 2x 2x 3x 3x 6x 6x 6x 6x 6x 6x | import Logger from "../../../Utils/LoggerByDefault"; import Address from "./model/Address"; import GeocodeFilterExtension from "./GeocodeFilterExtension"; /** * @classdesc * Requête de geocodage direct * * ``` * XSD * Geocodage direct (balise xsd) : * element ref="RequestHeader" [ (attribute name="clientName" attribute name="clientPassword" attribute name="sessionID" attribute name="srsName" attribute name="MSID") ] * element name="Request" attribute name="methodName" attribute name="version" attribute name="requestID" [ attribute name="maximumResponses" ] * element name="GeocodeRequest" attribute name="returnFreeForm" * element ref="xls:Address" * ``` * * @example * // creation de l'objet Geocode an ajoutant un objet Address * req = new GeocodeRequest (); * req.returnFreeForm = true; // TODO ! * req.addAddress (new Address ({ * location : "saint mandé", * type : ['PositionOfInterest'], * filter : { * (...) * } * })); * req.toString(); * // out -> * // <GeocodeRequest> * // <Address countryCode="PositionOfInterest"> * // <freeFormAddress>saint mandé</freeFormAddress> * // </Address> * // </GeocodeRequest> * * // creation de l'objet Geocode avec les options uniquement * req = new GeocodeRequest ({ * location : "saint mandé", * returnFreeForm : true, * filterOptions : { * type : ['PositionOfInterest'], * (...) * } * }); * req.toString(); * // out -> * // <GeocodeRequest> * // <Address countryCode="PositionOfInterest"> * // <freeFormAddress>saint mandé</freeFormAddress> * // </Address> * // </GeocodeRequest> * @constructor * * @alias Gp.Formats.XLS.LocationUtilityService.GeocodeRequest * @param {Object} options - options * @param {Object} options.location - location * @param {String} options.returnFreeForm - returnFreeForm * @param {String} options.filterOptions - filtres * @param {Function} options.onsuccess - function callback success (TODO) * @param {Function} options.onerror - function callback error (TODO) * * @private */ function GeocodeRequest (options) { this.logger = Logger.getLogger(); this.logger.trace("[Constructeur GeocodeRequest ()]"); Iif (!(this instanceof GeocodeRequest)) { throw new TypeError("GeocodeRequest constructor cannot be called as a function."); } // options par defaut this.options = options || {}; // et on ajoute les options en paramètre aux options par défaut for (var opt in options) { Eif (options.hasOwnProperty(opt)) { this.options[opt] = options[opt]; } } // TODO // gestion de l'option 'returnFreeForm' si elle n'est pas renseignée dans les options ! /** * Nom de la classe (heritage) */ this.CLASSNAME = "GeocodeRequest"; } GeocodeRequest.prototype = { /** * @lends module:GeocodeRequest# */ /** * request (out) * @type {String} */ strRequest : null, /** * Addresse * @type {Address} */ oAddress : null, /** * Filter * @type {GeocodeFilterExtension} */ oFilter : null, /** * Template de la requête. * substitution des valeurs suivantes : * __ADDRESS__, __RETURNFREEFORM__ */ template : "<GeocodeRequest returnFreeForm=\"__RETURNFREEFORM__\">" + "__ADDRESS__" + "</GeocodeRequest>", /** * Ajout d'un objet de type Adresse * * @param {Object} oAddress - Adresse */ addAddress : function (oAddress) { if (oAddress instanceof Address) { this.oAddress = oAddress; } }, /** * Ajout d'un objet de type GeocodeFilterExtension * * @param {Object} oFilter - GeocodeFilterExtension */ addFilter : function (oFilter) { // FIXME gestion des filtres à partir des tables de geocodages Eif (oFilter instanceof GeocodeFilterExtension) { this.oFilter = oFilter; } }, /** * Constructeur (alias) */ constructor : GeocodeRequest, /** * toString * * @returns {String} requête */ toString : function () { var template = ""; template = this.template; // soit on a déjà un objet Address instancié, // sinon, on le fabrique via les options Eif (!this.oAddress) { var settings = {}; settings.location = this.options.location; settings.type = this.options.filterOptions.type || ["StreetAddress"]; settings.filter = this.options.filterOptions; delete settings.filter.type; // on ne met pas le 'type' dans les filtres... // gestion des filtres if (this.oFilter) { // on reconstruit les filtres settings.filter = {}; // on determine la liste des filtres possibles // pour chaque table de geocodage en param for (var idx in settings.type) { var filter = settings.type[idx]; var oFilter = this.oFilter.getFilter(filter); Iif (!oFilter) { this.logger.warn("Le filtre '" + filter + "' n'existe pas !?"); continue; } var mFilter = this.options.filterOptions; // correspondances des attributs de filtres possibles avec ceux qui sont en options var attributs = oFilter.attributesList; for (var idxe = 0; idxe < attributs.length; idxe++) { var key = attributs[idxe]; if (mFilter[key]) { var matchingKey = oFilter.serviceAttributes[idxe]; oFilter.placeAttributes[matchingKey] = mFilter[key]; this.logger.trace("Selection du filtre '" + key + "' sur le type '" + filter + "'."); } } // ajout des valeurs des filtres var places = oFilter.placeAttributes; for (var kplace in places) { Eif (places.hasOwnProperty(kplace)) { settings.filter[kplace] = places[kplace]; } } } } this.oAddress = new Address(settings); Iif (!this.oAddress) { throw new Error("La construction de l'adresse n'est pas correctement definie !?"); } } // FIXME gestion des filtres pour un objet Address déjà instancié ? template = template.replace(/__ADDRESS__/g, this.oAddress.toString()); template = template.replace(/__RETURNFREEFORM__/g, (this.options.returnFreeForm) ? "true" : "false"); this.strRequest = template; return this.strRequest; } }; export default GeocodeRequest; |