Skip to content
Snippets Groups Projects
Commit 99a8fce1 authored by felmer's avatar felmer
Browse files

SE-191 link on MS_INJECTION sample code, copy data set action

SVN: 14426
parent 11235277
No related branches found
No related tags found
No related merge requests found
......@@ -16,18 +16,38 @@
package ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.application;
import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.createOrDelete;
import static ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.edit;
import static ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.application.Dict.COPY_DATA_SETS_BUTTON_LABEL;
import static ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.application.Dict.COPY_DATA_SETS_MESSAGE;
import static ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.application.Dict.COPY_DATA_SETS_TITLE;
import java.util.List;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.google.gwt.user.client.rpc.AsyncCallback;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.AbstractAsyncCallback;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.GenericConstants;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.IViewContext;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.VoidAsyncCallback;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.GenericTableBrowserGrid;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IBrowserGridActionInvoker;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.ICellListener;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.grid.IDisposableComponent;
import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractDataConfirmationDialog;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.GenericTableResultSet;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.IResultSetConfig;
import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteria;
import ch.systemsx.cisd.openbis.generic.shared.basic.IEntityInformationHolder;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.BasicEntityType;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GenericTableRow;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SerializableComparableIDDecorator;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind.ObjectKind;
import ch.systemsx.cisd.openbis.plugin.phosphonetx.client.web.client.IPhosphoNetXClientServiceAsync;
/**
......@@ -46,14 +66,89 @@ class RawDataSampleGrid extends GenericTableBrowserGrid
return grid.asDisposableWithoutToolbar();
}
private final IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext;
private static final class CopyConfirmationDialog extends
AbstractDataConfirmationDialog<List<GenericTableRow>>
{
private final IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext;
private final List<GenericTableRow> samples;
private CopyConfirmationDialog(
IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext,
List<GenericTableRow> samples, String title)
{
super(specificViewContext, samples, title);
this.specificViewContext = specificViewContext;
this.samples = samples;
}
@Override
protected String createMessage()
{
String list = "[";
String delim = "";
for (GenericTableRow sample : samples)
{
list += delim + sample.tryToGetValue(0);
delim = ", ";
}
list += "]";
return specificViewContext.getMessage(COPY_DATA_SETS_MESSAGE, list);
}
@Override
protected void executeConfirmedAction()
{
long[] rawDataSampleIDs = new long[samples.size()];
for (int i = 0; i < samples.size(); i++)
{
GenericTableRow row = samples.get(i);
ISerializableComparable c = row.tryToGetValue(0);
if (c instanceof SerializableComparableIDDecorator == false)
{
throw new IllegalArgumentException("Missing id: " + c);
}
rawDataSampleIDs[i] = ((SerializableComparableIDDecorator) c).getID();
}
specificViewContext.getService().copyRawData(rawDataSampleIDs,
new VoidAsyncCallback<Void>(specificViewContext));
}
@Override
protected void extendForm()
{
}
}
private final IViewContext<IPhosphoNetXClientServiceAsync> specificViewContext;
RawDataSampleGrid(IViewContext<IPhosphoNetXClientServiceAsync> viewContext)
{
super(viewContext.getCommonViewContext(), BROWSER_ID, GRID_ID, true, true,
PhosphoNetXDisplayTypeIDGenerator.RAW_DATA_SAMPLE_BROWSER_GRID);
specificViewContext = viewContext;
registerLinkClickListenerFor("CODE", new ICellListener<GenericTableRow>()
{
public void handle(GenericTableRow rowItem)
{
showEntityViewer(rowItem, false);
}
});
allowMultipleSelection();
addEntityOperationsLabel();
Button uploadButton =
new Button(viewContext.getMessage(COPY_DATA_SETS_BUTTON_LABEL),
new AbstractCreateDialogListener()
{
@Override
protected Dialog createDialog(List<GenericTableRow> samples,
IBrowserGridActionInvoker invoker)
{
return new CopyConfirmationDialog(specificViewContext, samples,
specificViewContext.getMessage(COPY_DATA_SETS_TITLE));
}
});
addButton(uploadButton);
}
......@@ -73,7 +168,40 @@ class RawDataSampleGrid extends GenericTableBrowserGrid
public DatabaseModificationKind[] getRelevantModifications()
{
return new DatabaseModificationKind[] {};
return new DatabaseModificationKind[]
{ createOrDelete(ObjectKind.SAMPLE_TYPE), edit(ObjectKind.SAMPLE_TYPE),
createOrDelete(ObjectKind.GROUP),
createOrDelete(ObjectKind.PROPERTY_TYPE_ASSIGNMENT),
edit(ObjectKind.PROPERTY_TYPE_ASSIGNMENT) };
}
@Override
protected void showEntityViewer(final GenericTableRow entity, boolean editMode)
{
showEntityInformationHolderViewer(new IEntityInformationHolder()
{
public String getCode()
{
return entity.tryToGetValue(0).toString();
}
public Long getId()
{
return ((SerializableComparableIDDecorator) entity.tryToGetValue(0)).getID();
}
public BasicEntityType getEntityType()
{
BasicEntityType type = new BasicEntityType();
type.setCode("MS_INJECTION");
return type;
}
public EntityKind getEntityKind()
{
return EntityKind.SAMPLE;
}
}, editMode);
}
}
......@@ -34,9 +34,9 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GenericTableColumnHeade
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GenericTableRow;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ISerializableComparable;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IntegerTableCell;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SerializableComparableIDDecorator;
import ch.systemsx.cisd.openbis.generic.shared.basic.dto.StringTableCell;
import ch.systemsx.cisd.openbis.plugin.phosphonetx.shared.IRawDataServiceInternal;
......@@ -76,14 +76,9 @@ class RawDataSampleProvider implements IOriginalDataProvider<GenericTableRow>
values.add(value);
}
void addNumber(int index, Long number)
void addStringWithID(int index, String string, Long id)
{
add(index, new IntegerTableCell(number));
}
void addString(int index, String string)
{
add(index, new StringTableCell(string));
add(index, new SerializableComparableIDDecorator(new StringTableCell(string), id));
}
void addDate(int index, Date date)
......@@ -154,29 +149,6 @@ class RawDataSampleProvider implements IOriginalDataProvider<GenericTableRow>
}
}
private static final class ColumnsWithIDColumn
{
private final List<Column> columns;
private final Column idColumn;
public ColumnsWithIDColumn(List<Column> columns, Column idColumn)
{
this.columns = columns;
this.idColumn = idColumn;
}
public List<Column> getColumns()
{
return columns;
}
public Column getIdColumn()
{
return idColumn;
}
}
private final IRawDataServiceInternal service;
private final String sessionToken;
......@@ -188,8 +160,7 @@ class RawDataSampleProvider implements IOriginalDataProvider<GenericTableRow>
public List<GenericTableRow> getOriginalData() throws UserFailureException
{
ColumnsWithIDColumn columnsWithIDColumn = getColumns();
List<Column> columns = columnsWithIDColumn.getColumns();
List<Column> columns = getColumns();
int numberOfRows = columns.get(0).getValues().size();
List<GenericTableRow> result = new ArrayList<GenericTableRow>(numberOfRows);
for(int i = 0; i < numberOfRows; i++)
......@@ -208,7 +179,7 @@ class RawDataSampleProvider implements IOriginalDataProvider<GenericTableRow>
public List<GenericTableColumnHeader> getHeaders()
{
List<Column> columns = getColumns().getColumns();
List<Column> columns = getColumns();
List<GenericTableColumnHeader> headers = new ArrayList<GenericTableColumnHeader>(columns.size());
for (Column column : columns)
{
......@@ -217,11 +188,10 @@ class RawDataSampleProvider implements IOriginalDataProvider<GenericTableRow>
return headers;
}
private ColumnsWithIDColumn getColumns()
private List<Column> getColumns()
{
List<Sample> samples = service.listRawDataSamples(sessionToken);
Column idColumn = new Column(GenericTableColumnHeader.untitledStringHeader(0, "ID"));
Column codeColumn = new Column(GenericTableColumnHeader.untitledStringHeader(0, "CODE"));
Column codeColumn = new Column(GenericTableColumnHeader.untitledLinkableStringHeader(0, "CODE"));
Column dateColumn = new Column(GenericTableColumnHeader.untitledStringHeader(1, "REGISTRATION_DATE"));
Column parentColumn = new Column(GenericTableColumnHeader.untitledStringHeader(2, "PARENT"));
List<Column> columns = new ArrayList<Column>();
......@@ -234,10 +204,10 @@ class RawDataSampleProvider implements IOriginalDataProvider<GenericTableRow>
for (int i = 0; i < samples.size(); i++)
{
Sample sample = samples.get(i);
idColumn.addNumber(i, sample.getId());
codeColumn.addString(i, sample.getCode());
codeColumn.addStringWithID(i, sample.getCode(), sample.getId());
dateColumn.addDate(i, sample.getRegistrationDate());
parentColumn.addString(i, sample.getGeneratedFrom().getIdentifier());
Sample parent = sample.getGeneratedFrom();
parentColumn.addStringWithID(i, parent.getIdentifier(), parent.getId());
addPropertyTypes(samplePropertyColumns, i, sample);
addPropertyTypes(parentPropertyColumns, i, sample.getGeneratedFrom());
}
......@@ -251,7 +221,7 @@ class RawDataSampleProvider implements IOriginalDataProvider<GenericTableRow>
}
columns.addAll(samplePropertyColumns.getColumns());
columns.addAll(parentPropertyColumns.getColumns());
return new ColumnsWithIDColumn(columns, idColumn);
return columns;
}
private void addPropertyTypes(PropertyColumns columns, int index, Sample sample)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment