forked from MagicBane/Server
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.9 KiB
94 lines
2.9 KiB
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ . |
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌· |
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀ |
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌ |
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀ |
|
// Magicbane Emulator Project © 2013 - 2022 |
|
// www.magicbane.com |
|
|
|
|
|
package engine.util; |
|
|
|
import engine.server.MBServerStatics; |
|
|
|
import java.util.regex.Pattern; |
|
|
|
|
|
public class MiscUtils { |
|
|
|
// no need to recompile these each call, put them in object scope and |
|
// compile just once. |
|
private static final Pattern lastNameRegex = Pattern |
|
.compile("^[A-Za-z][-'A-Za-z\\x20]*$"); |
|
private static final Pattern firstNameRegex = Pattern |
|
.compile("^[A-Za-z]+$"); |
|
|
|
public static boolean checkIfFirstNameInvalid(String firstName) { |
|
if ((firstName == null) || (firstName.length() == 0) |
|
|| (firstName.length() > MBServerStatics.MAX_NAME_LENGTH) |
|
|| (firstName.length() < MBServerStatics.MIN_NAME_LENGTH)) { |
|
return true; |
|
} |
|
return (!firstNameRegex.matcher(firstName).matches()); |
|
} |
|
|
|
public static boolean checkIfLastNameInvalid(String lastName) { |
|
if ((lastName != null) && (lastName.length() != 0)) { |
|
// make sure it's less than max length |
|
return lastName.length() > MBServerStatics.MAX_NAME_LENGTH; |
|
// first character: A-Z, a-z |
|
// remaining chars (optional): hyphen, apostrophe, A-Z, a-z, space |
|
// return (!lastNameRegex.matcher(lastName).matches()); |
|
} |
|
// empty last names are fine, return false |
|
return false; |
|
} |
|
|
|
public static String getCallingMethodName() { |
|
StackTraceElement e[] = Thread.currentThread().getStackTrace(); |
|
int numElements = e.length; |
|
|
|
if (numElements < 1) { |
|
return "NoStack"; |
|
} |
|
|
|
if (numElements == 1) { |
|
return e[0].getMethodName(); |
|
} else if (numElements == 2) { |
|
return e[1].getMethodName(); |
|
} else if (numElements == 3) { |
|
return e[2].getMethodName(); |
|
} else { |
|
return e[3].getMethodName(); |
|
} |
|
} |
|
|
|
public static String getCallStackAsString() { |
|
String out = ""; |
|
|
|
StackTraceElement e[] = Thread.currentThread().getStackTrace(); |
|
int numElements = e.length; |
|
|
|
for (int i = (numElements - 1); i > 1; --i) { |
|
|
|
String[] classStack = e[i].getClassName().split("\\."); |
|
String methName = e[i].getMethodName(); |
|
|
|
String className = classStack[classStack.length - 1]; |
|
|
|
if (methName.equals("<init>")) { |
|
methName = className; |
|
} |
|
|
|
out += className + '.' + methName + "()"; |
|
|
|
if (i > 2) { |
|
out += " -> "; |
|
} |
|
|
|
} |
|
|
|
return out; |
|
} |
|
|
|
}
|
|
|