begin process at 2008 07 06 04:51:56
1 205 464 membres
43 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

IMPLÉMENTATION DU TYPE GUID AVEC MICROSOFT AJAX


Information sur la source

Catégorie :Divers Classé sous : guid, atlas, microsoftajax, identifiant, uniqueidentifier Niveau : Initié Date de création : 18/04/2007 Date de mise à jour : 18/04/2007 20:29:56 Vu : 3 033

Note :
Aucune note

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


Description

Un Guid est un numéro unique. En .net il existe le type System.Guid qui est décrit sur la msdn ici : http://msdn2.microsoft.com/en-us/library/system.guid.aspx

J'ai réécrit ce type coté client en utiliser le framework Microsoft Ajax Library.

Source

  • Type.registerNamespace('CS');
  • CS.Guid = function(value){
  • this._tabs = [];
  • if (value.match('^[A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}$')){
  • this._tabs[0] = value.substring(0, 8).toUpperCase();
  • this._tabs[1] = value.substring(9, 13).toUpperCase();
  • this._tabs[2] = value.substring(14, 18).toUpperCase();
  • this._tabs[3] = value.substring(19, 23).toUpperCase();
  • this._tabs[4] = value.substring(24, 36).toUpperCase();
  • } else if (value.match('^{[A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}}$')){
  • this._tabs[0] = value.substring(1, 9).toUpperCase();
  • this._tabs[1] = value.substring(10, 14).toUpperCase();
  • this._tabs[2] = value.substring(15, 19).toUpperCase();
  • this._tabs[3] = value.substring(20, 24).toUpperCase();
  • this._tabs[4] = value.substring(25, 37).toUpperCase();
  • } else if (value.match('^\\([A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}\\)$')){
  • this._tabs[0] = value.substring(1, 9).toUpperCase();
  • this._tabs[1] = value.substring(10, 14).toUpperCase();
  • this._tabs[2] = value.substring(15, 19).toUpperCase();
  • this._tabs[3] = value.substring(20, 24).toUpperCase();
  • this._tabs[4] = value.substring(25, 37).toUpperCase();
  • } else if (value.match('^[A-Za-z0-9]{32}$')){
  • this._tabs[0] = value.substring(0, 8).toUpperCase();
  • this._tabs[1] = value.substring(8, 12).toUpperCase();
  • this._tabs[2] = value.substring(12, 16).toUpperCase();
  • this._tabs[3] = value.substring(16, 20).toUpperCase();
  • this._tabs[4] = value.substring(20, 32).toUpperCase();
  • }else {
  • throw Error.format(Sys.Res.formatInvalidString);
  • }
  • }
  • CS.Guid.prototype = {
  • toString : function(format){
  • switch(format){
  • case 'N' :
  • return String.format('{0}{1}{2}{3}{4}', this._tabs[0], this._tabs[1], this._tabs[2], this._tabs[3], this._tabs[4]);
  • break;
  • case 'B' :
  • return String.format('{{{0}-{1}-{2}-{3}-{4}}}', this._tabs[0], this._tabs[1], this._tabs[2], this._tabs[3], this._tabs[4]);
  • break;
  • case 'P' :
  • return String.format('({0}-{1}-{2}-{3}-{4})', this._tabs[0], this._tabs[1], this._tabs[2], this._tabs[3], this._tabs[4]);
  • break;
  • case 'D' :
  • case '' :
  • case null :
  • case undefined :
  • return String.format('{0}-{1}-{2}-{3}-{4}', this._tabs[0], this._tabs[1], this._tabs[2], this._tabs[3], this._tabs[4]);
  • break;
  • default :
  • throw Error.format(Sys.Res.formatInvalidString);
  • break;
  • }
  • }
  • }
  • CS.Guid.registerClass('CS.Guid');
  • CS.Guid.empty = new CS.Guid('00000000-0000-0000-0000-000000000000');
  • CS.Guid.newGuid = function(){
  • var d = new Date();
  • var end = d.getTime().toString();
  • for(var i = end.length; i < 32; i++){
  • end += Math.floor(Math.random()*16).toString(16);
  • }
  • return new CS.Guid(end);
  • }
            Type.registerNamespace('CS');
            
            CS.Guid = function(value){
                this._tabs = [];
                
                if (value.match('^[A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}$')){
                    this._tabs[0] = value.substring(0, 8).toUpperCase();
                    this._tabs[1] = value.substring(9, 13).toUpperCase();
                    this._tabs[2] = value.substring(14, 18).toUpperCase();
                    this._tabs[3] = value.substring(19, 23).toUpperCase();
                    this._tabs[4] = value.substring(24, 36).toUpperCase();
                } else if (value.match('^{[A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}}$')){
                    this._tabs[0] = value.substring(1, 9).toUpperCase();
                    this._tabs[1] = value.substring(10, 14).toUpperCase();
                    this._tabs[2] = value.substring(15, 19).toUpperCase();
                    this._tabs[3] = value.substring(20, 24).toUpperCase();
                    this._tabs[4] = value.substring(25, 37).toUpperCase();                    
                } else if (value.match('^\\([A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}\\)$')){
                    this._tabs[0] = value.substring(1, 9).toUpperCase();
                    this._tabs[1] = value.substring(10, 14).toUpperCase();
                    this._tabs[2] = value.substring(15, 19).toUpperCase();
                    this._tabs[3] = value.substring(20, 24).toUpperCase();
                    this._tabs[4] = value.substring(25, 37).toUpperCase();                    
                } else if (value.match('^[A-Za-z0-9]{32}$')){
                    this._tabs[0] = value.substring(0, 8).toUpperCase();
                    this._tabs[1] = value.substring(8, 12).toUpperCase();
                    this._tabs[2] = value.substring(12, 16).toUpperCase();
                    this._tabs[3] = value.substring(16, 20).toUpperCase();
                    this._tabs[4] = value.substring(20, 32).toUpperCase();                    
                }else {
                    throw Error.format(Sys.Res.formatInvalidString);
                }
            }
            
            CS.Guid.prototype = {
                toString : function(format){
                    switch(format){
                        case 'N' :
                            return String.format('{0}{1}{2}{3}{4}', this._tabs[0], this._tabs[1], this._tabs[2], this._tabs[3], this._tabs[4]);
                            break; 
                            
                        case 'B' :
                            return String.format('{{{0}-{1}-{2}-{3}-{4}}}', this._tabs[0], this._tabs[1], this._tabs[2], this._tabs[3], this._tabs[4]);
                            break;
                            
                        case 'P' :
                            return String.format('({0}-{1}-{2}-{3}-{4})', this._tabs[0], this._tabs[1], this._tabs[2], this._tabs[3], this._tabs[4]);
                            break;
                        
                        case 'D' :
                        case '' :
                        case null :
                        case undefined : 
                            return String.format('{0}-{1}-{2}-{3}-{4}', this._tabs[0], this._tabs[1], this._tabs[2], this._tabs[3], this._tabs[4]);                         
                            break; 
                            
                        default : 
                            throw Error.format(Sys.Res.formatInvalidString);
                            break;
                    }
                }
            }
            
            CS.Guid.registerClass('CS.Guid'); 
            
            CS.Guid.empty = new CS.Guid('00000000-0000-0000-0000-000000000000');
            CS.Guid.newGuid = function(){
                var d = new Date(); 
                var end = d.getTime().toString(); 
                for(var i = end.length; i < 32; i++){
                    end += Math.floor(Math.random()*16).toString(16); 
                }
                return new CS.Guid(end); 
            }

Conclusion

Contrairement à un vrai guid, le numéro n'est pas forcément unique (un guid est généré aléatoirement en prenant en compte la date, l'adresse mac de la carte réseau et d'autres paramètre) et on peut facilement connaitre l'heure de la création d'un guid. Mais dans la plupart des cas ce type nous suffit largement côté client.
18 avril 2007 20:29:56 :
correction d'une boulette
  • signaler à un administrateur
    Commentaire de stfou le 18/04/2007 16:33:50

    Pour info à ceux qui ne connaissent pas, GUID >> Global Unique Identifiant (Identifiant Unique au monde)

  • signaler à un administrateur
    Commentaire de stfou le 18/04/2007 16:34:40

    Sinon, super :) enfin quelque chose qui innove !

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Boutique

Boutique de goodies CodeS-SourceS