Files
VisualSapfor/src/Common/Utils/Validators/PathValidator.java

70 lines
2.4 KiB
Java
Raw Normal View History

2023-09-17 22:13:42 +03:00
package Common.Utils.Validators;
2023-09-29 21:46:08 +03:00
import Common.Constants.Constants;
2023-09-17 22:13:42 +03:00
import Common.Utils.TextLog;
import Common.Utils.Utils;
import org.fife.ui.rsyntaxtextarea.RSyntaxUtilities;
public class PathValidator extends Validator {
PathValidatorState state;
StringBuilder name;
int spaces_count;
public PathValidator(String string, String string_name_in, TextLog log_in) {
super(string, string_name_in, log_in);
}
@Override
protected void reset() {
state = PathValidatorState.Start;
name = new StringBuilder();
spaces_count = 0;
}
@Override
protected boolean continueCondition() {
return (state == PathValidatorState.Name) || state == PathValidatorState.Start;
}
@Override
protected void Body() {
switch (state) {
case Start:
if (RSyntaxUtilities.isLetter(c) || RSyntaxUtilities.isDigit(c) || c == '_') {
name.append(c);
state = PathValidatorState.Name;
} else state = PathValidatorState.WrongNameFormat;
break;
case Name:
switch (c) {
case '/':
reset();
break;
case ' ':
spaces_count++;
name.append(c);
break;
default:
if (Utils.isForbidden(c))
state = PathValidatorState.Forbidden;
else name.append(c);
break;
}
break;
}
}
@Override
protected void PerformFinish() {
switch (state) {
case WrongNameFormat:
Log.Writeln(string_name + ": имя файла или каталога в пути имеет неверный формат");
break;
case Forbidden:
2023-09-29 21:46:08 +03:00
Log.Writeln(string_name + ": Составляющие путь имена содержат запрещённые символы \n" + Constants.all_forbidden_characters_string);
2023-09-17 22:13:42 +03:00
break;
case Name:
if (spaces_count > 0)
Log.Writeln(string_name + ": Пробелы в окончании пути к файлу запрещены.");
break;
}
}
@Override
protected int getStartIndex() {
return 1;
}
}