2 Commits

Author SHA1 Message Date
c7a2e80f1e no message 2025-06-16 13:32:40 +03:00
83d48d4db1 подстановка инклудов — передача параметров 2025-06-13 14:45:18 +03:00
85 changed files with 452 additions and 23648 deletions

1
.gitignore vendored
View File

@@ -51,3 +51,4 @@ Sts/*
Tests/* Tests/*
Keys/* Keys/*
debug.log debug.log
properties

7
.idea/workspace.xml generated
View File

@@ -9,9 +9,6 @@
<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$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" /> <change beforePath="$PROJECT_DIR$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Visual/Menus/MainMenuBar/VisualiserSettingsMenu/VersionsComparisonMenu.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Visual/Menus/MainMenuBar/VisualiserSettingsMenu/VersionsComparisonMenu.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Visual/Windows/ComparisonForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Visual/Windows/ComparisonForm.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" />
@@ -91,7 +88,7 @@
<property name="UI_DESIGNER_EDITOR_MODE.UIDesignerToolWindowManager.SHOW" value="true" /> <property name="UI_DESIGNER_EDITOR_MODE.UIDesignerToolWindowManager.SHOW" value="true" />
<property name="UI_DESIGNER_EDITOR_MODE.UIDesignerToolWindowManager.WIDTH" value="509" /> <property name="UI_DESIGNER_EDITOR_MODE.UIDesignerToolWindowManager.WIDTH" value="509" />
<property name="extract.method.default.visibility" value="public" /> <property name="extract.method.default.visibility" value="public" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/src/icons/Transformations" /> <property name="last_opened_file_path" value="$PROJECT_DIR$/src" />
<property name="project.structure.last.edited" value="Artifacts" /> <property name="project.structure.last.edited" value="Artifacts" />
<property name="project.structure.proportion" value="0.15" /> <property name="project.structure.proportion" value="0.15" />
<property name="project.structure.side.proportion" value="0.27322906" /> <property name="project.structure.side.proportion" value="0.27322906" />
@@ -104,10 +101,10 @@
<recent name="controls.Trees" /> <recent name="controls.Trees" />
</key> </key>
<key name="CopyFile.RECENT_KEYS"> <key name="CopyFile.RECENT_KEYS">
<recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\icons\Transformations" />
<recent name="C:\Users\misha\Documents\visual_sapfor_2023\src" /> <recent name="C:\Users\misha\Documents\visual_sapfor_2023\src" />
<recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\_dif_utils" /> <recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\_dif_utils" />
<recent name="C:\Users\misha\Documents\visual_sapfor_2023\libs" /> <recent name="C:\Users\misha\Documents\visual_sapfor_2023\libs" />
<recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\icons\Transformations" />
<recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\_VisualDVM\TestingSystem\DVM\DVMTasks\UI" /> <recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\_VisualDVM\TestingSystem\DVM\DVMTasks\UI" />
</key> </key>
<key name="MoveMembersDialog.RECENTS_KEY"> <key name="MoveMembersDialog.RECENTS_KEY">

View File

@@ -4,7 +4,7 @@
"ServerUserPassword": "mprit_2011", "ServerUserPassword": "mprit_2011",
"OfferRegistrationOnStart": true, "OfferRegistrationOnStart": true,
"Workspace": "E:\\Tests", "Workspace": "E:\\Tests",
"ProjectsSearchDirectory": "E:\\Tests\\Downloads\\1331\\EP\\v1\\v1\\v4", "ProjectsSearchDirectory": "E:\\Tests\\Downloads\\bugreport_1701089001",
"DocumentsDirectory": "C:\\Users\\misha\\Documents\\_testing_system", "DocumentsDirectory": "C:\\Users\\misha\\Documents\\_testing_system",
"VisualiserPath": "C:\\Users\\misha\\Downloads", "VisualiserPath": "C:\\Users\\misha\\Downloads",
"Sapfor_FPath": "E:\\_sapfor_x64\\Components\\Sapfor_F", "Sapfor_FPath": "E:\\_sapfor_x64\\Components\\Sapfor_F",
@@ -25,16 +25,15 @@
"ComponentsWindowHeight": 250, "ComponentsWindowHeight": 250,
"Kernels": 8, "Kernels": 8,
"LocalMakePathWindows": "C:\\MinGW\\msys\\1.0\\bin\\make.exe", "LocalMakePathWindows": "C:\\MinGW\\msys\\1.0\\bin\\make.exe",
"PrecompilationFlags": " ",
"CheckTestingIntervalSeconds": 10, "CheckTestingIntervalSeconds": 10,
"AutoCheckTesting": false, "AutoCheckTesting": true,
"EmailOnTestingProgress": true, "EmailOnTestingProgress": true,
"CompleteCompilationOptions": true, "CompleteCompilationOptions": true,
"CompleteRunEnvironments": true, "CompleteRunEnvironments": true,
"CreateEthalonTasks": true, "CreateEthalonTasks": true,
"ErasePackageWorkspace": true, "ErasePackageWorkspace": true,
"lastMachineId": 13, "lastMachineId": 13,
"lastUserId": 24, "lastUserId": 34,
"lastCompilerId": 52, "lastCompilerId": 52,
"RegisterOn": false, "RegisterOn": false,
"SpacesOn": false, "SpacesOn": false,

View File

@@ -0,0 +1,32 @@
package Common.Database.Objects;
import java.util.Date;
//объект репозитория. ключ имя, и есть данные отправителя.
public class rDBObject extends nDBObject {
public String sender_name = "";
public String sender_address = "";
public String description = "";
//-
public long date = 0;
public long change_date;
public rDBObject(rDBObject src) {
this.SynchronizeFields(src);
}
public rDBObject() {
}
public Date getDate() {
return new Date(date);
}
public Date getChangeDate() {
return new Date(change_date);
}
@Override
public void SynchronizeFields(DBObject src) {
super.SynchronizeFields(src);
rDBObject r = (rDBObject) src;
sender_name = r.sender_name;
sender_address = r.sender_address;
description = r.description;
date = r.date;
change_date = r.change_date;
}
}

View File

@@ -5,16 +5,16 @@ public class IntegerPairJson {
public int key; public int key;
@Expose @Expose
public int value; public int value;
public IntegerPairJson(int key_in, int value_in) {
key = key_in;
value = value_in;
}
public IntegerPairJson() {
}
public int getKey() { public int getKey() {
return key; return key;
} }
public int getValue() { public int getValue() {
return value; return value;
} }
public IntegerPairJson(int key_in, int value_in) {
key = key_in;
value = value_in;
}
public IntegerPairJson() {
}
} }

View File

@@ -1,5 +1,6 @@
package Common.Visual; package Common.Visual;
import Common.MainModule_; import Common.MainModule_;
import Common.Utils.Utils_;
import javax.swing.*; import javax.swing.*;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;

View File

@@ -1,7 +1,6 @@
package _VisualDVM.ComponentsServer.BugReport; package _VisualDVM.ComponentsServer.BugReport;
import Common.CommonConstants;
import Common.Database.Objects.DBObject; import Common.Database.Objects.DBObject;
import Common.Database.Objects.riDBObject; import Common.Database.Objects.rDBObject;
import Common.Utils.TextLog; import Common.Utils.TextLog;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import Common.Utils.Vector_; import Common.Utils.Vector_;
@@ -18,8 +17,7 @@ import java.io.File;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.Date; import java.util.Date;
import java.util.Vector; import java.util.Vector;
public class BugReport extends riDBObject { public class BugReport extends rDBObject {
//---
public String project_version = ""; public String project_version = "";
public long visualiser_version = -1; public long visualiser_version = -1;
public long sapfor_version = -1; public long sapfor_version = -1;
@@ -40,17 +38,13 @@ public class BugReport extends riDBObject {
public File owner = null; public File owner = null;
@Description("IGNORE") @Description("IGNORE")
public byte[] packed_archive = null; public byte[] packed_archive = null;
//--
public long date = 0;
public long change_date;
//--
public BugReport() { public BugReport() {
} }
public BugReport(BugReport src) { public BugReport(BugReport src) {
this.SynchronizeFields(src); this.SynchronizeFields(src);
} }
public BugReport(String sender_name_in, String sender_address_in, String description_in, String version_in) { public BugReport(String sender_name_in, String sender_address_in, String description_in, String version_in) {
id = CommonConstants.Nan; genName();
sender_name = sender_name_in; sender_name = sender_name_in;
sender_address = sender_address_in; sender_address = sender_address_in;
project_version = version_in; project_version = version_in;
@@ -82,16 +76,11 @@ public class BugReport extends riDBObject {
descriptionAdditionDraft = b.descriptionAdditionDraft; descriptionAdditionDraft = b.descriptionAdditionDraft;
commentAdditionDraft = b.commentAdditionDraft; commentAdditionDraft = b.commentAdditionDraft;
owner = b.owner; owner = b.owner;
change_date = b.change_date;
} }
//-- //--
public File getHome() {
return Utils_.getFile(System.getProperty("user.dir"), "BugReports", String.valueOf(id));
}
public File getArchiveFile() { public File getArchiveFile() {
return new File(getHome(),id + ".zip"); return Paths.get(System.getProperty("user.dir"), "Bugs", id + ".zip").toFile();
} }
//--
public String getDescriptionHeader() { public String getDescriptionHeader() {
if (description != null) { if (description != null) {
String[] data = description.split("\n"); String[] data = description.split("\n");

View File

@@ -1,12 +1,11 @@
package _VisualDVM.ComponentsServer.BugReport; package _VisualDVM.ComponentsServer.BugReport;
import Common.Database.Objects.DBObject; import Common.Database.Objects.DBObject;
import Common.Database.Tables.DBTable;
import Common.Database.Tables.FKBehaviour; import Common.Database.Tables.FKBehaviour;
import Common.Database.Tables.FKCurrentObjectBehaviuor; import Common.Database.Tables.FKCurrentObjectBehaviuor;
import Common.Database.Tables.FKDataBehaviour; import Common.Database.Tables.FKDataBehaviour;
import Common.Database.Tables.iDBTable;
import Common.Visual.DataSetControlForm; import Common.Visual.DataSetControlForm;
import _VisualDVM.ComponentsServer.BugReport.UI.BugReportsForm; import _VisualDVM.ComponentsServer.BugReport.UI.BugReportsForm;
import _VisualDVM.ComponentsServer.BugReportFile.BugReportFile;
import _VisualDVM.ComponentsServer.BugReportRecipient.BugReportRecipient; import _VisualDVM.ComponentsServer.BugReportRecipient.BugReportRecipient;
import _VisualDVM.ComponentsServer.BugReportSetting.BugReportSetting; import _VisualDVM.ComponentsServer.BugReportSetting.BugReportSetting;
@@ -14,9 +13,9 @@ import javax.swing.*;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Vector; import java.util.Vector;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class BugReportsDBTable extends iDBTable<BugReport> { public class BugReportsDBTable extends DBTable<String, BugReport> {
public BugReportsDBTable() { public BugReportsDBTable() {
super(BugReport.class); super(String.class, BugReport.class);
} }
@Override @Override
public String getSingleDescription() { public String getSingleDescription() {
@@ -38,7 +37,6 @@ public class BugReportsDBTable extends iDBTable<BugReport> {
LinkedHashMap<Class<? extends DBObject>, FKBehaviour> res = new LinkedHashMap<>(); LinkedHashMap<Class<? extends DBObject>, FKBehaviour> res = new LinkedHashMap<>();
res.put(BugReportSetting.class, new FKBehaviour(FKDataBehaviour.DELETE, FKCurrentObjectBehaviuor.PASSIVE)); res.put(BugReportSetting.class, new FKBehaviour(FKDataBehaviour.DELETE, FKCurrentObjectBehaviuor.PASSIVE));
res.put(BugReportRecipient.class, new FKBehaviour(FKDataBehaviour.DELETE, FKCurrentObjectBehaviuor.PASSIVE)); res.put(BugReportRecipient.class, new FKBehaviour(FKDataBehaviour.DELETE, FKCurrentObjectBehaviuor.PASSIVE));
res.put(BugReportFile.class, new FKBehaviour(FKDataBehaviour.DELETE, FKCurrentObjectBehaviuor.ACTIVE));
return res; return res;
} }
//- //-

View File

@@ -1,12 +1,11 @@
package _VisualDVM.ComponentsServer.BugReport.Json; package _VisualDVM.ComponentsServer.BugReport.Json;
import Common.CommonConstants;
import _VisualDVM.ComponentsServer.BugReport.BugReport; import _VisualDVM.ComponentsServer.BugReport.BugReport;
import com.google.gson.annotations.Expose; import com.google.gson.annotations.Expose;
import java.io.Serializable; import java.io.Serializable;
public class BugReportAdditionJson implements Serializable { public class BugReportAdditionJson implements Serializable {
@Expose @Expose
public int id = CommonConstants.Nan; public String id = "";
@Expose @Expose
public String fieldName = ""; public String fieldName = "";
@Expose @Expose

View File

@@ -101,14 +101,6 @@ public class BugReportsForm extends DataSetControlForm<BugReport> {
return RendererStatusEnum.class; return RendererStatusEnum.class;
} }
} }
/*,
new ColumnInfo<BugReport>("id_") {
@Override
public Object getFieldAt(BugReport object) {
return object.id_;
}
}
*/
); );
} }
@Override @Override
@@ -151,7 +143,7 @@ public class BugReportsForm extends DataSetControlForm<BugReport> {
public DataMenuBar createMenuBar() { public DataMenuBar createMenuBar() {
return new DataMenuBar(dataSource.getPluralDescription(), return new DataMenuBar(dataSource.getPluralDescription(),
PassCode.SynchronizeBugReports, PassCode.SynchronizeBugReports,
// PassCode.DownloadAllBugReportsArchives, PassCode.DownloadAllBugReportsArchives,
PassCode.AddBugReport, PassCode.AddBugReport,
PassCode.PublishBugReport, PassCode.PublishBugReport,
PassCode.OpenBugReportTestProject, PassCode.OpenBugReportTestProject,
@@ -162,14 +154,13 @@ public class BugReportsForm extends DataSetControlForm<BugReport> {
} }
@Override @Override
protected Comparator<BugReport> getDefaultComparator() { protected Comparator<BugReport> getDefaultComparator() {
return (o1, o2) -> -(o1.getDate().compareTo(o2.getDate()));
return (o1, o2) -> -Long.compare(o1.date, o2.date);
} }
@Override @Override
public boolean isObjectVisible(BugReport object) { public boolean isObjectVisible(BugReport object) {
return super.isObjectVisible(object) && ( return super.isObjectVisible(object) && (
object.state.equals(BugReportState.draft) || object.state.equals(BugReportState.draft) ||
(String.valueOf(object.id)).toUpperCase().contains(filterKey.toUpperCase()) object.id.toUpperCase().contains(filterKey.toUpperCase())
&& object.sender_name.toUpperCase().contains(filterSenderName.toUpperCase()) && object.sender_name.toUpperCase().contains(filterSenderName.toUpperCase())
&& object.description.toUpperCase().contains(filterDescription.toUpperCase()) && object.description.toUpperCase().contains(filterDescription.toUpperCase())
&& object.comment.toUpperCase().contains(filterComment.toUpperCase()) && object.comment.toUpperCase().contains(filterComment.toUpperCase())

View File

@@ -1,25 +0,0 @@
package _VisualDVM.ComponentsServer.BugReportFile;
import Common.CommonConstants;
import Common.Database.Objects.DBObject;
import Common.Database.Objects.riDBObject;
import com.sun.org.glassfish.gmbal.Description;
public class BugReportFile extends riDBObject {
@Description("DEFAULT -1")
public int bugreport_id = CommonConstants.Nan;
@Description("DEFAULT ''")
public String name = "";
@Override
public void SynchronizeFields(DBObject src) {
super.SynchronizeFields(src);
BugReportFile f = (BugReportFile) src;
bugreport_id = f.bugreport_id;
name = f.name;
}
//-
public BugReportFile(BugReportFile src) {
SynchronizeFields(src);
}
public BugReportFile() {
}
//-
}

View File

@@ -1,23 +0,0 @@
package _VisualDVM.ComponentsServer.BugReportFile;
import Common.Database.Tables.iDBTable;
import Common.Visual.DataSetControlForm;
import _VisualDVM.ComponentsServer.BugReportFile.UI.BugReportFilesForm;
import javax.swing.*;
public class BugReportFilesDBTable extends iDBTable<BugReportFile> {
public BugReportFilesDBTable() {
super(BugReportFile.class);
}
@Override
public String getSingleDescription() {
return "файл";
}
@Override
public String getPluralDescription() {
return "файлы";
}
@Override
protected DataSetControlForm createUI(JPanel mountPanel) {
return new BugReportFilesForm(this, mountPanel);
}
}

View File

@@ -1,29 +0,0 @@
package _VisualDVM.ComponentsServer.BugReportFile.UI;
import Common.Database.Tables.DataSet;
import Common.Visual.DataSetControlForm;
import Common.Visual.Tables.ColumnInfo;
import _VisualDVM.ComponentsServer.BugReport.BugReport;
import _VisualDVM.ComponentsServer.BugReportFile.BugReportFile;
import _VisualDVM.Global;
import javax.swing.*;
public class BugReportFilesForm extends DataSetControlForm<BugReportFile> {
public BugReportFilesForm(DataSet<?, BugReportFile> dataSource_in, JPanel mountPanel_in) {
super(dataSource_in, mountPanel_in);
}
@Override
protected void createColumns() {
AddColumns(
new ColumnInfo<BugReportFile>("имя") {
@Override
public Object getFieldAt(BugReportFile object) {
return object.name;
}
}
);
}
@Override
public boolean isObjectVisible(BugReportFile object) {
return super.isObjectVisible(object)&&Global.componentsServer.db.getTable(BugReport.class).getUI().matchCurrentID(object.bugreport_id);
}
}

View File

@@ -1,13 +1,10 @@
package _VisualDVM.ComponentsServer.BugReportRecipient; package _VisualDVM.ComponentsServer.BugReportRecipient;
import Common.CommonConstants;
import Common.Database.Objects.DBObject; import Common.Database.Objects.DBObject;
import Common.Database.Objects.iDBObject; import Common.Database.Objects.iDBObject;
import _VisualDVM.ComponentsServer.BugReport.BugReport; import _VisualDVM.ComponentsServer.BugReport.BugReport;
import com.sun.org.glassfish.gmbal.Description;
public class BugReportRecipient extends iDBObject { public class BugReportRecipient extends iDBObject {
public String bugreport_id = "";
public String email = ""; public String email = "";
@Description("DEFAULT '-1'")
public int bugreport_id = CommonConstants.Nan;
public BugReportRecipient() { public BugReportRecipient() {
} }
public BugReportRecipient(BugReport bugReport, String email_in) { public BugReportRecipient(BugReport bugReport, String email_in) {

View File

@@ -6,6 +6,6 @@ public class BugReportRecipientsDBTable extends iDBTable<BugReportRecipient> {
} }
@Override @Override
public boolean isEqual(BugReportRecipient o1, BugReportRecipient o2) { public boolean isEqual(BugReportRecipient o1, BugReportRecipient o2) {
return o1.bugreport_id==o2.bugreport_id && o1.email.equals(o2.email); return o1.bugreport_id.equals(o2.bugreport_id) && o1.email.equals(o2.email);
} }
} }

View File

@@ -1,14 +1,11 @@
package _VisualDVM.ComponentsServer.BugReportSetting; package _VisualDVM.ComponentsServer.BugReportSetting;
import Common.CommonConstants;
import Common.Database.Objects.DBObject; import Common.Database.Objects.DBObject;
import Common.Database.Objects.iDBObject; import Common.Database.Objects.iDBObject;
import _VisualDVM.ComponentsServer.BugReport.BugReport; import _VisualDVM.ComponentsServer.BugReport.BugReport;
import com.sun.org.glassfish.gmbal.Description;
public class BugReportSetting extends iDBObject { public class BugReportSetting extends iDBObject {
public String bugreport_id = "";
public String name = ""; public String name = "";
public String value = ""; public String value = "";
@Description("DEFAULT '-1'")
public int bugreport_id = CommonConstants.Nan;
public BugReportSetting() { public BugReportSetting() {
} }
public BugReportSetting(BugReport bugReport, String name_in, Object value_in) { public BugReportSetting(BugReport bugReport, String name_in, Object value_in) {

View File

@@ -2,7 +2,6 @@ package _VisualDVM.ComponentsServer;
import Common.Database.SQLITE.SQLiteDatabase; import Common.Database.SQLITE.SQLiteDatabase;
import _VisualDVM.ComponentsServer.BugReport.BugReport; import _VisualDVM.ComponentsServer.BugReport.BugReport;
import _VisualDVM.ComponentsServer.BugReport.BugReportsDBTable; import _VisualDVM.ComponentsServer.BugReport.BugReportsDBTable;
import _VisualDVM.ComponentsServer.BugReportFile.BugReportFilesDBTable;
import _VisualDVM.ComponentsServer.BugReportRecipient.BugReportRecipient; import _VisualDVM.ComponentsServer.BugReportRecipient.BugReportRecipient;
import _VisualDVM.ComponentsServer.BugReportRecipient.BugReportRecipientsDBTable; import _VisualDVM.ComponentsServer.BugReportRecipient.BugReportRecipientsDBTable;
import _VisualDVM.ComponentsServer.BugReportSetting.BugReportSettingsDBTable; import _VisualDVM.ComponentsServer.BugReportSetting.BugReportSettingsDBTable;
@@ -15,7 +14,6 @@ public class BugReportsDatabase extends SQLiteDatabase {
public BugReportsDBTable bugReports; public BugReportsDBTable bugReports;
public BugReportSettingsDBTable bugReportSettings; public BugReportSettingsDBTable bugReportSettings;
public BugReportRecipientsDBTable bugReportRecipients; public BugReportRecipientsDBTable bugReportRecipients;
public BugReportFilesDBTable bugReportsFiles;
public RecipientsDataSet recipients = new RecipientsDataSet(); public RecipientsDataSet recipients = new RecipientsDataSet();
public BugReportsDatabase() { public BugReportsDatabase() {
super(Paths.get(System.getProperty("user.dir"), "Data", "bug_reports.sqlite").toFile()); super(Paths.get(System.getProperty("user.dir"), "Data", "bug_reports.sqlite").toFile());
@@ -25,13 +23,10 @@ public class BugReportsDatabase extends SQLiteDatabase {
addTable(bugReports = new BugReportsDBTable()); addTable(bugReports = new BugReportsDBTable());
addTable(bugReportSettings = new BugReportSettingsDBTable()); addTable(bugReportSettings = new BugReportSettingsDBTable());
addTable(bugReportRecipients = new BugReportRecipientsDBTable()); addTable(bugReportRecipients = new BugReportRecipientsDBTable());
addTable(bugReportsFiles = new BugReportFilesDBTable());
} }
@Override @Override
public void Init() throws Exception { public void Init() throws Exception {
DeleteDrafts(); DeleteDrafts();
//--
Patch();
} }
@Override @Override
public PassCode getSynchronizePassCode() { public PassCode getSynchronizePassCode() {
@@ -63,72 +58,5 @@ public class BugReportsDatabase extends SQLiteDatabase {
} }
} }
public void Patch() throws Exception { public void Patch() throws Exception {
/*
int i = 0;
Vector<BugReport> sortedBugs = new Vector<>(bugReports.Data.values());
sortedBugs.sort(new Comparator<BugReport>() {
@Override
public int compare(BugReport o1, BugReport o2) {
return Long.compare(o1.date,o2.date);
}
});
//--
for (BugReport bugReport: sortedBugs){
bugReport.id_ = i;
++i;
//--
Update(bugReport);
}
//--
for (BugReport bugReport: sortedBugs){
Vector<BugReportSetting> bugSettings = getVectorByFK(bugReport, BugReportSetting.class);
Vector<BugReportRecipient> bugReportRecipients = getVectorByFK(bugReport, BugReportRecipient.class);
for (BugReportSetting setting: bugSettings){
setting.bugreport_id_ = bugReport.id_;
Update(setting);
}
for (BugReportRecipient recipient: bugReportRecipients){
recipient.bugreport_id_ = bugReport.id_;
Update(recipient);
}
}
//перенос архивов
for (BugReport bugReport: sortedBugs){
System.out.println("bugreport_id="+bugReport.id+"/"+bugReport.id_);
File new_home = new File(Global.BugReportsDirectory,String.valueOf(bugReport.id_));
//--
if (!new_home.exists())
FileUtils.forceMkdir(new_home);
//--
Utils.CleanDirectory(new_home);
//--
File old_archive = new File(Global.BugReportsDirectory_OLD, bugReport.id);
File new_archive = new File(new_home,String.valueOf(bugReport.id_)+".zip");
if (old_archive.exists()) {
FileUtils.copyFile(old_archive, new_archive);
}
}
//--
//упоминания других багов.
for (BugReport bugReport: sortedBugs){
//--
Vector<String> mentioned_keys = new Vector<>();
for (String id: bugReports.Data.keySet()){
if ((bugReport.description.contains(id) || bugReport.comment.contains(id)) && !mentioned_keys.contains(id)){
mentioned_keys.add(id);
}
}
//--
for (String id: mentioned_keys){
BugReport owner = bugReports.get(id);
if (owner!=null) {
bugReport.comment = bugReport.comment.replace(id, String.valueOf(owner.id_));
bugReport.description = bugReport.description.replace(id, String.valueOf(owner.id_));
Update(bugReport);
}
}
}
*/
} }
} }

View File

@@ -1,10 +0,0 @@
package _VisualDVM.ComponentsServer.Component.Json;
import com.google.gson.annotations.Expose;
public class VersionInfo_json {
@Expose
public int version;
@Expose
public String build_date;
@Expose
public String build_time;
}

View File

@@ -4,8 +4,8 @@ import Common.Passes.PassException;
import Common.Utils.Pair; import Common.Utils.Pair;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import Common.Visual.UI; import Common.Visual.UI;
import _VisualDVM.ComponentsServer.Component.Json.VersionInfo_json;
import _VisualDVM.ComponentsServer.Component.OSDComponent; import _VisualDVM.ComponentsServer.Component.OSDComponent;
import _VisualDVM.ComponentsServer.Component.Visualizer_2;
import _VisualDVM.Constants; import _VisualDVM.Constants;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode; import _VisualDVM.Passes.PassCode;
@@ -13,16 +13,16 @@ import _VisualDVM.Passes.Sapfor.SapforAnalysis;
import _VisualDVM.ProjectData.Files.DBProjectFile; import _VisualDVM.ProjectData.Files.DBProjectFile;
import _VisualDVM.ProjectData.Files.UI.Editor.SPFEditor; import _VisualDVM.ProjectData.Files.UI.Editor.SPFEditor;
import _VisualDVM.ProjectData.Project.db_project_info; import _VisualDVM.ProjectData.Project.db_project_info;
import _VisualDVM.ProjectData.SapforData.ModifiedFile_json;
import _VisualDVM.ProjectData.SapforData.SapforResult_json;
import _VisualDVM.TestingSystem.Common.Test.Test; import _VisualDVM.TestingSystem.Common.Test.Test;
import _VisualDVM.Utils; import _VisualDVM.Utils;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import java.io.File; import java.io.File;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.*; import java.util.Collections;
import java.util.concurrent.TimeUnit; import java.util.LinkedHashMap;
import java.util.List;
import java.util.Vector;
public abstract class Sapfor extends OSDComponent { public abstract class Sapfor extends OSDComponent {
public static final int empty_code = -100; public static final int empty_code = -100;
public static final int canceled_code = -99; public static final int canceled_code = -99;
@@ -33,6 +33,8 @@ public abstract class Sapfor extends OSDComponent {
public Vector<String> Intrinsics = new Vector<>(); public Vector<String> Intrinsics = new Vector<>();
public LinkedHashMap<String, String> ModifiedFiles = new LinkedHashMap<>(); public LinkedHashMap<String, String> ModifiedFiles = new LinkedHashMap<>();
public LinkedHashMap<String, String> OldFiles = new LinkedHashMap<>(); public LinkedHashMap<String, String> OldFiles = new LinkedHashMap<>();
int size;
int[] sizes;
String PID = ""; String PID = "";
private int errorCode; private int errorCode;
private String result; private String result;
@@ -72,8 +74,7 @@ public abstract class Sapfor extends OSDComponent {
PassCode.SPF_PrivateShrinking, PassCode.SPF_PrivateShrinking,
PassCode.SPF_PrivateExpansion, PassCode.SPF_PrivateExpansion,
PassCode.SPF_PrivateRemoving, PassCode.SPF_PrivateRemoving,
PassCode.SPF_InsertPrivateFromGUI, PassCode.SPF_InsertPrivateFromGUI
PassCode.SPF_InsertPrivateArrayDirectives
}; };
} }
public static PassCode[] getProceduresTransformationsCodes() { public static PassCode[] getProceduresTransformationsCodes() {
@@ -107,10 +108,9 @@ public abstract class Sapfor extends OSDComponent {
} }
public static PassCode[] getPreparationTransformationsCodes() { public static PassCode[] getPreparationTransformationsCodes() {
return new PassCode[]{ return new PassCode[]{
PassCode.SPF_CorrectCodeStylePass,
PassCode.SPF_MoveOperators,
PassCode.SPF_RenameIncludes, PassCode.SPF_RenameIncludes,
PassCode.SPF_InsertIncludesPass, PassCode.SPF_InsertIncludesPass,
PassCode.SPF_CorrectCodeStylePass,
PassCode.SPF_ConvertStructures, PassCode.SPF_ConvertStructures,
PassCode.SPF_CreateCheckpoints, PassCode.SPF_CreateCheckpoints,
PassCode.SPF_InitDeclsWithZero, PassCode.SPF_InitDeclsWithZero,
@@ -152,7 +152,6 @@ public abstract class Sapfor extends OSDComponent {
res.add(PassCode.SPF_PrivateShrinking);//+ res.add(PassCode.SPF_PrivateShrinking);//+
res.add(PassCode.SPF_PrivateExpansion);//+ res.add(PassCode.SPF_PrivateExpansion);//+
res.add(PassCode.SPF_PrivateRemoving);//+ res.add(PassCode.SPF_PrivateRemoving);//+
res.add(PassCode.SPF_InsertPrivateArrayDirectives);
//-- //--
res.add(PassCode.SPF_RemoveUnusedFunctions);//+ res.add(PassCode.SPF_RemoveUnusedFunctions);//+
res.add(PassCode.SPF_DuplicateFunctionChains);//+ res.add(PassCode.SPF_DuplicateFunctionChains);//+
@@ -164,7 +163,6 @@ public abstract class Sapfor extends OSDComponent {
res.add(PassCode.SPF_InsertDvmhRegions);//+ res.add(PassCode.SPF_InsertDvmhRegions);//+
res.add(PassCode.SPF_SharedMemoryParallelization);//+ res.add(PassCode.SPF_SharedMemoryParallelization);//+
res.add(PassCode.SPF_InsertImplicitNone);//+ res.add(PassCode.SPF_InsertImplicitNone);//+
res.add(PassCode.SPF_MoveOperators);
res.add(PassCode.CreateParallelVariants); //? res.add(PassCode.CreateParallelVariants); //?
return res; return res;
} }
@@ -207,10 +205,8 @@ public abstract class Sapfor extends OSDComponent {
Utils_.CheckDirectory(data_workspace); Utils_.CheckDirectory(data_workspace);
File outputFile = new File(data_workspace, outName); File outputFile = new File(data_workspace, outName);
File errorsFile = new File(data_workspace, errName); File errorsFile = new File(data_workspace, errName);
// File logFile = new File(data_workspace, "log.txt");
Utils_.forceDeleteWithCheck(outputFile); Utils_.forceDeleteWithCheck(outputFile);
Utils_.forceDeleteWithCheck(errorsFile); Utils_.forceDeleteWithCheck(errorsFile);
// Utils_.forceDeleteWithCheck(logFile);
//--- //---
File file = new File(data_workspace, name + (Utils_.isWindows() ? ".bat" : ".sh")); File file = new File(data_workspace, name + (Utils_.isWindows() ? ".bat" : ".sh"));
FileUtils.write(file, FileUtils.write(file,
@@ -226,36 +222,20 @@ public abstract class Sapfor extends OSDComponent {
if (!file.setExecutable(true)) if (!file.setExecutable(true))
throw new Exception("Не удалось сделать файл скрипта " + name + " исполняемым!"); throw new Exception("Не удалось сделать файл скрипта " + name + " исполняемым!");
//-- Windows //-- Windows
//запустить процесс boolean flag = false;
boolean process_started = false;
do { do {
try { try {
ProcessBuilder procBuilder = new ProcessBuilder(file.getAbsolutePath()); ProcessBuilder procBuilder = new ProcessBuilder(file.getAbsolutePath());
procBuilder.directory(workspace); procBuilder.directory(workspace);
process = procBuilder.start(); process = procBuilder.start();
process_started = true; exit_code = process.waitFor();
flag = true;
} catch (Exception ex) { } catch (Exception ex) {
Utils_.MainLog.PrintException(ex); Utils_.MainLog.PrintException(ex);
Utils_.sleep(1000); Utils_.sleep(1000);
} }
} }
while (!process_started); while (!flag);
//--
for (int i=0; i<40; ++i){
if (process.waitFor(1, TimeUnit.SECONDS)){
//дождались. все хорошо.
exit_code=0;
// FileUtils.writeStringToFile(logFile,sapfor_drv.getName()+" done for "+i+" seconds");
break;
}
}
if (exit_code!=0){
// FileUtils.writeStringToFile(logFile,sapfor_drv.getName()+" timeout");
//-
Process killer = Runtime.getRuntime().exec("pkill -SIGKILL -f "+sapfor_drv.getName());
killer.waitFor();
//-
}
process = null; process = null;
//--- //---
Vector<String> outputLines = new Vector<>(FileUtils.readLines(outputFile)); Vector<String> outputLines = new Vector<>(FileUtils.readLines(outputFile));
@@ -440,9 +420,7 @@ public abstract class Sapfor extends OSDComponent {
public void GetVersionInfo() { public void GetVersionInfo() {
try { try {
RunAnalysis("SPF_GetVersionAndBuildDate", -1, "", ""); RunAnalysis("SPF_GetVersionAndBuildDate", -1, "", "");
VersionInfo_json versionInfo_json = Utils_.gson.fromJson(getResult(),VersionInfo_json.class); Visualizer_2.UnpackVersionInfo(this, getResult());
version = versionInfo_json.version;
date_text = versionInfo_json.build_date+" "+ versionInfo_json.build_time;
} catch (Exception e) { } catch (Exception e) {
Utils_.MainLog.PrintException(e); Utils_.MainLog.PrintException(e);
UI.Error("Не удалось получить версию компонента " + Utils_.DQuotes(getComponentType().getDescription())); UI.Error("Не удалось получить версию компонента " + Utils_.DQuotes(getComponentType().getDescription()));
@@ -524,21 +502,6 @@ public abstract class Sapfor extends OSDComponent {
this.predictorStats = predictorStats; this.predictorStats = predictorStats;
} }
public void decodeString(String runResult) throws Exception { public void decodeString(String runResult) throws Exception {
SapforResult_json resultJson = Utils_.gson.fromJson(runResult, SapforResult_json.class);
//---
setErrorCode(resultJson.errorCode);
setOutput(resultJson.output);
setResult(resultJson.result);
setOutputMessage(resultJson.outputMessage);
setPredictorStats(resultJson.predictorStats);
//--
if (resultJson.files!=null && !resultJson.files.isEmpty()){
for (ModifiedFile_json file: resultJson.files){
ModifiedFiles.put(Utils_.toW(file.name), file.text);
}
}
//--
/*
int codeIdx = runResult.indexOf(' '); int codeIdx = runResult.indexOf(' ');
if (codeIdx == -1) throw new PassException("Wrong input parameter"); if (codeIdx == -1) throw new PassException("Wrong input parameter");
setErrorCode(Integer.parseInt(runResult.substring(0, codeIdx))); setErrorCode(Integer.parseInt(runResult.substring(0, codeIdx)));
@@ -582,12 +545,13 @@ public abstract class Sapfor extends OSDComponent {
} }
codeIdx += count; codeIdx += count;
} }
*/
} }
//- //-
public void Command(String request_in) throws Exception { public void Command(String request_in) throws Exception {
setErrorCode(empty_code); setErrorCode(empty_code);
outputMessage = output = result = predictorStats = ""; outputMessage = output = result = predictorStats = "";
size = 0;
sizes = null;
ModifiedFiles.clear(); ModifiedFiles.clear();
//модификации.-------------------------------------------------------------->>>> //модификации.-------------------------------------------------------------->>>>
decodeString(Global.visualizer_2.Command(request_in).replace((char) 1, '\n')); decodeString(Global.visualizer_2.Command(request_in).replace((char) 1, '\n'));
@@ -608,17 +572,15 @@ public abstract class Sapfor extends OSDComponent {
String addOpts) throws Exception { String addOpts) throws Exception {
Command("transformation:" + pack(transformName, options, projName, folderName, addOpts) + winHandler); Command("transformation:" + pack(transformName, options, projName, folderName, addOpts) + winHandler);
} }
public void RunModification(String modifyName, int winHandler, String options, String projName,
String folderName, String addOpt1, String addOpt2) throws Exception {
Command("modification:" + pack(modifyName, options, projName, folderName, addOpt1, addOpt2) + winHandler);
}
//--
/* /*
Модификации: Модификации:
SPF_ModifyArrayDistribution (addOpt1_c -> regId, addOpt2_c-> int64_t arrArrs, '|' as delimiter) SPF_ModifyArrayDistribution (addOpt1_c -> regId, addOpt2_c-> int64_t arrArrs, '|' as delimiter)
SPF_InlineProcedure (addOpt1_c -> name | file, addOpt2_c-> line) SPF_InlineProcedure (addOpt1_c -> name | file, addOpt2_c-> line)
*/ */
//-- public void RunModification(String modifyName, int winHandler, String options, String projName,
String folderName, String addOpt1, String addOpt2) throws Exception {
Command("modification:" + pack(modifyName, options, projName, folderName, addOpt1, addOpt2) + winHandler);
}
public void GetIntrinsics() throws Exception { public void GetIntrinsics() throws Exception {
Intrinsics.clear(); Intrinsics.clear();
if (RunAnalysis("SPF_GetIntrinsics", -1, "", "") >= 0) { if (RunAnalysis("SPF_GetIntrinsics", -1, "", "") >= 0) {

View File

@@ -12,7 +12,6 @@ import java.io.PrintWriter;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.Socket; import java.net.Socket;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.Date;
public class Visualizer_2 extends OSDComponent { public class Visualizer_2 extends OSDComponent {
public String PID = ""; public String PID = "";
//</editor-fold> //</editor-fold>
@@ -28,15 +27,11 @@ public class Visualizer_2 extends OSDComponent {
port = port_in; port = port_in;
} }
public static void UnpackVersionInfo(Component component, String packed) { public static void UnpackVersionInfo(Component component, String packed) {
String[] data = packed.split("\\|"); String[] data = packed.split("\\|");
//лишний пробел. //лишний пробел.
String text = data[0].substring(0, data[0].length() - 1); String text = data[0].substring(0, data[0].length() - 1);
component.date_text = data[1] + data[2] + data[3]; component.date_text = data[1] + data[2] + data[3];
component.version = Long.parseLong(text); component.version = Long.parseLong(text);
// component.version = 6666;
// component.date_text = new Date().toString();
} }
//<editor-fold desc="компонент"> //<editor-fold desc="компонент">
@Override @Override

View File

@@ -46,7 +46,7 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
} }
@Override @Override
protected void extraBackup(File todayBackUp) { protected void extraBackup(File todayBackUp) {
zip.Do("BugReports", new File(todayBackUp, "BugReports.zip").getAbsolutePath()); zip.Do("Bugs", new File(todayBackUp, "Bugs.zip").getAbsolutePath());
} }
@Override @Override
public Database getDb() { public Database getDb() {
@@ -55,9 +55,18 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
return super.getDb(); return super.getDb();
} }
@Override @Override
protected void beforePublishAction(DBObject object) throws Exception {
if (object instanceof BugReport) {
BugReport bugReport = (BugReport) object;
if (bugReport.packed_archive != null) {
File bugArchive = Utils_.getFile(Utils_.getHomePath(), "Bugs", bugReport.id);
Utils_.bytesToFile(bugReport.packed_archive, bugArchive);
}
}
}
@Override
protected void afterPublishAction(DBObject object) throws Exception { protected void afterPublishAction(DBObject object) throws Exception {
if (object instanceof BugReport) { if (object instanceof BugReport) {
//---
BugReport bugReport = (BugReport) object; BugReport bugReport = (BugReport) object;
if (bugReport.settings != null) { if (bugReport.settings != null) {
for (BugReportSetting setting : bugReport.settings) { for (BugReportSetting setting : bugReport.settings) {
@@ -68,14 +77,6 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
if (bugReport.recipients != null) { if (bugReport.recipients != null) {
db.saveBugreportRecipients(bugReport); db.saveBugreportRecipients(bugReport);
} }
//-->
Utils_.CheckAndCleanDirectory(bugReport.getHome());
//-->
if (bugReport.packed_archive != null) {
File bugArchive = bugReport.getArchiveFile();
Utils_.bytesToFile(bugReport.packed_archive, bugArchive);
bugReport.packed_archive = null;
}
} }
} }
@Override @Override
@@ -93,7 +94,7 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
protected void afterDeleteAction(DBObject object) throws Exception { protected void afterDeleteAction(DBObject object) throws Exception {
if (object instanceof BugReport) { if (object instanceof BugReport) {
BugReport bugReport = (BugReport) object; BugReport bugReport = (BugReport) object;
Utils_.forceDeleteWithCheck(bugReport.getHome()); if (!bugReport.project_version.isEmpty()) Utils_.forceDeleteWithCheck(bugReport.getArchiveFile());
} else if (object instanceof UserAccount) { } else if (object instanceof UserAccount) {
UserAccount account = (UserAccount) object; UserAccount account = (UserAccount) object;
Utils_.forceDeleteWithCheck(account.getServerKeyFile()); Utils_.forceDeleteWithCheck(account.getServerKeyFile());
@@ -169,7 +170,7 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
void ReceiveAllArchives() throws Exception { void ReceiveAllArchives() throws Exception {
ZipFolderPass zip = new ZipFolderPass(); ZipFolderPass zip = new ZipFolderPass();
File archives = new File(Utils_.getDateName("Bugs")); File archives = new File(Utils_.getDateName("Bugs"));
if (zip.Do("BugReports", archives.getAbsolutePath())) { if (zip.Do("Bugs", archives.getAbsolutePath())) {
response.object = Utils_.fileToBytes(archives); response.object = Utils_.fileToBytes(archives);
} else throw new RepositoryRefuseException("Не удалось запаковать архивы"); } else throw new RepositoryRefuseException("Не удалось запаковать архивы");
} }
@@ -178,7 +179,7 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
response.arg = credentials_db.userAccounts.getPackedActiveRecipients(); response.arg = credentials_db.userAccounts.getPackedActiveRecipients();
} }
void ReceiveBugReport() throws Exception { void ReceiveBugReport() throws Exception {
File bugArchive = Utils_.getFile(Utils_.getHomePath(), "BugReports", request.arg, request.arg + ".zip"); File bugArchive = Utils_.getFile(Utils_.getHomePath(), "Bugs", request.arg);
response.object = Utils_.fileToBytes(bugArchive); response.object = Utils_.fileToBytes(bugArchive);
} }
void UpdateBugReport() throws Exception { void UpdateBugReport() throws Exception {

View File

@@ -2,6 +2,7 @@ package _VisualDVM.ComponentsServer.UserAccount;
import Common.Database.Objects.DBObject; import Common.Database.Objects.DBObject;
import Common.Database.Objects.iDBObject; import Common.Database.Objects.iDBObject;
import Common.Utils.TextLog; import Common.Utils.TextLog;
import _VisualDVM.ComponentsServer.BugReport.BugReport;
import _VisualDVM.Global; import _VisualDVM.Global;
import com.sun.org.glassfish.gmbal.Description; import com.sun.org.glassfish.gmbal.Description;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
@@ -74,6 +75,20 @@ public class UserAccount extends iDBObject {
public boolean CheckAccessRights(String address_in, TextLog log) { public boolean CheckAccessRights(String address_in, TextLog log) {
return (CheckRegistered(log) && CheckAuthorship(address_in, log)); return (CheckRegistered(log) && CheckAuthorship(address_in, log));
} }
public boolean ExtendedCheckAccessRights(BugReport bugReport, TextLog log) {
if (CheckRegistered(log)) {
if (email.equals(bugReport.executor_address)) {
//метод вывести как нерабочий.когда будет изменена схема админства.
return true;
} else {
if (!isAdmin() && (!email.equals(bugReport.sender_address))) {
log.Writeln_("Вы не являетесь автором, исполнителем, или администратором");
return false;
} else return true;
}
}
return false;
}
public boolean isAdmin() { public boolean isAdmin() {
return role.equals(AccountRole.Admin); return role.equals(AccountRole.Admin);
} }

View File

@@ -3,7 +3,7 @@ import Common.Utils.Vector_;
import java.util.Vector; import java.util.Vector;
public class Constants { public class Constants {
public static final int version = 1265; public static final int version = 1253;
public static final int planner_version = 24; public static final int planner_version = 24;
public static final int testingMaxKernels = 64; public static final int testingMaxKernels = 64;
//-- //--

View File

@@ -65,7 +65,7 @@ public class Global {
Utils_.CheckDirectory(DataDirectory = new File(Utils_.getHomeDirectory(), Constants.DataDirectoryName)); Utils_.CheckDirectory(DataDirectory = new File(Utils_.getHomeDirectory(), Constants.DataDirectoryName));
//- //-
Utils_.CheckDirectory(RepoDirectory = new File(Utils_.getHomeDirectory(), Constants.RepoDirectoryName)); Utils_.CheckDirectory(RepoDirectory = new File(Utils_.getHomeDirectory(), Constants.RepoDirectoryName));
Utils_.CheckDirectory(BugReportsDirectory = new File(Utils_.getHomeDirectory(), "BugReports")); Utils_.CheckDirectory(BugReportsDirectory = new File(Utils_.getHomeDirectory(), Constants.BugsDirectoryName));
Utils_.CheckDirectory(BackUpsDirectory = new File(Utils_.getHomeDirectory(), Constants.BackUpsDirectoryName)); Utils_.CheckDirectory(BackUpsDirectory = new File(Utils_.getHomeDirectory(), Constants.BackUpsDirectoryName));
Utils_.CheckDirectory(ProjectsDirectory = new File(Utils_.getHomeDirectory(), Constants.ProjectsDirectoryName)); Utils_.CheckDirectory(ProjectsDirectory = new File(Utils_.getHomeDirectory(), Constants.ProjectsDirectoryName));
Utils_.CheckDirectory(CompilationTasksDirectory = new File(Utils_.getHomeDirectory(), Constants.CompilationTasksDirectoryName)); Utils_.CheckDirectory(CompilationTasksDirectory = new File(Utils_.getHomeDirectory(), Constants.CompilationTasksDirectoryName));
@@ -88,7 +88,7 @@ public class Global {
Utils_.CheckDirectory(DataDirectory = new File(Utils_.getHomeDirectory(), Constants.DataDirectoryName)); Utils_.CheckDirectory(DataDirectory = new File(Utils_.getHomeDirectory(), Constants.DataDirectoryName));
Utils_.CheckDirectory(DataBackUpsDirectory = new File(Utils_.getHomeDirectory(), Constants.DataBackUpsDirectoryName)); Utils_.CheckDirectory(DataBackUpsDirectory = new File(Utils_.getHomeDirectory(), Constants.DataBackUpsDirectoryName));
//-- //--
Utils_.CheckDirectory(BugReportsDirectory = new File(Utils_.getHomeDirectory(), "BugReports")); Utils_.CheckDirectory(BugReportsDirectory = new File(Utils_.getHomeDirectory(), Constants.BugsDirectoryName));
Utils_.CheckDirectory(KeysDirectory = new File(Utils_.getHomeDirectory(), Constants.KeyDirectoryName)); Utils_.CheckDirectory(KeysDirectory = new File(Utils_.getHomeDirectory(), Constants.KeyDirectoryName));
} }
public static void CheckTestingSystemDirectories() { public static void CheckTestingSystemDirectories() {

View File

@@ -65,8 +65,6 @@ public class NormalProperties extends VisualDVMProperties {
public int Kernels = Utils.getHalfKernels(); public int Kernels = Utils.getHalfKernels();
@Expose @Expose
public String LocalMakePathWindows = "C:\\MinGW\\msys\\1.0\\bin\\make.exe"; public String LocalMakePathWindows = "C:\\MinGW\\msys\\1.0\\bin\\make.exe";
@Expose
public String PrecompilationFlags = "";
//--тестирование //--тестирование
@Expose @Expose
public int CheckTestingIntervalSeconds = 10; //интервал автопроверки тестирования public int CheckTestingIntervalSeconds = 10; //интервал автопроверки тестирования
@@ -125,8 +123,6 @@ public class NormalProperties extends VisualDVMProperties {
@Override @Override
public String getFieldDescription(String fieldName) { public String getFieldDescription(String fieldName) {
switch (fieldName) { switch (fieldName) {
case "PrecompilationFlags":
return "Опции предварительной компиляции";
case "ErasePackageWorkspace": case "ErasePackageWorkspace":
return "Очистка рабочего пространства пакета на целевой машине"; return "Очистка рабочего пространства пакета на целевой машине";
case "CompleteCompilationOptions": case "CompleteCompilationOptions":

View File

@@ -1,5 +1,4 @@
package _VisualDVM.Passes.All; package _VisualDVM.Passes.All;
import Common.CommonConstants;
import Common.Database.Database; import Common.Database.Database;
import Common.Passes.AddObjectPass; import Common.Passes.AddObjectPass;
import Common.Utils.Utils_; import Common.Utils.Utils_;
@@ -31,10 +30,6 @@ public class AddBugReport extends AddObjectPass<BugReport> {
Log.Writeln_("Для создания отчёта требуется регистрация"); Log.Writeln_("Для создания отчёта требуется регистрация");
return false; return false;
} }
if (getDb().getTable(BugReport.class).containsKey(CommonConstants.Nan)){
Log.Writeln_("Может существовать не более одного черновика одновременно!");
return false;
}
if (Global.mainModule.HasProject()) { if (Global.mainModule.HasProject()) {
String version = Global.mainModule.getProject().Home.getAbsolutePath().substring(Global.mainModule.getRoot().Home.getParent().length()); String version = Global.mainModule.getProject().Home.getAbsolutePath().substring(Global.mainModule.getRoot().Home.getParent().length());
if (version.toCharArray()[0] == '\\') version = version.substring(1); if (version.toCharArray()[0] == '\\') version = version.substring(1);
@@ -44,7 +39,7 @@ public class AddBugReport extends AddObjectPass<BugReport> {
} else { } else {
if (UI.Warning("Создать отчёт об ошибке без прикрепления проекта.")) { if (UI.Warning("Создать отчёт об ошибке без прикрепления проекта.")) {
target = new BugReport(); target = new BugReport();
target.id = CommonConstants.Nan; target.genName();
target.sender_name = Global.mainModule.getAccount().name; target.sender_name = Global.mainModule.getAccount().name;
target.sender_address = Global.mainModule.getAccount().email; target.sender_address = Global.mainModule.getAccount().email;
target.project_version = ""; target.project_version = "";
@@ -67,12 +62,10 @@ public class AddBugReport extends AddObjectPass<BugReport> {
} }
@Override @Override
protected void body() throws Exception { protected void body() throws Exception {
//-- super.body();
Utils_.CheckAndCleanDirectory(target.getHome());
//--
if (!target.project_version.isEmpty()) { if (!target.project_version.isEmpty()) {
Global.mainModule.getRoot().cleanDepAndGCOVR(); //удаление депов и гкова Global.mainModule.getRoot().cleanDepAndGCOVR(); //удаление депов и гкова
//логи во вложения. todo переделать в полноценные вложения. //логи во вложения.
File attachementsDir = Global.mainModule.getProject().getAttachmentsDirectory(); File attachementsDir = Global.mainModule.getProject().getAttachmentsDirectory();
Vector<File> logs = new Vector<>(); Vector<File> logs = new Vector<>();
logs.add(Utils_.MainLog.getLogFile()); logs.add(Utils_.MainLog.getLogFile());
@@ -87,7 +80,6 @@ public class AddBugReport extends AddObjectPass<BugReport> {
Global.mainModule.getPass(PassCode.ZipFolderPass).Do(Global.mainModule.getRoot().Home.getAbsolutePath(), Global.mainModule.getPass(PassCode.ZipFolderPass).Do(Global.mainModule.getRoot().Home.getAbsolutePath(),
target.getArchiveFile().getAbsolutePath()); target.getArchiveFile().getAbsolutePath());
} }
getDb().getTable(BugReport.class).put(target.id, target);
} }
@Override @Override
protected boolean validate() { protected boolean validate() {

View File

@@ -76,7 +76,6 @@ public class AppendBugReportField extends ComponentsServerPass<BugReport> {
message_header + " " + Utils_.Brackets(Global.mainModule.getAccount().name), message_header + " " + Utils_.Brackets(Global.mainModule.getAccount().name),
message_text message_text
); );
Global.mainModule.getPass(PassCode.Email).Do( Global.mainModule.getPass(PassCode.Email).Do(
message, message,
Global.componentsServer.db.recipients.getSelectedMails()); Global.componentsServer.db.recipients.getSelectedMails());

View File

@@ -1,5 +1,6 @@
package _VisualDVM.Passes.All; package _VisualDVM.Passes.All;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import Common.Visual.UI;
import Common.Visual.Windows.Dialog.Text.ComboTextDialog; import Common.Visual.Windows.Dialog.Text.ComboTextDialog;
import _VisualDVM.ComponentsServer.Component.Sapfor.Sapfor; import _VisualDVM.ComponentsServer.Component.Sapfor.Sapfor;
import _VisualDVM.ComponentsServer.Component.Sapfor.TransformationPermission; import _VisualDVM.ComponentsServer.Component.Sapfor.TransformationPermission;
@@ -54,6 +55,7 @@ public class CombineFiles extends Transformation {
Vector<String> result_lines = new Vector<>(); Vector<String> result_lines = new Vector<>();
Vector<String> all_includes = new Vector<>(); Vector<String> all_includes = new Vector<>();
//----------------------------- //-----------------------------
result_lines.add("!-Found " + target.allIncludes.size() + " headers"); result_lines.add("!-Found " + target.allIncludes.size() + " headers");
System.out.println("found "+target.allIncludes.size()+" headers"); System.out.println("found "+target.allIncludes.size()+" headers");
for (String name : target.allIncludes) { for (String name : target.allIncludes) {
@@ -86,6 +88,7 @@ public class CombineFiles extends Transformation {
result_lines.addAll(FileUtils.readLines(target.db.files.Data.get(name).file)); result_lines.addAll(FileUtils.readLines(target.db.files.Data.get(name).file));
} }
} }
FileUtils.writeLines(result, result_lines, false); FileUtils.writeLines(result, result_lines, false);
//------------------------------- //-------------------------------
//теперь скопировать остальные файлы //теперь скопировать остальные файлы

View File

@@ -1,7 +1,6 @@
package _VisualDVM.Passes.All; package _VisualDVM.Passes.All;
import Common.Database.Database; import Common.Database.Database;
import Common.Passes.DeleteObjectPass; import Common.Passes.DeleteObjectPass;
import Common.Utils.Utils_;
import _VisualDVM.ComponentsServer.BugReport.BugReport; import _VisualDVM.ComponentsServer.BugReport.BugReport;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode; import _VisualDVM.Passes.PassCode;
@@ -16,7 +15,6 @@ public class DeleteBugReport extends DeleteObjectPass<BugReport> {
@Override @Override
protected void performDone() throws Exception { protected void performDone() throws Exception {
super.performDone(); super.performDone();
Utils_.forceDeleteWithCheck(target.getHome());
Global.mainModule.getPass(PassCode.DeleteBugReportFromServer).Do(target); Global.mainModule.getPass(PassCode.DeleteBugReportFromServer).Do(target);
} }
@Override @Override

View File

@@ -1,5 +1,4 @@
package _VisualDVM.Passes.All; package _VisualDVM.Passes.All;
import Common.Utils.Utils_;
import _VisualDVM.Current; import _VisualDVM.Current;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode; import _VisualDVM.Passes.PassCode;
@@ -11,7 +10,6 @@ import org.apache.commons.io.FileUtils;
import java.io.File; import java.io.File;
import java.nio.file.Paths; import java.nio.file.Paths;
public class DownloadAllBugReportsArchives extends ComponentsServerPass<File> { public class DownloadAllBugReportsArchives extends ComponentsServerPass<File> {
//упраздненный временно проход.
@Override @Override
public String getIconPath() { public String getIconPath() {
return "/icons/DownloadAll.png"; return "/icons/DownloadAll.png";
@@ -46,12 +44,10 @@ public class DownloadAllBugReportsArchives extends ComponentsServerPass<File> {
//теперь скопировать это в папку Bugs, с нормальными именами через zip //теперь скопировать это в папку Bugs, с нормальными именами через zip
File t2 = Paths.get(tempFolder.getAbsolutePath(), "Bugs").toFile(); File t2 = Paths.get(tempFolder.getAbsolutePath(), "Bugs").toFile();
File[] archives = t2.listFiles(); File[] archives = t2.listFiles();
/*
if (archives != null) { if (archives != null) {
for (File file : archives) { for (File file : archives) {
FileUtils.moveFile(file, Paths.get(Global.BugReportsDirectory_OLD.getAbsolutePath(), file.getName() + ".zip").toFile()); FileUtils.moveFile(file, Paths.get(Global.BugReportsDirectory.getAbsolutePath(), file.getName() + ".zip").toFile());
} }
} }
*/
} }
} }

View File

@@ -8,7 +8,7 @@ public class DownloadBugReport extends ComponentsServerPass<BugReport> {
@Override @Override
protected boolean canStart(Object... args) { protected boolean canStart(Object... args) {
target = (BugReport) args[0]; target = (BugReport) args[0];
return !target.getArchiveFile().exists() && SendRequest(ServerCode.ReceiveBugReport, String.valueOf(target.id)); return !target.getArchiveFile().exists() && SendRequest(ServerCode.ReceiveBugReport, target.id);
} }
@Override @Override
protected void performPreparation() throws Exception { protected void performPreparation() throws Exception {
@@ -16,7 +16,6 @@ public class DownloadBugReport extends ComponentsServerPass<BugReport> {
} }
@Override @Override
protected void body() throws Exception { protected void body() throws Exception {
Utils_.CheckAndCleanDirectory(target.getHome());
Utils_.bytesToFile((byte[]) request.server_response.object, target.getArchiveFile()); Utils_.bytesToFile((byte[]) request.server_response.object, target.getArchiveFile());
} }
@Override @Override

View File

@@ -23,7 +23,7 @@ public class OpenBugReportTestProject extends Pass<BugReport> {
if (Global.componentsServer.db.CheckCurrent(Log, BugReport.class) && if (Global.componentsServer.db.CheckCurrent(Log, BugReport.class) &&
(target = Global.componentsServer.db.bugReports.getUI().getCurrent()).CheckNotDraft(Log)) { (target = Global.componentsServer.db.bugReports.getUI().getCurrent()).CheckNotDraft(Log)) {
if (!target.project_version.isEmpty()) { if (!target.project_version.isEmpty()) {
root = new File(Global.visualiser.getDownloadsDirectory(), String.valueOf(target.id)); root = new File(Global.visualiser.getDownloadsDirectory(), target.id);
project = new File(root, project = new File(root,
Utils_.isWindows() ? Utils_.toW(target.project_version) : Utils_.toU(target.project_version) Utils_.isWindows() ? Utils_.toW(target.project_version) : Utils_.toU(target.project_version)
); );

View File

@@ -121,7 +121,7 @@ public class Precompilation extends Pass<db_project_info> {
return ""; return "";
} }
protected String getFortranFlags() { protected String getFortranFlags() {
return Global.normalProperties.PrecompilationFlags; return "";
} }
protected void prepareForParse() throws Exception { protected void prepareForParse() throws Exception {
target.CleanAnalyses(); target.CleanAnalyses();
@@ -212,11 +212,7 @@ public class Precompilation extends Pass<db_project_info> {
} }
@Override @Override
protected boolean validate() { protected boolean validate() {
return outputLines.stream().noneMatch( return outputLines.stream().noneMatch(line -> line.toLowerCase().startsWith("error"));
line -> (line.toLowerCase().startsWith("error")
|| line.toLowerCase().startsWith("gfortran.exe: error:")
|| line.toLowerCase().startsWith("gfortran: error:")
));
} }
@Override @Override
protected void performDone() throws Exception { protected void performDone() throws Exception {

View File

@@ -48,7 +48,7 @@ public class PublishBugReport extends PublishServerObject<ComponentsServer, BugR
protected void performDone() throws Exception { protected void performDone() throws Exception {
//3- рассылка //3- рассылка
EmailMessage message = new EmailMessage( EmailMessage message = new EmailMessage(
"Обнаружена ошибка " + Utils_.Brackets(pk), "Обнаружена ошибка " + Utils_.Brackets(target.id),
target.getNewMailText() target.getNewMailText()
); );
Global.mainModule.getPass(PassCode.Email).Do( Global.mainModule.getPass(PassCode.Email).Do(

View File

@@ -1,11 +1,16 @@
package _VisualDVM.Passes.All; package _VisualDVM.Passes.All;
import Common.Utils.Index;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import Common.Visual.UI;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.Passes.Sapfor.SapforAnalysis; import _VisualDVM.Passes.Sapfor.SapforAnalysis;
import _VisualDVM.ProjectData.Files.DBProjectFile; import _VisualDVM.ProjectData.Files.DBProjectFile;
import _VisualDVM.ProjectData.SapforData.Arrays.ArrayDecl; import _VisualDVM.ProjectData.SapforData.Arrays.ArrayDecl;
import _VisualDVM.ProjectData.SapforData.Arrays.ArraysJson; import _VisualDVM.ProjectData.SapforData.Arrays.ArraysJson;
import _VisualDVM.ProjectData.SapforData.Arrays.ProjectArray; import _VisualDVM.ProjectData.SapforData.Arrays.ProjectArray;
import javax.rmi.CORBA.Util;
import java.math.BigInteger;
public class SPF_GetAllDeclaratedArrays extends SapforAnalysis { public class SPF_GetAllDeclaratedArrays extends SapforAnalysis {
@Override @Override
public String phase() { public String phase() {

View File

@@ -1,7 +1,9 @@
package _VisualDVM.Passes.All; package _VisualDVM.Passes.All;
import Common.Utils.Index;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import Common.Utils.Vector_; import Common.Utils.Vector_;
import Common.Visual.Controls.PassControl; import Common.Visual.Controls.PassControl;
import Common.Visual.UI;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.Passes.Sapfor.SapforAnalysis; import _VisualDVM.Passes.Sapfor.SapforAnalysis;
import _VisualDVM.ProjectData.SapforData.Regions.ParallelRegion; import _VisualDVM.ProjectData.SapforData.Regions.ParallelRegion;

View File

@@ -1,4 +1,5 @@
package _VisualDVM.Passes.All; package _VisualDVM.Passes.All;
import Common.Utils.Index;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.Passes.Sapfor.SapforAnalysis; import _VisualDVM.Passes.Sapfor.SapforAnalysis;

View File

@@ -65,6 +65,7 @@ public class SPF_GetGCovInfo extends SilentSapforPass {
long v_execution = (lineJson.execution >= 0) ? lineJson.execution : 0; long v_execution = (lineJson.execution >= 0) ? lineJson.execution : 0;
if (!projectFile.gcov_info.line_info.containsKey(v_line)) { if (!projectFile.gcov_info.line_info.containsKey(v_line)) {
projectFile.gcov_info.add_line(v_line, v_execution); projectFile.gcov_info.add_line(v_line, v_execution);
} }
} }
} }

View File

@@ -70,6 +70,7 @@ public class SPF_GetIncludeDependencies extends SapforAnalysis {
if (Global.mainModule.HasFile() && Global.mainModule.getFile().name.equals(include_file.name)) if (Global.mainModule.HasFile() && Global.mainModule.getFile().name.equals(include_file.name))
update_current = true; update_current = true;
} }
}else { }else {
System.out.println(Utils_.Brackets(include.dependencyFileName)+" не существует!"); System.out.println(Utils_.Brackets(include.dependencyFileName)+" не существует!");
} }

View File

@@ -6,6 +6,8 @@ import _VisualDVM.Passes.PassCode;
import _VisualDVM.Passes.Sapfor.SapforTransformation; import _VisualDVM.Passes.Sapfor.SapforTransformation;
import _VisualDVM.ProjectData.SapforData.Includes.Analysis.FileInfo; import _VisualDVM.ProjectData.SapforData.Includes.Analysis.FileInfo;
import _VisualDVM.ProjectData.SapforData.Includes.Analysis.Include; import _VisualDVM.ProjectData.SapforData.Includes.Analysis.Include;
import _VisualDVM.ProjectData.SapforData.Includes.Transformation.IncludeToInsertJson;
import _VisualDVM.ProjectData.SapforData.Includes.Transformation.IncludesToInsertJson;
import java.util.Vector; import java.util.Vector;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -16,33 +18,6 @@ public class SPF_InsertIncludesPass extends SapforTransformation {
} }
@Override @Override
protected boolean canStart(Object... args) throws Exception { protected boolean canStart(Object... args) throws Exception {
if (super.canStart(args)) {
if (target.numAddicted <= 0) {
Log.Writeln_("Не найдено файлов, имеющих зависимости по включению.");
return false;
}
Vector<String> Result = new Vector<>();
for (FileInfo fileInfo : target.addictedFiles.values()) {
Vector<Include> selected_children = fileInfo.dependencies.stream().filter(Selectable::isSelected).collect(Collectors.toCollection(Vector::new));
if (!selected_children.isEmpty()) {
Result.add(fileInfo.file);
Result.add(String.valueOf(selected_children.size()));
for (Include di : selected_children) {
Result.add(String.valueOf(di.line));
Result.add(di.dependencyFileName);
}
}
}
if (Result.isEmpty()) {
Log.Writeln_("Не отмечено ни одного заголовка для подстановки");
return false;
}
Options = Utils_.toU(String.join("|", Result));
return true;
}
return false;
}
/*
if (super.canStart(args)) { if (super.canStart(args)) {
if (target.numAddicted <= 0) { if (target.numAddicted <= 0) {
Log.Writeln_("Не найдено файлов, имеющих зависимости по включению."); Log.Writeln_("Не найдено файлов, имеющих зависимости по включению.");
@@ -63,8 +38,7 @@ public class SPF_InsertIncludesPass extends SapforTransformation {
return true; return true;
} }
return false; return false;
}
*/
@Override @Override
protected void FocusBeforeStart() { protected void FocusBeforeStart() {
Global.mainModule.getUI().getMainWindow().getProjectWindow().FocusDependencies(); Global.mainModule.getUI().getMainWindow().getProjectWindow().FocusDependencies();

View File

@@ -1,4 +0,0 @@
package _VisualDVM.Passes.All;
import _VisualDVM.Passes.Sapfor.SapforTransformation;
public class SPF_InsertPrivateArrayDirectives extends SapforTransformation {
}

View File

@@ -1,4 +0,0 @@
package _VisualDVM.Passes.All;
import _VisualDVM.Passes.Sapfor.SapforTransformation;
public class SPF_MoveOperators extends SapforTransformation {
}

View File

@@ -124,7 +124,6 @@ public class UpdateBugReportField extends ComponentsServerPass<BugReport> {
message_header + " " + Utils_.Brackets(Global.mainModule.getAccount().name), message_header + " " + Utils_.Brackets(Global.mainModule.getAccount().name),
message_text message_text
); );
Global.mainModule.getPass(PassCode.Email).Do( Global.mainModule.getPass(PassCode.Email).Do(
message, message,
Global.componentsServer.db.recipients.getSelectedMails()); Global.componentsServer.db.recipients.getSelectedMails());

View File

@@ -3,7 +3,6 @@ import Common.MainModule_;
import Common.Passes.Pass; import Common.Passes.Pass;
import Common.Visual.Windows.Dialog.SliderNumberForm; import Common.Visual.Windows.Dialog.SliderNumberForm;
import Common.Visual.Windows.Dialog.SpinnerNumberForm; import Common.Visual.Windows.Dialog.SpinnerNumberForm;
import Common.Visual.Windows.Dialog.Text.TextFieldDialog;
import Common.Visual.Windows.Dialog.VDirectoryChooser; import Common.Visual.Windows.Dialog.VDirectoryChooser;
import Common.Visual.Windows.Dialog.VFileChooser; import Common.Visual.Windows.Dialog.VFileChooser;
import _VisualDVM.Global; import _VisualDVM.Global;
@@ -45,14 +44,6 @@ public class UpdateProperty extends Pass<Object> {
if (file != null) if (file != null)
newValue = file.getAbsolutePath(); newValue = file.getAbsolutePath();
break; break;
case "PrecompilationFlags":
TextFieldDialog textFieldDialog = new TextFieldDialog();
if (textFieldDialog.ShowDialog(description, oldValue)) {
newValue = textFieldDialog.Result;
if (newValue.toString().isEmpty())
newValue = " ";
}
break;
case "BugReportsAgeLimit": case "BugReportsAgeLimit":
if (sliderNumberForm.ShowDialog(description, oldValue, 1, 12)) if (sliderNumberForm.ShowDialog(description, oldValue, 1, 12))
newValue = sliderNumberForm.Result; newValue = sliderNumberForm.Result;

View File

@@ -301,7 +301,6 @@ public enum PassCode implements PassCode_ {
//-> //->
TestPass, TestPass,
SPF_InsertPrivateFromGUI, SPF_InsertPrivateFromGUI,
SPF_InsertPrivateArrayDirectives,
SPF_RemoveSpfDirectives, SPF_RemoveSpfDirectives,
SPF_RemoveDeadCode, SPF_RemoveDeadCode,
ReplaceTestProject, ReplaceTestProject,
@@ -362,17 +361,11 @@ public enum PassCode implements PassCode_ {
TestingServerBackUp, TestingServerBackUp,
CompareDVMRunTaskToEthalon, CompareDVMRunTaskToEthalon,
DropSapforConfigurationEthalon, DropSapforConfigurationEthalon,
RefreshSapforPackageResults, RefreshSapforPackageResults;
SPF_MoveOperators
;
//-- //--
@Override @Override
public String getDescription() { public String getDescription() {
switch (this) { switch (this) {
case SPF_MoveOperators:
return "Оптимальный порядок операторов";
case SPF_InsertPrivateArrayDirectives:
return "Анализ и вставка директив приватизации массивов";
case CompareSapforPackageToEthalon: case CompareSapforPackageToEthalon:
return "Сравнить пакет тестирования SAPFOR с эталоном"; return "Сравнить пакет тестирования SAPFOR с эталоном";
case SPF_RemoveSpfDirectives: case SPF_RemoveSpfDirectives:
@@ -906,9 +899,6 @@ public enum PassCode implements PassCode_ {
case SPF_PrivateRemoving://+ case SPF_PrivateRemoving://+
name = "PRIVATE_REMOVING"; name = "PRIVATE_REMOVING";
break; break;
case SPF_InsertPrivateArrayDirectives:
name="FIND_PRIVATE_ARRAYS";
break;
//- //-
case SPF_ResolveParallelRegionConflicts://+ case SPF_ResolveParallelRegionConflicts://+
name = "RESOLVE_PAR_REGIONS"; name = "RESOLVE_PAR_REGIONS";
@@ -960,9 +950,6 @@ public enum PassCode implements PassCode_ {
case SPF_RemoveDistArraysFromIO: case SPF_RemoveDistArraysFromIO:
name = "REMOVE_DIST_ARRAYS_FROM_IO"; name = "REMOVE_DIST_ARRAYS_FROM_IO";
break; break;
case SPF_MoveOperators:
name = "MOVE_OPERATORS";
break;
} }
return p + " " + name; return p + " " + name;
} }

View File

@@ -257,6 +257,7 @@ public class DBProjectFile extends ProjectFile {
break; break;
} }
} }
public void AddNewMessage(Message message) throws Exception{ public void AddNewMessage(Message message) throws Exception{
switch (message.type){ switch (message.type){
case 0: case 0:
@@ -281,6 +282,8 @@ public class DBProjectFile extends ProjectFile {
break; break;
} }
} }
public DefaultMutableTreeNode show_loop_graph_r(FileObjectWithMessages element) { public DefaultMutableTreeNode show_loop_graph_r(FileObjectWithMessages element) {
DefaultMutableTreeNode res = new DefaultMutableTreeNode(element); DefaultMutableTreeNode res = new DefaultMutableTreeNode(element);
if (element instanceof Loop) { if (element instanceof Loop) {

View File

@@ -26,6 +26,18 @@ public class Message extends iDBObject {
//-- //--
@Description("DEFAULT ''") @Description("DEFAULT ''")
public String file = ""; public String file = "";
public String getGroup_s() {
switch (group) {
case 0:
return "#m0000";
case Constants.parser_group: //сообщения от парсера.
return "#parser";
case Constants.compiler_group:
return "#compiler";
default:
return "#"+group;
}
}
//-- //--
public Message() { public Message() {
} }
@@ -443,16 +455,4 @@ public class Message extends iDBObject {
} }
} }
} }
public String getGroup_s() {
switch (group) {
case 0:
return "#m0000";
case Constants.parser_group: //сообщения от парсера.
return "#parser";
case Constants.compiler_group:
return "#compiler";
default:
return "#" + group;
}
}
} }

View File

@@ -39,6 +39,14 @@ public class AlignRule {
alignRuleWith.add(new AlignRuleWidthJson(dimNum, a, b)); alignRuleWith.add(new AlignRuleWidthJson(dimNum, a, b));
} }
} }
public void Init(){
//--
alignArray_address = new BigInteger(packedAlignArrayAddress);
alignWith_address = new BigInteger(packedAlignWithAddress);
//--
packedAlignArrayAddress = null;
packedAlignWithAddress = null;
}
private static Pair<String, String> convertDigitToPositive(int digit) { private static Pair<String, String> convertDigitToPositive(int digit) {
String buf = ""; String buf = "";
String sign = " + "; String sign = " + ";
@@ -50,14 +58,6 @@ public class AlignRule {
buf += String.valueOf(digit); buf += String.valueOf(digit);
return new Pair<>(sign, buf); return new Pair<>(sign, buf);
} }
public void Init() {
//--
alignArray_address = new BigInteger(packedAlignArrayAddress);
alignWith_address = new BigInteger(packedAlignWithAddress);
//--
packedAlignArrayAddress = null;
packedAlignWithAddress = null;
}
public ProjectArray getAlignArray() { public ProjectArray getAlignArray() {
return parent_region.arraysMap.get(alignArray_address); return parent_region.arraysMap.get(alignArray_address);
} }

View File

@@ -7,13 +7,6 @@ public class AlignRuleWidthJson {
public int a; public int a;
@Expose @Expose
public int b; public int b;
public AlignRuleWidthJson() {
}
public AlignRuleWidthJson(int i_in, int a_in, int b_in) {
dimNum = i_in;
a = a_in;
b = b_in;
}
//dim -> a * dim_t + b //dim -> a * dim_t + b
public int getDimNum(){ public int getDimNum(){
return dimNum; return dimNum;
@@ -24,4 +17,12 @@ public class AlignRuleWidthJson {
public int getB(){ public int getB(){
return b; return b;
} }
public AlignRuleWidthJson(){
}
public AlignRuleWidthJson(int i_in, int a_in, int b_in){
dimNum = i_in;
a = a_in;
b = b_in;
}
} }

View File

@@ -1,12 +1,15 @@
package _VisualDVM.ProjectData.SapforData.Arrays; package _VisualDVM.ProjectData.SapforData.Arrays;
import Common.Database.Objects.DBObject; import Common.Database.Objects.DBObject;
import Common.Utils.Index;
import Common.Utils.IntegerPairJson; import Common.Utils.IntegerPairJson;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode; import _VisualDVM.Passes.PassCode;
import _VisualDVM.ProjectData.DBArray.DBArray; import _VisualDVM.ProjectData.DBArray.DBArray;
import _VisualDVM.ProjectData.Files.DBProjectFile;
import _VisualDVM.ProjectData.SapforData.Arrays.Templates.TemplateDimension; import _VisualDVM.ProjectData.SapforData.Arrays.Templates.TemplateDimension;
import _VisualDVM.ProjectData.SapforData.Arrays.Templates.TemplateDimensionState; import _VisualDVM.ProjectData.SapforData.Arrays.Templates.TemplateDimensionState;
import _VisualDVM.ProjectData.SapforData.Arrays.Templates.TemplateLink;
import _VisualDVM.ProjectData.SapforData.Regions.ParallelRegion; import _VisualDVM.ProjectData.SapforData.Regions.ParallelRegion;
import _VisualDVM.ProjectData.SapforData.Regions.UI.ArrayAlignmentBar; import _VisualDVM.ProjectData.SapforData.Regions.UI.ArrayAlignmentBar;
import com.google.gson.annotations.Expose; import com.google.gson.annotations.Expose;
@@ -18,9 +21,6 @@ import java.util.List;
import java.util.Vector; import java.util.Vector;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class ProjectArray extends DBObject { public class ProjectArray extends DBObject {
//--
//----------------------------------------------------------------------
public static final String[] alignNames = {"i", "j", "k", "l", "m", "n", "q", "r", "s", "t", "u", "w", "x", "y", "z"};
@Expose @Expose
public long id; public long id;
@Expose @Expose
@@ -34,6 +34,10 @@ public class ProjectArray extends DBObject {
@Expose @Expose
public int typeSize; public int typeSize;
@Expose @Expose
int state;
@Expose
int location;
@Expose
public String locName; public String locName;
@Expose @Expose
public int isTemplFlag; public int isTemplFlag;
@@ -41,6 +45,17 @@ public class ProjectArray extends DBObject {
public int isLoopArrayFlag; public int isLoopArrayFlag;
@Expose @Expose
public Vector<ArrayDecl> declPlaces = new Vector<>(); public Vector<ArrayDecl> declPlaces = new Vector<>();
@Expose
List<Integer> deprecateToDist = new Vector<>();
@Expose
List<Integer> mappedDims = new Vector<>();
@Expose
Vector<IntegerPairJson> sizes = new Vector<>();
@Expose
Vector<String> regions = new Vector<>();
//--
//----------------------------------------------------------------------
public static final String[] alignNames = {"i", "j", "k", "l", "m", "n", "q", "r", "s", "t", "u", "w", "x", "y", "z"};
public String UniqKey; public String UniqKey;
public BigInteger address; public BigInteger address;
//только для шаблонов. для ФИЛЬТРА управления распределением измерений. //только для шаблонов. для ФИЛЬТРА управления распределением измерений.
@@ -58,33 +73,6 @@ public class ProjectArray extends DBObject {
public LinkedHashMap<Integer, Dimension> ac_new; public LinkedHashMap<Integer, Dimension> ac_new;
//https://stackoverflow.com/questions/4941372/how-to-insert-image-into-jtable-cell //https://stackoverflow.com/questions/4941372/how-to-insert-image-into-jtable-cell
public ArrayAlignmentBar bar = null; public ArrayAlignmentBar bar = null;
@Expose
int state;
@Expose
int location;
@Expose
List<Integer> deprecateToDist = new Vector<>();
@Expose
List<Integer> mappedDims = new Vector<>();
@Expose
Vector<IntegerPairJson> sizes = new Vector<>();
@Expose
Vector<String> regions = new Vector<>();
public static String fill_binary(int d, String binary) {
int delta = Math.abs(binary.length() - d);
String res = binary;
for (int i = 0; i < delta; ++i) {
res = ("0" + res);
}
return res;
}
//длина должна быть равной, ищем есть ли совпадающие позиции с единицами
public static boolean mask(String banned, String variant) {
for (int i = 0; i < variant.length(); ++i)
if ((variant.toCharArray()[i] == '1') && (banned.toCharArray()[i] == '1')) //попался, масконосец!
return true;
return false;
}
//------ //------
public void print() { public void print() {
Vector<String> res = new Vector<>(); Vector<String> res = new Vector<>();
@@ -131,6 +119,21 @@ public class ProjectArray extends DBObject {
ac_new = new LinkedHashMap<>(); ac_new = new LinkedHashMap<>();
//--FileForm //--FileForm
} }
public static String fill_binary(int d, String binary) {
int delta = Math.abs(binary.length() - d);
String res = binary;
for (int i = 0; i < delta; ++i) {
res = ("0" + res);
}
return res;
}
//длина должна быть равной, ищем есть ли совпадающие позиции с единицами
public static boolean mask(String banned, String variant) {
for (int i = 0; i < variant.length(); ++i)
if ((variant.toCharArray()[i] == '1') && (banned.toCharArray()[i] == '1')) //попался, масконосец!
return true;
return false;
}
public String printLinks() { public String printLinks() {
Vector<String> res = links.keySet().stream().map(Object::toString).collect(Collectors.toCollection(Vector::new)); Vector<String> res = links.keySet().stream().map(Object::toString).collect(Collectors.toCollection(Vector::new));
return String.join(" ", res); return String.join(" ", res);

View File

@@ -1,6 +1,7 @@
package _VisualDVM.ProjectData.SapforData.Includes.Analysis; package _VisualDVM.ProjectData.SapforData.Includes.Analysis;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import _VisualDVM.ProjectData.SapforData.FileObject; import _VisualDVM.ProjectData.SapforData.FileObject;
import _VisualDVM.ProjectData.SapforData.Includes.Analysis.Include;
import com.google.gson.annotations.Expose; import com.google.gson.annotations.Expose;
import javax.swing.*; import javax.swing.*;

View File

@@ -1,8 +0,0 @@
package _VisualDVM.ProjectData.SapforData;
import com.google.gson.annotations.Expose;
public class ModifiedFile_json {
@Expose
public String name;
@Expose
public String text;
}

View File

@@ -1,8 +1,10 @@
package _VisualDVM.ProjectData.SapforData.Regions; package _VisualDVM.ProjectData.SapforData.Regions;
import Common.Database.Objects.DBObject; import Common.Database.Objects.DBObject;
import Common.Utils.Index;
import Common.Utils.IntegerPairJson; import Common.Utils.IntegerPairJson;
import Common.Utils.Pair; import Common.Utils.Pair;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import Common.Visual.UI;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.ProjectData.Files.DBProjectFile; import _VisualDVM.ProjectData.Files.DBProjectFile;
import _VisualDVM.ProjectData.SapforData.Arrays.AlignRule; import _VisualDVM.ProjectData.SapforData.Arrays.AlignRule;
@@ -28,21 +30,6 @@ public class ParallelRegion extends DBObject {
public Vector<AlignRule> alignRules; public Vector<AlignRule> alignRules;
//---- //----
public Vector<String> rules; public Vector<String> rules;
//--
public BigInteger regionId;
//name in program
// file -> <start, end> lines
public LinkedHashMap<String, List<IntegerPairJson>> lines; //+
//ключ - адрес. меняем
public LinkedHashMap<BigInteger, ProjectArray> arraysMap; //+
//for directive creating
public int maxdim = 0;
public Vector<String> fragments; //+
public int lines_count = 0;
public int loops_count = 0;
public int arrays_count = 0;
public int fd_count = 0;
public int fc_count = 0;
public void genRules(LinkedHashMap<BigInteger, ProjectArray> Arrays) { public void genRules(LinkedHashMap<BigInteger, ProjectArray> Arrays) {
rules.clear(); rules.clear();
int maxLen = 0; int maxLen = 0;
@@ -61,6 +48,21 @@ public class ParallelRegion extends DBObject {
for (String r : v) for (String r : v)
rules.add(r); rules.add(r);
} }
//--
public BigInteger regionId;
//name in program
// file -> <start, end> lines
public LinkedHashMap<String, List<IntegerPairJson>> lines; //+
//ключ - адрес. меняем
public LinkedHashMap<BigInteger, ProjectArray> arraysMap; //+
//for directive creating
public int maxdim = 0;
public Vector<String> fragments; //+
public int lines_count = 0;
public int loops_count = 0;
public int arrays_count = 0;
public int fd_count = 0;
public int fc_count = 0;
public void Init() { public void Init() {
arraysMap = new LinkedHashMap<>(); arraysMap = new LinkedHashMap<>();
lines = new LinkedHashMap<>(); lines = new LinkedHashMap<>();
@@ -86,7 +88,6 @@ public class ParallelRegion extends DBObject {
} }
//--- //---
for (FileRegionLinesJson fr : regionsLines) { for (FileRegionLinesJson fr : regionsLines) {
fr.file = Utils_.toW(fr.file);
lines.put(fr.file, fr.lines); lines.put(fr.file, fr.lines);
for (IntegerPairJson l : fr.lines) { for (IntegerPairJson l : fr.lines) {
fragments.add(fr.file + ": " + l.getKey() + "-" + l.getKey()); fragments.add(fr.file + ": " + l.getKey() + "-" + l.getKey());
@@ -102,7 +103,6 @@ public class ParallelRegion extends DBObject {
for (IntegerPairJson L : lines.get(FKey)) { for (IntegerPairJson L : lines.get(FKey)) {
lines_count += (L.getValue() - L.getKey()); lines_count += (L.getValue() - L.getKey());
DBProjectFile f = Global.mainModule.getProject().db.files.Data.get(FKey); DBProjectFile f = Global.mainModule.getProject().db.files.Data.get(FKey);
loops_count += f.FragmentLoopCount(L.getKey(), L.getValue()); loops_count += f.FragmentLoopCount(L.getKey(), L.getValue());
fc_count += f.FragmentFunctionCallsCount(L.getKey(), L.getValue()); fc_count += f.FragmentFunctionCallsCount(L.getKey(), L.getValue());
fd_count += f.FragmentFunctionDeclsCount(L.getKey(), L.getValue()); fd_count += f.FragmentFunctionDeclsCount(L.getKey(), L.getValue());

View File

@@ -1,28 +0,0 @@
package _VisualDVM.ProjectData.SapforData;
import com.google.gson.annotations.Expose;
import java.util.List;
public class SapforResult_json {
@Expose
public int errorCode;
@Expose
public String result; //запаковка результата конкретного прохода в json
@Expose
public String output; //журнал
@Expose
public String outputMessage; //запаковка сообщений в json
@Expose
public String predictorStats; //запаковка оценок вариантов в json если есть для их построения и оценки.
@Expose
public List<ModifiedFile_json> files; //запаковка имен файлов в json если есть для модификации
//--
public void Print(){
System.out.println("------------------------------");
System.out.println("codeIdx="+ errorCode );
System.out.println("result="+result);
System.out.println("output="+output);
System.out.println("outputMessage="+outputMessage);
System.out.println("predictorStats="+predictorStats);
System.out.println("-------------------------------");
}
}

View File

@@ -1,4 +1,5 @@
package _VisualDVM.TestingSystem.SAPFOR.Json; package _VisualDVM.TestingSystem.SAPFOR.Json;
import Common.CommonConstants;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import _VisualDVM.ComponentsServer.Component.Sapfor.Sapfor; import _VisualDVM.ComponentsServer.Component.Sapfor.Sapfor;
import _VisualDVM.Constants; import _VisualDVM.Constants;
@@ -6,11 +7,13 @@ import _VisualDVM.ProjectData.Files.DBProjectFile;
import _VisualDVM.ProjectData.Files.FileType; import _VisualDVM.ProjectData.Files.FileType;
import _VisualDVM.ProjectData.Files.ProjectFile; import _VisualDVM.ProjectData.Files.ProjectFile;
import _VisualDVM.ProjectData.LanguageName; import _VisualDVM.ProjectData.LanguageName;
import _VisualDVM.ProjectData.Messages.Errors.MessageError;
import _VisualDVM.ProjectData.Messages.FileMessagesJson; import _VisualDVM.ProjectData.Messages.FileMessagesJson;
import _VisualDVM.ProjectData.Messages.Message; import _VisualDVM.ProjectData.Messages.Message;
import _VisualDVM.ProjectData.Messages.MessagesJson; import _VisualDVM.ProjectData.Messages.MessagesJson;
import _VisualDVM.ProjectData.Project.db_project_info; import _VisualDVM.ProjectData.Project.db_project_info;
import _VisualDVM.TestingSystem.SAPFOR.SapforTask.SapforTask; import _VisualDVM.TestingSystem.SAPFOR.SapforTask.SapforTask;
import _VisualDVM.Utils;
import com.google.gson.annotations.Expose; import com.google.gson.annotations.Expose;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
@@ -20,6 +23,8 @@ import java.nio.charset.Charset;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Vector; import java.util.Vector;
import static java.lang.Character.isDigit;
public class SapforVersion_json implements Serializable { public class SapforVersion_json implements Serializable {
@Expose @Expose
public String version = ""; public String version = "";
@@ -150,9 +155,42 @@ public class SapforVersion_json implements Serializable {
} catch (Exception ex) { } catch (Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
} }
if (!text1.equalsIgnoreCase(text2)) if (!Utils.compareFortranTexts(text1, text2)) {
return false; return false;
} }
}
return true;
}
public boolean isMatchServer(SapforVersion_json version_json) {
if (!description.equals(version_json.description)) {
return false;
}
if (files.size() != version_json.files.size()) {
return false;
}
for (String name1 : files.keySet()) {
if (!version_json.files.containsKey(name1)) {
return false;
}
}
for (String name1 : files.keySet()) {
ProjectFile file1 = files.get(name1);
ProjectFile file2 = version_json.files.get(name1);
//---
String text1 = "";
String text2 = "";
try {
text1 = FileUtils.readFileToString(file1.file, Charset.defaultCharset());
} catch (Exception ex) {
ex.printStackTrace();
}
try {
text2 = FileUtils.readFileToString(file2.file, Charset.defaultCharset());
} catch (Exception ex) {
ex.printStackTrace();
}
return text1.equalsIgnoreCase(text2);
}
return true; return true;
} }
public void createProject(File rootHome) throws Exception { public void createProject(File rootHome) throws Exception {
@@ -195,7 +233,8 @@ public class SapforVersion_json implements Serializable {
try { try {
String packed = FileUtils.readFileToString(messages_dump); String packed = FileUtils.readFileToString(messages_dump);
messagesJson = Utils_.gson.fromJson(packed, MessagesJson.class); messagesJson = Utils_.gson.fromJson(packed, MessagesJson.class);
} catch (Exception ex) { }
catch (Exception ex){
ex.printStackTrace(); ex.printStackTrace();
} }
} }

View File

@@ -11,32 +11,29 @@ import org.apache.commons.io.FileUtils;
import java.io.File; import java.io.File;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.file.Files;
import java.util.Date; import java.util.Date;
public class PackageModeSupervisor extends ThreadsPlanner { public class PackageModeSupervisor extends ThreadsPlanner {
SapforPackage_json package_json = null; SapforPackage_json package_json = null;
// File sapfor_drv = null; File sapfor_drv = null;
public PackageModeSupervisor() throws Exception { public PackageModeSupervisor() throws Exception {
super(2000); super(2000);
package_json = (SapforPackage_json) Utils_.jsonFromFile(new File(Constants.package_json), SapforPackage_json.class); package_json = (SapforPackage_json) Utils_.jsonFromFile(new File(Constants.package_json), SapforPackage_json.class);
//-- //--
File sapfor_src = new File(package_json.sapfor_drv); File sapfor_src = new File(package_json.sapfor_drv);
//-- sapfor_drv = new File(Utils_.getHomeDirectory(), Utils_.getDateName("SAPFOR_F"));
String pid_prefix = Utils_.getDateName("SAPFOR_F"); FileUtils.copyFile(sapfor_src, sapfor_drv);
//-- if (!sapfor_drv.setExecutable(true))
throw new Exception("Не удалось сделать файл " + sapfor_drv.getName() + " исполняемым!");
File PID = new File("PID"); File PID = new File("PID");
FileUtils.writeStringToFile(PID, pid_prefix, Charset.defaultCharset()); FileUtils.writeStringToFile(PID, sapfor_drv.getName(), Charset.defaultCharset());
//--- //---
Date startDate = new Date(); Date startDate = new Date();
File started = new File(CommonConstants.STARTED); File started = new File(CommonConstants.STARTED);
FileUtils.writeStringToFile(started, String.valueOf(startDate)); FileUtils.writeStringToFile(started, String.valueOf(startDate));
//формирование списка задач. //формирование списка задач.
setMaxKernels(package_json.kernels); setMaxKernels(package_json.kernels);
for (SapforTask task : package_json.tasks) { for (SapforTask task : package_json.tasks)
File task_drv = new File(Utils_.getHomeDirectory(),pid_prefix+"_"+task.id); addThread(new TaskThread(task, sapfor_drv));
Files.createSymbolicLink(task_drv.toPath(), sapfor_src.toPath());
addThread(new TaskThread(task, task_drv));
}
interruptThread.start(); interruptThread.start();
} }
@Override @Override
@@ -58,8 +55,8 @@ public class PackageModeSupervisor extends ThreadsPlanner {
// ,"sh", "exe", "bat" // ,"sh", "exe", "bat"
); );
//удаление сапфора exception //удаление сапфора exception
// if (sapfor_drv.exists()) if (sapfor_drv.exists())
// FileUtils.forceDelete(sapfor_drv); FileUtils.forceDelete(sapfor_drv);
} catch (Exception e) { } catch (Exception e) {
Utils_.MainLog.PrintException(e); Utils_.MainLog.PrintException(e);
} }

View File

@@ -178,6 +178,46 @@ public class SapforTask extends DBObject {
task2.comparisonState = ComparisonState.Match; task2.comparisonState = ComparisonState.Match;
} }
} }
public void checkMatchServer(SapforTask task2) {
if (!state.equals(task2.state)) {
comparisonState = ComparisonState.NotMatch;
task2.comparisonState = ComparisonState.NotMatch;
}
if ((versions.size() != task2.versions.size()) || (variants.size() != task2.variants.size())) {
comparisonState = ComparisonState.NotMatch;
task2.comparisonState = ComparisonState.NotMatch;
}
LinkedHashMap<String, SapforVersion_json> versions1 = getSortedVersions();
LinkedHashMap<String, SapforVersion_json> versions2 = task2.getSortedVersions();
//---
for (String name1 : versions1.keySet()) {
if (versions2.containsKey(name1)) {
SapforVersion_json version1 = versions1.get(name1);
SapforVersion_json version2 = versions2.get(name1);
//---
if (!version1.isMatchServer(version2)) {
comparisonState = ComparisonState.NotMatch;
task2.comparisonState = ComparisonState.NotMatch;
version1.comparisonState = VersionComparisonState.NotMatch;
version2.comparisonState = VersionComparisonState.NotMatch;
//-
} else {
version1.comparisonState = VersionComparisonState.Match;
version2.comparisonState = VersionComparisonState.Match;
//-
}
} else {
comparisonState = ComparisonState.NotMatch;
task2.comparisonState = ComparisonState.NotMatch;
//--
}
}
//--
if (comparisonState.equals(ComparisonState.Unknown)) {
comparisonState = ComparisonState.Match;
task2.comparisonState = ComparisonState.Match;
}
}
public Date getStartDate() { public Date getStartDate() {
return new Date(StartDate); return new Date(StartDate);
} }

View File

@@ -22,7 +22,6 @@ import _VisualDVM.TestingSystem.SAPFOR.ServerSapfor.ServerSapforState;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import java.io.File; import java.io.File;
import java.io.FileFilter;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Paths; import java.nio.file.Paths;
@@ -149,7 +148,6 @@ public class SapforTestingPlanner extends TestingPlanner<SapforPackage> {
} }
@Override @Override
protected void DownloadResults() throws Exception { protected void DownloadResults() throws Exception {
//-
UpdatePackageState(TasksPackageState.Analysis); UpdatePackageState(TasksPackageState.Analysis);
} }
@Override @Override
@@ -157,16 +155,6 @@ public class SapforTestingPlanner extends TestingPlanner<SapforPackage> {
//не требуется. //не требуется.
testingPackage.progress = 100; testingPackage.progress = 100;
testingPackage.checkFinishState(); testingPackage.checkFinishState();
//--
File workspace = testingPackage.getLocalWorkspace();
File[] links = workspace.listFiles();
if (links!=null){
Print("files found: "+links.length);
for (File file: links) {
if (file.isFile() && file.getName().startsWith("SAPFOR"))
FileUtils.forceDelete(file);
}
}
//--для эталона //--для эталона
if (testingPackage.ethalon_id != CommonConstants.Nan) { if (testingPackage.ethalon_id != CommonConstants.Nan) {
TextLog log = new TextLog(); TextLog log = new TextLog();
@@ -199,7 +187,7 @@ public class SapforTestingPlanner extends TestingPlanner<SapforPackage> {
//-- //--
for (SapforTask task1 : ethalon.package_json.tasks) { for (SapforTask task1 : ethalon.package_json.tasks) {
SapforTask task2 = testingPackage.package_json.getTaskByKey(task1.getUniqueKey()); SapforTask task2 = testingPackage.package_json.getTaskByKey(task1.getUniqueKey());
task1.checkMatch(task2); //тексты сравниваются просто посимвольно. task1.checkMatchServer(task2); //тексты сравниваются просто посимвольно.
if (task1.comparisonState.equals(ComparisonState.NotMatch)) { if (task1.comparisonState.equals(ComparisonState.NotMatch)) {
testingPackage.mismatchesCount++; testingPackage.mismatchesCount++;
} }
@@ -230,8 +218,7 @@ public class SapforTestingPlanner extends TestingPlanner<SapforPackage> {
Thread.sleep(1000); Thread.sleep(1000);
} while (!aborted_file.exists()); } while (!aborted_file.exists());
Print("coup de grace.."); Print("coup de grace..");
// String kill_command = "killall -SIGKILL " + testingPackage.PID; String kill_command = "killall -SIGKILL " + testingPackage.PID;
String kill_command = "pkill -SIGKILL -f " + testingPackage.PID;
Print(kill_command); Print(kill_command);
Process killer = Runtime.getRuntime().exec(kill_command); Process killer = Runtime.getRuntime().exec(kill_command);
killer.waitFor(); killer.waitFor();

View File

@@ -14,7 +14,6 @@ import java.net.InetSocketAddress;
import java.net.Socket; import java.net.Socket;
import java.net.URL; import java.net.URL;
import java.nio.file.*; import java.nio.file.*;
import java.nio.file.attribute.PosixFilePermission;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.util.*; import java.util.*;
import java.util.regex.Matcher; import java.util.regex.Matcher;
@@ -598,7 +597,6 @@ public class Utils {
ex.printStackTrace(); ex.printStackTrace();
} }
} }
/*
public static Pair<Vector<String>, Vector<String>> getFortranLines(String text) { public static Pair<Vector<String>, Vector<String>> getFortranLines(String text) {
Vector<String> lines = new Vector<>(); Vector<String> lines = new Vector<>();
Vector<String> visible_lines = new Vector<>(); Vector<String> visible_lines = new Vector<>();
@@ -676,8 +674,6 @@ public class Utils {
} }
return new Pair<>(lines, visible_lines); return new Pair<>(lines, visible_lines);
} }
*/
/* Pair
public static boolean CompareLines(String line1_raw, String line2_raw) { public static boolean CompareLines(String line1_raw, String line2_raw) {
String line1 = line1_raw; String line1 = line1_raw;
String line2 = line2_raw; String line2 = line2_raw;
@@ -697,7 +693,19 @@ public class Utils {
if (CompareLines(list.get(i), line)) last_index = i; if (CompareLines(list.get(i), line)) last_index = i;
return (last_index >= max_index); return (last_index >= max_index);
} }
*/ public static boolean compareFortranTexts(String text1, String text2) {
Pair<Vector<String>, Vector<String>> p1 = getFortranLines(text1);
Pair<Vector<String>, Vector<String>> p2 = getFortranLines(text2);
Vector<String> lines1 = p1.getKey();
Vector<String> lines2 = p2.getKey();
if (lines1.size() != lines2.size())
return false;
for (int i = 0; i < lines1.size(); ++i) {
if (!CompareLines(lines1.get(i), lines2.get(i)))
return false;
}
return true;
}
//-- //--
private static void get_newest_file_date_r(File dir, Vector<Long> dates) { private static void get_newest_file_date_r(File dir, Vector<Long> dates) {
Vector<File> files = new Vector(Arrays.asList(dir.listFiles(new FileFilter() { Vector<File> files = new Vector(Arrays.asList(dir.listFiles(new FileFilter() {
@@ -736,15 +744,5 @@ public class Utils {
} }
return dates.firstElement(); return dates.firstElement();
} }
public static void chmod777(File file) throws Exception{
if (!Utils_.isWindows()) {
//не в правах дело..
Set<PosixFilePermission> newPermissions = new HashSet<>();
for (PosixFilePermission permission: PosixFilePermission.values()){
newPermissions.add(permission);
}
Files.setPosixFilePermissions(file.toPath(), newPermissions);
}
}
} }

View File

@@ -3,10 +3,10 @@ import _VisualDVM.Global;
import _VisualDVM.Visual.Menus.PropertiesSubmenu; import _VisualDVM.Visual.Menus.PropertiesSubmenu;
public class VersionsComparisonMenu extends PropertiesSubmenu { public class VersionsComparisonMenu extends PropertiesSubmenu {
public VersionsComparisonMenu() { public VersionsComparisonMenu() {
super("Сравнение текстов", null, super("Сравнение версий", null,
Global.normalProperties, Global.normalProperties,
// "RegisterOn", // "RegisterOn",
"SpacesOn", // "SpacesOn",
// "EmptyLinesOn", // "EmptyLinesOn",
// "FortranWrapsOn", // "FortranWrapsOn",
"ExtensionsOn", "ExtensionsOn",

View File

@@ -18,13 +18,11 @@ public class VisualiserSettingsMenu extends VisualiserMenu {
add(new PropertiesSubmenu("Компиляция на локальной машине", null, add(new PropertiesSubmenu("Компиляция на локальной машине", null,
Global.normalProperties, Global.normalProperties,
"LocalMakePathWindows", "LocalMakePathWindows",
"PrecompilationFlags",
"Kernels" "Kernels"
)); ));
} else { } else {
add(new PropertiesSubmenu("Компиляция на локальной машине", null, add(new PropertiesSubmenu("Компиляция на локальной машине", null,
Global.normalProperties, Global.normalProperties,
"PrecompilationFlags",
"Kernels" "Kernels"
)); ));
} }

View File

@@ -19,9 +19,7 @@ public class RendererTestingPackageStatus extends RendererCell<TestingPackage> {
String text_ = state.getDescription(); String text_ = state.getDescription();
switch (state) { switch (state) {
case DoneWithErrors: case DoneWithErrors:
if (value.tasksCount>value.doneTasksCount) {
text_ += " " + Utils_.Brackets((value.tasksCount - value.doneTasksCount) + "/" + value.tasksCount); text_ += " " + Utils_.Brackets((value.tasksCount - value.doneTasksCount) + "/" + value.tasksCount);
}
break; break;
default: default:
break; break;

View File

@@ -192,7 +192,7 @@
<properties> <properties>
<font name="Times New Roman" size="14" style="2"/> <font name="Times New Roman" size="14" style="2"/>
<foreground color="-16777216"/> <foreground color="-16777216"/>
<text value="id"/> <text value="bug_"/>
</properties> </properties>
</component> </component>
<component id="a9e5" class="javax.swing.JTextField" binding="BugReportsKeyFilter" custom-create="true"> <component id="a9e5" class="javax.swing.JTextField" binding="BugReportsKeyFilter" custom-create="true">
@@ -426,41 +426,6 @@
</grid> </grid>
</children> </children>
</grid> </grid>
<grid id="58b74" layout-manager="BorderLayout" hgap="0" vgap="0">
<constraints>
<tabbedpane title="Вложения"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<splitpane id="4276b" binding="SC91">
<constraints border-constraint="Center"/>
<properties>
<dividerLocation value="300"/>
<dividerSize value="3"/>
</properties>
<border type="none"/>
<children>
<grid id="a0a40" binding="bugRepotsFilesPanel" layout-manager="BorderLayout" hgap="0" vgap="0">
<constraints>
<splitpane position="left"/>
</constraints>
<properties/>
<border type="none"/>
<children/>
</grid>
<grid id="13d" layout-manager="BorderLayout" hgap="0" vgap="0">
<constraints>
<splitpane position="right"/>
</constraints>
<properties/>
<border type="none"/>
<children/>
</grid>
</children>
</splitpane>
</children>
</grid>
</children> </children>
</tabbedpane> </tabbedpane>
</children> </children>

View File

@@ -32,7 +32,6 @@ public class CallbackForm implements FormWithSplitters, CallbackWindow {
public DescriptionInterface descriptionInterface; public DescriptionInterface descriptionInterface;
public CommentInterface commentInterface; public CommentInterface commentInterface;
public JSplitPane SC6; public JSplitPane SC6;
public JSplitPane SC91;
DocumentListener descriptionAdditionListener = new DocumentListener() { DocumentListener descriptionAdditionListener = new DocumentListener() {
@Override @Override
public void removeUpdate(DocumentEvent e) { public void removeUpdate(DocumentEvent e) {
@@ -124,7 +123,6 @@ public class CallbackForm implements FormWithSplitters, CallbackWindow {
private JTextField BugReportsCommentFilter; private JTextField BugReportsCommentFilter;
private JPanel workspacesPanel; private JPanel workspacesPanel;
private JLabel adminLabel; private JLabel adminLabel;
private JPanel bugRepotsFilesPanel;
private Viewer BugReportSettings; private Viewer BugReportSettings;
public CallbackForm() { public CallbackForm() {
LoadSplitters(); LoadSplitters();
@@ -155,7 +153,6 @@ public class CallbackForm implements FormWithSplitters, CallbackWindow {
SwitchScreen(Global.normalProperties.SmallScreen); SwitchScreen(Global.normalProperties.SmallScreen);
//- //-
Global.componentsServer.db.bugReports.mountUI(bugReportsPanel); Global.componentsServer.db.bugReports.mountUI(bugReportsPanel);
Global.componentsServer.db.bugReportsFiles.mountUI(bugRepotsFilesPanel);
Global.componentsServer.db.recipients.mountUI(recipientsPanel); Global.componentsServer.db.recipients.mountUI(recipientsPanel);
//- //-
if (!Global.mainModule.getPass(PassCode.CheckAccount).isDone()) { if (!Global.mainModule.getPass(PassCode.CheckAccount).isDone()) {

View File

@@ -8,7 +8,6 @@ import Common.Visual.Controls.ShortLabel;
import Common.Visual.Editor.BaseEditor; import Common.Visual.Editor.BaseEditor;
import Common.Visual.Menus.VisualiserMenuBar; import Common.Visual.Menus.VisualiserMenuBar;
import Common.Visual.UI; import Common.Visual.UI;
import _VisualDVM.Global;
import _VisualDVM.ProjectData.Files.UI.Editor.SPFEditor; import _VisualDVM.ProjectData.Files.UI.Editor.SPFEditor;
import _VisualDVM.Utils; import _VisualDVM.Utils;
import com.github.difflib.text.DiffRow; import com.github.difflib.text.DiffRow;
@@ -19,7 +18,6 @@ import javax.swing.*;
import javax.swing.text.Highlighter; import javax.swing.text.Highlighter;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Vector; import java.util.Vector;
public abstract class ComparisonForm<T> { public abstract class ComparisonForm<T> {
@@ -27,6 +25,7 @@ public abstract class ComparisonForm<T> {
final char cseparator = '\u200B'; final char cseparator = '\u200B';
public Class<T> t; //класс объектов. public Class<T> t; //класс объектов.
//-->> //-->>
public Vector<String> lines = new Vector<>(); //строки с учетом/неучетом пробелов. для сравнения
public Vector<String> visible_lines = new Vector<>(); //строки с нетронутыми пробелами. для отображения public Vector<String> visible_lines = new Vector<>(); //строки с нетронутыми пробелами. для отображения
protected JToolBar tools; protected JToolBar tools;
protected JLabel lObjectName; protected JLabel lObjectName;
@@ -160,8 +159,12 @@ public abstract class ComparisonForm<T> {
showObject(); showObject();
} }
private void getLines() { private void getLines() {
lines.clear();
visible_lines.clear(); visible_lines.clear();
visible_lines = new Vector<String>(Arrays.asList(getText().split("\n"))); //--
Pair<Vector<String>, Vector<String>> p = Utils.getFortranLines(getText());
lines = p.getKey();
visible_lines = p.getValue();
} }
protected void ClearText() { protected void ClearText() {
events_on = false; events_on = false;
@@ -186,7 +189,7 @@ public abstract class ComparisonForm<T> {
DiffRowGenerator generator = DiffRowGenerator.create() DiffRowGenerator generator = DiffRowGenerator.create()
.showInlineDiffs(true) .showInlineDiffs(true)
.inlineDiffByWord(true) .inlineDiffByWord(true)
.ignoreWhiteSpaces(!Global.normalProperties.SpacesOn) .ignoreWhiteSpaces(true)
.oldTag(f -> separator) .oldTag(f -> separator)
.newTag(f -> separator) .newTag(f -> separator)
.build(); .build();
@@ -271,9 +274,9 @@ public abstract class ComparisonForm<T> {
t2.addAll(slave.visible_lines); t2.addAll(slave.visible_lines);
//просто выясняем кто из них длиннее, и короткий дополняем пустыми строками.] //просто выясняем кто из них длиннее, и короткий дополняем пустыми строками.]
int delta = Math.abs(t1.size() - t2.size()); int delta = Math.abs(t1.size() - t2.size());
if (visible_lines.size() > slave.visible_lines.size()) { if (lines.size() > slave.lines.size()) {
Utils.addEmptyLines(t2, delta); Utils.addEmptyLines(t2, delta);
} else if (visible_lines.size() < slave.visible_lines.size()) { } else if (lines.size() < slave.lines.size()) {
Utils.addEmptyLines(t1, delta); Utils.addEmptyLines(t1, delta);
} }
///---------------- ///----------------

View File

@@ -23,11 +23,11 @@ public:
elements.push_back(new_line); elements.push_back(new_line);
} }
int getLength() const { long getLength() const {
return (int)elements.size(); return (long)elements.size();
} }
T* get(int i) { T* get(long i) {
return elements[i]; return elements[i];
} }

View File

@@ -6,11 +6,11 @@
class CompilationSupervisor : public Supervisor<CompilationTask> { class CompilationSupervisor : public Supervisor<CompilationTask> {
public: public:
CompilationSupervisor() { CompilationSupervisor() {
this->init("compilationTasks.json"); this->init("compilationTasks", 4);
} }
CompilationTask* getTaskById(int task_id) { CompilationTask* getTaskById(long task_id) {
for (int i = 0; i < getLength(); ++i) { for (long i = 0; i < getLength(); ++i) {
CompilationTask* task = get(i); CompilationTask* task = get(i);
if (task->getId() == task_id) if (task->getId() == task_id)
return task; return task;

View File

@@ -2,14 +2,13 @@
#include "Task.h" #include "Task.h"
#include "Text.h" #include "Text.h"
#include "json.hpp"
class CompilationTask : public Task { class CompilationTask : public Task {
String test_name; String test_id;
String makefile_text; String makefile_text;
public: public:
void setTestName(String* test_name_in) { void setTestId(String* test_id_in) {
test_name = String(test_name_in->getCharArray()); test_id = String(test_id_in->getCharArray());
} }
void setMakefileText(String* makefile_text_in) { void setMakefileText(String* makefile_text_in) {
@@ -17,30 +16,22 @@ public:
} }
virtual void print() const { virtual void print() const {
printf("id=%ld; maxtime=%d; test_name=%s\n", id, maxtime, test_name.getCharArray()); printf("id=%ld; maxtime=%d; test_id=%s\n", id, maxtime, test_id.getCharArray());
printf("makefile_text=%s\n", makefile_text.getCharArray()); printf("makefile_text=%s\n", makefile_text.getCharArray());
} }
CompilationTask(Text* lines, int offset) :Task(lines, offset) { CompilationTask(Text* lines, int offset) :Task(lines, offset) {
setTestName(lines->get(offset + 2)); setTestId(lines->get(offset + 2));
setMakefileText(lines->get(offset + 3)); setMakefileText(lines->get(offset + 3));
setState(Waiting); setState(Waiting);
kernels = 1; kernels = 1;
} }
CompilationTask(const nlohmann::json& data) : Task(data) {
test_name = Utils::getValue<string>(data, "test_name");
makefile_text = Utils::getValue<string>(data, "makefile_text");
setState(Waiting);
kernels = 1;
}
virtual void prepareWorkspace() { virtual void prepareWorkspace() {
String makeFilePath = String(id) + "/Makefile"; String makeFilePath = String(id) + "/Makefile";
File makeFileFile = File(makeFilePath, this->makefile_text); File makeFileFile = File(makeFilePath, this->makefile_text);
String tests = userWorkspace + "/projects"; String tests = userWorkspace + "/projects";
String testPath = tests + "/" + test_name; String testPath = tests + "/" + test_id;
Utils::CopyDirectory_L(testPath, workspace); Utils::CopyDirectory_L(testPath, workspace);
} }
virtual String getLaunchScriptText() { virtual String getLaunchScriptText() {

View File

@@ -6,10 +6,9 @@
class RunSupervisor : public Supervisor<RunTask> { class RunSupervisor : public Supervisor<RunTask> {
public: public:
RunSupervisor(CompilationSupervisor* compilationSupervisor) { RunSupervisor(CompilationSupervisor* compilationSupervisor) {
this->init("runTasks.json"); this->init("runTasks", 8);
//проверить отмененные задачи. //проверить отмененные задачи.
for (int i = 0; i < getLength(); ++i) { for (long i = 0; i < getLength(); ++i) {
RunTask* task = this->get(i); RunTask* task = this->get(i);
CompilationTask* parent = compilationSupervisor->getTaskById(task->getTestCompilationTaskId()); CompilationTask* parent = compilationSupervisor->getTaskById(task->getTestCompilationTaskId());
task->setState((parent->getState() == Done) ? Waiting : Canceled); task->setState((parent->getState() == Done) ? Waiting : Canceled);

View File

@@ -3,7 +3,7 @@
#include "CompilationTask.h" #include "CompilationTask.h"
class RunTask : public Task { class RunTask : public Task {
int testcompilationtask_id; long testcompilationtask_id;
String binary_name; String binary_name;
String matrix; String matrix;
String environments; String environments;
@@ -23,23 +23,34 @@ public:
kernels kernels
); );
} }
int setKernels(String* kernels_s) {
void setKernels(String* kernels_s) { kernels = atoi(kernels_s->getCharArray()); } return kernels = atoi(kernels_s->getCharArray());
void setTestCompilationTaskId(String* id_s) { testcompilationtask_id = strtol(id_s->getCharArray(), NULL, 10); } }
long setTestCompilationTaskId(String* id_s) {
int getTestCompilationTaskId() { return testcompilationtask_id; } return testcompilationtask_id = strtol(id_s->getCharArray(), NULL, 10);
}
void setMatrix(String* matrix_in) { matrix = String(matrix_in->getCharArray()); } long getTestCompilationTaskId() {
void setEnvironments(String* environments_in) { environments = String(environments_in->getCharArray()); } return testcompilationtask_id;
void setUsrPar(String* usr_par_in) { usr_par = String(usr_par_in->getCharArray(), '|'); } }
void setArgs(String* args_in) { args = String(args_in->getCharArray()); } void setMatrix(String* matrix_in) {
matrix = String(matrix_in->getCharArray());
}
void setEnvironments(String* environments_in) {
environments = String(environments_in->getCharArray());
}
void setUsrPar(String* usr_par_in) {
usr_par = String(usr_par_in->getCharArray(), '|');
}
void setArgs(String* args_in) {
args = String(args_in->getCharArray());
}
void setParent(CompilationTask* parent_in) { void setParent(CompilationTask* parent_in) {
parent = parent_in; parent = parent_in;
binary_name = "spf_" + packageId+"_"+String(id) + "_" + matrix.Replace(' ', '_'); binary_name = "spf_" + packageId+"_"+String(id) + "_" + matrix.Replace(' ', '_');
} }
CompilationTask* getParent() {
CompilationTask* getParent() { return parent; } return parent;
}
RunTask(Text* lines, int offset) :Task(lines, offset) { RunTask(Text* lines, int offset) :Task(lines, offset) {
setTestCompilationTaskId(lines->get(offset + 2)); setTestCompilationTaskId(lines->get(offset + 2));
setMatrix(lines->get(offset + 3)); setMatrix(lines->get(offset + 3));
@@ -50,16 +61,6 @@ public:
//todo setStartCommand //todo setStartCommand
} }
RunTask(const nlohmann::json& data) : Task(data) {
testcompilationtask_id = Utils::getValue<int>(data, "compilation_task_id");
matrix = Utils::getValue<string>(data, "matrix");
environments = Utils::getValue<string>(data, "environments");
usr_par = Utils::getValue<string>(data, "usr_par");
args = Utils::getValue<string>(data, "args");
kernels = Utils::getValue<int>(data, "cores");
//todo setStartCommand
}
String getLaunchScriptText() override { String getLaunchScriptText() override {
String modules = userWorkspace + "/modules"; String modules = userWorkspace + "/modules";
String starterCall = modules + "/starter"; String starterCall = modules + "/starter";

View File

@@ -16,11 +16,13 @@ public:
String(const char* s, char ps) { String(const char* s, char ps) {
body = s; body = s;
for (int i = 0; i < getLength(); ++i) for (long i = 0; i < getLength(); ++i)
body[i] = (s[i] == ps) ? '\n' : s[i]; body[i] = (s[i] == ps) ? '\n' : s[i];
} }
String(int s) { body = to_string(s); } String(int s) { body = to_string(s); }
String(long s) { body = to_string(s); }
String(long long s) { body = to_string(s); }
String (string s){ body = s;} String (string s){ body = s;}
void println() const { printf("[%s]\n", body.c_str()); } void println() const { printf("[%s]\n", body.c_str()); }

View File

@@ -4,22 +4,18 @@
#include <set> #include <set>
#include <vector> #include <vector>
#include <queue> #include <queue>
#include <iostream>
#include <fstream>
#include <math.h> #include <math.h>
#include <thread> #include <thread>
#include <time.h> #include "File.h"
#include "Task.h"
#include "Array.h"
#include "Utils.h"
#ifndef _WIN32 #ifndef _WIN32
#include <sys/time.h> #include <sys/time.h>
#include <unistd.h> #include <unistd.h>
#endif #endif
#include <time.h>
#include "File.h"
#include "Task.h"
#include "Array.h"
#include "Utils.h"
#include "json.hpp"
enum SupervisorState { enum SupervisorState {
WorkspacesCreation, //0 WorkspacesCreation, //0
@@ -62,13 +58,12 @@ public:
for (auto& elem : this->getElements()) for (auto& elem : this->getElements())
elem->print(); elem->print();
} }
void init(const char* fileName, int recordSize) { void init(const char* fileName, int recordSize) {
state = WorkspacesCreation; state = WorkspacesCreation;
File* packedTasks = new File(fileName); File* packedTasks = new File(fileName);
Text* lines = packedTasks->readLines(); Text* lines = packedTasks->readLines();
const int length = lines->getLength() / recordSize; const long length = lines->getLength() / recordSize;
int offset = 0; int offset = 0;
for (int i = 0; i < length; ++i) { for (int i = 0; i < length; ++i) {
this->add(new T(lines, offset)); this->add(new T(lines, offset));
@@ -77,31 +72,6 @@ public:
delete packedTasks; delete packedTasks;
delete lines; delete lines;
} }
void init(const char* fileName) {
state = WorkspacesCreation;
std::ifstream file(fileName);
if (!file.is_open()) {
printf("can not open file %s\n", fileName);
exit(-1);
}
nlohmann::json data = nlohmann::json::parse(file);
file.close();
if (data.contains("tasks")) {
auto tasks = data["tasks"];
int length = tasks.size();
for (size_t i = 0; i < tasks.size(); ++i)
this->add(new T(tasks[i]));
}
else {
printf("can not fine object 'tasks'\n");
exit(-1);
}
}
void changeState() { void changeState() {
switch (this->state) { switch (this->state) {
case WorkspacesCreation: case WorkspacesCreation:
@@ -200,7 +170,7 @@ public:
killed = false; killed = false;
while (activeTasks) { while (activeTasks) {
int oldActiveTasks = activeTasks; long oldActiveTasks = activeTasks;
emptyKeys.clear(); emptyKeys.clear();
toDel.clear(); toDel.clear();
@@ -309,7 +279,7 @@ public:
void saveState() { void saveState() {
saveState(getStatePrefix() + printState()); saveState(getStatePrefix() + printState());
} }
void saveProgress(size_t persentDone) { void saveProgress(long long persentDone) {
FILE* f = fopen("progress", "w"); FILE* f = fopen("progress", "w");
if (f) { if (f) {
fprintf(f, "%lld", persentDone); fprintf(f, "%lld", persentDone);

View File

@@ -1,8 +1,6 @@
#pragma once #pragma once
#include <chrono> #include <chrono>
#include <map>
#include <string>
#include "File.h" #include "File.h"
#include "Utils.h" #include "Utils.h"
@@ -40,7 +38,7 @@ enum TestType {
class Task { class Task {
protected: protected:
int id; long id;
int maxtime; int maxtime;
int kernels; //получение зависит от типа задачи. int kernels; //получение зависит от типа задачи.
@@ -103,32 +101,22 @@ public:
void setStart() { start_time = std::chrono::system_clock::now(); } void setStart() { start_time = std::chrono::system_clock::now(); }
double getTotalTime() const { return total_time; } double getTotalTime() const { return total_time; }
int getId() { return id; } long getId() { return id; }
int setId(String* id_s) { long setId(String* id_s) {
return id = strtol(id_s->getCharArray(), NULL, 10); return id = strtol(id_s->getCharArray(), NULL, 10);
} }
int getMaxtime() { return maxtime; } int getMaxtime() { return maxtime; }
int setMaxtime(String* maxtime_s) { return maxtime = atoi(maxtime_s->getCharArray()); } int setMaxtime(String* maxtime_s) {
return maxtime = atoi(maxtime_s->getCharArray());
}
const String& getWorkspace() { return workspace; } const String& getWorkspace() { return workspace; }
TaskState getState() { return state; } TaskState getState() { return state; }
TaskState setState(TaskState state_in) { return state = state_in; } TaskState setState(TaskState state_in) { return state = state_in; }
Task(Text* lines, int offset) { Task(Text* lines, int offset) {
setId(lines->get(offset)); setId(lines->get(offset));
setMaxtime(lines->get(offset + 1)); setMaxtime(lines->get(offset + 1));
workspace = packageWorkspace + "/" + String(id); workspace = packageWorkspace + "/" + String(id);
} }
Task(const nlohmann::json& data) {
this->id = Utils::getValue<int>(data, "id");
this->maxtime = Utils::getValue<int>(data, "maxtime");
workspace = packageWorkspace + "/" + String(id);
}
virtual void print() const = 0; virtual void print() const = 0;
//- //-
virtual void prepareWorkspace() {} virtual void prepareWorkspace() {}

View File

@@ -9,7 +9,7 @@ public:
printf("text length=%ld\n", this->getLength()); printf("text length=%ld\n", this->getLength());
auto elems = this->getElements(); auto elems = this->getElements();
for (int i = 0; i < elems.size(); ++i) { for (long i = 0; i < elems.size(); ++i) {
printf("i=%ld; [%s]\n", i, elems[i]->getCharArray()); printf("i=%ld; [%s]\n", i, elems[i]->getCharArray());
// elements[i]->println(); // elements[i]->println();
} }

View File

@@ -6,7 +6,6 @@
#include <time.h> #include <time.h>
#include <chrono> #include <chrono>
#include <thread> #include <thread>
#include "json.hpp"
#if __cplusplus >= 201703L #if __cplusplus >= 201703L
#include <filesystem> #include <filesystem>
@@ -120,17 +119,4 @@ public:
} }
return String(); return String();
} }
template <typename T>
static T getValue(const nlohmann::json& data, const string& obj) {
T retval;
if (data.contains(obj))
retval = data[obj];
else {
printf("can not fine object '%s'\n", obj.c_str());
exit(-1);
}
return retval;
}
}; };

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1 @@
27 24

Binary file not shown.

Before

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 843 B