Changeset a47a4a


Ignore:
Timestamp:
Feb 28, 2009, 2:23:47 AM (11 years ago)
Author:
rene <rene@…>
Branches:
lite_0.1, multiEdit, ng_0.6, ng_0.6_help, ng_0.8, ng_0.9
Children:
2d4d8b
Parents:
6d0cd3
Message:

modified behavior for saving and reading storage including filter

Location:
chrome/content/v_identity
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • chrome/content/v_identity/vI_rdfDatasource.js

    r6d0cd3 ra47a4a  
    214214    },
    215215   
    216     __findMatchingFilter : function (recDescription) {
    217         vI_notificationBar.dump("## vI_rdfDatasource: __findMatchingFilter for " + recDescription + ".\n");
     216    findMatchingFilter : function (recDescription) {
     217        vI_notificationBar.dump("## vI_rdfDatasource: findMatchingFilter for " + recDescription + ".\n");
    218218        var enumerator = vI_rdfDatasource.filterContainer.GetElements();
    219219        while (enumerator && enumerator.hasMoreElements()) {
     
    227227            if (filter == "") continue;
    228228            if (/^\/(.*)\/$/.exec(filter))
    229                 { vI_notificationBar.dump("## vI_rdfDatasource: __findMatchingFilter with RegExp '"
     229                { vI_notificationBar.dump("## vI_rdfDatasource: findMatchingFilter with RegExp '"
    230230                    + filter.replace(/\\/g,"\\\\") + "'\n"); recentfilterType = filterType.RegExp; }
    231             else    { vI_notificationBar.dump("## vI_rdfDatasource: __findMatchingFilter, compare with '"
     231            else    { vI_notificationBar.dump("## vI_rdfDatasource: findMatchingFilter, compare with '"
    232232                    + filter + "'\n"); recentfilterType = filterType.StrCmp; }
    233233           
     
    235235                case filterType.RegExp:
    236236                    try {   /^\/(.*)\/$/.exec(filter);
    237                         if (recDescription.match(new RegExp(RegExp.$1,"i"))) return resource;
     237                        if (recDescription.match(new RegExp(RegExp.$1,"i"))) {
     238                            vI_notificationBar.dump("## vI_rdfDatasource: findMatchingFilter found stored data.\n");
     239                            return vI_rdfDatasource.__readVIdentityFromRDF(resource);
     240                        }
    238241                    }
    239242                    catch(vErr) { }; break;
    240243                case filterType.StrCmp:
    241                     if (recDescription.toLowerCase().indexOf(filter.toLowerCase()) != -1) return resource;
     244                    if (recDescription.toLowerCase().indexOf(filter.toLowerCase()) != -1) {
     245                        vI_notificationBar.dump("## vI_rdfDatasource: findMatchingFilter found stored data.\n");
     246                        return vI_rdfDatasource.__readVIdentityFromRDF(resource);
     247                    }
    242248                    break;
    243249            }
    244250        }
     251        vI_notificationBar.dump("## vI_rdfDatasource: findMatchingFilter no match found.\n");
    245252        return null;
    246253    },
    247 
     254   
    248255    readVIdentityFromRDF : function (recDescription, recType) {
     256        var email = vI_rdfDatasource.rdfService.GetResource(vI_rdfDatasource.rdfNS + "rdf#email");
    249257        var resource = vI_rdfDatasource.__getRDFResourceForVIdentity(recDescription, recType);
    250258        if (!resource) return null;
    251 
    252         var email = vI_rdfDatasource.rdfService.GetResource(vI_rdfDatasource.rdfNS + "rdf#email");
    253         // if no data available try available filters
    254         if (!vI_rdfDatasource.rdfDataSource.hasArcOut(resource, email))
    255             resource = vI_rdfDatasource.__findMatchingFilter(recDescription);
    256         // if still no data available give up.
    257259        if (!vI_rdfDatasource.rdfDataSource.hasArcOut(resource, email)) {
     260            // no data available --> give up.
    258261            vI_notificationBar.dump("## vI_rdfDatasource: readVIdentityFromRDF no data found.\n");
    259262            return null;
     
    261264        vI_notificationBar.dump("## vI_rdfDatasource: readVIdentityFromRDF found stored data.\n");
    262265       
    263         email = vI_rdfDatasource.__getRDFValue(resource, "email")
     266        return vI_rdfDatasource.__readVIdentityFromRDF(resource);
     267    },
     268   
     269    __readVIdentityFromRDF : function (resource) {
     270        var email = vI_rdfDatasource.__getRDFValue(resource, "email")
    264271        var fullName = vI_rdfDatasource.__getRDFValue(resource, "fullName")
    265272        var id = vI_rdfDatasource.__getRDFValue(resource, "id")
     
    276283        return localIdentityData;
    277284    },
    278    
     285
    279286    __getRDFValue : function (resource, field) {
    280287        var predicate = vI_rdfDatasource.rdfService.GetResource(vI_rdfDatasource.rdfNS + "rdf#" + field);
  • chrome/content/v_identity/vI_storage.js

    r6d0cd3 ra47a4a  
    128128        }
    129129        vI_storage.lastCheckedEmail[row] = inputElement.value;
    130         var recipient = vI_storage.__getDescriptionAndType(inputElement.value, recipientType)
    131         var storageData = vI_rdfDatasource.readVIdentityFromRDF(recipient.recDesc, recipient.recType)
    132         if (!storageData) return;
     130        var recipient = vI_storage.__getDescriptionAndType(inputElement.value, recipientType);
     131
     132        var matchResults = { storageData : {}, menuItem : {} };
     133        matchResults.storageData[0] = vI_rdfDatasource.readVIdentityFromRDF(recipient.recDesc, recipient.recType),
     134        matchResults.storageData[1] = vI_rdfDatasource.findMatchingFilter(recipient.recDesc);
     135
     136        var matchIndex = null;
     137        for (var i = 0; i <= 1; i++) {
     138            if (matchResults.storageData[i]) {
     139                if (matchIndex == null) matchIndex = i;
     140                matchResults.menuItem[i] = document.getElementById("msgIdentity_clone")
     141                                .addIdentityToCloneMenu(matchResults.storageData[i]);
     142            }
     143        }
     144        if (matchIndex == null) return;
    133145       
    134146        // found storageData, so store InputElement
    135147        if (!vI_storage.firstUsedInputElement) vI_storage.firstUsedInputElement = inputElement;
    136148       
    137         // add Identity to dropdown-menu
    138         var menuItem = document.getElementById("msgIdentity_clone").addIdentityToCloneMenu(storageData);
    139 
    140149        vI_notificationBar.dump("## vI_storage: compare with current Identity\n");
    141150        if (vI.preferences.getBoolPref("storage_getOneOnly") &&
    142151            vI_storage.firstUsedInputElement &&
    143152            vI_storage.firstUsedInputElement != inputElement &&
    144             !storageData.equalsCurrentIdentity(false).equal)
     153            !matchResults.storageData[matchIndex].equalsCurrentIdentity(false).equal)
    145154                vI_notificationBar.setNote(vI.elements.strings
    146155                    .getString("vident.smartIdentity.vIStorageCollidingIdentity"),
     
    148157        // only update fields if new Identity is different than old one.
    149158        else {
    150             var compResult = storageData.equalsCurrentIdentity(true);
     159            var compResult = matchResults.storageData[matchIndex].equalsCurrentIdentity(true);
    151160            if (!compResult.equal) {
    152161                var warning = vI_storage.__getWarning("replaceVIdentity", recipient, compResult.compareMatrix);
     
    155164                    !vI.preferences.getBoolPref("storage_warn_vI_replace") ||
    156165                    (vI_storage.__askWarning(warning) == "accept")) {
    157                         msgIdentityCloneElem.selectedMenuItem = menuItem;
     166                        msgIdentityCloneElem.selectedMenuItem = matchResults.menuItem[matchIndex];
    158167                        if (msgIdentityCloneElem.vid)
    159168                            vI_notificationBar.setNote(vI.elements.strings.getString("vident.smartIdentity.vIStorageUsage") + ".",
     
    244253       
    245254        recipient = vI_storage.__getDescriptionAndType(recipient, recipientType);
    246         var storageData = vI_rdfDatasource.readVIdentityFromRDF(recipient.recDesc, recipient.recType);
    247         if (storageData) {
    248             var compResult = storageData.equalsCurrentIdentity(true);
    249             if (!compResult.equal && !dontUpdateMultipleNoEqual) {
    250                 var warning = vI_storage.__getWarning("updateStorage", recipient, compResult.compareMatrix);
    251                 vI_notificationBar.dump("## vI_storage: " + warning + ".\n")
    252                 var doUpdate = "accept";
    253                 if (vI.preferences.getBoolPref("storage_warn_update")) doUpdate = vI_storage.__askWarning(warning);
    254                 switch(doUpdate) {
    255                     case "abort":
    256                         return false;
    257                     case "accept":
    258                         vI_rdfDatasource.updateRDFFromVIdentity(recipient.recDesc, recipient.recType);
     255
     256        var matchResults = { storageData : {} };
     257        matchResults.storageData[0] = vI_rdfDatasource.readVIdentityFromRDF(recipient.recDesc, recipient.recType),
     258        matchResults.storageData[1] = vI_rdfDatasource.findMatchingFilter(recipient.recDesc);
     259
     260        for (var i = 0; i <= 1; i++) {
     261            if (matchResults.storageData[i]) {
     262                var compResult = matchResults.storageData[i].equalsCurrentIdentity(true);
     263                if (compResult.equal) return true;
     264                else if (!dontUpdateMultipleNoEqual) {
     265                    var warning = vI_storage.__getWarning("updateStorage", recipient, compResult.compareMatrix);
     266                    vI_notificationBar.dump("## vI_storage: " + warning + ".\n")
     267                    var doUpdate = "accept";
     268                    if (i == 0 && vI.preferences.getBoolPref("storage_warn_update")) doUpdate = vI_storage.__askWarning(warning);
     269                    switch(doUpdate) {
     270                        case "abort":
     271                            return false;
     272                        case "accept":
     273                            vI_rdfDatasource.updateRDFFromVIdentity(recipient.recDesc, recipient.recType);
     274                            return true;
     275                    }
    259276                }
    260277            }
    261278        }
    262         else vI_rdfDatasource.updateRDFFromVIdentity(recipient.recDesc, recipient.recType);
     279        vI_rdfDatasource.updateRDFFromVIdentity(recipient.recDesc, recipient.recType);
    263280        return true;
    264281    },
     
    353370            recipient = vI_storage.__getDescriptionAndType(awGetInputElement(row).value, recipientType);
    354371            var storageData = vI_rdfDatasource.readVIdentityFromRDF(recipient.recDesc, recipient.recType);
    355             if (storageData) allIdentities.addWithoutDuplicates(storageData)
     372            if (storageData) allIdentities.addWithoutDuplicates(storageData);
     373            storageData = vI_rdfDatasource.findMatchingFilter(recipient.recDesc);
     374            if (storageData) allIdentities.addWithoutDuplicates(storageData);
    356375        }
    357376        vI_notificationBar.dump("## vI_storage: found " + allIdentities.number + " address(es)\n")
Note: See TracChangeset for help on using the changeset viewer.