package org.molgenis.data.support;
import com.google.common.collect.Sets;
import org.molgenis.data.meta.model.Attribute;
import org.molgenis.data.meta.model.EntityType;
import org.molgenis.data.settings.DefaultSettingsEntity;
import org.molgenis.data.settings.DefaultSettingsEntityType;
import org.springframework.stereotype.Component;
import java.util.Set;
@Component
public class GenomicDataSettings extends DefaultSettingsEntity
{
private static final long serialVersionUID = 1L;
private static final String ID = "genomicdata";
public GenomicDataSettings()
{
super(ID);
}
public Attribute getAttributeMetadataForAttributeNameArray(String propertyName, EntityType entityType)
{
String attrNamesStr = getString(propertyName);
if (attrNamesStr != null)
{
Set<String> attrNames = Sets.newHashSet(attrNamesStr.split(","));
for (Attribute attr : entityType.getAtomicAttributes())
{
if (attrNames.contains(attr.getName()))
{
return attr;
}
}
}
return null;
}
public String getAttributeNameForAttributeNameArray(String propertyName, EntityType metadata)
{
Attribute attribute = getAttributeMetadataForAttributeNameArray(propertyName, metadata);
if (attribute != null)
{
return attribute.getName();
}
return "";
}
@Component
public static class Meta extends DefaultSettingsEntityType
{
public static final String ATTRS_POS = "start";
public static final String ATTRS_CHROM = "chromosome";
public static final String ATTRS_REF = "ref";
public static final String ATTRS_ALT = "alt";
public static final String ATTRS_IDENTIFIER = "identifier";
public static final String ATTRS_STOP = "stop";
public static final String ATTRS_DESCRIPTION = "description";
public static final String ATTRS_PATIENT_ID = "patient_id";
public static final String ATTRS_NAME = "name";
public static final String ATTRS_LINKOUT = "linkout";
private static final String DEFAULT_ATTRS_POS = "POS,start_nucleotide";
private static final String DEFAULT_ATTRS_CHROM = "CHROM,#CHROM,chromosome";
private static final String DEFAULT_ATTRS_REF = "REF";
private static final String DEFAULT_ATTRS_ALT = "ALT";
private static final String DEFAULT_ATTRS_ID = "ID,Mutation_id";
private static final String DEFAULT_ATTRS_STOP = "stop_pos,stop_nucleotide,end_nucleotide";
private static final String DEFAULT_ATTRS_DESCRIPTION = "INFO";
private static final String DEFAULT_ATTRS_PATIENT_ID = "patient_id";
public Meta()
{
super(ID);
}
@Override
public void init()
{
super.init();
setLabel("Genomic data settings");
setDescription("Settings for genomic data sets.");
addAttribute(ATTRS_POS).setNillable(false).setDefaultValue(DEFAULT_ATTRS_POS).setLabel("Start nucleotide")
.setDescription("Comma-separated attribute names");
addAttribute(ATTRS_CHROM).setNillable(false).setDefaultValue(DEFAULT_ATTRS_CHROM).setLabel("Chromosome")
.setDescription("Comma-separated attribute names");
addAttribute(ATTRS_REF).setNillable(false).setDefaultValue(DEFAULT_ATTRS_REF).setLabel("Reference base(s)")
.setDescription("Comma-separated attribute names");
addAttribute(ATTRS_ALT).setNillable(false).setDefaultValue(DEFAULT_ATTRS_ALT).setLabel("Alternate base(s)")
.setDescription("Comma-separated attribute names");
addAttribute(ATTRS_IDENTIFIER).setNillable(false).setDefaultValue(DEFAULT_ATTRS_ID).setLabel("Identifier")
.setDescription("Comma-separated attribute names");
addAttribute(ATTRS_STOP).setNillable(false).setDefaultValue(DEFAULT_ATTRS_STOP).setLabel("End nucleotide")
.setDescription("Comma-separated attribute names");
addAttribute(ATTRS_DESCRIPTION).setNillable(false).setDefaultValue(DEFAULT_ATTRS_DESCRIPTION)
.setLabel("Description").setDescription("Comma-separated attribute names");
addAttribute(ATTRS_PATIENT_ID).setNillable(false).setDefaultValue(DEFAULT_ATTRS_PATIENT_ID)
.setLabel("Patient identifier").setDescription("Comma-separated attribute names");
addAttribute(ATTRS_NAME).setNillable(true).setLabel("Name")
.setDescription("Comma-separated attribute names");
addAttribute(ATTRS_LINKOUT).setNillable(true).setLabel("Link out")
.setDescription("Comma-separated attribute names");
}
}
public String getAttrsPos()
{
return getString(Meta.ATTRS_POS);
}
public void setAttrsPos(String attrsPos)
{
set(Meta.ATTRS_POS, attrsPos);
}
public String getAttrsChrom()
{
return getString(Meta.ATTRS_CHROM);
}
public void setAttrsChrom(String attrsChrom)
{
set(Meta.ATTRS_CHROM, attrsChrom);
}
public String getAttrsRef()
{
return getString(Meta.ATTRS_REF);
}
public void setAttrsRef(String attrsRef)
{
set(Meta.ATTRS_REF, attrsRef);
}
public String getAttrsAlt()
{
return getString(Meta.ATTRS_ALT);
}
public void setAttrsAlt(String attrsAlt)
{
set(Meta.ATTRS_ALT, attrsAlt);
}
public String getAttrsIdentifier()
{
return getString(Meta.ATTRS_IDENTIFIER);
}
public void setAttrsIdentifier(String attrsIdentifier)
{
set(Meta.ATTRS_IDENTIFIER, attrsIdentifier);
}
public String getAttrsStop()
{
return getString(Meta.ATTRS_STOP);
}
public void setAttrsStop(String attrsStop)
{
set(Meta.ATTRS_STOP, attrsStop);
}
public String getAttrsDescription()
{
return getString(Meta.ATTRS_DESCRIPTION);
}
public void setAttrsDescription(String attrsDescription)
{
set(Meta.ATTRS_DESCRIPTION, attrsDescription);
}
public String getAttrsPatientId()
{
return getString(Meta.ATTRS_PATIENT_ID);
}
public void setAttrsPatientId(String attrsPatientId)
{
set(Meta.ATTRS_PATIENT_ID, attrsPatientId);
}
public String getAttrsName()
{
return getString(Meta.ATTRS_NAME);
}
public void setAttrsName(String attrsName)
{
set(Meta.ATTRS_NAME, attrsName);
}
public String getAttrsLinkout()
{
return getString(Meta.ATTRS_LINKOUT);
}
public void setAttrsLinkout(String attrsLinkout)
{
set(Meta.ATTRS_LINKOUT, attrsLinkout);
}
}