Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

generation of Latex code and replacement in template #60

Merged
merged 33 commits into from
Jan 30, 2022
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
c1f2403
generation of Latex code and replacement in template
DonMischo Jan 4, 2022
737579a
generation of Latex code and replacement in template
DonMischo Jan 4, 2022
81f0b5e
Merge branch 'replacements' of github.com:SergelsOrg/csv2tex into rep…
DonMischo Jan 12, 2022
e3a3e88
generation of Latex code and replacement in template
DonMischo Jan 12, 2022
df86b49
first tests for tex replacement
DonMischo Jan 13, 2022
336d36d
tests for replacement
DonMischo Jan 13, 2022
a5a3c00
generation of Latex code and replacement in template
DonMischo Jan 16, 2022
701a36c
fix: texTemplate already given as string
DonMischo Jan 21, 2022
b0b0bd2
fix: IDE warnings
DonMischo Jan 21, 2022
b14a38a
adjust confusing naming
ArchibaldBienetre Jan 21, 2022
f3042be
tex file removed some comments
DonMischo Jan 21, 2022
bf118f6
Merge branch 'replacements' of github.com:SergelsOrg/csv2tex into rep…
DonMischo Jan 21, 2022
65cf3ef
tex template
DonMischo Jan 21, 2022
036b2b6
tex template
DonMischo Jan 21, 2022
4e8998a
move example input out of production code
ArchibaldBienetre Jan 23, 2022
c2d7056
rename files
ArchibaldBienetre Jan 23, 2022
d3748d2
update .gitignore
ArchibaldBienetre Jan 23, 2022
76b3ce7
rename some tex functions
ArchibaldBienetre Jan 23, 2022
21d86a3
rename placeholders
ArchibaldBienetre Jan 23, 2022
c731b8e
rename file
ArchibaldBienetre Jan 23, 2022
f51aa81
remove outdated comment
ArchibaldBienetre Jan 23, 2022
6951222
adjust method visibilities; extract constants
ArchibaldBienetre Jan 23, 2022
b31c5f9
rename tex function
ArchibaldBienetre Jan 23, 2022
7c1b97e
extract method, mark hack
ArchibaldBienetre Jan 23, 2022
947afe9
further constants extracted, renamed things for clarity
ArchibaldBienetre Jan 23, 2022
3cf2cb3
refactor replacer code
ArchibaldBienetre Jan 23, 2022
7aff3d6
extract methods
ArchibaldBienetre Jan 23, 2022
b665b91
TDD: add failing test for hidden bug
ArchibaldBienetre Jan 23, 2022
9fe6c93
fix hidden bug in case of empty list
ArchibaldBienetre Jan 23, 2022
3ef5392
comment
ArchibaldBienetre Jan 23, 2022
6199185
replacements
DonMischo Jan 24, 2022
b4172d7
fix failing test
ArchibaldBienetre Jan 25, 2022
481d95f
make test work on German-localized Ubuntu
ArchibaldBienetre Jan 25, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,17 +1,163 @@
package org.example.csv2tex.placeholders;


import org.example.csv2tex.data.SchoolCompetencyData;
import org.example.csv2tex.data.SchoolReportData;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
import java.util.List;


/**
* Dummy implementation that does no transformation.
* <p>
* We have it in place until we have the real implementation.
*/
public class NoopPlaceholderReplacer implements PlaceholderReplacer {
ArchibaldBienetre marked this conversation as resolved.
Show resolved Hide resolved

@Override
public String replacePlaceholdersInTexFile(String texTemplate, SchoolReportData schoolReportData) {
return texTemplate;
String texFileTemplate = loadTexTemplate(texTemplate);

String texFileContent = replaceBaseData(texFileTemplate, schoolReportData);

String partOfYear = schoolReportData.partOfYear;;
String currentSubject = schoolReportData.schoolCompetencies.get(0).schoolSubject;
StringBuilder tables = new StringBuilder();
List<SchoolCompetencyData> competencyList = new ArrayList<>();

for (SchoolCompetencyData schoolCompetencyData : schoolReportData.schoolCompetencies) {
if (!currentSubject.equals(schoolCompetencyData.schoolSubject)) {
currentSubject = schoolCompetencyData.schoolSubject;

tables.append(makeTableEntry(competencyList, partOfYear));
competencyList.removeAll(competencyList);
ArchibaldBienetre marked this conversation as resolved.
Show resolved Hide resolved
competencyList.add(schoolCompetencyData);
} else {
competencyList.add(schoolCompetencyData);
}
}
tables.append(makeTableEntry(competencyList, partOfYear));
texFileContent = texFileContent.replace("#tables", tables);
return texFileContent;
}

public String makeTableEntry(List<SchoolCompetencyData> competencyList, String partOfYear) {
StringBuilder subjectTable = new StringBuilder();
SchoolCompetencyData firstSchoolcompetencyData = competencyList.get(0);
String competencytableMSCmd = "\\competencytableMS{#SUBJECT}{#COMPETENCIES}{#LEVEL}\n";
String competencytableSSCmd = "\\competencytable{#SUBJECT}{#COMPETENCIES}\n";
ArchibaldBienetre marked this conversation as resolved.
Show resolved Hide resolved

if (partOfYear.equals("Endjahr") ||
firstSchoolcompetencyData.schoolSubject.equals("Mathematik") ||
firstSchoolcompetencyData.schoolSubject.equals("Deutsch") ||
firstSchoolcompetencyData.schoolSubject.equals("Englisch")) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hard-coded German subject names? :(

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently, it's a necessity


competencytableMSCmd = competencytableMSCmd
.replace("#SUBJECT", firstSchoolcompetencyData.schoolSubject)
.replace("#LEVEL", makeLevel(firstSchoolcompetencyData.level))
.replace("#COMPETENCIES", makeCompetencyEntriesMS(competencyList));
subjectTable.append(competencytableMSCmd);
} else {
competencytableSSCmd = competencytableSSCmd
.replace("#SUBJECT", firstSchoolcompetencyData.schoolSubject)
.replace("#COMPETENCIES", makeCompetencyEntriesSS(competencyList));
subjectTable.append(competencytableSSCmd);

}
return subjectTable.toString();
}

public String makeCompetencyEntriesMS(List<SchoolCompetencyData> competencyList) {
String competencyMSCmd = "\\competencyMS{#COMPETENCY}{#GRADE}\n";
StringBuilder competenciesTable = new StringBuilder();

for (SchoolCompetencyData schoolCompetencyData : competencyList) {
StringBuilder competency = new StringBuilder();
String competencyReplaced = new String();
competency.append(schoolCompetencyData.schoolCompetency);
if (!schoolCompetencyData.schoolSubCompetency.isEmpty()) {
competency.append("\\\\\n").append(schoolCompetencyData.schoolSubCompetency);
}
if (!schoolCompetencyData.description.isEmpty()) {
competency.append("\\\\\n").append(schoolCompetencyData.description);
}
competencyReplaced = competencyMSCmd
.replace("#COMPETENCY", competency)
.replace("#GRADE", makeGrade(schoolCompetencyData.grade));
competenciesTable.append(competencyReplaced);
}
return competenciesTable.toString();
}

public String makeCompetencyEntriesSS(List<SchoolCompetencyData> competencyList) {
ArchibaldBienetre marked this conversation as resolved.
Show resolved Hide resolved
String competencySSCmd = "\\competencySS{#COMPETENCY}{#GRADE}{#LEVEL}\n";
StringBuilder competenciesTable = new StringBuilder();

for (SchoolCompetencyData schoolCompetencyData : competencyList) {
StringBuilder competency = new StringBuilder();
String competencyReplaced = new String();
competency.append(schoolCompetencyData.schoolCompetency);
if (!schoolCompetencyData.schoolSubCompetency.isEmpty()) {
competency.append("\\\\\n").append(schoolCompetencyData.schoolSubCompetency);
}
if (!schoolCompetencyData.description.isEmpty()) {
competency.append("\\\\\n").append(schoolCompetencyData.description);
}
competencyReplaced = competencySSCmd
.replace("#COMPETENCY", competency)
.replace("#GRADE", makeGrade(schoolCompetencyData.grade))
.replace("#LEVEL", makeLevel(schoolCompetencyData.level));
competenciesTable.append(competencyReplaced);
}
return competenciesTable.toString();
}

public String makeGrade(String grade) {
switch (grade) {
case "1": return "\\gradeOne";
case "2": return "\\gradeTwo";
case "3": return "\\gradeThree";
case "4": return "\\gradeFour";
case "hj": return "\\gradeHj";
case "nb": return "\\gradeNon";
default: return "";
}
}

public String makeLevel(String level) {
switch (level) {
case "1": return "rot";
case "2": return "blau";
case "3": return "grün";
case "7": return "\\levelSeven";
case "8": return "\\levelEight";
case "9": return "\\levelNine";
default: return "";
}
}

public String loadTexTemplate(String texTemplate) {
Path path = Paths.get(texTemplate);
String texFileContent = null;
try {
texFileContent = Files.readString(path);
} catch (IOException e) {
e.printStackTrace();
}
return texFileContent;
}

public String replaceBaseData(String texFileContent, SchoolReportData schoolReportData) {
texFileContent = texFileContent
.replace("#givenName", schoolReportData.givenName)
.replace("#surName", schoolReportData.surName)
.replace("#birthDay", schoolReportData.birthDay)
.replace("#schoolClass", schoolReportData.schoolClass)
.replace("#schoolYear", schoolReportData.schoolYear)
.replace("#partOfYear", schoolReportData.partOfYear);
return texFileContent;
}
}
Loading