package com.idega.core.accesscontrol.business;
import com.idega.core.accesscontrol.data.LoginTable;
import com.idega.data.EntityFinder;
import java.util.StringTokenizer;
import java.lang.StringBuffer;
import java.util.List;
/**
* Title: LoginCreator
* Description:
* Copyright: Copyright (c) 2000-2001 idega.is All Rights Reserved
* Company: idega
*@author <a href="mailto:aron@idega.is">Aron Birkir</a>
* @version 1.1
*/
public class LoginCreator {
public static String alpha = "aA��bBcCdD��eE��fFgGhHiI��jJkKlLmMnNoO��pPqQrRsStTuU��vVwWxXyY��zZ������";
public static String beta = "aaaabbccddddeeeeffgghhiiiijjkkllmmnnooooppqqrrssttuuuuvvwwxxyyyyzzttaaoo";
public static String dega = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789";
public static String consonants = "bBcCdDfFgGhHjJkKlLmMnNpPqQrRsStTvVwWxXzZ��";
public static String vowels = "aA��eE��iI��oO��uU��yY������";
private static final int ONE = 1,TWO = 2,THREE=3,FOUR=4;
public LoginCreator(){}
public static String createLogin(String name){
StringTokenizer st = new StringTokenizer(name);
int TYPE = 0;
int tokenCount = st.countTokens();
int firstSize = 0;
int thirdIndex = 0;
String first = null,second=null,third=null;
if(st.hasMoreTokens()){
first = st.nextToken();
firstSize = first.length();
}
if(st.hasMoreTokens()) {
second = st.nextToken();
}
if(st.hasMoreTokens()) {
third = st.nextToken();
}
if(tokenCount == 2 ) {
third = second;
}
StringBuffer sb = new StringBuffer();
int index = -1;
if(firstSize <= 7){
TYPE = ONE;
for (int i = 0; i < first.length(); i++) {
index = alpha.indexOf(String.valueOf(first.charAt(i)));
if(index >= 0){
sb.append(beta.charAt(index));
}
}
if(third !=null){
index = alpha.indexOf(String.valueOf(third.charAt(thirdIndex)));
if(index >= 0){
sb.append(beta.charAt(index));
}
}
}
else if(firstSize > 7 && tokenCount == 2){
TYPE = TWO;
for (int i = 0; i < 5; i++) {
index = alpha.indexOf(String.valueOf(first.charAt(i)));
if(index >= 0){
sb.append(beta.charAt(index));
}
}
if(second !=null){
index = alpha.indexOf(String.valueOf(third.charAt(thirdIndex)));
if(index >= 0){
sb.append(beta.charAt(index));
}
}
}
else if(tokenCount >= 3){
TYPE = THREE;
index = alpha.indexOf(String.valueOf(first.charAt(0)));
if(index!=-1) {
sb.append(beta.charAt(index));
}
index = alpha.indexOf(String.valueOf(second.charAt(0)));
if(index!=-1) {
sb.append(beta.charAt(index));
}
index = alpha.indexOf(String.valueOf(third.charAt(thirdIndex)));
if(index!=-1) {
sb.append(beta.charAt(index));
}
}
while (checkLoginExistence(sb.toString())){
switch (TYPE) {
case ONE:
case TWO:
case THREE:
if(thirdIndex < third.length()) {
sb.append(third.charAt(thirdIndex++));
}
break;
}
//System.err.println(sb.toString());
}
//System.err.println(sb.toString());
return sb.toString();
}
public static boolean checkLoginExistence(String login){
try{
List L = EntityFinder.findAllByColumn(((com.idega.core.accesscontrol.data.LoginTableHome)com.idega.data.IDOLookup.getHomeLegacy(LoginTable.class)).createLegacy(),com.idega.core.accesscontrol.data.LoginTableBMPBean.getUserLoginColumnName(),login);
if(L ==null) {
return false;
}
else {
return true;
}
}
catch(java.sql.SQLException ex){
return false;
}
}
public static String createPasswd(int NumberOfCharacters){
StringBuffer passwd = new StringBuffer(NumberOfCharacters);
int len = dega.length();
for (int i = 0; i < NumberOfCharacters; i++) {
int num = (int) (Math.random() * len) ;
passwd.append(dega.charAt(num));
}
return passwd.toString();
}
}