2024-10-14 12:14:01 +03:00
|
|
|
|
package _VisualDVM.Passes.All;
|
2024-10-11 00:00:30 +03:00
|
|
|
|
import Common.Utils.Utils_;
|
2025-05-13 15:33:47 +03:00
|
|
|
|
import Common.Visual.UI;
|
2024-10-13 22:08:13 +03:00
|
|
|
|
import _VisualDVM.Global;
|
2024-10-14 15:19:13 +03:00
|
|
|
|
import _VisualDVM.Passes.PassCode;
|
|
|
|
|
|
import _VisualDVM.Passes.Sapfor.SapforAnalysis;
|
2024-10-09 22:21:57 +03:00
|
|
|
|
import _VisualDVM.ProjectData.Files.DBProjectFile;
|
2025-04-14 21:58:11 +03:00
|
|
|
|
import _VisualDVM.ProjectData.Files.FileType;
|
|
|
|
|
|
import _VisualDVM.ProjectData.Files.LanguageStyle;
|
|
|
|
|
|
import _VisualDVM.ProjectData.LanguageName;
|
|
|
|
|
|
import _VisualDVM.ProjectData.SapforData.Includes.FileInfo;
|
|
|
|
|
|
import _VisualDVM.ProjectData.SapforData.Includes.Include;
|
2025-04-15 00:02:43 +03:00
|
|
|
|
import _VisualDVM.ProjectData.SapforData.Includes.Json.FileIncludesJson;
|
|
|
|
|
|
import _VisualDVM.ProjectData.SapforData.Includes.Json.IncludesJson;
|
2025-04-14 21:58:11 +03:00
|
|
|
|
|
|
|
|
|
|
import javax.swing.tree.DefaultMutableTreeNode;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
public class SPF_GetIncludeDependencies extends SapforAnalysis {
|
|
|
|
|
|
boolean update_current = false;
|
|
|
|
|
|
@Override
|
2024-10-09 23:37:58 +03:00
|
|
|
|
protected PassCode necessary() {
|
|
|
|
|
|
return PassCode.SPF_ParseFilesWithOrder;
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public String phase() {
|
|
|
|
|
|
return "BUILD_INCLUDE_DEPENDENCIES";
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected void performPreparation() throws Exception {
|
|
|
|
|
|
super.performPreparation(); //удаление интеррупта.
|
|
|
|
|
|
target.numAddicted = 0;
|
|
|
|
|
|
target.addictedFiles.clear();
|
|
|
|
|
|
target.includes_root.removeAllChildren();
|
|
|
|
|
|
target.allIncludes.clear();
|
|
|
|
|
|
for (DBProjectFile file : target.db.files.Data.values())
|
2025-04-15 00:02:43 +03:00
|
|
|
|
file.dependencies.clear();
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public void unpack(String packed) throws Exception {
|
2025-04-15 00:02:43 +03:00
|
|
|
|
IncludesJson includesJson = Utils_.gson.fromJson(packed, IncludesJson.class);
|
2025-04-14 21:58:11 +03:00
|
|
|
|
update_current = false;
|
2025-04-16 14:16:38 +03:00
|
|
|
|
for (FileIncludesJson fileIncludesJson : includesJson.allIncludes) {
|
2025-04-30 21:27:47 +03:00
|
|
|
|
//-
|
2025-04-16 14:16:38 +03:00
|
|
|
|
fileIncludesJson.file = Utils_.toW(fileIncludesJson.file);
|
2025-04-30 21:27:47 +03:00
|
|
|
|
//--
|
2025-04-16 14:16:38 +03:00
|
|
|
|
FileInfo fileInfo = new FileInfo(fileIncludesJson.file);
|
|
|
|
|
|
//---
|
|
|
|
|
|
DBProjectFile file = target.db.files.get(fileIncludesJson.file);
|
2025-04-30 21:27:47 +03:00
|
|
|
|
System.out.println("addicted file = "+Utils_.Brackets(fileIncludesJson.file));
|
|
|
|
|
|
System.out.println("found dependencies :"+fileIncludesJson.includes.size());
|
2025-05-13 15:33:47 +03:00
|
|
|
|
/// UI.Info("+");
|
2025-04-16 14:16:38 +03:00
|
|
|
|
for (Include include : fileIncludesJson.includes) {
|
2025-04-30 21:27:47 +03:00
|
|
|
|
//--
|
2025-05-13 15:33:47 +03:00
|
|
|
|
System.out.println(include.dependencyFileName);
|
|
|
|
|
|
System.out.println(include.line);
|
2025-04-30 21:27:47 +03:00
|
|
|
|
include.dependencyFileName = Utils_.toW(include.dependencyFileName);
|
|
|
|
|
|
//--
|
2025-04-16 14:16:38 +03:00
|
|
|
|
fileInfo.dependencies.add(include);
|
2025-05-13 15:33:47 +03:00
|
|
|
|
if (!target.allIncludes.contains(include.dependencyFileName))
|
|
|
|
|
|
target.allIncludes.add(include.dependencyFileName);
|
2025-04-30 21:27:47 +03:00
|
|
|
|
if (target.db.files.containsKey(include.dependencyFileName)){
|
|
|
|
|
|
//- определение типов языков инклудов по файлу куда они цепляютс.
|
|
|
|
|
|
if (!file.dependencies.contains(include.dependencyFileName)) {
|
|
|
|
|
|
file.dependencies.add(include.dependencyFileName);
|
|
|
|
|
|
//---
|
|
|
|
|
|
DBProjectFile include_file = target.db.files.get(include.dependencyFileName);
|
|
|
|
|
|
include_file.UpdateType(FileType.header);
|
|
|
|
|
|
if (include_file.languageName == LanguageName.n)
|
|
|
|
|
|
include_file.UpdateLanguage(file.languageName);
|
|
|
|
|
|
if (include_file.style == LanguageStyle.none)
|
|
|
|
|
|
include_file.UpdateStyle(file.style);
|
|
|
|
|
|
if (Global.mainModule.HasFile() && Global.mainModule.getFile().name.equals(include_file.name))
|
|
|
|
|
|
update_current = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}else {
|
|
|
|
|
|
System.out.println(Utils_.Brackets(include.dependencyFileName)+" не существует!");
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2025-04-16 14:16:38 +03:00
|
|
|
|
//----
|
|
|
|
|
|
if (!target.addictedFiles.containsKey(fileInfo.file))
|
|
|
|
|
|
target.addictedFiles.put(fileInfo.file, fileInfo);
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
2025-04-16 14:16:38 +03:00
|
|
|
|
//-теперь строим граф. todo отображать его аналогично графу процедур?
|
2023-09-17 22:13:42 +03:00
|
|
|
|
for (FileInfo file : target.addictedFiles.values()) {
|
|
|
|
|
|
DefaultMutableTreeNode node = new DefaultMutableTreeNode(
|
|
|
|
|
|
file);
|
2025-04-14 21:44:19 +03:00
|
|
|
|
for (Include h : file.dependencies) {
|
2023-09-17 22:13:42 +03:00
|
|
|
|
node.add(new DefaultMutableTreeNode(h));
|
|
|
|
|
|
}
|
|
|
|
|
|
target.includes_root.add(node);
|
|
|
|
|
|
}
|
|
|
|
|
|
target.numAddicted += target.addictedFiles.size();
|
|
|
|
|
|
target.UpdateAddictedCount();
|
2025-05-13 15:33:47 +03:00
|
|
|
|
// UI.Info("unpack includes done");
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected void showDone() throws Exception {
|
2024-10-15 02:32:52 +03:00
|
|
|
|
Global.mainModule.getUI().getMainWindow().getProjectWindow().ShowIncludes();
|
2023-09-17 22:13:42 +03:00
|
|
|
|
if (update_current)
|
2024-10-13 22:08:13 +03:00
|
|
|
|
Global.mainModule.getFile().form.ShowProperties();
|
2023-09-17 22:13:42 +03:00
|
|
|
|
super.showDone();
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected void showPreparation() {
|
2024-10-15 02:32:52 +03:00
|
|
|
|
Global.mainModule.getUI().getMainWindow().getProjectWindow().ShowNoIncludes();
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected void FocusResult() {
|
|
|
|
|
|
super.FocusResult();
|
2024-10-15 02:32:52 +03:00
|
|
|
|
Global.mainModule.getUI().getMainWindow().getProjectWindow().FocusDependencies();
|
2023-09-17 22:13:42 +03:00
|
|
|
|
}
|
|
|
|
|
|
}
|