Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
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
Expand Up @@ -193,6 +193,9 @@ public class SubmissionController {
@Value("${app.documentType.rename:}")
private String documentTypesToRename;

@Value("${app.secondaryDelimiter:'|'}")
Comment thread
smutniak marked this conversation as resolved.
Outdated
private String secondaryDelimiter;

@RequestMapping("/all")
@PreAuthorize("hasRole('ADMIN')")
public ApiResponse getAll() {
Expand Down Expand Up @@ -597,7 +600,7 @@ private void processBatchExport(

// Stream data rows
for (Submission submission : submissions) {
ExportPackage exportPackage = packagerUtility.packageExport(packager, submission, columns);
ExportPackage exportPackage = packagerUtility.packageExport(packager, submission, columns, secondaryDelimiter);
if (exportPackage.isMap()) {
Map<String, String> rowData = (Map<String, String>) exportPackage.getPayload();
Row row = worksheet.createRow(rowCount++);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ public EP packageExport(Submission submission, List<SubmissionListColumn> column
throw new UnsupportedFormatterException("Exporter does not support submission list columns!");
}

public EP packageExport(Submission submission, List<SubmissionListColumn> columns, String delimiter) throws UnsupportedFormatterException {
throw new UnsupportedFormatterException("Exporter does not support submission list columns and delimiter!");
}

public EP packageExport(Submission submission, Map<String, String> ds_docs) throws UnsupportedFormatterException {
throw new UnsupportedFormatterException("Exporter does not support multiple docs !");
}
Expand Down
79 changes: 79 additions & 0 deletions src/main/java/org/tdl/vireo/model/packager/ExcelPackager.java
Original file line number Diff line number Diff line change
Expand Up @@ -140,4 +140,83 @@ public ExcelExportPackage packageExport(Submission submission, List<SubmissionLi
return new ExcelExportPackage(submission, "Excel", row);
}

@Override
public ExcelExportPackage packageExport(Submission submission, List<SubmissionListColumn> columns, String delimiter) {
Map<String, String> row = new HashMap<String, String>();
columns.forEach(column -> {
Optional<String> predicate = Optional.ofNullable(column.getPredicate());
if (predicate.isPresent()) {
List<String> fieldValues = new ArrayList<String>();
for (FieldValue fieldValue : submission.getFieldValues()) {
if (fieldValue.getFieldPredicate().getValue().equals(predicate.get().trim())) {
fieldValues.add(fieldValue.getValue());
row.put(column.getTitle(), String.join(", ", fieldValues));
} else {
row.put(column.getTitle(), String.join(delimiter+" ", fieldValues));
}
}
} else {
if (column.getValuePath().size() > 0) {
String[] valuePath = column.getValuePath().toArray(new String[column.getValuePath().size()]);
try {
if(column.getValuePath().size() > 1){
valuePath = new String[] {valuePath[0]};
}
submission.getCommitteeContactEmail();
Object valueAsObject = EntityUtility.getValueFromPath(submission, valuePath);

String value = "";

if (valueAsObject instanceof Calendar) {
Calendar calendar = (Calendar) valueAsObject;
value = simpleDateFormat.format(calendar.getTime());
} else if (valueAsObject instanceof Date) {
Date date = (Date) valueAsObject;
value = simpleDateFormat.format(date);
} else if (valueAsObject instanceof Set && ((Set<?>) valueAsObject).stream().allMatch(o -> o instanceof CustomActionValue)) {
StringBuilder sb = new StringBuilder();
((Set<?>) valueAsObject).forEach(o -> {
CustomActionValue customActionValue = (CustomActionValue) o;
if (customActionValue.getValue()) {
sb.append("☑ ");
} else {
sb.append("☐ ");
}
sb.append(customActionValue.getDefinition().getLabel()+"\n");
});
value = sb.toString();
} else if (valueAsObject instanceof SubmissionStatus){
SubmissionStatus submissionStatus = (SubmissionStatus) valueAsObject;
value = submissionStatus.getName().toString();
} else if (valueAsObject instanceof User){
User user = (User) valueAsObject;
value = user.getName().toString();
} else if (valueAsObject instanceof ActionLog){
ActionLog actionLog = (ActionLog) valueAsObject;
switch (column.getTitle()){
case "Event Time":
Calendar actionDate = (Calendar) actionLog.getActionDate();
value = simpleDateFormat.format(actionDate.getTime());
break;
case "Last Event":
value = actionLog.getEntry().toString();
break;
default:
break;
}
} else {
value = valueAsObject.toString();
}
row.put(column.getTitle(), value.toString());
} catch (Exception exception) {
logger.warn("Unable to get value from " + String.join(",", valuePath));
}
} else {
logger.warn("Column " + column.getTitle() + " has no predicate or value path!");
}
}
});
return new ExcelExportPackage(submission, "Excel", row);
}
Comment on lines +70 to +159

}
2 changes: 2 additions & 0 deletions src/main/java/org/tdl/vireo/model/packager/Packager.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ public interface Packager<EP extends ExportPackage> {

public EP packageExport(Submission submission, List<SubmissionListColumn> columns);

public EP packageExport(Submission submission, List<SubmissionListColumn> columns, String delimiter);

public EP packageExport(Submission submission, Map<String,String> dsDocs);

}
4 changes: 4 additions & 0 deletions src/main/java/org/tdl/vireo/utility/PackagerUtility.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ public ExportPackage packageExport(Packager<?> packager, Submission submission,
return packager.packageExport(submission, columns);
}

public ExportPackage packageExport(Packager<?> packager, Submission submission, List<SubmissionListColumn> columns, String delimiter) {
return packager.packageExport(submission, columns, delimiter);
}

public ExportPackage packageExport(Packager<?> packager, Submission submission, Map<String, String> dsDocs) {
return packager.packageExport(submission, dsDocs);
}
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,8 @@ app:
# edu.tamu.weaver.auth.service.UserCredentialsService
authority.admins: admin@tdl.org,aggieJack@tamu.edu

# ExcelExport secondary delimiter for keywords within CSV, otherwise multiple keywords appear as separate columns
secondaryDelimiter: '|'

security:
# edu.tamu.weaver.auth.service.CryptoService
Expand Down
Loading