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.
95 lines
2.9 KiB
95 lines
2.9 KiB
3 years ago
|
// • ▌ ▄ ·. ▄▄▄· ▄▄ • ▪ ▄▄· ▄▄▄▄· ▄▄▄· ▐▄▄▄ ▄▄▄ .
|
||
|
// ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
|
||
|
// ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
|
||
|
// ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
|
||
|
// ▀▀ █▪▀▀▀ ▀ ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀ ▀ ▀ ▀▀ █▪ ▀▀▀
|
||
|
// 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;
|
||
|
}
|
||
|
|
||
|
}
|