Created
June 27, 2015 09:48
-
-
Save kelsos/403f92c7fa41c88c0289 to your computer and use it in GitHub Desktop.
Randomize info
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package net.arx.communicator_library.model.contacts; | |
import android.util.Base64; | |
import java.util.ArrayList; | |
import java.util.Calendar; | |
import java.util.GregorianCalendar; | |
import java.util.List; | |
import java.util.Random; | |
public class RandomGenerator { | |
private static RandomGenerator instance; | |
private byte[] avatar; | |
private Random random; | |
private List<Character> chars; | |
private RandomGenerator() { | |
//default empty const | |
String image = | |
"iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAIAAAD/gAIDAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAE5VJREFUeNrsXVlvXEUXtP1NSAIOIYRYbBIIHhCv8P//BAIeEAgpiCVW9jgLWb+Sy6lU6pzuuWOH5CX3YTRzPXNv3+qz1Fm6vf3s2bOtt8eyY/vp06dvUXgL1luw3ixYT548eTM33t7We9jNO4fH/fv3//33X53f2dnZ3d1977338PrOO+/4z9+Iqd1+/Pjx60GkHgcHB/v7+zdv3rx9+/bO82P78BAiT58fAOv8+fOXLl26ePEivja65n8K4n8I1ggpyPI///zz559/PnjwYLVa/e/5EUjxEFj4FV452r29vc8///zdd999zZBtP3r06PXIEZ/8r7/+unz5Mh4GkrI6PAATfljFSj+hfOH1yeGBAQMyvELEvvrqqzNnzgigdgCvELjthw8fvgaYcNy4ceOXX37B075zeJw6dcplCh+JnfAiRsQFv9JHvD46PDByfPz000+//PJL19zReE6O2isAa4lA/frrr1euXDl79iyRkvYBo9OnT+sMjZHAIkBACqBgnLD9Uka8eXh4wCfgCt9++y38gINVBe3Ng7UWKRimH3/8EYIAfcFTnTo8gAvQIXb8SB2sXjIge3B4CDJcFgjiDN588803MP/+2zq2E+K1jTu9Woz8T7du3fr5558BBHBxpM4cHoLJBap9PEFGgDBmzLH0kXjhgNX/4osvJJivHLXjgLUQKXCCn376CbIjaGiV4MUAHNUwiMJaOkbPSIN17949nKGG4sCD4MzHH3/89ddf81KYgwkox8BrtelvaA5GT0URwHtQJ2gfkYJYASO8BzpAihbKrbhLUL1mvNIbSMcDU5ASvBIvHq/QV24GVotUiD2f4YcffgAoFCJqH5WRb9we+RHXEUB+8AzgDrx0TbATzNAnn3wSznH0pMsRWL1afsB7AymAQiGi9gVS5E1zpHRTh0l+gO9xQVxKPoo/p/PF3cH46zSPRGwRAnfv3j02UnGSH2GnoINw5DRV5ASnDw+a8xYjV5lWEwMsCQtdJMkEDhp7GC+c+e6776iw/DJAnMC0RL4WqeFI+3RS769duwbySZmikcLjAS8MWiOuMuWX0szzZJwHHFXWcHGc5zRQ1ggcODD4F76GM0SZb1poXg1Yy5Hi+ChE0j4+jJAKOapK4Ui1roOv7kZ5C7hI/Ak3ZZAAyQJxuX79+oULFxwgydcx8FoD1nKk8Pr777/jjTi6JxKCMcU19fytjof0tTIIEQZYFC7cmlkK4PXbb799//33BMh/eDxl3Hm24VFFgwesLAIaxi4k6IRJLEEh8YgchFGvHx0vV+ejaT/0jwQOB+cMX/v777+r861BwpJjJllVrHRGz8/JxMfLly8z1iPzjCyCVEDjE2McyVTIL3/rpjpIBm9HjeNsASyI2x9//AGm6nfEG81ZfcYJIDsnoQ46A4G/evWqiIJiPXJ0AaShcNyOprI0Oul5G/6E7/nD9sH8h5wzkhWIvHtVJoflQDbgWaOvjph6yBffQNQlVp7Gm2ROgnCOpkTmTFhLlsNg+28xBhovDgnD29vbk+2TqMpdLBSupQy+AuR32t/fF1JK5lXqHLrQBjST8EA/1wCkTRwJ/koOQftAZcTAwCUPDg52d3ddDTWqWrIZgtVWd6pFCKQkFPg5GCBMA0y7xEpA6FEdDilRRDBtisalUoojyEaeQWpOsHDASoAh8zyMBscgfawAtXhtYLNGEw4u42LldieQDWPsJmaiif79CvEohJRkcWDgXM5C5Ew3Cn02IKWtAjJppTHJovtjh8aFUW/VMGKaNnMgY0+lczERh8BJChcTXhB/2QE5CgK3JOd1ohQN3yAcQ3zjYuVqGHCE7Q+Y2hG7SY45UwSjVyHINxwSnQ/MFsAiR3MD19r4pWCtZe3+GHfu3CHzlBMMFZsjtcTAt9ZddlrmiRDwLjLkRIoHhorQJ6whg81K3I4jWdXSa0wUYDgat+sSKwmU5wnCpkwUsBKOdgpdLjxsdI9JM48RIsaQf3AsJF9rhavxhq3tCFkVZBgBZ0+v1esFXaySVVMxHouMshHOG4SLs18NiX9i2l5GSqoq+ar6mGAdwxXqTrgrDJaQilqpS1CrmyPhqlSgNSs1NeYgujJSDVnvwBvN98RgLeJZbUahWhZNBW6vymhLCOYyVQPDyDfEGZ//EVKEgM9Fhyj7AD7oXEyCpgu+SsmiNGly5IziGEHmXnKtH6yo1cRWSJNDIMj87qxsh/Hl+Xba1kvW3GB5yO4q6UF/y86rKPmXl0hWO+dRfNZ7BUDyieKikib5U6V9KrM7USDtqZI2b+fSNCETcz84kqxq5p1SuA7KHvl1KFkumIKvTf4sBWuCICeEkX2b6IjpbauBteQ1H0k8QJvDq99sk/16VX7NHXd7qY0LFnqFUffagXtrt2hr87ah4GuLoLVc1s5T+2VpAO29hk31rM/SDmARWNUoRAIgpCkUpxWr2r23PEoN4aofK1JeWJJtIp8IFjJxiIsYfEy+X5f3U349AukaeLdmaF7EnfjyVoLir+qCk+nwWVeFrWbcNgar7XLyJ8TtoZVRQXBCEBxtAs1GFcwlfslZRUs+gmG1mrixZAVS8jUsfDGMaIumbY581Gy2MHhobcqo/iTJCrFyM+JQ1oj6JbBGPKvNrokZSG5Pnz5969YtjiYSQ5N8y/GOVsVaf+rMQP27YvOe4ZFp5xNFsS4DrI3G6vlP+hSApVZidX7W8uK8Cesk3WFRi631QYIFW4GhhtIF3EEhN2DwrUzJd0iI2F7w+PCAStZc7fIwdaO8Y3ie2lrkpp1tI8z8+V8FmZ4rllBsxrOqWrnr5RsMQn2ebW57yfuF3nA59AKLE+mBWghRiMJxwp1WQJxSCbtz584dHBxwTDQNLbdamzVbUhwZlZpqTCaxIl5nzpxRpmRSagvqsFls2AYikYpkPovd6pSvyTVHb46hg3PgZN3Zs8vG75rFV6Y0qm2bUYeWnkU5V292d3fv3r1LyapuMYLtEVJr1dBnbq1YqVWXS0jIlj0vqrS9l7VrkLCoi6b1L57k92eDJrKLX3jF/MyRmueS2vp+DQlcKOiaHz0/IFaCT1eLDITGrJzXZl00VS5okjwHr6GfPXsWYGFkrABXxrBEuJZYrgi/alLFFxnQOMAFOaOOdksVqEOgKgHuCxah1fKpnlQUXlTY999/f39/H3gRLOaaI5V8QjUcGal4QokVV7Bo8Zi3kDhX8FxAaF+AM6sb1ijaE1gKFAQchoXBsSuKLVrV3NRs+gm9YUWNRp1I4T2XjXmorN86WwxRbc3WrHfYe88iTRo5P36EmccoMUTqo4x9rQAutFYjea8OR2eoehQrsD92zrRpQpcymRQPrSsgO/UPbp6jKCDLVeNY/unChQsYIvDiqkAFQJu2gK2NdWom1okCG7zZ5eC3EEuI6M0ndRKZr6p417jc1SeonXcYqPuWA/VmSU+fBt1dHl2P6F5YdCB1//59SNYHH3zAsTmVic6sSChHZSy51Jw3RDtoRAmt5T5//jwXbnHtlsiqXHLbHrMRUh4Pc0ha5EqkcGv8leshPOz37q22qhZI9dQhxMo9XaUzmpCWJd65cwcyheHWYmJUDWppY2Gm1PkU7RRtpdbSUag5VXDTMUmejFfdk5roOPa9Dm2HvrRPes5vhq91E4AvsGcMlgI+SHiNIsGK1xLh8oYOGSn6vnv37rFRBQfXEOD1+vXrH374YTVwbc9EdFXHbK1G5lNAhI+P2rJXTW7cuEGbqmZcBNg+MvbySyliPcGShTWuL27O7x8eQIqLO5xS4QvXrl2D/dJCMu+08AhxUnngm1XNN3pZLZJ2Uch1B4oJJFKAQ537ly5dwnkFSWD5lDuWiDkfoz7tUX1XuUYKFF4BE2QKr9A4gAXsOH4ug8GBMzdv3iRetbwattzPx+uq7UxsHfaojIwLQaa49ItA8OCilM8+++zKlSsQMcoCvoNH5eQTr7oWZxIbez5PC8rp+6BrTO9xJRglRcuG8AVM28WLFylfNfVeaWOVslWbtWire+5xWQHjryhTXK6qrjYtCcMX9vb2YPWZllBOVcvKvUlilLZXJoPczWknkMJvP/roI+XRpG40DkIHHyFf+Gb1p20qvEY/q7ZE3Ib1arVwUwVzgDMw576Yl+8pBdRZxP04yQ1n8Jza2qH2V1bSJ7ESPxDtxEdeWQRwy5YGMznjLRf4ydWrV2EcnCXMG09eUsMIr+bF9FBMyhSRophoXQO/wD0rRP9gUyAOEDGGkL5piHrh6gpyISU7xQNKx2jGlYNTqP46oEMlwCtuCvEXXr7CINxfOEe9rtbCVAk3bwD5ZymMMkJLoX1A9AxP7aDRhaGlBikicX2sa6MkU/R9OI+b4iKeFZDnEU1n4YtRPf+ESeUCYYwcNhRhvzc/jRbxOGSrJQGHZ6OIKXcKOHfunNbMaR1m8Do1cPrUCVxG3UpdMirywSgaJ9AQJbmFLVveKqABqFZic+GhaoLSd840t5fwZqNFiwbmJYDqAXFdmB7ZKR6EQOPz/ERYQO/SA9ZQDXVcshPAWbFWubRGN7iOuJJ4OYFzUSWzwRv1WQdfnQR/q5r5H5Uw9R4+hbs1yEhz2rXWj2GgeiopOCr8yEVw8nVfXm1SnpCA1zReaFM0TQNxVcM8pwxl5Ar9ebVNkK2WEGh3UtA+rhNVRlTbFNVkDs4zaevhpD9w7fqfdM60btoFx5s7eIaCo/VNMvy8IM4AL/jT0Vq6gGzVhmaTfcKg7dxUTgpCaVK6RiyMc856teQrnl9FFy8ltEvlIhckyxXrKaLHVcW6sDZcEYyBYe59YK1130yyNKbbt29zcb2WjLsV8C4aZeuJF3XQm3c9ZtLzRN04mnQlEQrsvZdAxlu48OKcORpWrRugF8aDwFfioaCMS8L4VSWfo0oUPD3nxBN7slMSezEG2jL2VHIHgVgqyC/4xLoBqsvjahuuREk6qEKJlgu4bnLAvCOfguYMj0ZmO9HEPp9Va9FaTKGdnUSLxKo4FFlxxdsqnYkWiAGKEHgjrDRIuSDlmyIX4ofzLO9KjEyc03quOKcycseyNjOTarikskJHKzslWuTMSJ5bj+fPqWmg/ZJmyfZ7WUVnHOtY/eVxOOVCPbVSVWmxTFvIO5URH/GATIpMkmurSd9i1AKcK8iuR8dWZbARmfNR1XrqWfBgm2IVfELlIPk1WaJo6HD5jdqE97BpnyTtaABLP2oufKGGk7BGjhkX8r36fBuC2iIQS+ClWVGPUx3YrbKb/1jWUVOsuv5WWZWvkwoM3Z7q+tQM4QXhQgxEutM2Y64i7K6tA9pTVXGfb7dQ1xM4A1DS0rVGsUjNzPgSpGhmVL6wJr4jYaucjG5Xry9YtU8jm2PbWtf6tLJ+AOOnfUBEF7Ze3soqlE5W2fXCK2ki+pIaJchk7Jwocv696ucrVj24o8320Kru2kPQdXdemfIFHYK1oXA1aeVJNUH38z3DRvv6VhDdhOnBKJiKbH3mGVe6bY5GPQciZIpsTtGfumldPzyFHWshtaMBhCvm0kVspQvV/arwA4hVtVaRRQm77kUNXsS/FsiGyVPK0Bm/P6S71OijFYeIzjKfAK8caya0qQE1EZwLkW8bS69G69uo/7hi3Zs27HrA5MmJuudM8Bdf6iknQBnxoE9zKR5bl8G4/Lr6yFb693lNRtexd41Yvq9YPGLRUadxjsPckCIbZ8Oj9XNbZZe+ujTFYxEn9A6Kz4eHNdoha2uwh0itToXNji2OWuHi8lzP0x7dpS6h9MBVRt3TvlUTtwZb8DirljkTKFHdEcUNhyuvoq+5e1VZRIswoy5ZUxHxsPqy9q5hNtz7OY4MQhB8WTW6g6gpjLozKkY1QeZSEPC5nsp76gHk4AMyUadIMa7dP6nt3yXWMjiifi+xv7pllxqd5AE10K2XNyBoE6pRvq4rfMNXBtGLftTYBKXe0RdshwpvDbZbbI2sojcqIzlzlMJ2qmvTXVV6qdsN1MRADKudUhdPtbpK0DyEDCeowLiuZ3ROMF843G4OGxxCwuVVxRepobCLWoXjRapWB0MkJ/tahHC5LfDKYGxBxIpO7PNXN85sY4CWLdcN9cLzyGyprBeatFPzgYxv/N8AjLAI71OXGcYj1RYPn/OWr9WPdXHTqFmsxhWTv4aZZx9OpLd2KjOUDo7CwJoXH7WJxrTXRozRJo+j3G7FumZ613ZDV+GKejujRTHNF/ksirdKWLKang5txbsa8tHgRm3YG61hXdK2XKseIfWjul/suiX7o6rKEeNxpqs6pWf46rBC8qvxCjs9Wec9kbKRNI0aN6qJ2VqwfUvdQc7NvEKFoyiqrVNW0x4WpFK7iaOcL5Bfsv/lRA3brsaWHo+YV9uqJx7u2Z5VPJLT4vq/XSb7zbWbZAW7GTXdnkQN66tvR1NbZSJXUcuFiiVohShcR1IWZRWSsfifCa3tHAlRu9Z+sgFDW/6db+3bXjNIyWRJbshUlK+9EKPM1xEljB7k6gfrhITNCnJfE83tUy13iHMdHG2FsVW26JoLV4Qx4hCe1dqJMqpAnavhhAQGrZ/M/0Zb9Y4Yw8h1tPvCzYlY/MnN1ks5eM9ktv8FZy05qGI10Zetzbdjn2xE0pZwfGBtrsZlqnb+eK3vRRpSYZrKc7UJr11aPMrJtP8dZrKOb+Fu0JPtL0Yy29KIdke4Wv2Wbnlo/H8BBgA/idocw4XuxgAAAABJRU5ErkJggg=="; | |
avatar = Base64.decode(image, Base64.NO_WRAP); | |
random = new Random(); | |
chars = new ArrayList<>(); | |
chars.add(' '); | |
chars.add('-'); | |
chars.add('_'); | |
chars.add('.'); | |
chars.add(','); | |
chars.add('@'); | |
} | |
public static RandomGenerator getInstance() { | |
if (instance == null) { | |
instance = new RandomGenerator(); | |
} | |
return instance; | |
} | |
public static int randBetween(int start, int end) { | |
return start + (int) Math.round(Math.random() * (end - start)); | |
} | |
public String randomString(final int length) { | |
String subset = "abcdefghijklmnopqrstuvwxyz"; | |
return getRandomString(length, subset); | |
} | |
private String getRandomString(final int length, final String subset) { | |
StringBuilder sb = new StringBuilder(); | |
for (int i = 0; i < length; i++) { | |
final int index = random.nextInt(subset.length()); | |
char c = subset.charAt(index); | |
sb.append(c); | |
} | |
return sb.toString(); | |
} | |
public String randomize(String original, boolean capitalizeFirst) { | |
String subset = "abcdefghijklmnopqrstuvwxyz"; | |
StringBuilder sb = new StringBuilder(); | |
for (int i = 0; i < original.length(); i++) { | |
final char charAt = original.charAt(i); | |
if (chars.contains(charAt)) { | |
sb.append(charAt); | |
} else { | |
final int index = random.nextInt(subset.length()); | |
char c = subset.charAt(index); | |
if (capitalizeFirst && Character.isUpperCase(charAt)) { | |
c = Character.toUpperCase(c); | |
} | |
sb.append(c); | |
} | |
} | |
return sb.toString(); | |
} | |
public String randomNumbericString(final int length) { | |
String subset = "1234567890"; | |
return getRandomString(length, subset); | |
} | |
public byte[] getAvatar() { | |
return avatar; | |
} | |
public String randomUrl(String url) { | |
final int last = url.lastIndexOf("."); | |
final int first = url.indexOf("."); | |
final String part = url.substring(first, last); | |
return String.format("http://%s.net", randomString(part.length())); | |
} | |
public String getRandomBday() { | |
GregorianCalendar gc = new GregorianCalendar(); | |
int year = randBetween(1950, 2010); | |
gc.set(Calendar.YEAR, year); | |
int dayOfYear = randBetween(1, gc.getActualMaximum(Calendar.DAY_OF_YEAR)); | |
gc.set(Calendar.DAY_OF_YEAR, dayOfYear); | |
return String.format("%d-%d-%d", gc.get(Calendar.YEAR), gc.get(Calendar.MONTH), | |
gc.get(Calendar.DAY_OF_MONTH)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment