Implémentation du type guid avec microsoft ajax

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 906 fois - Téléchargée 19 fois

Contenu du snippet

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 / Exemple :


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.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
454
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
18 avril 2007
2
Sinon, super :) enfin quelque chose qui innove !
Messages postés
454
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
18 avril 2007
2
Pour info à ceux qui ne connaissent pas, GUID >> Global Unique Identifiant (Identifiant Unique au monde)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.