промежуточный. Рефакторинг публикации теста из текущего проекта.
This commit is contained in:
16
.idea/workspace.xml
generated
16
.idea/workspace.xml
generated
@@ -8,11 +8,17 @@
|
|||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
|
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/ProjectData/SapforData/Functions/FuncCall.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/ProjectData/SapforData/Functions/FuncCall.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/Common/Database/Database.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Database/Database.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/SPF_GetGraphFunctions.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/SPF_GetGraphFunctions.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/Repository/Component/Sapfor/Sapfor.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Component/Sapfor/Sapfor.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/SPF_InlineProcedure.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/SPF_InlineProcedure.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/Repository/RepositoryServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/RepositoryServer.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/SPF_InlineProcedures.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/SPF_InlineProcedures.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/Repository/Server/ComponentsServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Server/ComponentsServer.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/SapforPass.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/SapforPass.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/Repository/Server/ServerCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Server/ServerCode.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/Test/Test.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/Test/Test.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TestingServer.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/PublishTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/PublishTest.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/PublishTestProject.java" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/DeleteSelectedServerObjects.java" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.java" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
|||||||
@@ -77,23 +77,14 @@ public abstract class Database {
|
|||||||
table.Data.put(o.getPK(), o);
|
table.Data.put(o.getPK(), o);
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
public DBObject InsertWithCheck(DBObject o) throws Exception {
|
//метод для вставки в серверную базу.
|
||||||
DBTable table = tables.get(o.getClass());
|
public DBObject InsertS(DBObject object) throws Exception {
|
||||||
if (!table.Data.containsKey(o.getPK())) {
|
DBTable table = tables.get(object.getClass());
|
||||||
insert(table, o);
|
if (!(object instanceof iDBObject) && table.Data.containsKey(object.getPK()))
|
||||||
table.Data.put(o.getPK(), o);
|
throw new RepositoryRefuseException("Таблица " + Utils.Brackets(table.Name) + " уже содержит объект с ключом " + Utils.Brackets(object.getPK().toString()));
|
||||||
} else
|
insert(table, object);
|
||||||
throw new RepositoryRefuseException("Таблица " + Utils.Brackets(table.Name) + " уже содержит объект с ключом " + Utils.Brackets(o.getPK().toString()));
|
table.Data.put(object.getPK(), object);
|
||||||
return o;
|
return object;
|
||||||
}
|
|
||||||
public DBObject InsertWithCheck_(DBObject o) throws Exception {
|
|
||||||
DBTable table = tables.get(o.getClass());
|
|
||||||
if (!table.Data.containsKey(o.getPK())) {
|
|
||||||
insert(table, o);
|
|
||||||
table.Data.put(o.getPK(), o);
|
|
||||||
return o;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
// не работает с автоинкрементом.
|
// не работает с автоинкрементом.
|
||||||
public DBObject UpdateWithCheck(DBObject to_update) throws Exception {
|
public DBObject UpdateWithCheck(DBObject to_update) throws Exception {
|
||||||
|
|||||||
@@ -366,6 +366,47 @@ public abstract class Sapfor extends OSDComponent {
|
|||||||
//--------------------------------------------------------------------------->>
|
//--------------------------------------------------------------------------->>
|
||||||
//временный (?) проход, по тихому получить размерность теста, предварительно выполнив тихий парс.
|
//временный (?) проход, по тихому получить размерность теста, предварительно выполнив тихий парс.
|
||||||
//тут все одноразовое. считаем что таблицы бд уже заполнены как надо.
|
//тут все одноразовое. считаем что таблицы бд уже заполнены как надо.
|
||||||
|
public LanguageStyle getStyle() throws Exception {
|
||||||
|
return Global.getSetting(SettingName.FREE_FORM).toBoolean() ? LanguageStyle.free : LanguageStyle.fixed;
|
||||||
|
}
|
||||||
|
//----------
|
||||||
|
public static Vector<PassCode_2021> getScenariosCodes() {
|
||||||
|
Vector<PassCode_2021> res = new Vector<>();
|
||||||
|
res.add(PassCode_2021.SPF_InitDeclsWithZero);
|
||||||
|
res.add(PassCode_2021.SPF_ConvertStructures);
|
||||||
|
res.add(PassCode_2021.SPF_ExpressionSubstitution);
|
||||||
|
//--
|
||||||
|
res.add(PassCode_2021.SPF_CreateCheckpoints);
|
||||||
|
res.add(PassCode_2021.SPF_CreateIntervalsTree);
|
||||||
|
res.add(PassCode_2021.SPF_RemoveDvmIntervals);
|
||||||
|
//--
|
||||||
|
res.add(PassCode_2021.SPF_RemoveDvmDirectives);
|
||||||
|
res.add(PassCode_2021.SPF_RemoveDvmDirectivesToComments);
|
||||||
|
res.add(PassCode_2021.SPF_RemoveOmpDirectives);
|
||||||
|
//--
|
||||||
|
res.add(PassCode_2021.SPF_LoopEndDoConverterPass);
|
||||||
|
res.add(PassCode_2021.SPF_LoopUnion);
|
||||||
|
res.add(PassCode_2021.SPF_LoopFission);
|
||||||
|
//--
|
||||||
|
res.add(PassCode_2021.SPF_PrivateShrinking);
|
||||||
|
res.add(PassCode_2021.SPF_PrivateExpansion);
|
||||||
|
res.add(PassCode_2021.SPF_PrivateRemoving);
|
||||||
|
//--
|
||||||
|
res.add(PassCode_2021.SPF_RemoveUnusedFunctions);
|
||||||
|
res.add(PassCode_2021.SPF_DuplicateFunctionChains);
|
||||||
|
//--
|
||||||
|
res.add(PassCode_2021.SPF_ResolveParallelRegionConflicts);
|
||||||
|
res.add(PassCode_2021.SPF_ResolveCommonBlockConflicts);
|
||||||
|
//-
|
||||||
|
res.add(PassCode_2021.SPF_InsertDvmhRegions);
|
||||||
|
res.add(PassCode_2021.SPF_SharedMemoryParallelization);
|
||||||
|
res.add(PassCode_2021.CreateParallelVariants);
|
||||||
|
// res.add(PassCode_2021.SPF_InlineProceduresH);
|
||||||
|
// res.add(PassCode_2021.SPF_InlineProcedures);
|
||||||
|
// res.add(PassCode_2021.SPF_InsertIncludesPass);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
//--
|
||||||
public int getTextMaxDim(File testFile, db_project_info target) {
|
public int getTextMaxDim(File testFile, db_project_info target) {
|
||||||
int res = Constants.Nan;
|
int res = Constants.Nan;
|
||||||
LinkedHashMap<String, DBProjectFile> files = null;
|
LinkedHashMap<String, DBProjectFile> files = null;
|
||||||
@@ -448,44 +489,5 @@ public abstract class Sapfor extends OSDComponent {
|
|||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
public LanguageStyle getStyle() throws Exception {
|
|
||||||
return Global.getSetting(SettingName.FREE_FORM).toBoolean() ? LanguageStyle.free : LanguageStyle.fixed;
|
|
||||||
}
|
|
||||||
//----------
|
|
||||||
public static Vector<PassCode_2021> getScenariosCodes() {
|
|
||||||
Vector<PassCode_2021> res = new Vector<>();
|
|
||||||
res.add(PassCode_2021.SPF_InitDeclsWithZero);
|
|
||||||
res.add(PassCode_2021.SPF_ConvertStructures);
|
|
||||||
res.add(PassCode_2021.SPF_ExpressionSubstitution);
|
|
||||||
//--
|
|
||||||
res.add(PassCode_2021.SPF_CreateCheckpoints);
|
|
||||||
res.add(PassCode_2021.SPF_CreateIntervalsTree);
|
|
||||||
res.add(PassCode_2021.SPF_RemoveDvmIntervals);
|
|
||||||
//--
|
|
||||||
res.add(PassCode_2021.SPF_RemoveDvmDirectives);
|
|
||||||
res.add(PassCode_2021.SPF_RemoveDvmDirectivesToComments);
|
|
||||||
res.add(PassCode_2021.SPF_RemoveOmpDirectives);
|
|
||||||
//--
|
|
||||||
res.add(PassCode_2021.SPF_LoopEndDoConverterPass);
|
|
||||||
res.add(PassCode_2021.SPF_LoopUnion);
|
|
||||||
res.add(PassCode_2021.SPF_LoopFission);
|
|
||||||
//--
|
|
||||||
res.add(PassCode_2021.SPF_PrivateShrinking);
|
|
||||||
res.add(PassCode_2021.SPF_PrivateExpansion);
|
|
||||||
res.add(PassCode_2021.SPF_PrivateRemoving);
|
|
||||||
//--
|
|
||||||
res.add(PassCode_2021.SPF_RemoveUnusedFunctions);
|
|
||||||
res.add(PassCode_2021.SPF_DuplicateFunctionChains);
|
|
||||||
//--
|
|
||||||
res.add(PassCode_2021.SPF_ResolveParallelRegionConflicts);
|
|
||||||
res.add(PassCode_2021.SPF_ResolveCommonBlockConflicts);
|
|
||||||
//-
|
|
||||||
res.add(PassCode_2021.SPF_InsertDvmhRegions);
|
|
||||||
res.add(PassCode_2021.SPF_SharedMemoryParallelization);
|
|
||||||
res.add(PassCode_2021.CreateParallelVariants);
|
|
||||||
// res.add(PassCode_2021.SPF_InlineProceduresH);
|
|
||||||
// res.add(PassCode_2021.SPF_InlineProcedures);
|
|
||||||
// res.add(PassCode_2021.SPF_InsertIncludesPass);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package Repository;
|
|||||||
import Common.Constants;
|
import Common.Constants;
|
||||||
import Common.Database.DBObject;
|
import Common.Database.DBObject;
|
||||||
import Common.Database.Database;
|
import Common.Database.Database;
|
||||||
import Common.Database.iDBObject;
|
|
||||||
import Common.Global;
|
import Common.Global;
|
||||||
import Common.Utils.InterruptThread;
|
import Common.Utils.InterruptThread;
|
||||||
import Common.Utils.Utils;
|
import Common.Utils.Utils;
|
||||||
@@ -171,10 +170,6 @@ public abstract class RepositoryServer<D extends Database> {
|
|||||||
public boolean needsEmail(String email) {
|
public boolean needsEmail(String email) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
public void beforePublishAction(DBObject object) throws Exception {
|
|
||||||
}
|
|
||||||
public void afterPublishAction(DBObject object) throws Exception {
|
|
||||||
}
|
|
||||||
public boolean canDelete(DBObject object) throws Exception {
|
public boolean canDelete(DBObject object) throws Exception {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -276,28 +271,8 @@ public abstract class RepositoryServer<D extends Database> {
|
|||||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||||
response.object = db.getObjectsCopies(p.getKey(), (Vector<Object>) p.getValue());
|
response.object = db.getObjectsCopies(p.getKey(), (Vector<Object>) p.getValue());
|
||||||
break;
|
break;
|
||||||
case DeleteObjects:
|
|
||||||
Print("Удалить список объектов ");
|
|
||||||
Vector<Object> objects = (Vector<Object>) request.object;
|
|
||||||
db.BeginTransaction();
|
|
||||||
for (Object object : objects) {
|
|
||||||
dbObject = (DBObject) object;
|
|
||||||
if (canDelete(dbObject)) {
|
|
||||||
db.DeleteWithCheck(dbObject);
|
|
||||||
DeleteAction(dbObject);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
db.Commit();
|
|
||||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
|
||||||
break;
|
|
||||||
//------------------------
|
|
||||||
case PublishObject:
|
case PublishObject:
|
||||||
dbObject = (DBObject) request.object;
|
PublishObject();
|
||||||
beforePublishAction(dbObject);
|
|
||||||
PublishObject(dbObject);
|
|
||||||
afterPublishAction(dbObject);
|
|
||||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
|
||||||
response.object = (Serializable) dbObject.getPK();
|
|
||||||
break;
|
break;
|
||||||
//</editor-fold>
|
//</editor-fold>
|
||||||
case EXIT:
|
case EXIT:
|
||||||
@@ -345,13 +320,18 @@ public abstract class RepositoryServer<D extends Database> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void PublishObject(DBObject dbObject) throws Exception {
|
private void PublishObject() throws Exception {
|
||||||
if (dbObject instanceof iDBObject) {
|
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||||
Print("Опубликовать объект");
|
DBObject dbObject = (DBObject) request.object;
|
||||||
db.Insert(dbObject);
|
beforePublishAction(dbObject);
|
||||||
} else {
|
response.object = publishObject(dbObject);
|
||||||
Print("Опубликовать объект с автоинкрементным ключом");
|
afterPublishAction(dbObject);
|
||||||
db.InsertWithCheck(dbObject); //проверка не нужна,АИ гарантирует что ключ уникален.
|
}
|
||||||
}
|
protected Serializable publishObject(DBObject object) throws Exception {
|
||||||
|
return (Serializable) db.InsertS(object).getPK();
|
||||||
|
}
|
||||||
|
protected void beforePublishAction(DBObject object) throws Exception {
|
||||||
|
}
|
||||||
|
protected void afterPublishAction(DBObject object) throws Exception {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,15 +37,6 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
|
|||||||
public int getPort() {
|
public int getPort() {
|
||||||
return 7995;
|
return 7995;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
@Override
|
|
||||||
public boolean needsEmail(String email) {
|
|
||||||
if (db.subscribers.containsKey(email)) {
|
|
||||||
return db.subscribers.get(email).mailOn == 1;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
public void DeleteAction(DBObject object) throws Exception {
|
public void DeleteAction(DBObject object) throws Exception {
|
||||||
if (object instanceof BugReport) {
|
if (object instanceof BugReport) {
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ public enum ServerCode {
|
|||||||
DeleteObjects,
|
DeleteObjects,
|
||||||
CheckObjectExistense, //
|
CheckObjectExistense, //
|
||||||
//--
|
//--
|
||||||
PublishAccountObjects,
|
|
||||||
EditAccountObject,
|
EditAccountObject,
|
||||||
//--
|
//--
|
||||||
EXIT,
|
EXIT,
|
||||||
@@ -80,6 +79,6 @@ public enum ServerCode {
|
|||||||
PublishAccount,
|
PublishAccount,
|
||||||
GetActualSapforPackageData,
|
GetActualSapforPackageData,
|
||||||
//--
|
//--
|
||||||
PublishObject,
|
PublishObject
|
||||||
PublishTestProject
|
// PublishTestProject
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,9 +5,17 @@ import Common.Database.DBObject;
|
|||||||
import Common.Database.riDBObject;
|
import Common.Database.riDBObject;
|
||||||
import Common.Global;
|
import Common.Global;
|
||||||
import Common.UI.UI;
|
import Common.UI.UI;
|
||||||
|
import Common.Utils.Utils;
|
||||||
|
import ProjectData.Project.db_project_info;
|
||||||
|
import Repository.RepositoryRefuseException;
|
||||||
|
import Visual_DVM_2021.Passes.All.UnzipFolderPass;
|
||||||
|
import Visual_DVM_2021.Passes.All.ZipFolderPass;
|
||||||
|
import Visual_DVM_2021.Passes.PassException;
|
||||||
import com.sun.org.glassfish.gmbal.Description;
|
import com.sun.org.glassfish.gmbal.Description;
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.nio.file.Paths;
|
||||||
public class Test extends riDBObject {
|
public class Test extends riDBObject {
|
||||||
@Description("DEFAULT 1")
|
@Description("DEFAULT 1")
|
||||||
public int dim = 1; //размерность теста. для удобства пусть будет и внешним полем.
|
public int dim = 1; //размерность теста. для удобства пусть будет и внешним полем.
|
||||||
@@ -23,6 +31,14 @@ public class Test extends riDBObject {
|
|||||||
args = t.args;
|
args = t.args;
|
||||||
group_id = t.group_id;
|
group_id = t.group_id;
|
||||||
}
|
}
|
||||||
|
@Description("DEFAULT ''")
|
||||||
|
public String files = ""; //файлы теста
|
||||||
|
//--------------------------------------------->>>
|
||||||
|
@Description("IGNORE")
|
||||||
|
public String temp_project_name = "";
|
||||||
|
@Description("IGNORE")
|
||||||
|
public byte[] project_archive_bytes = null;
|
||||||
|
//--------------------------------------------->>>
|
||||||
public Test(Test test) {
|
public Test(Test test) {
|
||||||
this.SynchronizeFields(test);
|
this.SynchronizeFields(test);
|
||||||
}
|
}
|
||||||
@@ -50,4 +66,60 @@ public class Test extends riDBObject {
|
|||||||
public File getHomePath() {
|
public File getHomePath() {
|
||||||
return new File(Global.visualiser.getWorkspace(), String.valueOf(id));
|
return new File(Global.visualiser.getWorkspace(), String.valueOf(id));
|
||||||
}
|
}
|
||||||
|
//--
|
||||||
|
public File getTempArchive() {
|
||||||
|
return new File(Global.TempDirectory, temp_project_name + ".zip");
|
||||||
|
}
|
||||||
|
public File getTempProject() {
|
||||||
|
return new File(Global.TempDirectory, temp_project_name);
|
||||||
|
}
|
||||||
|
//--
|
||||||
|
public void packProject(db_project_info project) throws Exception {
|
||||||
|
temp_project_name = Utils.getDateName("test");
|
||||||
|
//-
|
||||||
|
File tempProject = getTempProject();
|
||||||
|
File tempArchive = getTempArchive();
|
||||||
|
//-
|
||||||
|
FileUtils.forceMkdir(tempProject);
|
||||||
|
project.Clone(tempProject, false);
|
||||||
|
//--
|
||||||
|
FileUtils.copyFile(project.db.getFile(),
|
||||||
|
Paths.get(tempProject.getAbsolutePath(), Constants.data, project.db.getFile().getName()).toFile());
|
||||||
|
//--
|
||||||
|
ZipFolderPass zip = new ZipFolderPass();
|
||||||
|
if (zip.Do(tempProject.getAbsolutePath(), tempArchive.getAbsolutePath())) {
|
||||||
|
project_archive_bytes = Utils.packFile(tempArchive);
|
||||||
|
} else throw new PassException("Не удалось создать архив проекта");
|
||||||
|
}
|
||||||
|
public boolean unpackProjectOnServer() throws Exception {
|
||||||
|
File tmpArchive = new File(Global.TempDirectory, temp_project_name + ".zip");
|
||||||
|
File tmpProject = new File(Global.TempDirectory, temp_project_name);
|
||||||
|
File testProject = new File(Global.TestsDirectory, String.valueOf(id));
|
||||||
|
File testArchive = new File(Global.TestsDirectory, id + ".zip");
|
||||||
|
//--
|
||||||
|
if (tmpArchive.exists())
|
||||||
|
FileUtils.forceDelete(tmpArchive);
|
||||||
|
if (tmpProject.exists())
|
||||||
|
FileUtils.forceDelete(tmpProject);
|
||||||
|
if (testProject.exists())
|
||||||
|
FileUtils.forceDelete(testProject);
|
||||||
|
if (testArchive.exists())
|
||||||
|
FileUtils.forceDelete(testArchive);
|
||||||
|
//--
|
||||||
|
Utils.unpackFile(project_archive_bytes, tmpArchive); // распаковка байтов.
|
||||||
|
//--
|
||||||
|
UnzipFolderPass unzipFolderPass = new UnzipFolderPass();
|
||||||
|
if (!unzipFolderPass.Do(
|
||||||
|
tmpArchive.getAbsolutePath(),
|
||||||
|
Global.TempDirectory.getAbsolutePath())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
//--
|
||||||
|
FileUtils.moveDirectory(tmpProject, testProject);
|
||||||
|
//--
|
||||||
|
ZipFolderPass zip = new ZipFolderPass();
|
||||||
|
if (!zip.Do(testProject.getAbsolutePath(), testArchive.getAbsolutePath()))
|
||||||
|
throw new RepositoryRefuseException("Не удалось переписать архив проекта");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package TestingSystem.Common;
|
package TestingSystem.Common;
|
||||||
import Common.Constants;
|
import Common.Constants;
|
||||||
import Common.Database.DBObject;
|
import Common.Database.DBObject;
|
||||||
import Common.Database.iDBObject;
|
|
||||||
import Common.Global;
|
import Common.Global;
|
||||||
import Common.Utils.Utils;
|
import Common.Utils.Utils;
|
||||||
import GlobalData.Account.Account;
|
import GlobalData.Account.Account;
|
||||||
@@ -31,7 +30,6 @@ import TestingSystem.SAPFOR.SapforTasksPackage.SapforPackageData;
|
|||||||
import TestingSystem.SAPFOR.SapforTasksPackage.SapforTasksPackage;
|
import TestingSystem.SAPFOR.SapforTasksPackage.SapforTasksPackage;
|
||||||
import TestingSystem.SAPFOR.ServerSapfor.ServerSapfor;
|
import TestingSystem.SAPFOR.ServerSapfor.ServerSapfor;
|
||||||
import Visual_DVM_2021.Passes.All.DownloadRepository;
|
import Visual_DVM_2021.Passes.All.DownloadRepository;
|
||||||
import Visual_DVM_2021.Passes.All.UnzipFolderPass;
|
|
||||||
import Visual_DVM_2021.Passes.All.ZipFolderPass;
|
import Visual_DVM_2021.Passes.All.ZipFolderPass;
|
||||||
import Visual_DVM_2021.Passes.PassCode_2021;
|
import Visual_DVM_2021.Passes.PassCode_2021;
|
||||||
import Visual_DVM_2021.Passes.Pass_2021;
|
import Visual_DVM_2021.Passes.Pass_2021;
|
||||||
@@ -40,6 +38,7 @@ import org.apache.commons.io.FileUtils;
|
|||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.Serializable;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
@@ -77,55 +76,6 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void afterPublishAction(DBObject object) throws Exception {
|
|
||||||
if (object instanceof TasksPackage) {
|
|
||||||
//объект уже вставлен.
|
|
||||||
TasksPackage tasksPackage = (TasksPackage) object;
|
|
||||||
//-
|
|
||||||
for (int group_id : tasksPackage.sorted_tasks.keySet()) {
|
|
||||||
if (db.groups.containsKey(group_id)) {
|
|
||||||
Group group = db.groups.get(group_id);
|
|
||||||
LinkedHashMap<Integer, Vector<TestCompilationTask>> group_tasks = tasksPackage.sorted_tasks.get((group_id));
|
|
||||||
for (int test_id : group_tasks.keySet()) {
|
|
||||||
if (db.tests.containsKey(test_id)) {
|
|
||||||
Test test = db.tests.get(test_id);
|
|
||||||
db_project_info project = new db_project_info(test);//Открытие бд проекта и ее синхронизация. неизбежно.
|
|
||||||
//---
|
|
||||||
for (TestCompilationTask task : group_tasks.get(test_id)) {
|
|
||||||
Print("принять задачу на компиляцию " + group_id + ":" + test_id + ":" + task.flags);
|
|
||||||
//Теперь эту задачу надо поставить в очередь. и вернуть пользователю, уже с id
|
|
||||||
task.state = TaskState.Waiting;
|
|
||||||
task.id = db.IncKey(SettingName.TaskMaxId);
|
|
||||||
task.taskspackage_id = tasksPackage.id;
|
|
||||||
task.makefile_text = group.GenerateMakefile(project, tasksPackage.dvm_drv, task.flags);
|
|
||||||
task.test_home = tasksPackage.user_workspace + "/projects/" + test_id;
|
|
||||||
//-->>
|
|
||||||
task.remote_workspace =
|
|
||||||
new RemoteFile(
|
|
||||||
tasksPackage.user_workspace + "/tests/" + tasksPackage.id,
|
|
||||||
String.valueOf(task.id), true).full_name;
|
|
||||||
account_db.Insert(task);
|
|
||||||
if (task.runTasks != null) {
|
|
||||||
for (TestRunTask rt : task.runTasks) {
|
|
||||||
rt.id = db.IncKey(SettingName.TaskMaxId);
|
|
||||||
rt.taskspackage_id = tasksPackage.id;
|
|
||||||
rt.testcompilationtask_id = task.id;
|
|
||||||
rt.remote_workspace =
|
|
||||||
new RemoteFile(
|
|
||||||
tasksPackage.user_workspace + "/tests/" + tasksPackage.id,
|
|
||||||
String.valueOf(rt.id), true).full_name;
|
|
||||||
rt.binary_name = "spf_" + rt.id + "_" + rt.matrix.replace(" ", "_");
|
|
||||||
account_db.Insert(rt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public void DeleteAction(DBObject object) throws Exception {
|
public void DeleteAction(DBObject object) throws Exception {
|
||||||
if (object instanceof Test) {
|
if (object instanceof Test) {
|
||||||
Test test = (Test) object;
|
Test test = (Test) object;
|
||||||
@@ -221,28 +171,6 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
|||||||
Test test;
|
Test test;
|
||||||
int test_id;
|
int test_id;
|
||||||
switch (code) {
|
switch (code) {
|
||||||
case PublishTestProject:
|
|
||||||
Print("Прикрепить проект к тесту " + request.arg);
|
|
||||||
System.out.println("Прикрепить проект к тесту " + request.arg);
|
|
||||||
test_id = Integer.parseInt(request.arg);
|
|
||||||
if (db.tests.containsKey(test_id)) {
|
|
||||||
test = db.tests.get(test_id);
|
|
||||||
Utils.unpackFile((byte[]) request.object, test.getArchive());
|
|
||||||
UnzipFolderPass unzipFolderPass = new UnzipFolderPass();
|
|
||||||
if (!unzipFolderPass.Do(
|
|
||||||
test.getArchive().getAbsolutePath(),
|
|
||||||
Global.TestsDirectory.getAbsolutePath())) {
|
|
||||||
db.Delete(test);
|
|
||||||
throw new RepositoryRefuseException(
|
|
||||||
"Не удалось прикрепить проект к тесту с id " + test.id
|
|
||||||
+ "\nТест будет удален"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw new RepositoryRefuseException("Не существует теста с ключом " + Utils.Brackets(request.arg));
|
|
||||||
}
|
|
||||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
|
||||||
break;
|
|
||||||
case EmailSapforAssembly:
|
case EmailSapforAssembly:
|
||||||
Print("Сообщить о сборке SAPFOR для пользователя " + request.arg);
|
Print("Сообщить о сборке SAPFOR для пользователя " + request.arg);
|
||||||
Vector<String> assembly_info = (Vector<String>) request.object;
|
Vector<String> assembly_info = (Vector<String>) request.object;
|
||||||
@@ -265,8 +193,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
|||||||
for (Object object : tasks) {
|
for (Object object : tasks) {
|
||||||
SapforTask task = (SapforTask) object;
|
SapforTask task = (SapforTask) object;
|
||||||
task.id = db.IncKey(SettingName.SapforTaskMaxId);
|
task.id = db.IncKey(SettingName.SapforTaskMaxId);
|
||||||
if (account_db.InsertWithCheck_(task) != null)
|
account_db.Insert(task);
|
||||||
afterPublishAction(task);
|
|
||||||
}
|
}
|
||||||
account_db.Commit();
|
account_db.Commit();
|
||||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||||
@@ -329,17 +256,6 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
|||||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||||
response.object = dbObject;
|
response.object = dbObject;
|
||||||
break;
|
break;
|
||||||
case PublishAccountObjects:
|
|
||||||
Print("Опубликовать объекты для пользователя " + request.arg);
|
|
||||||
SetCurrentAccountDB(request.arg);
|
|
||||||
Vector<Object> objects__ = (Vector<Object>) request.object;
|
|
||||||
account_db.BeginTransaction();
|
|
||||||
for (Object object : objects__)
|
|
||||||
if (account_db.InsertWithCheck_((DBObject) object) != null)
|
|
||||||
afterPublishAction((DBObject) object);
|
|
||||||
account_db.Commit();
|
|
||||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
|
||||||
break;
|
|
||||||
case CheckAccountObjectExistense:
|
case CheckAccountObjectExistense:
|
||||||
SetCurrentAccountDB(request.arg);
|
SetCurrentAccountDB(request.arg);
|
||||||
p = (Pair<Class, Object>) request.object;
|
p = (Pair<Class, Object>) request.object;
|
||||||
@@ -482,7 +398,8 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
|||||||
}
|
}
|
||||||
//->>
|
//->>
|
||||||
//->>
|
//->>
|
||||||
Pair<Group, Vector<File>> ConvertDirectoryToGroup(File src, LanguageName languageName, TestType testType, Account account) throws Exception {
|
Pair<Group, Vector<File>> ConvertDirectoryToGroup(File src, LanguageName languageName, TestType
|
||||||
|
testType, Account account) throws Exception {
|
||||||
Group object = new Group();
|
Group object = new Group();
|
||||||
Vector<File> groupFiles = null; //транспорт.
|
Vector<File> groupFiles = null; //транспорт.
|
||||||
//->>
|
//->>
|
||||||
@@ -584,19 +501,13 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
|||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
//-------------------------------------------------------------------------------------->>>
|
||||||
@Override
|
@Override
|
||||||
public void PublishObject(DBObject dbObject) throws Exception {
|
protected Serializable publishObject(DBObject object) throws Exception {
|
||||||
if (request.arg == null)
|
if (request.arg == null) return super.publishObject(object);
|
||||||
super.PublishObject(dbObject);
|
|
||||||
else {
|
else {
|
||||||
SetCurrentAccountDB(request.arg);
|
SetCurrentAccountDB(request.arg);
|
||||||
if (dbObject instanceof iDBObject) {
|
return (Serializable) account_db.InsertS(object).getPK();
|
||||||
Print("Опубликовать объект для пользователя " + request.arg);
|
|
||||||
account_db.Insert(dbObject);
|
|
||||||
} else {
|
|
||||||
Print("Опубликовать объект с автоинкрементным ключом " + request.arg);
|
|
||||||
account_db.InsertWithCheck(dbObject); //проверка не нужна,АИ гарантирует что ключ уникален.
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
@@ -604,11 +515,67 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
|||||||
if (object instanceof TasksPackage) {
|
if (object instanceof TasksPackage) {
|
||||||
TasksPackage tasksPackage = (TasksPackage) object;
|
TasksPackage tasksPackage = (TasksPackage) object;
|
||||||
tasksPackage.id = db.IncKey(SettingName.DVMPackageMaxId);
|
tasksPackage.id = db.IncKey(SettingName.DVMPackageMaxId);
|
||||||
} else {
|
} else if (object instanceof SapforTasksPackage) {
|
||||||
if (object instanceof SapforTasksPackage) {
|
|
||||||
SapforTasksPackage sapforTasksPackage = (SapforTasksPackage) object;
|
SapforTasksPackage sapforTasksPackage = (SapforTasksPackage) object;
|
||||||
sapforTasksPackage.id = db.IncKey(SettingName.SAPFORPackageId);
|
sapforTasksPackage.id = db.IncKey(SettingName.SAPFORPackageId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public void afterPublishAction(DBObject object) throws Exception {
|
||||||
|
if (object instanceof TasksPackage) {
|
||||||
|
//объект уже вставлен.
|
||||||
|
TasksPackage tasksPackage = (TasksPackage) object;
|
||||||
|
//-
|
||||||
|
for (int group_id : tasksPackage.sorted_tasks.keySet()) {
|
||||||
|
if (db.groups.containsKey(group_id)) {
|
||||||
|
Group group = db.groups.get(group_id);
|
||||||
|
LinkedHashMap<Integer, Vector<TestCompilationTask>> group_tasks = tasksPackage.sorted_tasks.get((group_id));
|
||||||
|
for (int test_id : group_tasks.keySet()) {
|
||||||
|
if (db.tests.containsKey(test_id)) {
|
||||||
|
Test test = db.tests.get(test_id);
|
||||||
|
db_project_info project = new db_project_info(test);//Открытие бд проекта и ее синхронизация. неизбежно.
|
||||||
|
//---
|
||||||
|
for (TestCompilationTask task : group_tasks.get(test_id)) {
|
||||||
|
Print("принять задачу на компиляцию " + group_id + ":" + test_id + ":" + task.flags);
|
||||||
|
//Теперь эту задачу надо поставить в очередь. и вернуть пользователю, уже с id
|
||||||
|
task.state = TaskState.Waiting;
|
||||||
|
task.id = db.IncKey(SettingName.TaskMaxId);
|
||||||
|
task.taskspackage_id = tasksPackage.id;
|
||||||
|
task.makefile_text = group.GenerateMakefile(project, tasksPackage.dvm_drv, task.flags);
|
||||||
|
task.test_home = tasksPackage.user_workspace + "/projects/" + test_id;
|
||||||
|
//-->>
|
||||||
|
task.remote_workspace =
|
||||||
|
new RemoteFile(
|
||||||
|
tasksPackage.user_workspace + "/tests/" + tasksPackage.id,
|
||||||
|
String.valueOf(task.id), true).full_name;
|
||||||
|
account_db.Insert(task);
|
||||||
|
if (task.runTasks != null) {
|
||||||
|
for (TestRunTask rt : task.runTasks) {
|
||||||
|
rt.id = db.IncKey(SettingName.TaskMaxId);
|
||||||
|
rt.taskspackage_id = tasksPackage.id;
|
||||||
|
rt.testcompilationtask_id = task.id;
|
||||||
|
rt.remote_workspace =
|
||||||
|
new RemoteFile(
|
||||||
|
tasksPackage.user_workspace + "/tests/" + tasksPackage.id,
|
||||||
|
String.valueOf(rt.id), true).full_name;
|
||||||
|
rt.binary_name = "spf_" + rt.id + "_" + rt.matrix.replace(" ", "_");
|
||||||
|
account_db.Insert(rt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (object instanceof Test) {
|
||||||
|
Test test = (Test) object;
|
||||||
|
if (!test.unpackProjectOnServer()) {
|
||||||
|
db.Delete(test);
|
||||||
|
throw new RepositoryRefuseException(
|
||||||
|
"Не удалось прикрепить проект к тесту с id " + test.id
|
||||||
|
+ "\nТест будет удален"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import Common.Utils.Utils;
|
|||||||
import ProjectData.Project.db_project_info;
|
import ProjectData.Project.db_project_info;
|
||||||
import TestingSystem.Common.Test.Test;
|
import TestingSystem.Common.Test.Test;
|
||||||
import TestingSystem.Common.TestingServer;
|
import TestingSystem.Common.TestingServer;
|
||||||
import Visual_DVM_2021.Passes.PassCode_2021;
|
|
||||||
import Visual_DVM_2021.Passes.Server.PublishServerObject;
|
import Visual_DVM_2021.Passes.Server.PublishServerObject;
|
||||||
public class PublishTest extends PublishServerObject<TestingServer, Test> {
|
public class PublishTest extends PublishServerObject<TestingServer, Test> {
|
||||||
boolean from_current_project;
|
boolean from_current_project;
|
||||||
@@ -19,9 +18,12 @@ public class PublishTest extends PublishServerObject<TestingServer, Test> {
|
|||||||
@Override
|
@Override
|
||||||
public boolean fillObjectFields() throws Exception {
|
public boolean fillObjectFields() throws Exception {
|
||||||
target.description = project.getLocalName();
|
target.description = project.getLocalName();
|
||||||
if (!project.description.isEmpty())
|
if (!project.description.isEmpty()) {
|
||||||
target.description += " " + project.description;
|
target.description += " " + project.description;
|
||||||
|
target.description = Utils.ReplaceForbiddenSymbols(target.description);
|
||||||
|
}
|
||||||
target.group_id = group_id;
|
target.group_id = group_id;
|
||||||
|
//--
|
||||||
if (from_current_project) {
|
if (from_current_project) {
|
||||||
target.dim = project.testMaxDim;
|
target.dim = project.testMaxDim;
|
||||||
return super.fillObjectFields();
|
return super.fillObjectFields();
|
||||||
@@ -39,7 +41,7 @@ public class PublishTest extends PublishServerObject<TestingServer, Test> {
|
|||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected void performPreparation() throws Exception {
|
protected void performPreparation() throws Exception {
|
||||||
target.description = Utils.ReplaceForbiddenSymbols(target.description);
|
target.packProject(project);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected boolean canStart(Object... args) throws Exception {
|
protected boolean canStart(Object... args) throws Exception {
|
||||||
@@ -66,11 +68,6 @@ public class PublishTest extends PublishServerObject<TestingServer, Test> {
|
|||||||
return super.canStart(args);
|
return super.canStart(args);
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
protected void performDone() throws Exception {
|
|
||||||
super.performDone();
|
|
||||||
passes.get(PassCode_2021.PublishTestProject).Do(project, pk);
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
protected void performFinish() throws Exception {
|
protected void performFinish() throws Exception {
|
||||||
if (from_current_project)
|
if (from_current_project)
|
||||||
super.performFinish();
|
super.performFinish();
|
||||||
|
|||||||
@@ -1,51 +0,0 @@
|
|||||||
package Visual_DVM_2021.Passes.All;
|
|
||||||
import Common.Constants;
|
|
||||||
import Common.Global;
|
|
||||||
import Common.Utils.Utils;
|
|
||||||
import ProjectData.Project.db_project_info;
|
|
||||||
import Repository.Server.ServerCode;
|
|
||||||
import Repository.Server.ServerExchangeUnit_2021;
|
|
||||||
import Visual_DVM_2021.Passes.PassCode_2021;
|
|
||||||
import Visual_DVM_2021.Passes.PassException;
|
|
||||||
import Visual_DVM_2021.Passes.Server.TestingSystemPass;
|
|
||||||
import org.apache.commons.io.FileUtils;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.nio.file.Paths;
|
|
||||||
public class PublishTestProject extends TestingSystemPass<db_project_info> {
|
|
||||||
Object test_id;
|
|
||||||
byte[] bytes = null;
|
|
||||||
@Override
|
|
||||||
protected boolean canStart(Object... args) throws Exception {
|
|
||||||
target = (db_project_info) args[0];
|
|
||||||
test_id = args[1];
|
|
||||||
bytes = null;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
protected void performPreparation() throws Exception {
|
|
||||||
File src = new File(Global.TempDirectory, String.valueOf(test_id));
|
|
||||||
Utils.CheckAndCleanDirectory(src);
|
|
||||||
target.Clone(src, false);
|
|
||||||
//--
|
|
||||||
FileUtils.copyFile(target.db.getFile(),
|
|
||||||
Paths.get(src.getAbsolutePath(), Constants.data, target.db.getFile().getName()).toFile());
|
|
||||||
//--
|
|
||||||
//архивация.
|
|
||||||
File archive = Utils.getTempFileName(String.valueOf(test_id));
|
|
||||||
//---
|
|
||||||
if (passes.get(PassCode_2021.ZipFolderPass).Do(src.getAbsolutePath(), archive.getAbsolutePath())) {
|
|
||||||
bytes = Utils.packFile(archive);
|
|
||||||
} else throw new PassException("Не удалось создать архив проекта");
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
protected void ServerAction() throws Exception {
|
|
||||||
ShowMessage1(target.name);
|
|
||||||
Command(new ServerExchangeUnit_2021(ServerCode.PublishTestProject, String.valueOf(test_id), bytes));
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
protected void performFail() throws Exception {
|
|
||||||
super.performFail();
|
|
||||||
passes.get(PassCode_2021.SynchronizeTests).Do();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
package Visual_DVM_2021.Passes;
|
|
||||||
import Common.Current;
|
|
||||||
import Common.Database.DataSet;
|
|
||||||
import Common.Database.rDBObject;
|
|
||||||
import Common.UI.UI;
|
|
||||||
import Repository.Server.ServerCode;
|
|
||||||
import Repository.Server.ServerExchangeUnit_2021;
|
|
||||||
import Visual_DVM_2021.Passes.Server.TestingSystemPass;
|
|
||||||
|
|
||||||
import java.util.Vector;
|
|
||||||
public class DeleteSelectedServerObjects extends TestingSystemPass<Vector<rDBObject>> {
|
|
||||||
Class objects_class;
|
|
||||||
public DeleteSelectedServerObjects(Class class_in){
|
|
||||||
objects_class=class_in;
|
|
||||||
}
|
|
||||||
Vector<String> names;
|
|
||||||
@Override
|
|
||||||
public String getIconPath() {
|
|
||||||
return "/icons/Delete.png";
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public String getButtonText() {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
protected boolean canStart(Object... args) throws Exception {
|
|
||||||
DataSet table = server.db.tables.get(objects_class);
|
|
||||||
if (table.getCheckedCount() == 0) {
|
|
||||||
Log.Writeln_("Не отмечено ни одного объекта.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
Vector checkedItems = table.getCheckedItems();
|
|
||||||
target = new Vector<>();
|
|
||||||
names = new Vector<>();
|
|
||||||
for (Object o : checkedItems) {
|
|
||||||
rDBObject r = (rDBObject)o;
|
|
||||||
if (Current.getAccount().CheckAccessRights(r.sender_address, Log)) {
|
|
||||||
names.add(r.description);
|
|
||||||
target.add(r);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (target.isEmpty()) {
|
|
||||||
Log.Writeln_("Не отмечено ни одного объекта, принадлежащего текущему пользователю.");
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return UI.Warning(getDescription()+"\n" + String.join("\n", names));
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
protected void ServerAction() throws Exception {
|
|
||||||
Command(new ServerExchangeUnit_2021(ServerCode.DeleteObjects, "", target));
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
protected void performFinish() throws Exception {
|
|
||||||
super.performFinish();
|
|
||||||
passes.get(PassCode_2021.SynchronizeTests).Do();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -293,7 +293,6 @@ public enum PassCode_2021 {
|
|||||||
OpenSapforEtalonVersion,
|
OpenSapforEtalonVersion,
|
||||||
OpenSapforVersion,
|
OpenSapforVersion,
|
||||||
PublishServerSapfor,
|
PublishServerSapfor,
|
||||||
PublishTestProject,
|
|
||||||
DeleteTest,
|
DeleteTest,
|
||||||
DeleteConfiguration,
|
DeleteConfiguration,
|
||||||
AbortTaskPackage,
|
AbortTaskPackage,
|
||||||
@@ -320,8 +319,6 @@ public enum PassCode_2021 {
|
|||||||
return "Удалить тест";
|
return "Удалить тест";
|
||||||
case PublishServerSapfor:
|
case PublishServerSapfor:
|
||||||
return "Опубликовать собранную версию SAPFOR";
|
return "Опубликовать собранную версию SAPFOR";
|
||||||
case PublishTestProject:
|
|
||||||
return "Отправить проект теста";
|
|
||||||
case DeleteGroup:
|
case DeleteGroup:
|
||||||
return "Удалить группу";
|
return "Удалить группу";
|
||||||
case UpdateProperty:
|
case UpdateProperty:
|
||||||
|
|||||||
Reference in New Issue
Block a user