Files
VisualSapfor/src/Visual_DVM_2021/Passes/All/ReplaceTestsFromFiles.java

85 lines
3.2 KiB
Java
Raw Normal View History

package Visual_DVM_2021.Passes.All;
import Common.Constants;
import Common.Current;
import Common.UI.UI;
import Common.Utils.Files.VFileChooser;
import Common.Utils.Utils;
import GlobalData.Settings.SettingName;
import TestingSystem.Common.Group.Group;
import TestingSystem.Common.Test.Test;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.Pass_2021;
import Visual_DVM_2021.Passes.Server.TestingSystemPass;
import java.io.File;
import java.util.LinkedHashMap;
import java.util.Vector;
public class ReplaceTestsFromFiles extends TestingSystemPass<Vector<Test>> {
Group group;
Vector<Test> testsForReplace;
VFileChooser fileChooser = new VFileChooser("Выберите файлы для замены тестов");
@Override
public String getIconPath() {
return "/icons/Menu/Undo.png";
}
//-
@Override
protected boolean canStart(Object... args) throws Exception {
if (!Current.Check(Log, Current.Group))
return false;
group = Current.getGroup();
Utils.RestoreSelectedDirectory(fileChooser);
Vector<File> files = fileChooser.ShowMultiDialog();
LinkedHashMap<String, File> sortedFiles = new LinkedHashMap<>();
//--
if (files.isEmpty()) {
Log.Writeln_("Не выбрано ни одного файла.");
return false;
}
//--
for (File file : files) {
String name = Utils.getNameWithoutExtension(file.getName()).toLowerCase();
if (!sortedFiles.containsKey(name)) {
sortedFiles.put(name, file);
}
}
//--
File dir = fileChooser.getCurrentDirectory();
Pass_2021.passes.get(PassCode_2021.UpdateSetting).Do(SettingName.ProjectsSearchDirectory, dir);
//---------------
if (dir.getName().equals(Constants.data)) {
Log.Writeln_(Utils.Brackets(dir) + "\nявляется служебной папкой визуализатора!");
return false;
}
if (!Utils.validateProjectFile(dir, Log)) {
Log.Writeln_("Имя папки " + Utils.Brackets(dir.getName()) + " содержит запрещённые символы " + Constants.all_forbidden_characters_string + ", или кириллицу.");
return false;
}
//--
testsForReplace = new Vector<>();
Vector<String> testForReplaceNames = new Vector<>();
for (Test test : server.db.tests.Data.values()) {
if ((test.group_id == group.id)&&sortedFiles.containsKey(test.description)) {
testsForReplace.add(test);
testForReplaceNames.add(test.description);
}
}
if (testsForReplace.size()==0){
Log.Writeln_("Не найдено тестов на замену.");
return false;
}
//--
if (UI.Question("Тесты "+String.join("\n", testForReplaceNames)+"\nбудут заменены. Продолжить")){
return true;
};
return false;
}
//-
@Override
protected void ServerAction() throws Exception {
UI.Info("+");
}
}