1
0
mirror of https://github.com/ManyakRus/image_database.git synced 2024-11-21 05:05:49 +02:00

сделал ClearElements_from_Document()

This commit is contained in:
Nikitin Aleksandr 2024-05-17 14:01:08 +03:00
parent 815c74f028
commit b7e00b94ea
6 changed files with 84 additions and 19 deletions

1
.gitignore vendored
View File

@ -15,3 +15,4 @@
/database.graphml
/database.graphml0
/database_schema.graphml
/Схема_БД.graphml

View File

@ -5,12 +5,13 @@ import (
"github.com/ManyakRus/image_database/internal/types"
"github.com/ManyakRus/image_database/pkg/graphml"
"github.com/ManyakRus/starter/log"
"github.com/beevik/etree"
"sort"
)
//var MassTable []types.Table
func StartFillAll(FileName string) bool {
func StartFillAll(FileName string, DocXML *etree.Document) bool {
Otvet := false
//заполним MapAll
@ -29,8 +30,15 @@ func StartFillAll(FileName string) bool {
return Otvet
}
//создадим документ
DocXML, ElementInfoGraph := graphml.CreateDocument()
var ElementInfoGraph = types.ElementInfoStruct{}
if DocXML == nil {
//создадим документ
DocXML, ElementInfoGraph = graphml.CreateDocument()
} else {
//используем загруженный докуемент
ElementInfoGraph = graphml.FindElementInfoGraphML(DocXML)
}
//заполним прямоугольники в документ
err = FillEntities(ElementInfoGraph, &MapAll)

View File

@ -22,12 +22,13 @@ func StartApp() {
postgres_gorm.StartDB()
postgres_gorm.GetConnection().Logger.LogMode(1)
graphml.StartReadFile()
doc := graphml.StartReadFile()
graphml.ClearElements_from_Document(doc)
FileName := config.Settings.FILENAME_GRAPHML
log.Info("file graphml: ", FileName)
log.Info("postgres host: ", postgres_gorm.Settings.DB_HOST)
ok := logic.StartFillAll(FileName)
ok := logic.StartFillAll(FileName, doc)
if ok == false {
println(constants.TEXT_HELP)
}

View File

@ -829,6 +829,23 @@ func findMaxLenRow(ElementName string) int {
return Otvet
}
// FindElementInfoGraphML - возвращает элемент "graphml"
func FindElementInfoGraphML(DocXML *etree.Document) types.ElementInfoStruct {
var Otvet types.ElementInfoStruct
ElementGraphMl := DocXML.FindElement("graphml")
if ElementGraphMl == nil {
return Otvet
}
ElementGraph := ElementGraphMl.FindElement("graph")
Otvet.Element = ElementGraph
Otvet.Parent = nil
return Otvet
}
// CreateDocument - создаёт новый документ .xgml
func CreateDocument() (*etree.Document, types.ElementInfoStruct) {
@ -942,3 +959,38 @@ func FindId(ElementInfoMain, ElementInfo types.ElementInfoStruct) string {
return Otvet
}
// ClearElements_from_Document - возвращает документ, в котором удалены все элементы типа "node"
func ClearElements_from_Document(DocXML *etree.Document) *etree.Document {
MassElement := make([]*etree.Element, 0)
if DocXML == nil {
return DocXML
}
ElementGraphMl := DocXML.SelectElement("graphml")
//удалим все edge, стрелки
MassElement = ElementGraphMl.SelectElements("edge")
for _, Element1 := range MassElement {
ElementGraphMl.RemoveChild(Element1)
}
ElementGraph := ElementGraphMl.SelectElement("graph")
//удалим все node, прямоугольники
MassElement = ElementGraph.SelectElements("node")
for _, Element1 := range MassElement {
ElementGeneric := Element1.FindElement("data/GenericNode")
if ElementGeneric != nil {
ElementGraph.RemoveChild(Element1)
}
}
//удалим все edge, стрелки
MassElement = ElementGraph.SelectElements("edge")
for _, Element1 := range MassElement {
ElementGraph.RemoveChild(Element1)
}
return DocXML
}

View File

@ -20,6 +20,7 @@ func ReadFile(Filename string) (*etree.Document, error) {
return doc, err
}
// FindMassElement - возвращает массив элементов типа "node"
func FindMassElement(doc *etree.Document) []*etree.Element {
MassElement := make([]*etree.Element, 0)
@ -31,6 +32,7 @@ func FindMassElement(doc *etree.Document) []*etree.Element {
return MassElement
}
// FindMapNodeStruct - возвращает map из узлов Element, имя, х, у
func FindMapNodeStruct(MassElement []*etree.Element) map[string]types.NodeStruct {
MapNodeStruct := make(map[string]types.NodeStruct, 0)
var err error
@ -104,37 +106,38 @@ func FindMapNodeStruct(MassElement []*etree.Element) map[string]types.NodeStruct
return MapNodeStruct
}
// StartReadFile - читает старый файл в
func StartReadFile() {
//dir := micro.ProgramDir()
//Filename := dir + "test" + micro.SeparatorFile() + "test.graphml"
// StartReadFile - читает и возвращает старый файл .graphml
func StartReadFile() *etree.Document {
var Otvet *etree.Document
Filename := config.Settings.FILENAME_GRAPHML
ok, err := micro.FileExists(Filename)
if ok == false {
return
return Otvet
}
doc, err := ReadFile(Filename)
Otvet, err = ReadFile(Filename)
if err != nil {
log.Error("ReadFile() error: ", err)
return
return Otvet
}
if doc == nil {
if Otvet == nil {
log.Error("ReadFile() error: doc =nil")
return
return Otvet
}
MassElement := FindMassElement(doc)
MassElement := FindMassElement(Otvet)
if len(MassElement) == 0 {
log.Warn("FindMassElement() error: len =0")
return
return Otvet
}
types.MapNodeStructOld = FindMapNodeStruct(MassElement)
if len(types.MapNodeStructOld) == 0 {
log.Warn("FindMapNodeStruct() error: len =0")
return
return Otvet
}
return Otvet
}

View File

@ -9,8 +9,8 @@
1. Все таблицы
2. Все колонки таблиц и типы
3. Стрелки взаимосвязи таблиц от колонки до колонки (foreign key)
4. Находит таблицы в старом имеющемся файле .graphml,
и располагает таблицы по таким же координатам X,Y
4. Находит таблицы в старом имеющимся файле .graphml,
и располагает таблицы по таким же координатам X,Y.
Полученный файл .graphml в бесплатном редакторе yED можно:
1. Экспортировать в рисунок .jpg