Files
VisualSapfor/src/_VisualDVM/Passes/All/SPF_GetIncludeDependencies.java

113 lines
5.1 KiB
Java
Raw Normal View History

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;
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;
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())
file.dependencies.clear();
2023-09-17 22:13:42 +03:00
}
@Override
public void unpack(String packed) throws Exception {
IncludesJson includesJson = Utils_.gson.fromJson(packed, IncludesJson.class);
2025-04-14 21:58:11 +03:00
update_current = false;
for (FileIncludesJson fileIncludesJson : includesJson.allIncludes) {
//-
fileIncludesJson.file = Utils_.toW(fileIncludesJson.file);
//--
FileInfo fileInfo = new FileInfo(fileIncludesJson.file);
//---
DBProjectFile file = target.db.files.get(fileIncludesJson.file);
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("+");
for (Include include : fileIncludesJson.includes) {
//--
2025-05-13 15:33:47 +03:00
System.out.println(include.dependencyFileName);
System.out.println(include.line);
include.dependencyFileName = Utils_.toW(include.dependencyFileName);
//--
fileInfo.dependencies.add(include);
2025-05-13 15:33:47 +03:00
if (!target.allIncludes.contains(include.dependencyFileName))
target.allIncludes.add(include.dependencyFileName);
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
}
}
//----
if (!target.addictedFiles.containsKey(fileInfo.file))
target.addictedFiles.put(fileInfo.file, fileInfo);
2023-09-17 22:13:42 +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 {
Global.mainModule.getUI().getMainWindow().getProjectWindow().ShowIncludes();
2023-09-17 22:13:42 +03:00
if (update_current)
Global.mainModule.getFile().form.ShowProperties();
2023-09-17 22:13:42 +03:00
super.showDone();
}
@Override
protected void showPreparation() {
Global.mainModule.getUI().getMainWindow().getProjectWindow().ShowNoIncludes();
2023-09-17 22:13:42 +03:00
}
@Override
protected void FocusResult() {
super.FocusResult();
Global.mainModule.getUI().getMainWindow().getProjectWindow().FocusDependencies();
2023-09-17 22:13:42 +03:00
}
}