Skip to content
Snippets Groups Projects
Commit a25fb7a9 authored by Erik Diers's avatar Erik Diers
Browse files

Added predefined xlsx import behavior.

parent 63eb33b4
No related branches found
No related tags found
No related merge requests found
No preview for this file type
......@@ -14,15 +14,15 @@ import uiutils.LabelPanel;
import uiutils.SimpleFrame;
import uiutils.SpinnerINTPanel;
import utils.CSV_Reader;
import utils.SFB_CreateMeta;
import utils.SFB_JSON_Util;
import utils.SFB_Util;
public class Main {
private static final String XLSX_SESSION_PREFIX = "SessionDate";
private static final String SFB_SUBJID = "Subject ID";
private static final String XLSX_SESSION_PREFIX = "Session Date";
private static final String SFB_RECORD_DATE = "Record Date";
private static int xlsx_subjIdHeaderIndex = -1;
private static final String[] DEFAULT_HEADER_NAMES = new String[] {"Subject ID", "Subject Age", "Subject Sex", "Subject Type", "Extra Information"};
public static void main(String[] args) {
SimpleFrame frame = new SimpleFrame("Create Study", 600, 400);
......@@ -99,18 +99,25 @@ public class Main {
xlsxReader = CSV_Reader.fromXLSX(xlsxImportFile.getOutput(), null);
for(int i = 0; i < DEFAULT_HEADER_NAMES.length; i++) {
if (!xlsxReader.getColumnHead(i).equals(DEFAULT_HEADER_NAMES[i])) {
SimpleFrame.promt("Excel error: Column header Nr. " + i + " should be " + DEFAULT_HEADER_NAMES[i]);
return;
}
}
sessions = 0;
while(xlsxReader.getColumn(XLSX_SESSION_PREFIX + " " + (sessions + 1)) != -1)
while(xlsxReader.getMaxColumns() > sessions + DEFAULT_HEADER_NAMES.length && xlsxReader.getColumnHead(sessions + DEFAULT_HEADER_NAMES.length).equals(XLSX_SESSION_PREFIX + " " + String.format("%02d", sessions + 1)))
sessions++;
if (sessions == 0) {
SimpleFrame.promt("Please specify session dates in excel file: " + XLSX_SESSION_PREFIX + " 0");
SimpleFrame.promt("Please specify session dates in excel file: " + XLSX_SESSION_PREFIX + " 01");
return;
}
xlsxReader.nullEntriesToEmptyStr();
xlsx_subjIdHeaderIndex = xlsxReader.getColumnUncased(SFB_SUBJID); //
codes = xlsxReader.getCompleteColumn(xlsx_subjIdHeaderIndex);
codes = xlsxReader.getCompleteColumn(0); // 0 for Subject ID
} else {
......@@ -188,7 +195,7 @@ public class Main {
subjFolder.mkdir();
for(int i = 1; i <= sessionAmount; i++) {
File sessionFolder = new File(subjFolder.getAbsolutePath() + "\\ses-" + i);
File sessionFolder = new File(subjFolder.getAbsolutePath() + "\\ses-" + String.format("%02d", i));
sessionFolder.mkdir();
if (xlsxReader != null)
......@@ -211,23 +218,29 @@ public class Main {
SFB_Util.copy(baseMeta, metaJson);
SFB_JSON_Util.performOnJson(metaJson, (obj) -> {
String[] currentRow = xlsxReader.getCompleteRow(xlsxReader.findRow(sfbSubjCode, xlsx_subjIdHeaderIndex));
String[] currentRow = xlsxReader.getCompleteRow(xlsxReader.findRow(sfbSubjCode, 0)); // SubjID
for(int i = 0; i < currentRow.length; i++) {
//new String[] {"Subject ID", "Subject Age", "Subject Sex", "Subject Type", "Extra Information"}
obj.put("Subject ID", currentRow[0]);
obj.put("Subject age", currentRow[1]);
obj.put("Subject sex", SFB_JSON_Util.getGenderFromStringStart(currentRow[2]).toString());
if (!currentRow[3].equals("Healthy test subject") && !currentRow[3].equals("Patient") && !currentRow[3].equals("Healthy control subject"))
currentRow[3] = "Healthy test subject";
obj.put("Subject type", currentRow[3]);
obj.put("Extra information", currentRow[4]);
for(int i = DEFAULT_HEADER_NAMES.length; i < currentRow.length; i++) {
String header = xlsxReader.getColumnHead(i);
if (header.startsWith(XLSX_SESSION_PREFIX)) {
if (header.endsWith("" + currentSession)) { //Identifies the current session. This breaks in case of more than 9 sessions. But this wont happen.
if (header.endsWith("" + String.format("%02d", currentSession))) { //Identifies the current session. This breaks in case of more than 9 sessions. But this wont happen.
obj.put("DataCite-Date", currentRow[i]);
obj.put("DublinCore-Date", currentRow[i]);
header = SFB_RECORD_DATE;
}else
continue;
}
if (header.trim().equals("") || currentRow[i].equals(""))
continue;
obj.put(header, currentRow[i]);
}
});
......
......@@ -67,6 +67,15 @@ public class CSV_Reader {
}
}
public void nullEntriesToEmptyStr() {
for(int r = 0; r < getMaxRows(); r++) {
for(int c = 0; c < getMaxColumns(); c++) {
if (entries[r][c] == null)
entries[r][c] = "";
}
}
}
private String[] arrayExpand(String[] arr) {
if (arr.length < headers.length) {
String[] newArr = new String[headers.length];
......
......@@ -221,6 +221,16 @@ public class SFB_JSON_Util {
return Gender.UNDEFINED;
}
public static Gender getGenderFromStringStart(String gen) {
gen = gen.toLowerCase();
if(gen.startsWith("m")) {
return Gender.MALE;
} else if (gen.startsWith("w") || gen.startsWith("f")) {
return Gender.FEMALE;
}
return Gender.UNDEFINED;
}
public enum PatientType {
HEALTY_TEST_SUBJ("Healthy test subject"),
PATIENT("Patient"),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment