1 /** 2 * 2011 Peter 'Pita' Martischka 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS-IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 18 /** 19 * The AuthorManager controlls all information about the Pad authors 20 */ 21 22 /** 23 * Saves all Authors as a assoative Array. The Key is the author id. 24 * Authors can have the following attributes: 25 * -name The Name of the Author as shown on the Pad 26 * -colorId The Id of Usercolor. A number between 0 and 31 27 * -timestamp The timestamp on which the user was last seen 28 */ 29 var globalAuthors = {}; 30 31 /** 32 * A easy key value pair. The Key is the token, the value is the authorid 33 */ 34 var token2author = {}; 35 36 /** 37 * Returns the Author Id for a token. If the token is unkown, 38 * it creates a author for the token 39 * @param token The token 40 */ 41 exports.getAuthor4Token = function (token) 42 { 43 var author; 44 45 if(token2author[token] == null) 46 { 47 author = "g." + _randomString(16); 48 49 while(globalAuthors[author] != null) 50 { 51 author = "g." + _randomString(16); 52 } 53 54 token2author[token]=author; 55 56 globalAuthors[author] = {}; 57 globalAuthors[author].colorId = Math.floor(Math.random()*32); 58 globalAuthors[author].name = null; 59 } 60 else 61 { 62 author = token2author[token]; 63 } 64 65 globalAuthors[author].timestamp = new Date().getTime(); 66 67 return author; 68 } 69 70 /** 71 * Returns the color Id of the author 72 */ 73 exports.getAuthorColorId = function (author) 74 { 75 throwExceptionIfAuthorNotExist(author); 76 77 return globalAuthors[author].colorId; 78 } 79 80 /** 81 * Sets the color Id of the author 82 */ 83 exports.setAuthorColorId = function (author, colorId) 84 { 85 throwExceptionIfAuthorNotExist(author); 86 87 globalAuthors[author].colorId = colorId; 88 } 89 90 /** 91 * Returns the name of the author 92 */ 93 exports.getAuthorName = function (author) 94 { 95 throwExceptionIfAuthorNotExist(author); 96 97 return globalAuthors[author].name; 98 } 99 100 /** 101 * Sets the name of the author 102 */ 103 exports.setAuthorName = function (author, name) 104 { 105 throwExceptionIfAuthorNotExist(author); 106 107 globalAuthors[author].name = name; 108 } 109 110 /** 111 * A internal function that checks if the Author exist and throws a exception if not 112 */ 113 function throwExceptionIfAuthorNotExist(author) 114 { 115 if(globalAuthors[author] == null) 116 { 117 throw "Author '" + author + "' is unkown!"; 118 } 119 } 120 121 /** 122 * Generates a random String with the given length. Is needed to generate the Author Ids 123 */ 124 function _randomString(len) { 125 // use only numbers and lowercase letters 126 var pieces = []; 127 for(var i=0;i<len;i++) { 128 pieces.push(Math.floor(Math.random()*36).toString(36).slice(-1)); 129 } 130 return pieces.join(''); 131 } 132