diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 1062418..0000000 --- a/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.idea/ -*.iml diff --git a/README.md b/README.md deleted file mode 100644 index 18d955b..0000000 --- a/README.md +++ /dev/null @@ -1,28 +0,0 @@ -## Classviz : A Tool for class dependencies visualization - -### maven repository -maven repository -```java - -``` - -### Usage -We can generate class dependency graph via **Classviz**. -```java -Classviz classviz = ClassvizGeneration.scan(pathToJavaFiles); -classviz.setFormat(Format.SVG); -classviz.exportToFile(new File(fileDestination)); -``` -![](examples/usage1.png) - -With the [jquery.graphviz.svg](https://github.com/mountainstorm/jquery.graphviz.svg), we can track class dependencies and its dependents. The tracking classes are highlight. -![](examples/usage2.png) - -### Referred OR Inspired Projects -1. [https://github.com/nidi3/graphviz-java](https://github.com/nidi3/graphviz-java) -2. [https://github.com/javaparser/javaparser](https://github.com/javaparser/javaparser) -3. [https://github.com/plantuml/plantuml](https://github.com/plantuml/plantuml) -4. [https://github.com/mountainstorm/jquery.graphviz.svg](https://github.com/mountainstorm/jquery.graphviz.svg) - - - diff --git a/classviz-generation/pom.xml b/classviz-generation/pom.xml deleted file mode 100644 index e19ed10..0000000 --- a/classviz-generation/pom.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - classviz - com.lujian - 1.0.0 - - 4.0.0 - - classviz-generation - - - - com.lujian - classviz-grammar - - - com.lujian - classviz-visualize - - - - \ No newline at end of file diff --git a/classviz-generation/src/main/java/com/lujian/classviz/generation/Classviz.java b/classviz-generation/src/main/java/com/lujian/classviz/generation/Classviz.java deleted file mode 100644 index 10748ec..0000000 --- a/classviz-generation/src/main/java/com/lujian/classviz/generation/Classviz.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.lujian.classviz.generation; - -import guru.nidi.graphviz.engine.Format; -import guru.nidi.graphviz.engine.Graphviz; - -import java.io.File; -import java.io.IOException; -import java.io.OutputStream; - -public class Classviz { - - private Graphviz graph; - private Format format; - - public Classviz(Graphviz graph) { - this.graph = graph; - } - - public void setFormat(Format format) { - this.format = format; - } - - public String exportToString() { - checkFormat(); - return this.graph.render(this.format).toString(); - } - - public void exportToFile(File file) throws IOException { - checkFormat(); - this.graph.render(this.format).toFile(file); - } - - public void exportToOutputStream(OutputStream outputStream) throws IOException { - checkFormat(); - this.graph.render(this.format).toOutputStream(outputStream); - } - - private void checkFormat() { - if(this.format == null) { - throw new IllegalStateException("set output format!"); - } - } -} diff --git a/classviz-generation/src/main/java/com/lujian/classviz/generation/ClassvizGeneration.java b/classviz-generation/src/main/java/com/lujian/classviz/generation/ClassvizGeneration.java deleted file mode 100644 index 2cbcd33..0000000 --- a/classviz-generation/src/main/java/com/lujian/classviz/generation/ClassvizGeneration.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.lujian.classviz.generation; - -import com.lujian.classviz.grammar.AnalysisUnit; -import com.lujian.classviz.grammar.GrammarAnalysis; -import com.lujian.classviz.visualize.DigraphFactory; -import com.lujian.classviz.visualize.GraphvizFactory; -import com.lujian.classviz.visualize.classmeta.DigraphNodeAbstractClass; -import com.lujian.classviz.visualize.classmeta.DigraphNodeConcreteClass; -import com.lujian.classviz.visualize.classmeta.DigraphNodeEnum; -import com.lujian.classviz.visualize.classmeta.DigraphNodeInterface; -import com.lujian.classviz.visualize.meta.Digraph; -import com.lujian.classviz.visualize.meta.DigraphEdge; -import com.lujian.classviz.visualize.meta.DigraphNode; -import guru.nidi.graphviz.engine.Graphviz; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class ClassvizGeneration { - - public static Classviz scan(List pathList) throws IOException{ - List totalUnitList = new ArrayList<>(); - for (String path : pathList) { - totalUnitList.addAll(GrammarAnalysis.parseFile(new File(path))); - } - Digraph digraph = DigraphFactory.useDefault(); - transformToDigraph(totalUnitList, digraph); - Graphviz graph = GraphvizFactory.create(digraph); - return new Classviz(graph); - } - - public static Classviz scan(String... paths) throws IOException{ - return scan(Arrays.asList(paths)); - } - - public static Classviz scan(String path) throws IOException { - return scan(Arrays.asList(path)); - } - - private static void transformToDigraph(List unitList, Digraph digraph) { - unitList.forEach(analysisUnit -> { - if(analysisUnit == null || analysisUnit.getClassName() == null) { - return; - } - DigraphNode node = null; - switch (analysisUnit.getClassType()) { - case T_CLASS: - node = new DigraphNodeConcreteClass(analysisUnit.getClassName()); - break; - case T_ABSTRACT: - node = new DigraphNodeAbstractClass(analysisUnit.getClassName()); - break; - case T_INTERFACE: - node = new DigraphNodeInterface(analysisUnit.getClassName()); - break; - case T_ENUM: - node = new DigraphNodeEnum(analysisUnit.getClassName()); - break; - } - if (analysisUnit.getExtendedType() == null - && (analysisUnit.getImplementedTypeList() == null - || analysisUnit.getImplementedTypeList().isEmpty())) { - digraph.addNode(node); - }else { - digraph.addNode(node); - if(analysisUnit.getExtendedType() != null) { - DigraphEdge edge = new DigraphEdge(); - edge.setSource(node); - edge.addTarget(new DigraphNodeConcreteClass(analysisUnit.getExtendedType())); - digraph.addEdge(edge); - } - if (analysisUnit.getImplementedTypeList() != null && !analysisUnit.getImplementedTypeList().isEmpty()) { - for (String implementType : analysisUnit.getImplementedTypeList()) { - DigraphEdge edge = new DigraphEdge(); - edge.setSource(node); - edge.addTarget(new DigraphNodeInterface(implementType)); - digraph.addEdge(edge); - } - } - } - }); - } - -} diff --git a/classviz-generation/src/main/java/com/lujian/classviz/generation/MainEntry.java b/classviz-generation/src/main/java/com/lujian/classviz/generation/MainEntry.java deleted file mode 100644 index 30c47f6..0000000 --- a/classviz-generation/src/main/java/com/lujian/classviz/generation/MainEntry.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.lujian.classviz.generation; - -import guru.nidi.graphviz.engine.Format; - -import java.io.File; -import java.io.IOException; - -public class MainEntry { - - public static void main(String[] args) throws IOException { - Classviz classviz = ClassvizGeneration.scan("E:\\frameworks\\java\\open-jdk\\openjdk\\jdk\\src\\share\\classes\\java\\util\\concurrent"); - classviz.setFormat(Format.SVG); - classviz.exportToFile(new File("C:\\Users\\LuJian\\Desktop\\1.svg")); - } - -} diff --git a/classviz-grammar/pom.xml b/classviz-grammar/pom.xml deleted file mode 100644 index a1a7f5d..0000000 --- a/classviz-grammar/pom.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - classviz - com.lujian - 1.0.0 - - 4.0.0 - - classviz-grammar - - - - com.github.javaparser - javaparser-core - 3.9.1 - - - - \ No newline at end of file diff --git a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/AnalysisUnit.java b/classviz-grammar/src/main/java/com/lujian/classviz/grammar/AnalysisUnit.java deleted file mode 100644 index 904c0ba..0000000 --- a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/AnalysisUnit.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.lujian.classviz.grammar; - -import java.util.List; - -public class AnalysisUnit { - - String className; - ClassTypeEnum classType; - String packageDeclaration; - String extendedType; - List implementedTypeList; - - public ClassTypeEnum getClassType() { - return classType; - } - - public void setClassType(ClassTypeEnum classType) { - this.classType = classType; - } - - public String getClassName() { - return className; - } - - public void setClassName(String className) { - this.className = className; - } - - public String getPackageDeclaration() { - return packageDeclaration; - } - - public void setPackageDeclaration(String packageDeclaration) { - this.packageDeclaration = packageDeclaration; - } - - public String getExtendedType() { - return extendedType; - } - - public void setExtendedType(String extendedType) { - this.extendedType = extendedType; - } - - public List getImplementedTypeList() { - return implementedTypeList; - } - - public void setImplementedTypeList(List implementedTypeList) { - this.implementedTypeList = implementedTypeList; - } - - @Override - public String toString() { - return "AnalysisUnit{" + - "className='" + className + '\'' + - ", classType=" + classType + - ", packageDeclaration='" + packageDeclaration + '\'' + - ", extendedType='" + extendedType + '\'' + - ", implementedTypeList=" + implementedTypeList + - '}'; - } -} diff --git a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/ClassTypeEnum.java b/classviz-grammar/src/main/java/com/lujian/classviz/grammar/ClassTypeEnum.java deleted file mode 100644 index da10a38..0000000 --- a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/ClassTypeEnum.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.lujian.classviz.grammar; - -public enum ClassTypeEnum { - - T_ENUM, - T_INTERFACE, - T_ABSTRACT, - T_CLASS - ; - -} diff --git a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/GrammarAnalysis.java b/classviz-grammar/src/main/java/com/lujian/classviz/grammar/GrammarAnalysis.java deleted file mode 100644 index 670f79a..0000000 --- a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/GrammarAnalysis.java +++ /dev/null @@ -1,112 +0,0 @@ -package com.lujian.classviz.grammar; - -import com.github.javaparser.JavaParser; -import com.github.javaparser.ast.*; -import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration; -import com.github.javaparser.ast.body.EnumDeclaration; -import com.github.javaparser.ast.type.ClassOrInterfaceType; - -import java.io.File; -import java.io.IOException; -import java.nio.file.FileVisitResult; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.SimpleFileVisitor; -import java.nio.file.attribute.BasicFileAttributes; -import java.util.ArrayList; -import java.util.List; - -public class GrammarAnalysis { - - public static AnalysisUnit parse(CompilationUnit unit) { - AnalysisUnit result = new AnalysisUnit(); - List nodeList = unit.getChildNodes(); - for (Node node : nodeList) { - if (node instanceof PackageDeclaration) { - result.setPackageDeclaration(((PackageDeclaration) node).getNameAsString()); - } - if (node instanceof ClassOrInterfaceDeclaration) { - NodeList extendedTypes = ((ClassOrInterfaceDeclaration) node).getExtendedTypes(); - if(extendedTypes != null && !extendedTypes.isEmpty()) { - result.setExtendedType(extendedTypes.get(0).asString()); - } - NodeList implementedTypes = ((ClassOrInterfaceDeclaration) node).getImplementedTypes(); - if(implementedTypes != null && !implementedTypes.isEmpty()) { - List implementList = new ArrayList<>(implementedTypes.size()); - for (ClassOrInterfaceType type : implementedTypes) { - implementList.add(type.getNameAsString()); - } - result.setImplementedTypeList(implementList); - } - - //class name - result.setClassName(((ClassOrInterfaceDeclaration) node).getNameAsString()); - //class type - if(((ClassOrInterfaceDeclaration) node).isInterface()) { - result.setClassType(ClassTypeEnum.T_INTERFACE); - }else { - if (((ClassOrInterfaceDeclaration) node).getModifiers().contains(Modifier.abstractModifier())) { - result.setClassType(ClassTypeEnum.T_ABSTRACT); - }else { - result.setClassType(ClassTypeEnum.T_CLASS); - } - } - } - if(node instanceof EnumDeclaration) { - result.setClassName(((EnumDeclaration) node).getNameAsString()); - result.setClassType(ClassTypeEnum.T_ENUM); - } - } - return result; - } - - public static AnalysisUnit parse(String code) { - return parse(JavaParser.parse(code)); - } - - public static List parsePath(Path path) throws IOException { - return parseFile(path.toFile()); - } - - public static List parseFile(File file) throws IOException { - List resultList = new ArrayList<>(); - if(!file.isDirectory()) { - String filename = file.getName(); - int idx = filename.lastIndexOf("."); - if(idx != -1 && filename.substring(idx).equals(".java")) { - resultList.add(parse(JavaParser.parse(file))); - } - return resultList; - } - Files.walkFileTree(file.toPath(), new SimpleFileVisitor() { - @Override - public FileVisitResult visitFile(Path path, BasicFileAttributes attrs) throws IOException { - String filename = path.getFileName().toString(); - int idx = filename.lastIndexOf("."); - if(idx != -1 && filename.substring(idx).equals(".java")) { - resultList.add(parse(JavaParser.parse(path))); - } - return FileVisitResult.CONTINUE; - } - }); - return resultList; - } - - public static void main(String[] args) { - System.out.println(GrammarAnalysis.parse("package com.lujian.classviz.grammar.demo;\n" + - "\n" + - "public enum AEnum {\n" + - "}\n")); - System.out.println(GrammarAnalysis.parse("package com.lujian.classviz.grammar.demo;\n" + - "\n" + - "public abstract class AConcreteClass extends AAbstractClass implements AInterface, BInterface{\n" + - "}\n")); - - try { - System.out.println(GrammarAnalysis.parseFile(new File("E:\\codes\\java\\idea-tify\\classviz\\classviz-visualize\\src\\main\\java\\com\\lujian\\classviz\\visualize\\classmeta"))); - } catch (IOException e) { - e.printStackTrace(); - } - } - -} diff --git a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/demo/AAbstractClass.java b/classviz-grammar/src/main/java/com/lujian/classviz/grammar/demo/AAbstractClass.java deleted file mode 100644 index 5b63260..0000000 --- a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/demo/AAbstractClass.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.lujian.classviz.grammar.demo; - -public abstract class AAbstractClass { -} diff --git a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/demo/AConcreteClass.java b/classviz-grammar/src/main/java/com/lujian/classviz/grammar/demo/AConcreteClass.java deleted file mode 100644 index ef2492f..0000000 --- a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/demo/AConcreteClass.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.lujian.classviz.grammar.demo; - -public class AConcreteClass extends AAbstractClass implements AInterface, BInterface{ -} diff --git a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/demo/AEnum.java b/classviz-grammar/src/main/java/com/lujian/classviz/grammar/demo/AEnum.java deleted file mode 100644 index 3539507..0000000 --- a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/demo/AEnum.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.lujian.classviz.grammar.demo; - -public enum AEnum { -} diff --git a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/demo/AInterface.java b/classviz-grammar/src/main/java/com/lujian/classviz/grammar/demo/AInterface.java deleted file mode 100644 index 066a92b..0000000 --- a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/demo/AInterface.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.lujian.classviz.grammar.demo; - -public interface AInterface { -} diff --git a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/demo/BInterface.java b/classviz-grammar/src/main/java/com/lujian/classviz/grammar/demo/BInterface.java deleted file mode 100644 index 9ed8039..0000000 --- a/classviz-grammar/src/main/java/com/lujian/classviz/grammar/demo/BInterface.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.lujian.classviz.grammar.demo; - -public interface BInterface { -} diff --git a/classviz-visualize/pom.xml b/classviz-visualize/pom.xml deleted file mode 100644 index a8c861b..0000000 --- a/classviz-visualize/pom.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - classviz - com.lujian - 1.0.0 - - 4.0.0 - - classviz-visualize - - - - org.projectlombok - lombok - 1.16.20 - - - - guru.nidi - graphviz-java - 0.8.0 - - - - org.apache.commons - commons-lang3 - 3.7 - - - - \ No newline at end of file diff --git a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/DigraphFactory.java b/classviz-visualize/src/main/java/com/lujian/classviz/visualize/DigraphFactory.java deleted file mode 100644 index e764ff2..0000000 --- a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/DigraphFactory.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.lujian.classviz.visualize; - -import com.lujian.classviz.visualize.meta.ColorEnum; -import com.lujian.classviz.visualize.meta.Digraph; -import com.lujian.classviz.visualize.meta.NodeDesc; -import guru.nidi.graphviz.attribute.RankDir; -import guru.nidi.graphviz.attribute.Shape; -import guru.nidi.graphviz.attribute.Style; - -public class DigraphFactory { - - public static Digraph useDefault() { - Digraph digraph = new Digraph(); - - digraph.setBgColor(ColorEnum.DARK_BLUE.getCode()); - digraph.setPad("0.5"); - digraph.setDpi(70.0); - digraph.setRankDir(RankDir.BOTTOM_TO_TOP); - - NodeDesc desc = new NodeDesc(""); - desc.setShape(Shape.ELLIPSE); - desc.setFont("Microsoft YaHei,微软雅黑"); - desc.setWidth("1"); - desc.setFontSize("20"); - desc.setStyle(Style.FILLED); - desc.setFillColor(ColorEnum.YELLOW.getCode()); - desc.setColor(ColorEnum.YELLOW.getCode()); - desc.setPenWidth("1"); - desc.setLabel(""); - digraph.setNodeDesc(desc); - return digraph; - } - -} diff --git a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/DigraphNodeFactory.java b/classviz-visualize/src/main/java/com/lujian/classviz/visualize/DigraphNodeFactory.java deleted file mode 100644 index 988621d..0000000 --- a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/DigraphNodeFactory.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.lujian.classviz.visualize; - -import com.lujian.classviz.visualize.classmeta.DigraphNodeAbstractClass; -import com.lujian.classviz.visualize.classmeta.DigraphNodeConcreteClass; -import com.lujian.classviz.visualize.classmeta.DigraphNodeEnum; -import com.lujian.classviz.visualize.classmeta.DigraphNodeInterface; - -public class DigraphNodeFactory { - - public static DigraphNodeInterface createInterface(String id) { - return new DigraphNodeInterface(id); - } - public static DigraphNodeAbstractClass createAbstractClass(String id) { - return new DigraphNodeAbstractClass(id); - } - public static DigraphNodeConcreteClass createConcreteClass(String id) { - return new DigraphNodeConcreteClass(id); - } - public static DigraphNodeEnum createEnum(String id) { - return new DigraphNodeEnum(id); - } - -} diff --git a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/FactoryEntry.java b/classviz-visualize/src/main/java/com/lujian/classviz/visualize/FactoryEntry.java deleted file mode 100644 index 1dfd719..0000000 --- a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/FactoryEntry.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.lujian.classviz.visualize; - -import com.lujian.classviz.visualize.classmeta.DigraphNodeAbstractClass; -import com.lujian.classviz.visualize.classmeta.DigraphNodeConcreteClass; -import com.lujian.classviz.visualize.classmeta.DigraphNodeEnum; -import com.lujian.classviz.visualize.classmeta.DigraphNodeInterface; -import com.lujian.classviz.visualize.meta.Digraph; -import com.lujian.classviz.visualize.meta.DigraphEdge; -import guru.nidi.graphviz.engine.Format; -import guru.nidi.graphviz.engine.Graphviz; - -import static com.lujian.classviz.visualize.DigraphNodeFactory.*; - -public class FactoryEntry { - - public static void main(String[] args) { - Digraph digraph = DigraphFactory.useDefault(); - - DigraphNodeInterface di = createInterface("interface"); - DigraphNodeAbstractClass da = createAbstractClass("abstract class"); - DigraphNodeConcreteClass dc = createConcreteClass("concrete class"); - DigraphNodeEnum de = createEnum("enum"); - - digraph.addNode(di); - digraph.addNode(da); - digraph.addNode(dc); - digraph.addNode(de); - - DigraphEdge edge1 = new DigraphEdge(); - edge1.setSource(dc); - edge1.addTarget(da); - - DigraphEdge edge2 = new DigraphEdge(); - edge2.setSource(dc); - edge2.addTarget(di); - - digraph.addEdge(edge1); - digraph.addEdge(edge2); - - Graphviz graph = GraphvizFactory.create(digraph); - System.out.println(graph.render(Format.SVG).toString()); - } - -} diff --git a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/GraphvizFactory.java b/classviz-visualize/src/main/java/com/lujian/classviz/visualize/GraphvizFactory.java deleted file mode 100644 index 6a94503..0000000 --- a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/GraphvizFactory.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.lujian.classviz.visualize; - -import com.lujian.classviz.visualize.meta.*; -import guru.nidi.graphviz.attribute.*; -import guru.nidi.graphviz.engine.Graphviz; -import guru.nidi.graphviz.model.*; -import org.apache.commons.lang3.StringUtils; - -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import static guru.nidi.graphviz.model.Factory.*; - -public class GraphvizFactory { - - public static Graphviz create(Digraph digraph) { - MutableGraph g = mutGraph("sampleDigraph").setDirected(true).use((gr, ctx) -> { - applyGraphDesc(graphAttrs(), digraph); - applyNodeDesc(nodeAttrs(), digraph.getNodeDesc()); - createDefNode(digraph.getNodeSet()); - createEdge(digraph.getEdgeSet()); - }); - return Graphviz.fromGraph(g); - } - - private static void applyGraphDesc(MutableAttributed attrs, Digraph digraph) { - if(!StringUtils.isBlank(digraph.getName())) { - attrs.add("name", digraph.getName()); - } - if(!StringUtils.isBlank(digraph.getBgColor())) { - attrs.add("bgcolor", digraph.getBgColor()); - } - if(!StringUtils.isBlank(digraph.getPad())) { - attrs.add("pad", digraph.getPad()); - } - if(digraph.getRankDir() != null) { - attrs.add(digraph.getRankDir()); - } - if(digraph.getDpi() != null) { - attrs.add("dpi", digraph.getDpi()); - } - } - - private static void applyNodeDesc(MutableAttributed attrs, NodeDesc desc) { - if(desc.getShape() != null) { - attrs.add(desc.getShape()); - } - if(desc.getStyle() != null) { - attrs.add(desc.getStyle()); - } - if(!StringUtils.isBlank(desc.getFillColor())) { - attrs.add(Color.rgb(desc.getFillColor()).fill()); - } - if(!StringUtils.isBlank(desc.getColor())) { - attrs.add(Color.rgb(desc.getColor())); - } - if(!StringUtils.isBlank(desc.getFontSize())) { - attrs.add("fontsize", desc.getFontSize()); - } - if(!StringUtils.isBlank(desc.getWidth())) { - attrs.add("width", desc.getWidth()); - } - if(!StringUtils.isBlank(desc.getHeight())) { - attrs.add("height", desc.getHeight()); - } - if(!StringUtils.isBlank(desc.getFont())) { - attrs.add("font", desc.getFont()); - } - if(!StringUtils.isBlank(desc.getPenWidth())) { - attrs.add("penwidth", desc.getPenWidth()); - } - if(!StringUtils.isBlank(desc.getLabel())) { - attrs.add(Label.of(desc.getLabel())); - } - } - - private static LinkSource[] createEdge(Set edgeSet) { - if(edgeSet == null) { - return new LinkSource[0]; - } - Set set = new HashSet<>(); - for (DigraphEdge edge : edgeSet) { - List targetList = edge.getTargetList(); - MutableNode node = createNode(edge.getSource()); - for (DigraphNode target : targetList) { - Link link = node.linkTo(createNode(target)); - link.add(target.getEdgeStyle()); - link.add(target.getEdgeArrow()); - link.add(Color.rgb(ColorEnum.WHITE.getCode())); - node.addLink(link); - } - set.add(node); - } - return set.toArray(new LinkSource[0]); - } - - private static MutableNode createNode(DigraphNode node) { - MutableNode mutNode = mutNode(Label.of(node.getId())); - MutableAttributed attrs = mutNode.attrs(); - applyNodeDesc(attrs, node); - if(!StringUtils.isBlank(node.getTooltip())) { - attrs.add("tooltip", node.getTooltip()); - } - if(!StringUtils.isBlank(node.getFillColor())) { - attrs.add(Color.rgb(node.getFillColor()).fill()); - } - if(!StringUtils.isBlank(node.getColor())) { - attrs.add(Color.rgb(node.getColor())); - } -// if(!StringUtils.isBlank(node.getLabel())) { -// attrs.add("label", node.getLabel()); -// } - if(!StringUtils.isBlank(node.getComment())) { - attrs.add("comment", node.getComment()); - } - return mutNode; - } - - private static LinkSource[] createDefNode(Set nodeSet) { - if(nodeSet == null) { - return new LinkSource[0]; - } - Set set = new HashSet<>(); - for (DigraphNode node : nodeSet) { - set.add(createNode(node)); - } - return set.toArray(new LinkSource[0]); - } - -} diff --git a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/classmeta/DigraphNodeAbstractClass.java b/classviz-visualize/src/main/java/com/lujian/classviz/visualize/classmeta/DigraphNodeAbstractClass.java deleted file mode 100644 index 5ae9b84..0000000 --- a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/classmeta/DigraphNodeAbstractClass.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.lujian.classviz.visualize.classmeta; - -import com.lujian.classviz.visualize.meta.ColorEnum; -import com.lujian.classviz.visualize.meta.DigraphNode; -import guru.nidi.graphviz.attribute.Style; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@Data -@EqualsAndHashCode(callSuper = true) -public class DigraphNodeAbstractClass extends DigraphNode { - - protected String tooltip = "AbstractClass"; - protected String fillColor = ColorEnum.C_ABSTRACT_CLASS.getCode(); - - public DigraphNodeAbstractClass(String id, String tooltip, String label) { - super(id, tooltip, label); - } - - public DigraphNodeAbstractClass(String id, String tooltip) { - super(id, tooltip); - } - - public DigraphNodeAbstractClass(String id) { - super(id); - } -} diff --git a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/classmeta/DigraphNodeConcreteClass.java b/classviz-visualize/src/main/java/com/lujian/classviz/visualize/classmeta/DigraphNodeConcreteClass.java deleted file mode 100644 index 1fbcb81..0000000 --- a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/classmeta/DigraphNodeConcreteClass.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.lujian.classviz.visualize.classmeta; - -import com.lujian.classviz.visualize.meta.ColorEnum; -import com.lujian.classviz.visualize.meta.DigraphNode; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@Data -@EqualsAndHashCode(callSuper = true) -public class DigraphNodeConcreteClass extends DigraphNode { - - protected String tooltip = "Class"; - protected String fillColor = ColorEnum.C_CONCRETE_CLASS.getCode(); - - public DigraphNodeConcreteClass(String id, String tooltip, String label) { - super(id, tooltip, label); - } - - public DigraphNodeConcreteClass(String id, String tooltip) { - super(id, tooltip); - } - - public DigraphNodeConcreteClass(String id) { - super(id); - } -} diff --git a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/classmeta/DigraphNodeEnum.java b/classviz-visualize/src/main/java/com/lujian/classviz/visualize/classmeta/DigraphNodeEnum.java deleted file mode 100644 index 28de29a..0000000 --- a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/classmeta/DigraphNodeEnum.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.lujian.classviz.visualize.classmeta; - -import com.lujian.classviz.visualize.meta.ColorEnum; -import com.lujian.classviz.visualize.meta.DigraphNode; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@Data -@EqualsAndHashCode(callSuper = true) -public class DigraphNodeEnum extends DigraphNode { - - protected String tooltip = "Enum"; - protected String fillColor = ColorEnum.C_ENUM.getCode(); - - public DigraphNodeEnum(String id, String tooltip, String label) { - super(id, tooltip, label); - } - - public DigraphNodeEnum(String id, String tooltip) { - super(id, tooltip); - } - - public DigraphNodeEnum(String id) { - super(id); - } -} diff --git a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/classmeta/DigraphNodeInterface.java b/classviz-visualize/src/main/java/com/lujian/classviz/visualize/classmeta/DigraphNodeInterface.java deleted file mode 100644 index ad3f165..0000000 --- a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/classmeta/DigraphNodeInterface.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.lujian.classviz.visualize.classmeta; - -import com.lujian.classviz.visualize.meta.ColorEnum; -import com.lujian.classviz.visualize.meta.DigraphNode; -import guru.nidi.graphviz.attribute.Style; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@Data -@EqualsAndHashCode(callSuper = true) -public class DigraphNodeInterface extends DigraphNode { - - protected String tooltip = "Interface"; - protected String fillColor = ColorEnum.C_INTERFACE.getCode(); - protected Style edgeStyle = Style.DASHED; - - public DigraphNodeInterface(String id, String tooltip, String label) { - super(id, tooltip, label); - } - - public DigraphNodeInterface(String id, String tooltip) { - super(id, tooltip); - } - - public DigraphNodeInterface(String id) { - super(id); - } -} diff --git a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/ColorEnum.java b/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/ColorEnum.java deleted file mode 100644 index 27e3bab..0000000 --- a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/ColorEnum.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.lujian.classviz.visualize.meta; - -public enum ColorEnum { - - DARK_BLUE("#2e3e56"), - DARK_GRAY("#fcfcfc"), - WHITE("#ffffff"), - DARK_LINE("#445773"), - RED("#ea555b"), - YELLOW("#edad56"), - GOLD("#AB6D16"), - DARK_GREEN("#29b89d"), - PURPLE("#9362a8"), - PINK("#f2688d"), - GREEN("#a5cf80"), - BLUE("#8eabd9"), - C_INTERFACE("#B4A7E5"), - C_ABSTRACT_CLASS("#22D223"), - C_CONCRETE_CLASS("#ADD1B2"), - C_ENUM("#E3664A") - ; - - private String code; - - ColorEnum(String code) { - this.code = code; - } - - public String getCode() { - return code; - } -} diff --git a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/Digraph.java b/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/Digraph.java deleted file mode 100644 index ec30953..0000000 --- a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/Digraph.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.lujian.classviz.visualize.meta; - -import guru.nidi.graphviz.attribute.RankDir; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.HashSet; -import java.util.Set; - -@Data -@EqualsAndHashCode -public class Digraph { - - String name; - String bgColor; - String pad; - Double dpi; - RankDir rankDir; - - NodeDesc nodeDesc; - EdgeDesc edgeDEsc; - - Set nodeSet = new HashSet<>(); - Set edgeSet = new HashSet<>(); - - public void addNode(DigraphNode node) { - nodeSet.add(node); - } - - public void addEdge(DigraphEdge edge) { - edgeSet.add(edge); - } -} diff --git a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/DigraphEdge.java b/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/DigraphEdge.java deleted file mode 100644 index d4886a7..0000000 --- a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/DigraphEdge.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.lujian.classviz.visualize.meta; - -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - -@Data -@EqualsAndHashCode -@NoArgsConstructor -public class DigraphEdge { - - DigraphNode source; - - List targetList = new ArrayList<>(); - - public DigraphEdge(DigraphNode source) { - this.source = source; - } - - public DigraphEdge(DigraphNode source, List targetList) { - this.source = source; - this.targetList = targetList; - } - - public void addTarget(DigraphNode target) { - targetList.add(target); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - DigraphEdge that = (DigraphEdge) o; - return Objects.equals(source, that.source) && - Objects.equals(targetList, that.targetList); - } - - @Override - public int hashCode() { - return Objects.hash(source, targetList); - } -} diff --git a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/DigraphNode.java b/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/DigraphNode.java deleted file mode 100644 index 015dc0e..0000000 --- a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/DigraphNode.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.lujian.classviz.visualize.meta; - -import lombok.Data; -import lombok.EqualsAndHashCode; - - -@Data -@EqualsAndHashCode(callSuper = true) -public class DigraphNode extends NodeDesc { - - protected String tooltip; - protected String comment; - protected String id; - - public DigraphNode(String id, String tooltip, String label) { - super(label); - this.id = id; - this.tooltip = tooltip; - } - - public DigraphNode(String id, String tooltip) { - super(id); - this.id = id; - this.tooltip = tooltip; - } - - public DigraphNode(String id) { - super(id); - this.id = id; - } -} diff --git a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/EdgeDesc.java b/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/EdgeDesc.java deleted file mode 100644 index ed5a641..0000000 --- a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/EdgeDesc.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.lujian.classviz.visualize.meta; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -@Data -@EqualsAndHashCode -public class EdgeDesc { - - protected String color; - protected String penWidth; - protected String fontname; - -} diff --git a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/NodeDesc.java b/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/NodeDesc.java deleted file mode 100644 index bdfb726..0000000 --- a/classviz-visualize/src/main/java/com/lujian/classviz/visualize/meta/NodeDesc.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.lujian.classviz.visualize.meta; - -import guru.nidi.graphviz.attribute.Arrow; -import guru.nidi.graphviz.attribute.Shape; -import guru.nidi.graphviz.attribute.Style; -import lombok.Data; -import lombok.EqualsAndHashCode; - -@Data -@EqualsAndHashCode -public class NodeDesc { - - protected Shape shape; - protected Style style; - protected Style edgeStyle; - protected Arrow edgeArrow; - protected String font; - protected String fontSize; - protected String width; - protected String height; - protected String fillColor; - protected String color; - protected String penWidth; - protected String label; - - public NodeDesc(String label) { - this.shape = Shape.RECTANGLE; - this.font = "Microsoft YaHei,微软雅黑"; - this.fontSize = "14"; - this.width = "0.6"; - this.style = Style.FILLED; - this.edgeStyle = Style.SOLID; - this.edgeArrow = Arrow.NORMAL.open(); - this.fillColor = (ColorEnum.YELLOW.getCode()); - this.color = ColorEnum.YELLOW.getCode(); - this.label = label; - } - -} diff --git a/examples/css/graphviz.svg.css b/css/graphviz.svg.css similarity index 100% rename from examples/css/graphviz.svg.css rename to css/graphviz.svg.css diff --git a/examples/demo.svg b/demo.svg similarity index 100% rename from examples/demo.svg rename to demo.svg diff --git a/design/goal.mmd b/design/goal.mmd deleted file mode 100644 index 80a488e..0000000 --- a/design/goal.mmd +++ /dev/null @@ -1,79 +0,0 @@ -Mind Map generated by NB MindMap plugin -> __version__=`1.1`,showJumps=`true` ---- - -# goal - -## aims - -### class hierachy visualize -> fillColor=`#3B4FD2` - - -### class single path visualize -> fillColor=`#3B4FD2` - - -### class dependency visualize -> fillColor=`#49D248` - - -## decomposition -> leftSide=`true` - - -### class grammar analysis - -#### extends - -#### implements -> leftSide=`true` - - -#### dependencies -> leftSide=`true` - - -### class diagram visualize -> leftSide=`true` - - -#### interface - -#### abstract class -> leftSide=`true` - - -#### concrete class -> leftSide=`true` - - -#### enum -> leftSide=`true` - - -## design -> leftSide=`true` - - -### interface - -#### I - -### abstract class -> leftSide=`true` - - -#### A - -### concrete class -> leftSide=`true` - - -#### C - -### enum -> leftSide=`true` - - -#### E diff --git a/examples/demo.html b/index.html similarity index 100% rename from examples/demo.html rename to index.html diff --git a/examples/js/jquery.graphviz.svg.js b/js/jquery.graphviz.svg.js similarity index 100% rename from examples/js/jquery.graphviz.svg.js rename to js/jquery.graphviz.svg.js diff --git a/pom.xml b/pom.xml deleted file mode 100644 index a035cc6..0000000 --- a/pom.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - 4.0.0 - - com.lujian - classviz - pom - 1.0.0 - - classviz-visualize - classviz-grammar - classviz-generation - - - - ${file_encoding} - 1.8 - 1.8 - UTF-8 - 3.7.0 - - - - - - com.lujian - classviz-grammar - 1.0.0 - - - com.lujian - classviz-visualize - 1.0.0 - - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven_compiler_plugin_version} - - true - ${java_source_version} - ${java_target_version} - ${file_encoding} - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - - - - \ No newline at end of file diff --git a/examples/usage1.png b/usage1.png similarity index 100% rename from examples/usage1.png rename to usage1.png diff --git a/examples/usage2.png b/usage2.png similarity index 100% rename from examples/usage2.png rename to usage2.png