Changeset 1384 for MDService2/trunk


Ignore:
Timestamp:
05/28/11 11:46:34 (13 years ago)
Author:
gaba
Message:

querysetid,
bookmarksets structure

Location:
MDService2/trunk/MDService2
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • MDService2/trunk/MDService2/WebContent/index.jsp

    r1233 r1384  
    152152                        <span id="qts_save" class="cmd cmd_save" ></span>
    153153                        <div id="userqueries" ></div>
     154        </div>
     155        <div id="userbs" class="content">
     156                        <div id="bookmarksets" >               
     157                                <label>Bookmarksets</label><select id="bts_select" ></select>
     158                                <span id="bts_add" class="cmd cmd_add" ></span>
     159                                <span id="bts_delete" class="cmd cmd_del" ></span>
     160                        </div>
     161                       
     162                        <label>name</label>
     163                        <input type="text" id="bts_input" ></input>
     164                        <span id="bts_save" class="cmd cmd_save" ></span>
     165                        <div id="bookmarks" ></div>
    154166        </div> 
    155167</div>
  • MDService2/trunk/MDService2/WebContent/scripts/mdservice_model.js

    r1350 r1384  
    1616        server_json = undefined;
    1717};
     18
     19Workspace.prototype.getTypedElement = function(type, elementtype, id){
     20        var json;
     21        if (type == 'server'){
     22                json = this.server_json;
     23        } else {
     24                json = this.user_json;
     25        }
     26        switch(elementtype){
     27        case 'queryset':
     28                return json["WorkspaceProfile"].Querysets;
     29        case 'bookmarkset':
     30                return json["WorkspaceProfile"].Bookmarksets;
     31        case 'query':
     32                return  json["WorkspaceProfile"]["Querysets"][id]["Queries"];
     33        case 'bookmark':
     34                return json["WorkspaceProfile"]["Bookmarksets"][id]["Bookmarks"];
     35        }
     36
     37};
     38
     39Workspace.setTypedElement = function(type, id,data){
     40        switch(type){
     41        case 'queryset':
     42                this.user_json["WorkspaceProfile"].Querysets = data;
     43                break;
     44        case 'bookmarkset':
     45                this.user_json["WorkspaceProfile"].Bookmarksets = data;
     46                break;
     47        case 'query':
     48                workspace.user_json["WorkspaceProfile"]["Querysets"][id]["Queries"] = data;
     49                break;
     50        case 'bookmark':
     51                workspace.user_json["WorkspaceProfile"]["Bookmarksets"][id]["Bookmarks"] = data;
     52                break;
     53        }
     54
     55};
     56
     57Workspace.prototype.addelement = function(type, json, id){
     58        var elems = this.getTypedElement('user', type, id);
     59        var iq = 0;
     60       
     61        if (elems == "null"){
     62                Workspace.setTypedElement(type,id, "[{}]");
     63        } else {
     64                iq = elems.length;
     65        }
     66        if (json == undefined){
     67                var str_time = dateFormat(new Date());//dt.toString("yyyy-MM-dd HH:mm:ss");
     68                var name;
     69                if (type == "bookmarkset"){
     70                        name = "new_bookmarkset";
     71                        json  = {"name":name, "id":0, "created":str_time , "Bookmarks" : "null"};
     72                }
     73                if (type == "queryset"){
     74                        name = "new_queryset";
     75                        json  = {"name":name, "id":0, "created":str_time , "Queries" : "null"};
     76                }
     77        }
     78        elems[iq] = json;
     79
     80        return json;
     81        //this.user_json["WorkspaceProfile"]["Querysets"][id] = {"name":name, "id":0, "created":str_time , "Queries" : "null"};
     82       
     83};
     84/*
    1885Workspace.prototype.addquery = function(jsonquery, qsid){
    1986        var qsjson = this.user_json["WorkspaceProfile"]["Querysets"][qsid];
     
    40107        }
    41108
    42         this.user_json["WorkspaceProfile"]["Querysets"][id] = {"name":name,"created":str_time , "Queries" : "null"};
    43        
    44 };
    45 Workspace.prototype.removequeryset = function(qsid){
    46         //var ind;
    47         //$.each(this.user_json["WorkspaceProfile"]["Querysets"], function(index,jdata){
    48         //      if (jdata == json){
    49         //              ind = index;
    50         //      }
    51         //});
    52         var size = this.user_json["WorkspaceProfile"].Querysets.length;
    53        
    54         for (var i=qsid;i<size-1;i++){
    55                 this.user_json["WorkspaceProfile"].Querysets[i] = this.user_json["WorkspaceProfile"].Querysets[i+1];
    56         }
    57 
    58         delete this.user_json["WorkspaceProfile"].Querysets[size-1];
    59         this.user_json["WorkspaceProfile"]["Querysets"].length = size-1;
     109        this.user_json["WorkspaceProfile"]["Querysets"][id] = {"name":name, "id":0, "created":str_time , "Queries" : "null"};
     110       
     111};
     112
     113Workspace.prototype.addbookmark = function(jsonquery, qsid){
     114        var qsjson = this.user_json["WorkspaceProfile"]["Bookmarksets"][qsid];
     115        var queries = qsjson["Bookmarks"];
     116        var iq = 0;
     117       
     118        if (queries == "null"){
     119                qsjson["Bookmarks"] = [{}];
     120        } else {
     121                iq = queries.length;
     122        }
     123        qsjson["Bookmarks"][iq] = jsonquery;
     124};
     125Workspace.prototype.addbookmarkset = function(name){
     126
     127        var id = $('#bts_select option').size();
     128        var dt = new Date();
     129        var str_time = dateFormat(dt);
     130       
     131        if (id == 0){
     132                this.user_json["WorkspaceProfile"]["Bookmarksets"] = [{}];
     133        }
     134
     135        this.user_json["WorkspaceProfile"]["Bookmarksets"][id] = {"name":name, "id":0, "created":str_time , "Bookmarks" : "null"};
     136       
     137};
     138*/
     139Workspace.prototype.removeelement = function(type, id1, id2){
     140        var set = this.getTypedElement('user', type,id2);
     141        var size = set.length;
     142        for (var i=id1;i<size-1;i++){
     143                set[i] = set[i+1];
     144        }
     145        delete set[size-1];
     146        set.length = size-1;
    60147        // set null string , if 0 querysets
    61148        if (size == 1) {
    62                 this.user_json["WorkspaceProfile"]["Querysets"] = "null";
     149                Workspace.setTypedElement(type,id2,"null");
     150        }
     151};
     152/*
     153Workspace.prototype.removebookmarkset = function(qsid){
     154       
     155        var size = this.user_json["WorkspaceProfile"].Bookmarksets.length;
     156       
     157        for (var i=qsid;i<size-1;i++){
     158                this.user_json["WorkspaceProfile"].Bookmarksets[i] = this.user_json["WorkspaceProfile"].Bookmarksets[i+1];
     159        }
     160
     161        delete this.user_json["WorkspaceProfile"].Bookmarksets[size-1];
     162        this.user_json["WorkspaceProfile"]["Bookmarksets"].length = size-1;
     163        // set null string , if 0 querysets
     164        if (size == 1) {
     165                this.user_json["WorkspaceProfile"]["Bookmarksets"] = "null";
    63166        }
    64167};
     
    71174};
    72175
     176Workspace.prototype.getBookmarksets = function(){
     177       
     178        return  this.user_json["WorkspaceProfile"]["Bookmarksets"];
     179       
     180};
     181*/
    73182Workspace.prototype.getCustomTermsets = function(){
    74183        var json;
     
    84193
    85194};
    86 Workspace.prototype.savequery = function(json, querysetname){
     195Workspace.prototype.savequery = function(json, qsid, bookmark){
    87196        var JSONText;
    88197        var type = "user";
    89         var qdata = "/" + querysetname;
     198        var qdata = "/";// + querysetid;
    90199        JSONText = JSON.stringify(json);
    91        
     200        if (bookmark == 0){
     201                qdata = qdata + this.getTypedElement(type, 'queryset')[qsid]["id"];
     202        } else {
     203                qdata = qdata + this.getTypedElement(type, 'bookmarkset')[qsid]["id"];
     204        }
     205
    92206        $.post("/MDService2/workspaceprofilesave/" + type + qdata,{"data":JSONText},  function(data) {
    93207                if (json.id == 0){
    94208                        json.id = $(data).text();
    95                         appendQueryUI(json,querysetname, $('#userqueries'));
    96                 } else {
    97                         changeQueryUI(json,querysetname, $('#userqueries'));
    98                 }
     209                        if (bookmark == 0){
     210                                appendQueryUI(json,qsid, $('#userqueries'));
     211                        } else {
     212                                appendBookmarkUI(json,qsid, $('#bookmarks'));
     213                        }
     214                }
     215        });
     216};
     217Workspace.prototype.savequeryset = function(json, bookmark){
     218        var JSONText;
     219        var type = "user";
     220        JSONText = JSON.stringify(json);
     221       
     222        $.post("/MDService2/workspaceprofilesave/" + type,{"data":JSONText},  function(data) {
     223                if (json.id == 0){
     224                        json.id = $(data).text();
     225                        // todo appendQueryset
     226                        if (bookmark == 0){
     227                                loadQuerysets(type);
     228                        } else {
     229                                loadBookmarksets();
     230                        }
     231                }
    99232        });
    100233};
     
    213346};
    214347Query.prototype.save = function(){
    215         //queryset id
    216         var qsid = parseInt($("#qts_select option:selected").val());
    217         //var qsname = $("#qts_select option:selected").text();
    218         //var qsjson = $("#qts_select option:selected").val();
    219         var qsjson = workspace.getQuerysets("user")[qsid];
     348        var qsid;
     349        var qsjson;
    220350        var jsonq = this.toJSON();
    221         if (this.id == 0){
    222                 workspace.addquery(jsonq, qsid);//qsjson);
    223                 workspace.savequery(jsonq, qsjson["name"]);
    224         } else {
    225                 workspace.savequery(jsonq);
    226         }
     351       
     352        if (this.bookmark == 0){
     353                qsid = parseInt($("#qts_select option:selected").val());
     354                //qsjson = workspace.getQuerysets("user")[qsid];
     355                if (this.id == 0){
     356                        workspace.addelement("query",jsonq, qsid);//qsjson);
     357                        workspace.savequery(jsonq, qsid,this.bookmark);
     358                } else {
     359                        workspace.savequery(jsonq, this.bookmark);
     360                }
     361        } else {
     362                qsid = parseInt($("#bts_select option:selected").val());
     363                //qsjson = workspace.getBookmarksets()[qsid];
     364                if (this.id == 0){
     365                        workspace.addelement("bookmark", jsonq, qsid);//qsjson);
     366                        workspace.savequery(jsonq, qsid,this.bookmark);
     367                } else {
     368                        workspace.savequery(jsonq, this.bookmark);
     369                }
     370        }
     371       
     372       
     373       
    227374};
    228375/*
  • MDService2/trunk/MDService2/WebContent/scripts/mdservice_ui.js

    r1350 r1384  
    515515        });
    516516
    517         ///// datasets/queries
     517        ///// QUERYSETS
    518518        $('#qts_save').click(function(){
    519519                var id = $("#qts_select option:selected").val();
    520520                //notifyUser($('#qts_input').val() + $('#qts_input').text(),'debug');
    521521                workspace.user_json["WorkspaceProfile"]["Querysets"][id]["name"] = $('#qts_input').val();
    522                 workspace.save("USER");
     522                //workspace.save("USER");
     523                workspace.savequeryset(workspace.user_json["WorkspaceProfile"]["Querysets"][id],0);
    523524               
    524525                $("#qts_select option:selected").text( $('#qts_input').val());
     
    526527        });
    527528        $('#qts_add').click(function(){
    528                 var new_name = "new_queryset";
    529                
    530                 workspace.addqueryset(new_name);
    531                 workspace.save("USER");
     529                //var new_name = "new_queryset";
     530               
     531                //workspace.addqueryset(new_name);
     532                //var id = workspace.user_json["WorkspaceProfile"]["Querysets"].length-1;
     533                //workspace.savequeryset(workspace.user_json["WorkspaceProfile"]["Querysets"][id],0);
     534                //workspace.save("USER");
     535                var q = workspace.addelement('queryset');
     536                workspace.savequeryset(q, 0);
    532537                //todo
    533538                var id = $('#qts_select option').size();
    534                 $("#qts_select").append(new Option(new_name, id));
     539                $("#qts_select").append(new Option(q["name"], id));
    535540                $("#qts_select").find('option').attr("selected","false");
    536541                $("#qts_select").find('option').last().attr("selected","true");
    537                 $('#qts_input').val(new_name);
     542                $('#qts_input').val(q["name"]);
    538543        });
    539544        $('#qts_delete').click(function(){
    540                 var count = $("#qts_select option").size();
    541                
    542                 //if (count > 1){
    543                 /*
    544                         var id = parseInt($("#qts_select option:selected").val());
    545                         var size = jsonw["WorkspaceProfile"].Querysets.length;
    546                
    547                         for (var i=id;i<size-1;i++){
    548                                 jsonw["WorkspaceProfile"].Querysets[i] = jsonw["WorkspaceProfile"].Querysets[i+1];
    549                         }
    550                
    551                         delete jsonw["WorkspaceProfile"].Querysets[size-1];
    552                         jsonw["WorkspaceProfile"]["Querysets"].length = size-1;
    553                         // set null string , if 0 querysets
    554                         if (count == 1) {
    555                                 jsonw["WorkspaceProfile"]["Querysets"] = "null";
    556                         }
    557                         //saveWorkspace("USER");
    558                         Workspace.save("USER");
    559                         //$("#qts_select option").remove();
    560                         loadQuerysets(jsonw["WorkspaceProfile"]["Querysets"],"user");
    561                        
    562                 //}
    563                 */
    564545                var qsid = parseInt($("#qts_select option:selected").val());
    565                 //var json = $("#qts_select option:selected").val();
    566                 workspace.removequeryset(qsid);
     546                workspace.removeelement("queryset", qsid);
    567547                workspace.save("USER");
    568548                //update
    569                 //loadQuerysets(jsonw["WorkspaceProfile"]["Querysets"],"user");
    570549                loadQuerysets("user");
    571550        });
    572        
     551
     552        //BOOKMARKSETS
     553        $('#bts_save').click(function(){
     554                var id = $("#bts_select option:selected").val();
     555                workspace.user_json["WorkspaceProfile"]["Bookmarksets"][id]["name"] = $('#bts_input').val();
     556                workspace.savequeryset(workspace.user_json["WorkspaceProfile"]["Bookmarksets"][id],1);
     557               
     558                $("#bts_select option:selected").text( $('#bts_input').val());
     559        });
     560        $('#bts_add').click(function(){
     561                var b = workspace.addelement('bookmarkset');
     562                //var id = workspace.user_json["WorkspaceProfile"]["Bookmarksets"].length-1;
     563                //workspace.savequeryset(workspace.user_json["WorkspaceProfile"]["Bookmarksets"][id],1);
     564                workspace.savequeryset(b,1);
     565               
     566                var id = $('#bts_select option').size();
     567                $("#bts_select").append(new Option(b["name"], id));
     568                $("#bts_select").find('option').attr("selected","false");
     569                $("#bts_select").find('option').last().attr("selected","true");
     570                $('#bts_input').val(b["name"]);
     571        });
     572        $('#bts_delete').click(function(){
     573                var bsid = parseInt($("#bts_select option:selected").val());
     574               
     575                workspace.removeelement("bookmarkset", bsid);
     576                workspace.save("USER");
     577                //update
     578                loadBookmarksets("user");
     579        });
     580
     581        ////////////////////////////////////////////////
    573582        $('#ts_save').click(function(){
    574583                var id = $("#ts_select option:selected").val();
     
    682691                //var q = json["WorkspaceProfile"]["Querysets"][id]["Queries"][iq];
    683692               
    684                 var q = $(this).closest('.cmds-elem-plus').data("queryjson");
     693                var q = $(this).closest('.cmds-elem-plus').data("query");//json");
    685694                loadQuery(q);
    686695        });
    687696        $('#userqueries .cmd_load').live('click',function(event){
    688                
    689                 //var id = parseInt( $("#qts_select option:selected").val());
    690                 //var str = $(this).parent().find('a').attr("href");
    691                 //var iq = parseInt(str.substring(7));
    692                 //var q = workspace.getQuerysets("user")[id]["Queries"][iq];
    693                 var q = $(this).closest('.cmds-elem-plus').data("queryjson");
     697                var q = $(this).closest('.cmds-elem-plus').data("query");//json");
    694698                loadQuery(q);
    695699        });
    696700        $('#userqueries .cmd_del').live('click', function(event){
    697701                //var count = $("#userqueries li").size();
     702                /*
    698703                var id = parseInt($("#qts_select option:selected").val());
    699704                var str = $(this).parent().find('a').attr("href");
     
    711716                        workspace.user_json["WorkspaceProfile"]["Querysets"][id]["Queries"] = "null";
    712717                }
    713                
     718                */
    714719                //saveWorkspace("USER");
    715                 workspace.save("USER");
     720                var id2 = parseInt($("#qts_select option:selected").val());
     721                var id1 = parseInt( $(this).parent().find('a').attr("href").substring(7));
     722                workspace.removeelement("query", id1, id2);
     723                workspace.save("user");
    716724                loadQuerysets("user");
    717725                //$("#qs_select option").remove();
    718726                //$("#qs_select option").first().attr("selected","true");
     727        });
     728
     729        $('#bookmarks .cmd_load').live('click',function(event){
     730                var q = $(this).closest('.cmds-elem-plus').data("query");//json");
     731                var uri = "/MDService2/record/htmldetail/" + q.query;
     732                detailcaller.calldetail(undefined, "record", uri);
     733        });
     734        $('#bookmarks .cmd_del').live('click', function(event){
     735                var id2 = parseInt($("#bts_select option:selected").val());
     736                var id1 = parseInt( $(this).parent().find('a').attr("href").substring(7));
     737                workspace.removeelement("bookmark", id1, id2);
     738                workspace.save("user");
     739                loadBookmarksets();
    719740        });
    720741
     
    934955
    935956};
    936 
     957function loadQuery(query){
     958        query.repository = getSelectedRepository();
     959        queryset.addquery(query);
     960       
     961        searchclauseset.sctext = query.query;
     962        notifyUser(searchclauseset.sctext,'debug');
     963        searchclauseset.buildfromquerystring();
     964
     965        //collections = query.collection;
     966        collections_widget.load(query.collection);
     967        columns_widget.load(query.columns.split(','));
     968        $('#input-simplequery').attr("value",query.squery);
     969        $('#input-withsummary').attr("checked",(query.options != null));
     970        updateCollectionTree();
     971
     972};
     973/*
    937974function loadQuery(q){
    938975        if (q["bookmark"] == "1") {
     
    962999
    9631000}
    964 
     1001*/
    9651002function loadQueryFromUriParams(local_uri){
    9661003        var url;
  • MDService2/trunk/MDService2/WebContent/scripts/mdservice_ui_load.js

    r1350 r1384  
    7171                                //loadQuerysets(workspace.user_json["WorkspaceProfile"]["Querysets"],"user");
    7272                                loadQuerysets("user");
     73                                loadBookmarksets();
    7374                                //loadTermsets(jsonw["WorkspaceProfile"]["CustomTermsets"]);
    7475                                createTooltip(this);
     
    247248};
    248249
     250// QUERYSETS UI
    249251function appendQueryUI(json,i, qs){
    250252        var del = '';
     
    340342function loadQuerysets(type) {
    341343       
    342         var json = workspace.getQuerysets(type);
     344        var json = workspace.getTypedElement(type, 'queryset');
    343345        var $select;
    344346        if (type == "user") {
     
    396398}
    397399
     400// BOOKMARKS UI
     401function appendBookmarkUI(json,i, bs){
     402        var del = '';
     403        var name = '';
     404        var id = $(qs).parent().attr('id');
     405       
     406        del = '<span class="cmd cmd_del" ><xsl:text> </xsl:text></span>';
     407        name = '<div class="cmds-elem-prop"><span class="label">name:</span><input type="text" class="input-name" value="' + json.name + '"></div>';
     408               
     409        var timestr = "";
     410        if (json.time != undefined){
     411                timestr = json.time;
     412        }
     413        var squery = json.squerystring;
     414        if (squery = "[NULL]"){
     415                squery = "";
     416        }
     417        var qq = json.querystring;
     418        if (qq = "[NULL]"){
     419                qq = "";
     420        }
     421        var x = '<div class="cmds-elem-plus" ><span class="cmd cmd_load"></span><span class="detail-caller-inline" ><a href="'+id + '_'+ i+'" >' +
     422        json.name + '</a></span>' +
     423        del +
     424        '<span class="cmd cmd_publish"></span><div class="detail" >' +
     425        name +
     426        '<div class="cmds-elem-prop"><span class="label">squery:</span><span class="value">' + squery + '</span></div>' +
     427        '<div class="cmds-elem-prop"><span class="label">query:</span><span class="value">' + Query.simplequerystring(qq) + '</span></div>' +
     428        '<div class="cmds-elem-prop"><span class="label">collections:</span><span class="value">' + Query.collectiontext(json) + '</span></div>' +
     429        '<div class="cmds-elem-prop"><span class="label">columns:</span><span class="value">' + Query.columnstext(json) + '</span></div>' +
     430        '<div class="cmds-elem-prop"><span class="label">time:</span><span class="value">' + timestr + '</span></div>' +
     431        '<div class="cmds-elem-prop"><span class="label">bookmark:</span><span class="value">' + json.bookmark + '</span></div>' +
     432        '<div class="cmds-elem-prop"><span class="label">options:</span><span class="value">' + Query.optionstext(json) +  '</span></div>' +
     433        '</div>';
     434         
     435        $(bs).append(x);
     436       
     437        var query = new Query([],"","","");
     438        query.load(json);
     439        $(bs).find("[href='"+ id + "_" + i + "']").closest('.cmds-elem-plus').data('query',query);
     440        $(bs).find("[href='"+ id + "_" + i + "']").closest('.cmds-elem-plus').data('queryjson',json);
     441        $(bs).find('.input-name').data('queryjson',json);
     442        $(bs).find('.detail').css({'z-index' : '1000'});
     443       
     444        $(bs).find('.input-name').keydown(function(ev){
     445                var evStop = function(){
     446                        ev.stopPropagation();
     447                        ev.preventDefault();
     448                };
     449                if (ev.which === 13) {
     450                        $(this).data("queryjson").name = $(this).val();
     451                        $(this).data("query").name = $(this).val();
     452                        workspace.save("user");
     453                        //var query = new Query();
     454                        //query.load($(this).data("queryjson"));
     455                        //query.save();
     456                        /*
     457                        var id = parseInt( $("#qts_select option:selected").val());
     458                        $(this).parent().parent().parent().find('a').text($(this).val());
     459                        var str = $(this).parent().parent().parent().find('a').attr("href");
     460                        var iq = parseInt(str.substring(7));
     461                       
     462                        jsonw["WorkspaceProfile"]["Querysets"][id]["Queries"][iq].name = $(this).val();
     463                        //saveWorkspace("USER");
     464                        Workspace.save("USER");
     465                        */
     466                        evStop();
     467                }
     468        });
     469        createTooltip(qs);
     470}
     471
     472function createBookmarksUI(json, bs){
     473        $(bs).children().remove();
     474        if (json.Bookmarks != "null") {
     475                $.each(json.Bookmarks, function(i,item) {
     476                        if (this != "null"){
     477                                appendBookmarkUI(this,i, bs);
     478                        }
     479                });
     480        }
     481       
     482}
     483function loadBookmarksets() {
     484       
     485        var json = workspace.getTypedElement('user','bookmarkset');
     486        var $select = $('#bts_select');
     487       
     488        $select.find("option").remove();
     489       
     490        if (String(json) != "null") {
     491               
     492                $.each(json, function(i,item) {
     493                    $select.append(new Option(this.name, i));
     494                });
     495               
     496               
     497                // find id of selected
     498                if ($select.find("option").size() > 0) {
     499                        $select.find("option").first().attr("selected","true");
     500                        var id = parseInt($select.find("option:selected").val());
     501                        var jsonb = json[id];
     502                       
     503                        $('#bts_input').val(jsonb["name"]);
     504                        //qs = $("#bookmarks");
     505                       
     506                        createBookmarksUI(jsonb,  $("#bookmarks"));
     507                }
     508               
     509                $select.change(function(data){
     510                        if ($select.find("option").size() > 0) {
     511                                // find id of selected
     512                                var id = parseInt($select.find("option:selected").val());
     513                                var jsonq = json[id];
     514                                       
     515                                $('#bts_input').val(jsonq["name"]);
     516                                bs = $("#bookmarks");
     517                               
     518                                createBookmarksUI(jsonq, bs);
     519                               
     520                        }
     521             });
     522               
     523        }
     524
     525}
    398526
    399527function  preprocessJSON(json){
     
    439567                json["WorkspaceProfile"]["Querysets"][0] = jj;
    440568                }
     569        if (json["WorkspaceProfile"].Bookmarksets[0] == undefined){
     570                var jj = json["WorkspaceProfile"]["Bookmarksets"]["item"];
     571                delete json["WorkspaceProfile"]["Bookmarksets"]["item"];
     572                json["WorkspaceProfile"]["Bookmarksets"] = [{}];
     573                json["WorkspaceProfile"]["Bookmarksets"][0] = jj;
     574                }
     575
    441576        if (String(json["WorkspaceProfile"]["Querysets"]) != "null") {
    442577               
     
    474609        }
    475610       
     611       
     612        if (String(json["WorkspaceProfile"]["Bookmarksets"]) != "null") {
     613               
     614                $.each(json["WorkspaceProfile"]["Bookmarksets"], function(i,item) {
     615                    if (this.Bookmarks[0] == undefined){
     616                        var jj = this["Bookmarks"]["item"];
     617                                delete this["Bookmarks"]["item"];
     618                                this.Bookmarks = [{}];
     619                        this.Bookmarks[0] = jj;
     620                    }
     621                });
     622               
     623                $.each(json["WorkspaceProfile"]["Bookmarksets"], function(i,item){
     624                        if (String(this.Bookmarks) != "null") {
     625                                $.each(this.Bookmarks, function(i,item){
     626                                        if (this.collections != "null") {
     627                                                if (this.collections[0] == undefined){
     628                                                var jj = this["collections"]["item"];
     629                                                        delete this["collections"]["item"];
     630                                                        this.collections = [{}];
     631                                                this.collections[0] = jj;
     632                                            }
     633                                        }
     634                                        if (this.columns != "null") {
     635                                                if (this.columns[0] == undefined){
     636                                                var jj = this["columns"]["item"];
     637                                                        delete this["columns"]["item"];
     638                                                        this.columns = [{}];
     639                                                this.columns[0] = jj;
     640                                            }
     641                                        }
     642                                });
     643                        }
     644                });
     645        }
    476646        return json;
    477647       
  • MDService2/trunk/MDService2/src/eu/clarin/cmdi/mdservice/action/WorkspaceAction.java

    r1350 r1384  
    9191        // save element type
    9292        public static String SE_WORKSPACE = "workspace";
     93        public static String SE_QUERYSET = "queryset";
    9394        public static String SE_QUERY = "query";
     95        public static String SE_BOOKMARKSET = "bookmarkset";
     96        public static String SE_BOOKMARK = "bookmark";
    9497       
    9598        // administration query identification
     
    456459            nodelist.item(0).setTextContent(to_id);
    457460        }
    458         public String createNewQid(){
    459                 String id = workspace_doc.getElementsByTagName("maxqid").item(0).getTextContent();
     461        public String createNewId(String name){
     462                String id = workspace_doc.getElementsByTagName(name).item(0).getTextContent();
    460463                Integer i = Integer.parseInt(id) + 1;
    461464                id = i.toString();
    462                 workspace_doc.getElementsByTagName("maxqid").item(0).setTextContent(id);
     465                workspace_doc.getElementsByTagName(name).item(0).setTextContent(id);
    463466                return id.toString();
    464467        }
     468        /*
     469        public String createNewQsid(){
     470                String id = workspace_doc.getElementsByTagName("maxqsid").item(0).getTextContent();
     471                Integer i = Integer.parseInt(id) + 1;
     472                id = i.toString();
     473                workspace_doc.getElementsByTagName("maxqsid").item(0).setTextContent(id);
     474                return id.toString();
     475        }
     476        */
    465477        public InputStream createStream(String value) throws TransformerException, TransformerFactoryConfigurationError, ParserConfigurationException, UnsupportedEncodingException{
    466478        DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
     
    502514                String rootname = "WorkspaceProfile";
    503515                if (this.elementtype.equals(WorkspaceAction.SE_QUERY)){
    504                         rootname = "Query";
     516                        rootname = "item";
     517                }
     518                if (this.elementtype.equals(WorkspaceAction.SE_QUERYSET)){
     519                        rootname = "item";
    505520                }
    506521                return rootname;
     
    530545                        Node node = new_doc.getFirstChild();
    531546                        if (this.qid.equals("0")){
    532                                 newid = createNewQid(); 
     547                                newid = createNewId("maxqid");   
    533548                                new_doc.getElementsByTagName("id").item(0).setTextContent(newid);
    534549                        Element root = workspace_doc.getDocumentElement();
     
    536551                        node2 = workspace_doc.renameNode(node2, "", "item");
    537552                   // apend to specific queryset
    538                                 NodeList wsnodelist = (NodeList) getQueryset();
     553                                NodeList wsnodelist = (NodeList) getQueryParent();
    539554                        wsnodelist.item(0).appendChild(node2);
    540555                        }
     
    559574                        }
    560575                }
     576                if (this.elementtype.equals(WorkspaceAction.SE_BOOKMARK)){
     577                        // new bookmark
     578                                                Node node = new_doc.getFirstChild();
     579                                                if (this.qid.equals("0")){
     580                                                        newid = createNewId("maxbid");   
     581                                                        new_doc.getElementsByTagName("id").item(0).setTextContent(newid);
     582                                                Element root = workspace_doc.getDocumentElement();
     583                                                Node node2 = workspace_doc.adoptNode(node.cloneNode(true));
     584                                                node2 = workspace_doc.renameNode(node2, "", "item");
     585                                           // apend to specific bookmarkset
     586                                                        NodeList wsnodelist = (NodeList) getBookmarkParent();
     587                                                wsnodelist.item(0).appendChild(node2);
     588                                                }
     589                                               
     590                                                else {
     591                                                        // edit existing query
     592                                                        NodeList wsnodelist = (NodeList) getQuery();
     593                                                // remove
     594                                                //childeNode
     595                                                if (wsnodelist.getLength() > 0){
     596                                                        //Element root = workspace_doc.getDocumentElement();
     597                                                        Node node2 = workspace_doc.adoptNode(node.cloneNode(true));
     598                                                        node2 = workspace_doc.renameNode(node2, "", "item");
     599                                                        Node qnode  = (Node)wsnodelist.item(0);
     600                                                        //root.replaceChild(node2,(Node)wsnodelist.item(0));   
     601                                                       
     602                                                        Element parentElement = (Element)qnode.getParentNode();
     603                                                                parentElement.insertBefore(node2, qnode);
     604                                                                qnode.getParentNode().removeChild(qnode);
     605                                                                parentElement.normalize();
     606                                                }
     607                                                }
     608                                        }
     609                //new queryset
     610                if (this.elementtype.equals(WorkspaceAction.SE_QUERYSET)){
     611                        // new queryset
     612                                                Node node = new_doc.getFirstChild();
     613                                                if (this.qsid.equals("0")){
     614                                                        newid = createNewId("maxqsid"); 
     615                                                        new_doc.getElementsByTagName("id").item(0).setTextContent(newid);
     616                                                Element root = workspace_doc.getDocumentElement();
     617                                                Node node2 = workspace_doc.adoptNode(node.cloneNode(true));
     618                                                node2 = workspace_doc.renameNode(node2, "", "item");
     619                                           // apend to specific querysets
     620                                                NodeList wsnodelist = (NodeList) this.getWorkspace();
     621                                                Element welem = (Element)wsnodelist.item(0);
     622                                                        welem.getElementsByTagName("Querysets").item(0).appendChild(node2);
     623                                                }
     624                                               
     625                                                else {
     626                                                        // edit existing queryset
     627                                                        NodeList wsnodelist = (NodeList) getQueryset();
     628                                                // remove
     629                                                //childeNode
     630                                                if (wsnodelist.getLength() > 0){
     631                                                        //Element root = workspace_doc.getDocumentElement();
     632                                                        Node node2 = workspace_doc.adoptNode(node.cloneNode(true));
     633                                                        node2 = workspace_doc.renameNode(node2, "", "item");
     634                                                        Node qset  = (Node)wsnodelist.item(0);
     635                                                       
     636                                                        Element parentElement = (Element)qset.getParentNode();
     637                                                                parentElement.insertBefore(node2, qset);
     638                                                                qset.getParentNode().removeChild(qset);
     639                                                                parentElement.normalize();
     640                                                }
     641                                                }
     642                                        }
     643               
     644                //new bookmarkset
     645                if (this.elementtype.equals(WorkspaceAction.SE_BOOKMARKSET)){
     646                        // new queryset
     647                                                Node node = new_doc.getFirstChild();
     648                                                if (this.qsid.equals("0")){
     649                                                        newid = createNewId("maxbsid"); 
     650                                                        new_doc.getElementsByTagName("id").item(0).setTextContent(newid);
     651                                                Element root = workspace_doc.getDocumentElement();
     652                                                Node node2 = workspace_doc.adoptNode(node.cloneNode(true));
     653                                                node2 = workspace_doc.renameNode(node2, "", "item");
     654                                           // apend to specific querysets
     655                                                NodeList wsnodelist = (NodeList) this.getWorkspace();
     656                                                Element welem = (Element)wsnodelist.item(0);
     657                                                        welem.getElementsByTagName("Bookmarksets").item(0).appendChild(node2);
     658                                                }
     659                                               
     660                                                else {
     661                                                        // edit existing bookmarkset
     662                                                        NodeList wsnodelist = (NodeList) getBookmarkset();
     663                                                // remove
     664                                                //childeNode
     665                                                if (wsnodelist.getLength() > 0){
     666                                                        //Element root = workspace_doc.getDocumentElement();
     667                                                        Node node2 = workspace_doc.adoptNode(node.cloneNode(true));
     668                                                        node2 = workspace_doc.renameNode(node2, "", "item");
     669                                                        Node qset  = (Node)wsnodelist.item(0);
     670                                                       
     671                                                        Element parentElement = (Element)qset.getParentNode();
     672                                                                parentElement.insertBefore(node2, qset);
     673                                                                qset.getParentNode().removeChild(qset);
     674                                                                parentElement.normalize();
     675                                                }
     676                                                }
     677                                        }
    561678                return newid;
    562679        }
    563680       
    564         //todo
     681        //todo .has("Queries")
    565682        public void parseDataInit(JSONObject json){
    566683                // workspaceelement
    567                 if (json.containsKey("Querysets")) {
     684                if (json.has("Querysets")) {
    568685                        this.setQid("0");
    569686                        this.setElementtype(WorkspaceAction.SE_WORKSPACE);
    570687                } else {
    571                         // Queryelement
    572                         this.setElementtype(WorkspaceAction.SE_QUERY);
    573                         this.setQid(json.getString("id"));
    574                         //this.//
     688                        // Querysetelement
     689                        if (json.has("Queries")) {
     690                                this.setElementtype(WorkspaceAction.SE_QUERYSET);
     691                                this.setQsid(json.getString("id"));
     692                        } else {
     693                                if (json.has("Bookmarks")) {
     694                                        this.setElementtype(WorkspaceAction.SE_BOOKMARKSET);
     695                                        this.setQsid(json.getString("id"));
     696                                } else {
     697                                        // Query-Bookmark-element
     698                                        if (json.getString("bookmark").equals("1")) {
     699                                                this.setElementtype(WorkspaceAction.SE_BOOKMARK);
     700                                        } else {
     701                                                // Queryelement
     702                                                this.setElementtype(WorkspaceAction.SE_QUERY);
     703                                        }
     704                                        this.setQid(json.getString("id"));
     705                                }
     706                        }
    575707                }
    576708
     
    741873            XPathExpression expr;
    742874                        expr = xpath.compile("//Profiles/WorkspaceProfiles/WorkspaceProfile/Querysets/item/Queries/item[id='" + this.qid + "']");
    743                 //expr = xpath.compile("//item[@id='" + this.qid + "']");
     875                                //expr = xpath.compile("//item[@id='" + this.qid + "']");
    744876                        //expression is evaluated with respect to a certain context node which is doc.
    745877                        Object result = null;
     
    753885        }
    754886
    755         public Object getQueryset() throws XPathExpressionException{
     887public Object getQueryParent() throws XPathExpressionException{
    756888               
    757889                XPathFactory factory = XPathFactory.newInstance();
    758890            XPath xpath = factory.newXPath();
    759891            XPathExpression expr;
    760                         expr = xpath.compile("//Profiles/WorkspaceProfiles/WorkspaceProfile/Querysets/item[name='" + this.qsid + "']/Queries");
     892                        expr = xpath.compile("//Profiles/WorkspaceProfiles/WorkspaceProfile/Querysets/item[id='" + this.qsid + "']/Queries");
    761893                        //expression is evaluated with respect to a certain context node which is doc.
    762894                        Object result = null;
     
    769901             return result;
    770902        }
    771 
     903        public Object getQueryset() throws XPathExpressionException{
     904               
     905                XPathFactory factory = XPathFactory.newInstance();
     906            XPath xpath = factory.newXPath();
     907            XPathExpression expr;
     908                        expr = xpath.compile("//Profiles/WorkspaceProfiles/WorkspaceProfile/Querysets/item[id='" + this.qsid + "']");
     909                        //expression is evaluated with respect to a certain context node which is doc.
     910                        Object result = null;
     911                        try{
     912                        result = expr.evaluate(workspace_doc, XPathConstants.NODESET);
     913                        } catch(Exception e){
     914                               
     915                        }
     916
     917             return result;
     918        }
     919
     920        public Object getBookmarkParent() throws XPathExpressionException{
     921               
     922                XPathFactory factory = XPathFactory.newInstance();
     923            XPath xpath = factory.newXPath();
     924            XPathExpression expr;
     925                        expr = xpath.compile("//Profiles/WorkspaceProfiles/WorkspaceProfile/Bookmarksets/item[id='" + this.qsid + "']/Bookmarks");
     926                        //expression is evaluated with respect to a certain context node which is doc.
     927                        Object result = null;
     928                        try{
     929                        result = expr.evaluate(workspace_doc, XPathConstants.NODESET);
     930                        } catch(Exception e){
     931                               
     932                        }
     933
     934             return result;
     935        }
     936       
     937        public Object getBookmarkset() throws XPathExpressionException{
     938               
     939                XPathFactory factory = XPathFactory.newInstance();
     940            XPath xpath = factory.newXPath();
     941            XPathExpression expr;
     942                        expr = xpath.compile("//Profiles/WorkspaceProfiles/WorkspaceProfile/Bookmarksets/item[id='" + this.qsid + "']");
     943                        //expression is evaluated with respect to a certain context node which is doc.
     944                        Object result = null;
     945                        try{
     946                        result = expr.evaluate(workspace_doc, XPathConstants.NODESET);
     947                        } catch(Exception e){
     948                               
     949                        }
     950
     951             return result;
     952        }
     953
     954       
    772955        @Override
    773956        public void prepare() throws Exception {               
Note: See TracChangeset for help on using the changeset viewer.