/*
 *    Copyright [2011] [wisemapping]
 *
 *   Licensed under WiseMapping Public License, Version 1.0 (the "License").
 *   It is basically the Apache License, Version 2.0 (the "License") plus the
 *   "powered by wisemapping" text requirement on every single page;
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the license at
 *
 *       http://www.wisemapping.org/license
 *
 *   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.
 */

mindplot.RESTPersistenceManager = new Class({
        Extends:mindplot.PersistenceManager,
        initialize:function (saveUrl, revertUrl) {
            this.parent();
            $assert(saveUrl, "saveUrl can not be null");
            $assert(revertUrl, "revertUrl can not be null");
            this.saveUrl = saveUrl;
            this.revertUrl = revertUrl;
        },

        saveMapXml:function (mapId, mapXml, pref, saveHistory, events) {

            var data = {
                id:mapId,
                xml:mapXml,
                properties:pref
            };

            var request = new Request({
                url:this.saveUrl.replace("{id}", mapId) + "?minor=" + !saveHistory,
                method:'put',
                onSuccess:function (responseText, responseXML) {
                    events.onSuccess();

                },
                onException:function (headerName, value) {
                    events.onError();
                },
                onFailure:function (xhr) {
                    events.onError();
                },
                headers:{"Content-Type":"application/json", "Accept":"application/json"},
                emulation:false,
                urlEncoded:false
            });
            request.put(JSON.encode(data));
        },

        discardChanges:function (mapId) {
            var request = new Request({
                url:this.revertUrl.replace("{id}", mapId),
                async:false,
                method:'post',
                onSuccess:function () {
                    console.log("Revert success ....");
                },
                onException:function () {
                },
                onFailure:function () {
                },
                headers:{"Content-Type":"application/json", "Accept":"application/json"},
                emulation:false,
                urlEncoded:false
            });
            request.post();
        }

    }
);


