java_full_app.go 1.4 KB
Newer Older
P
Phodal Huang 已提交
1
package javaapp
P
Phodal HUANG 已提交
2 3 4 5

import (
	"fmt"
	"github.com/antlr/antlr4/runtime/Go/antlr"
P
Phodal Huang 已提交
6
	"github.com/phodal/coca/pkg/adapter/cocafile"
P
Phodal Huang 已提交
7
	"github.com/phodal/coca/pkg/domain/core_domain"
P
Phodal Huang 已提交
8
	"github.com/phodal/coca/pkg/infrastructure/ast/ast_java"
P
Phodal HUANG 已提交
9 10 11
	"path/filepath"
)

12
type JavaFullApp struct {
P
Phodal HUANG 已提交
13 14
}

15
func NewJavaFullApp() JavaFullApp {
P
Phodal Huang 已提交
16
	return JavaFullApp{}
P
Phodal Huang 已提交
17 18
}

19
func (j *JavaFullApp) AnalysisPath(codeDir string, identNodes []core_domain.CodeDataStruct) []core_domain.CodeDataStruct {
20
	files := cocafile.GetJavaFiles(codeDir)
21
	return j.AnalysisFiles(identNodes, files)
22 23
}

24
func (j *JavaFullApp) AnalysisFiles(identNodes []core_domain.CodeDataStruct, files []string) []core_domain.CodeDataStruct {
P
Phodal Huang 已提交
25
	var nodeInfos []core_domain.CodeDataStruct
P
Phodal Huang 已提交
26

P
Phodal Huang 已提交
27
	var identMap = make(map[string]core_domain.CodeDataStruct)
P
Phodal Huang 已提交
28
	for _, ident := range identNodes {
29
		identMap[ident.GetClassFullName()] = ident
P
Phodal Huang 已提交
30 31
	}

P
Phodal Huang 已提交
32 33
	var classes []string = nil
	for _, node := range identNodes {
P
Phodal Huang 已提交
34
		classes = append(classes, node.GetClassFullName())
P
Phodal Huang 已提交
35 36
	}

P
Phodal Huang 已提交
37 38 39
	for _, file := range files {
		displayName := filepath.Base(file)
		fmt.Println("parse java call: " + displayName)
P
Phodal HUANG 已提交
40

P
Phodal Huang 已提交
41 42
		parser := ast_java.ProcessJavaFile(file)
		context := parser.CompilationUnit()
P
Phodal HUANG 已提交
43

P
Phodal Huang 已提交
44 45
		listener := ast_java.NewJavaFullListener(identMap, file)
		listener.AppendClasses(classes)
P
Phodal HUANG 已提交
46

P
Phodal Huang 已提交
47
		antlr.NewParseTreeWalker().Walk(listener, context)
P
Phodal HUANG 已提交
48

P
Phodal Huang 已提交
49 50
		nodes := listener.GetNodeInfo()
		nodeInfos = append(nodeInfos, nodes...)
P
Phodal HUANG 已提交
51
	}
P
Phodal HUANG 已提交
52

P
Phodal Huang 已提交
53
	return nodeInfos
P
Phodal HUANG 已提交
54
}