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:
parent
815c74f028
commit
b7e00b94ea
1
.gitignore
vendored
1
.gitignore
vendored
@ -15,3 +15,4 @@
|
||||
/database.graphml
|
||||
/database.graphml0
|
||||
/database_schema.graphml
|
||||
/Схема_БД.graphml
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -9,8 +9,8 @@
|
||||
1. Все таблицы
|
||||
2. Все колонки таблиц и типы
|
||||
3. Стрелки взаимосвязи таблиц от колонки до колонки (foreign key)
|
||||
4. Находит таблицы в старом имеющемся файле .graphml,
|
||||
и располагает таблицы по таким же координатам X,Y
|
||||
4. Находит таблицы в старом имеющимся файле .graphml,
|
||||
и располагает таблицы по таким же координатам X,Y.
|
||||
|
||||
Полученный файл .graphml в бесплатном редакторе yED можно:
|
||||
1. Экспортировать в рисунок .jpg
|
||||
|
Loading…
Reference in New Issue
Block a user