package io.seqware;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.sourceforge.seqware.common.metadata.Metadata;
import net.sourceforge.seqware.common.metadata.MetadataFactory;
import net.sourceforge.seqware.common.model.Study;
import net.sourceforge.seqware.common.model.StudyType;
import net.sourceforge.seqware.common.util.configtools.ConfigTools;
public class Studies {
private static void add(List<String> strs, Object o) {
if (o == null)
strs.add("");
else
strs.add(o.toString());
}
private static void tsv(StringBuilder sb, List<String> ss) {
if (!ss.isEmpty()) {
sb.append(ss.get(0));
for (int i = 1; i < ss.size(); i++) {
sb.append('\t');
sb.append(ss.get(i));
}
sb.append('\n');
}
}
public static String studiesTsv() {
Metadata md = MetadataFactory.get(ConfigTools.getSettings());
List<Study> studies = md.getAllStudies();
StringBuilder sb = new StringBuilder();
List<String> strs = new ArrayList<>(Arrays.asList("Title", "Description", "Creation Date", "SeqWare Accession", "Study Type",
"Center Name", "Center Project Name"));
tsv(sb, strs);
for (Study s : studies) {
strs.clear();
add(strs, s.getTitle());
add(strs, s.getDescription());
add(strs, s.getCreateTimestamp());
add(strs, s.getSwAccession());
StudyType t = s.getExistingType();
add(strs, t == null ? "" : t.getName() + " (" + t.getStudyTypeId() + ")");
add(strs, s.getCenterName());
add(strs, s.getCenterProjectName());
tsv(sb, strs);
}
return sb.toString();
}
}