package org.nextprot.api.web.service.impl.writer; import org.nextprot.api.core.dao.EntityName; import org.nextprot.api.core.domain.ChromosomalLocation; import org.nextprot.api.core.domain.Entry; import org.nextprot.api.core.service.export.format.EntryBlock; import java.io.OutputStream; import java.util.Arrays; import java.util.List; /** * Export informations on entries overview in XLS format * * Created by fnikitin on 11/08/15. */ public class EntryOverviewXLSWriter extends EntryXLSWriter { private static class DataProvider implements EntryDataProvider { @Override public List<EntryBlock> getSourceEntryBlocks() { return Arrays.asList(EntryBlock.OVERVIEW, EntryBlock.CHROMOSOMAL_LOCATION); } @Override public String[] getFieldNames() { return new String[]{"acc. code", "protein name", "gene name(s)", "chromosome", "proteomics", "disease", "structure", "#isof.", "#variants", "#PTMS", "mutagenesis", "tissue expr.", "PE"}; } @Override public List<Record> getRecords(Entry entry) { Object[] values = new Object[getFieldNames().length]; values[0] = entry.getUniqueName(); values[1] = entry.getOverview().getMainProteinName(); values[2] = EntityName.toString(entry.getOverview().getGeneNames()); values[3] = ChromosomalLocation.toString(entry.getChromosomalLocations()); values[4] = booleanToYesNoString(entry.getProperties().getFilterproteomics()); values[5] = booleanToYesNoString(entry.getProperties().getFilterdisease()); values[6] = booleanToYesNoString(entry.getProperties().getFilterstructure()); values[7] = entry.getProperties().getIsoformCount(); values[8] = entry.getProperties().getVarCount(); values[9] = entry.getProperties().getPtmCount(); values[10] = booleanToYesNoString(entry.getProperties().getFiltermutagenesis()); values[11] = booleanToYesNoString(entry.getProperties().getFilterexpressionprofile()); values[12] = entry.getProperties().getProteinExistence(); Record record = new Record(values); record.setStringValueIndices(new int[]{0, 1, 2, 3, 4, 5, 6, 10, 11, 12}); record.setIntValueIndices(new int[]{7, 8, 9}); record.addHyperLinks(0, "http://www.nextprot.org/db/entry/" + entry.getUniqueName()); return Arrays.asList(record); } private final String booleanToYesNoString(boolean bool) { return (bool) ? "yes" : "no"; } } public EntryOverviewXLSWriter(OutputStream stream) { super(stream, "Proteins", new DataProvider()); } }