diff --git a/src/main/java/ru/ulstu/extractor/heuristic/api/StructuralUnitIdentifier.java b/src/main/java/ru/ulstu/extractor/heuristic/api/StructuralUnitIdentifier.java new file mode 100644 index 0000000..3ba09e6 --- /dev/null +++ b/src/main/java/ru/ulstu/extractor/heuristic/api/StructuralUnitIdentifier.java @@ -0,0 +1,23 @@ +package ru.ulstu.extractor.heuristic.api; + +import ru.ulstu.extractor.heuristic.model.BuildTool; +import ru.ulstu.extractor.heuristic.model.ProgrammingLanguage; +import ru.ulstu.extractor.heuristic.model.StructuralUnit; + +import java.util.List; + +public interface StructuralUnitIdentifier { + List getEntityClasses(); + + List getBusinessLogicClasses(); + + ProgrammingLanguage getMainProgrammingLanguage(); + + boolean isMultiModuleProject(); + + BuildTool getBuildTool(); + + default boolean canAppliedToProject() { + return false; + } +} diff --git a/src/main/java/ru/ulstu/extractor/heuristic/model/BuildTool.java b/src/main/java/ru/ulstu/extractor/heuristic/model/BuildTool.java new file mode 100644 index 0000000..e6e9a6f --- /dev/null +++ b/src/main/java/ru/ulstu/extractor/heuristic/model/BuildTool.java @@ -0,0 +1,16 @@ +package ru.ulstu.extractor.heuristic.model; + +public abstract class BuildTool { + private final String name; + + public BuildTool(String name) { + this.name = name; + } + + protected abstract boolean canAppliedToProject(); + + public String getName() { + return name; + } + +} diff --git a/src/main/java/ru/ulstu/extractor/heuristic/model/GradleBuildTool.java b/src/main/java/ru/ulstu/extractor/heuristic/model/GradleBuildTool.java new file mode 100644 index 0000000..c99c245 --- /dev/null +++ b/src/main/java/ru/ulstu/extractor/heuristic/model/GradleBuildTool.java @@ -0,0 +1,13 @@ +package ru.ulstu.extractor.heuristic.model; + +public class GradleBuildTool extends BuildTool { + + public GradleBuildTool() { + super("Gradle"); + } + + @Override + protected boolean canAppliedToProject() { + return false; + } +} diff --git a/src/main/java/ru/ulstu/extractor/heuristic/model/JavaProgrammingLanguage.java b/src/main/java/ru/ulstu/extractor/heuristic/model/JavaProgrammingLanguage.java new file mode 100644 index 0000000..867328c --- /dev/null +++ b/src/main/java/ru/ulstu/extractor/heuristic/model/JavaProgrammingLanguage.java @@ -0,0 +1,7 @@ +package ru.ulstu.extractor.heuristic.model; + +public class JavaProgrammingLanguage extends ProgrammingLanguage { + public JavaProgrammingLanguage() { + super("Java"); + } +} diff --git a/src/main/java/ru/ulstu/extractor/heuristic/model/ProgrammingLanguage.java b/src/main/java/ru/ulstu/extractor/heuristic/model/ProgrammingLanguage.java new file mode 100644 index 0000000..a872270 --- /dev/null +++ b/src/main/java/ru/ulstu/extractor/heuristic/model/ProgrammingLanguage.java @@ -0,0 +1,13 @@ +package ru.ulstu.extractor.heuristic.model; + +public abstract class ProgrammingLanguage { + private final String name; + + public ProgrammingLanguage(String name) { + this.name = name; + } + + public String getName() { + return name; + } +} diff --git a/src/main/java/ru/ulstu/extractor/heuristic/model/StructuralUnit.java b/src/main/java/ru/ulstu/extractor/heuristic/model/StructuralUnit.java new file mode 100644 index 0000000..64ce9b2 --- /dev/null +++ b/src/main/java/ru/ulstu/extractor/heuristic/model/StructuralUnit.java @@ -0,0 +1,14 @@ +package ru.ulstu.extractor.heuristic.model; + +public abstract class StructuralUnit { + private String pathToFile; + private String moduleName; + + public String getPathToFile() { + return pathToFile; + } + + public String getModuleName() { + return moduleName; + } +} diff --git a/src/main/java/ru/ulstu/extractor/heuristic/service/JavaIdentifier.java b/src/main/java/ru/ulstu/extractor/heuristic/service/JavaIdentifier.java new file mode 100644 index 0000000..98c7283 --- /dev/null +++ b/src/main/java/ru/ulstu/extractor/heuristic/service/JavaIdentifier.java @@ -0,0 +1,45 @@ +package ru.ulstu.extractor.heuristic.service; + +import org.springframework.stereotype.Service; +import ru.ulstu.extractor.heuristic.api.StructuralUnitIdentifier; +import ru.ulstu.extractor.heuristic.model.BuildTool; +import ru.ulstu.extractor.heuristic.model.GradleBuildTool; +import ru.ulstu.extractor.heuristic.model.JavaProgrammingLanguage; +import ru.ulstu.extractor.heuristic.model.ProgrammingLanguage; +import ru.ulstu.extractor.heuristic.model.StructuralUnit; + +import java.util.List; + +@Service +public class JavaIdentifier implements StructuralUnitIdentifier { + @Override + public boolean canAppliedToProject() { + return getBuildTool() instanceof GradleBuildTool + && getMainProgrammingLanguage() instanceof JavaProgrammingLanguage; + } + + @Override + public List getEntityClasses() { + return null; + } + + @Override + public List getBusinessLogicClasses() { + return null; + } + + @Override + public ProgrammingLanguage getMainProgrammingLanguage() { + return null; + } + + @Override + public boolean isMultiModuleProject() { + return false; + } + + @Override + public BuildTool getBuildTool() { + return null; + } +} diff --git a/src/main/java/ru/ulstu/extractor/heuristic/service/StructuralUnitService.java b/src/main/java/ru/ulstu/extractor/heuristic/service/StructuralUnitService.java new file mode 100644 index 0000000..7cbf8dd --- /dev/null +++ b/src/main/java/ru/ulstu/extractor/heuristic/service/StructuralUnitService.java @@ -0,0 +1,24 @@ +package ru.ulstu.extractor.heuristic.service; + +import org.springframework.stereotype.Service; +import ru.ulstu.extractor.heuristic.api.StructuralUnitIdentifier; +import ru.ulstu.extractor.heuristic.model.StructuralUnit; + +import java.util.List; + +@Service +public class StructuralUnitService { + private final List structuralUnitIdentifiers; + + public StructuralUnitService(List structuralUnitIdentifiers) { + this.structuralUnitIdentifiers = structuralUnitIdentifiers; + } + + public List getEntities() { + StructuralUnitIdentifier selectedIdentifier = structuralUnitIdentifiers.stream() + .filter(StructuralUnitIdentifier::canAppliedToProject) + .findAny() + .orElseThrow(() -> new RuntimeException("Identifier not found")); + return selectedIdentifier.getEntityClasses(); + } +}