|
|
|
@ -9,6 +9,7 @@ import ru.ulstu.extractor.heuristic.component.BuildTool;
|
|
|
|
|
import ru.ulstu.extractor.heuristic.component.ProgrammingLanguage;
|
|
|
|
|
import ru.ulstu.extractor.heuristic.model.StructuralUnit;
|
|
|
|
|
import ru.ulstu.extractor.heuristic.service.DetectorService;
|
|
|
|
|
import ru.ulstu.extractor.util.StringUtils;
|
|
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
|
import java.io.FileNotFoundException;
|
|
|
|
@ -43,16 +44,19 @@ public abstract class StructuralUnitIdentifier {
|
|
|
|
|
|
|
|
|
|
protected abstract boolean isBusinessLogicClass(File file);
|
|
|
|
|
|
|
|
|
|
protected Optional<ProgrammingLanguage> getMainProgrammingLanguage(List<File> projectFiles) {
|
|
|
|
|
protected Optional<ProgrammingLanguage> getMainProgrammingLanguage(String projectPath, List<File> projectFiles, List<File> rootProjectFiles) {
|
|
|
|
|
String subDirectory = getSourceDirectory(rootProjectFiles);
|
|
|
|
|
Map<String, Integer> projectFileLanguageFrequency = new HashMap<>();
|
|
|
|
|
projectFiles.forEach(projectFile -> {
|
|
|
|
|
try {
|
|
|
|
|
String detectedLanguage = getDetectorService().getDetectedLanguage(new String(Files.readAllBytes(projectFile.toPath())));
|
|
|
|
|
projectFileLanguageFrequency.put(detectedLanguage, projectFileLanguageFrequency.getOrDefault(detectedLanguage, 0) + 1);
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
projectFiles.stream()
|
|
|
|
|
.filter(file -> StringUtils.fileInSubdirectory(file.getPath(), projectPath, subDirectory))
|
|
|
|
|
.forEach(projectFile -> {
|
|
|
|
|
try {
|
|
|
|
|
String detectedLanguage = getDetectorService().getDetectedLanguage(new String(Files.readAllBytes(projectFile.toPath())));
|
|
|
|
|
projectFileLanguageFrequency.put(detectedLanguage, projectFileLanguageFrequency.getOrDefault(detectedLanguage, 0) + 1);
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
Optional<Map.Entry<String, Integer>> mostFrequentLanguageEntry = projectFileLanguageFrequency
|
|
|
|
|
.entrySet()
|
|
|
|
@ -68,5 +72,5 @@ public abstract class StructuralUnitIdentifier {
|
|
|
|
|
: Optional.empty();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public abstract boolean canAppliedToProject(List<File> projectFiles);
|
|
|
|
|
public abstract boolean canAppliedToProject(String projectPath, List<File> projectFiles, List<File> rootProjectFiles);
|
|
|
|
|
}
|
|
|
|
|