2024-10-09 22:21:57 +03:00
|
|
|
package _VisualDVM.TestingSystem.Common.Group;
|
2024-10-07 00:58:29 +03:00
|
|
|
import Common.Database.Objects.DBObject;
|
|
|
|
|
import Common.Database.Tables.FKBehaviour;
|
|
|
|
|
import Common.Database.Tables.FKCurrentObjectBehaviuor;
|
|
|
|
|
import Common.Database.Tables.FKDataBehaviour;
|
|
|
|
|
import Common.Database.Tables.iDBTable;
|
2024-10-16 20:45:59 +03:00
|
|
|
import Common.Utils.Utils_;
|
|
|
|
|
import Common.Visual.Controls.MenuBarButton;
|
2024-10-07 00:58:29 +03:00
|
|
|
import Common.Visual.DBObjectFilter;
|
2024-10-14 15:19:13 +03:00
|
|
|
import Common.Visual.DataSetControlForm;
|
2024-10-07 00:58:29 +03:00
|
|
|
import Common.Visual.DataSetFilter;
|
2024-10-16 20:45:59 +03:00
|
|
|
import Common.Visual.Menus.DataMenuBar;
|
2024-10-15 15:13:57 +03:00
|
|
|
import Common.Visual.UI;
|
2024-10-14 15:19:13 +03:00
|
|
|
import Common.Visual.Windows.Dialog.DBObjectDialog;
|
|
|
|
|
import _VisualDVM.Current;
|
2024-10-16 20:45:59 +03:00
|
|
|
import _VisualDVM.Global;
|
|
|
|
|
import _VisualDVM.Passes.PassCode;
|
2024-10-09 22:21:57 +03:00
|
|
|
import _VisualDVM.ProjectData.LanguageName;
|
2024-10-16 20:45:59 +03:00
|
|
|
import _VisualDVM.TestingSystem.Common.Group.UI.AddGroupMenu;
|
|
|
|
|
import _VisualDVM.TestingSystem.Common.Group.UI.EditGroupMenu;
|
2024-10-09 22:21:57 +03:00
|
|
|
import _VisualDVM.TestingSystem.Common.Group.UI.GroupFields;
|
|
|
|
|
import _VisualDVM.TestingSystem.Common.Test.Test;
|
|
|
|
|
import _VisualDVM.TestingSystem.Common.Test.TestType;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
2024-10-16 20:45:59 +03:00
|
|
|
import javax.swing.*;
|
2023-09-17 22:13:42 +03:00
|
|
|
import java.util.LinkedHashMap;
|
|
|
|
|
//-
|
2023-11-16 21:03:25 +03:00
|
|
|
public class GroupsDBTable extends iDBTable<Group> {
|
2023-11-17 00:04:21 +03:00
|
|
|
public static boolean filterMyOnly = false;
|
2023-09-17 22:13:42 +03:00
|
|
|
public GroupsDBTable() {
|
2023-11-16 21:03:25 +03:00
|
|
|
super(Group.class);
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
2023-12-26 19:12:30 +03:00
|
|
|
//------------------------------------------------>>>
|
2023-09-17 22:13:42 +03:00
|
|
|
@Override
|
2023-12-26 19:12:30 +03:00
|
|
|
protected void createFilters() {
|
2024-10-07 00:58:29 +03:00
|
|
|
filters.add(new Common.Visual.DataSetFilter<Group>("Тип", this) {
|
2023-12-26 19:12:30 +03:00
|
|
|
@Override
|
|
|
|
|
public void fill() {
|
|
|
|
|
for (TestType type : TestType.values())
|
2024-10-07 00:58:29 +03:00
|
|
|
field_filters.add(new Common.Visual.DBObjectFilter<Group>(dataSet, type.getDescription()) {
|
2023-12-26 19:12:30 +03:00
|
|
|
@Override
|
|
|
|
|
protected boolean validate(Group object) {
|
|
|
|
|
return object.type.equals(type);
|
|
|
|
|
}
|
|
|
|
|
});
|
2023-12-07 02:05:08 +03:00
|
|
|
}
|
2023-12-26 19:12:30 +03:00
|
|
|
});
|
2023-12-26 20:23:09 +03:00
|
|
|
filters.add(new DataSetFilter<Group>("Язык", this) {
|
|
|
|
|
@Override
|
|
|
|
|
public void fill() {
|
|
|
|
|
for (LanguageName languageName : LanguageName.values()) {
|
2023-12-26 20:37:20 +03:00
|
|
|
field_filters.add(new DBObjectFilter<Group>(dataSet, languageName.getDescription()) {
|
2023-12-26 20:23:09 +03:00
|
|
|
@Override
|
|
|
|
|
protected boolean validate(Group object) {
|
|
|
|
|
return object.language.equals(languageName);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public String getSingleDescription() {
|
|
|
|
|
return "группа тестов";
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public String getPluralDescription() {
|
|
|
|
|
return "группы";
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public LinkedHashMap<Class<? extends DBObject>, FKBehaviour> getFKDependencies() {
|
|
|
|
|
LinkedHashMap<Class<? extends DBObject>, FKBehaviour> res = new LinkedHashMap<>();
|
|
|
|
|
res.put(Test.class, new FKBehaviour(FKDataBehaviour.DELETE, FKCurrentObjectBehaviuor.ACTIVE));
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
protected DataSetControlForm createUI() {
|
|
|
|
|
return new DataSetControlForm(this) {
|
|
|
|
|
@Override
|
|
|
|
|
public boolean hasCheckBox() {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public String[] getUIColumnNames() {
|
|
|
|
|
return new String[]{
|
|
|
|
|
"имя",
|
|
|
|
|
"автор",
|
|
|
|
|
"тип",
|
|
|
|
|
"язык"
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public Object getFieldAt(Group object, int columnIndex) {
|
|
|
|
|
switch (columnIndex) {
|
|
|
|
|
case 2:
|
|
|
|
|
return object.description;
|
|
|
|
|
case 3:
|
|
|
|
|
return object.sender_name;
|
|
|
|
|
case 4:
|
|
|
|
|
return object.type.getDescription();
|
|
|
|
|
case 5:
|
|
|
|
|
return object.language.getDescription();
|
|
|
|
|
default:
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public Current CurrentName() {
|
|
|
|
|
return Current.Group;
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public DBObjectDialog<Group, GroupFields> getDialog() {
|
|
|
|
|
return new DBObjectDialog<Group, GroupFields>(GroupFields.class) {
|
|
|
|
|
@Override
|
|
|
|
|
public int getDefaultHeight() {
|
|
|
|
|
return 250;
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public int getDefaultWidth() {
|
|
|
|
|
return 400;
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public void validateFields() {
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public void fillFields() {
|
|
|
|
|
fields.tfName.setText(Result.description);
|
2024-10-15 15:13:57 +03:00
|
|
|
UI.TrySelect(fields.cbType, Result.type);
|
|
|
|
|
UI.TrySelect(fields.cbLanguage, Result.language);
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public void ProcessResult() {
|
|
|
|
|
Result.description = fields.tfName.getText();
|
|
|
|
|
Result.type = (TestType) fields.cbType.getSelectedItem();
|
|
|
|
|
Result.language = (LanguageName) fields.cbLanguage.getSelectedItem();
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
2023-12-31 17:36:20 +03:00
|
|
|
public boolean containsGroupWithDescription(String description_in) {
|
|
|
|
|
for (Group group : Data.values()) {
|
|
|
|
|
if (group.description.equalsIgnoreCase(description_in))
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
2024-10-14 15:19:13 +03:00
|
|
|
public Group getGroupByDescription(LanguageName language_in, String description_in) {
|
2023-12-31 17:36:20 +03:00
|
|
|
for (Group group : Data.values()) {
|
2024-10-14 15:19:13 +03:00
|
|
|
if (group.sender_address.equals("vmk-post@yandex.ru") &&
|
|
|
|
|
group.language.equals(language_in) && group.description.equalsIgnoreCase(description_in))
|
2023-12-31 17:36:20 +03:00
|
|
|
return group;
|
|
|
|
|
}
|
|
|
|
|
return null;
|
|
|
|
|
}
|
2024-10-14 20:57:18 +03:00
|
|
|
@Override
|
2024-10-16 20:45:59 +03:00
|
|
|
public DataMenuBar createMenuBar() {
|
|
|
|
|
return new DataMenuBar(getPluralDescription(),
|
|
|
|
|
PassCode.SynchronizeTests,
|
|
|
|
|
PassCode.ConvertCorrectnessTests){
|
|
|
|
|
{
|
|
|
|
|
addMenus(new AddGroupMenu(), new EditGroupMenu());
|
|
|
|
|
addPasses(PassCode.DeleteGroup);
|
|
|
|
|
add(new JSeparator());
|
|
|
|
|
add(new MenuBarButton() {
|
|
|
|
|
{
|
|
|
|
|
setText("Свои");
|
|
|
|
|
setToolTipText("Отображать только группы тестов авторства пользователя");
|
|
|
|
|
Mark();
|
|
|
|
|
addActionListener(e -> {
|
|
|
|
|
GroupsDBTable.filterMyOnly = !GroupsDBTable.filterMyOnly;
|
|
|
|
|
Mark();
|
|
|
|
|
Global.testingServer.db.groups.ShowUI();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
public void Mark() {
|
|
|
|
|
setIcon(Utils_.getIcon(GroupsDBTable.filterMyOnly ? "/Common/icons/Pick.png" : "/Common/icons/NotPick.png"));
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
};
|
2024-10-14 20:57:18 +03:00
|
|
|
}
|
2023-09-17 22:13:42 +03:00
|
|
|
}
|