
org.molgenis.omx.studymanager.OmxStudyDefinition Maven / Gradle / Ivy
The newest version!
package org.molgenis.omx.studymanager;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import org.molgenis.catalog.CatalogItem;
import org.molgenis.data.DataService;
import org.molgenis.omx.auth.MolgenisUser;
import org.molgenis.omx.observ.ObservableFeature;
import org.molgenis.omx.study.StudyDataRequest;
import org.molgenis.study.StudyDefinition;
import com.google.common.base.Function;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
public class OmxStudyDefinition implements StudyDefinition
{
private final StudyDataRequest studyDataRequest;
private final DataService dataService;
public OmxStudyDefinition(StudyDataRequest studyDataRequest, DataService dataService)
{
if (studyDataRequest == null) throw new IllegalArgumentException("study data request is null");
if (dataService == null) throw new IllegalArgumentException("data service is null");
this.studyDataRequest = studyDataRequest;
this.dataService = dataService;
}
@Override
public String getId()
{
return studyDataRequest.getId().toString();
}
@Override
public void setId(String id)
{
studyDataRequest.setId(Integer.valueOf(id));
}
@Override
public String getName()
{
return studyDataRequest.getName();
}
@Override
public void setName(String name)
{
studyDataRequest.setName(name);
}
@Override
public String getDescription()
{
return null; // TODO https://github.com/molgenis/molgenis/issues/859
}
@Override
public String getVersion()
{
return null; // TODO https://github.com/molgenis/molgenis/issues/860
}
@Override
public Date getDateCreated()
{
return new Date(studyDataRequest.getRequestDate().getTime());
}
@Override
public Status getStatus()
{
String requestStatus = studyDataRequest.getRequestStatus();
return Status.valueOf(requestStatus.toUpperCase());
}
@Override
public Iterable getItems()
{
return Lists.transform(studyDataRequest.getFeatures(), new Function()
{
@Override
public CatalogItem apply(ObservableFeature observableFeature)
{
return new OmxStudyDefinitionItem(observableFeature, studyDataRequest.getProtocol().getId());
}
});
}
@Override
public void setItems(Iterable items)
{
List features;
if (items.iterator().hasNext())
{
Iterable featuresIterable = dataService.findAll(ObservableFeature.ENTITY_NAME,
Iterables.transform(items, new Function()
{
@Override
public Object apply(CatalogItem catalogItem)
{
return Integer.valueOf(catalogItem.getId());
}
}), ObservableFeature.class);
features = Lists.newArrayList(featuresIterable);
}
else
{
features = Collections.emptyList();
}
studyDataRequest.setFeatures(features);
}
@Override
public List getAuthors()
{
MolgenisUser molgenisUser = studyDataRequest.getMolgenisUser();
return Collections.singletonList(molgenisUser.getFirstName() + ' ' + molgenisUser.getLastName());
}
@Override
public String getAuthorEmail()
{
return studyDataRequest.getMolgenisUser().getEmail();
}
@Override
public String getRequestProposalForm()
{
return studyDataRequest.getRequestForm();
}
@Override
public void setRequestProposalForm(String path)
{
studyDataRequest.setRequestForm(path);
}
@Override
public boolean containsItem(CatalogItem anItem)
{
boolean contains = false;
for (CatalogItem item : getItems())
{
if (item.getId().equals(anItem.getId()))
{
contains = true;
break;
}
}
return contains;
}
public StudyDataRequest getStudyDataRequest()
{
return studyDataRequest;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy