diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AbstractExpressionWithParameters.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AbstractExpressionWithParameters.java new file mode 100644 index 0000000000000000000000000000000000000000..9ccff2cb72224a2d2eda21e9ad147446a3226941 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/AbstractExpressionWithParameters.java @@ -0,0 +1,65 @@ +/* + * Copyright 2009 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.shared.basic.dto; + +import java.util.ArrayList; +import java.util.List; + +/** + * {@link AbstractExpression} extension that stores expression parameters. + * + * @author Izabela Adamczyk + */ +abstract public class AbstractExpressionWithParameters extends AbstractExpression +{ + private static final long serialVersionUID = ServiceVersionHolder.VERSION; + + // need to use list here because set doesn't provide fixed order + private List<String> parameters; + + public AbstractExpressionWithParameters() + { + } + + public List<String> getParameters() + { + return parameters; + } + + private void setParameters(List<String> parameters) + { + this.parameters = parameters; + } + + public void setupParameters(List<String> allParameters) + { + setParameters(createDistinctParametersList(allParameters)); + } + + private static List<String> createDistinctParametersList(List<String> allParameters) + { + List<String> result = new ArrayList<String>(); + for (String parameter : allParameters) + { + if (result.contains(parameter) == false) + { + result.add(parameter); + } + } + return result; + } +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/GridCustomFilter.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/GridCustomFilter.java index 863c9e8164a7b57658c108d51a2455990de3257b..ee9dbd1df71641659aa22a4cd047511a0891b503 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/GridCustomFilter.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/GridCustomFilter.java @@ -16,64 +16,17 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto; -import java.util.ArrayList; -import java.util.List; - /** - * Stores information describing an expression with parameters (e.g. custom filter). + * Stores information describing a grid custom filter. * * @author Izabela Adamczyk */ -public class GridCustomFilter extends AbstractExpression +public class GridCustomFilter extends AbstractExpressionWithParameters { private static final long serialVersionUID = ServiceVersionHolder.VERSION; - private List<String> allParameters; - - // need to use list here because set doesn't provide fixed order - private List<String> parameters; - public GridCustomFilter() { } - public List<String> getParameters() - { - return parameters; - } - - private void setParameters(List<String> parameters) - { - this.parameters = parameters; - - } - - public List<String> getAllParameters() - { - return allParameters; - } - - private void setAllParameters(List<String> allParameters) - { - this.allParameters = allParameters; - } - - public void setupParameters(List<String> allParameters) - { - setAllParameters(allParameters); - setParameters(createDistinctParametersList(allParameters)); - } - - private static List<String> createDistinctParametersList(List<String> allParameters) - { - List<String> result = new ArrayList<String>(); - for (String parameter : allParameters) - { - if (result.contains(parameter) == false) - { - result.add(parameter); - } - } - return result; - } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/QueryExpression.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/QueryExpression.java new file mode 100644 index 0000000000000000000000000000000000000000..de07cd98c5bbe7c2a2560a1c5dffa4a71a877688 --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/QueryExpression.java @@ -0,0 +1,53 @@ +/* + * Copyright 2009 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.generic.shared.basic.dto; + +import java.util.List; + +/** + * Stores information describing a parametrized query. + * + * @author Piotr Buczek + */ +public class QueryExpression extends AbstractExpressionWithParameters +{ + private static final long serialVersionUID = ServiceVersionHolder.VERSION; + + private List<String> allParameters; + + public QueryExpression() + { + } + + public List<String> getAllParameters() + { + return allParameters; + } + + private void setAllParameters(List<String> allParameters) + { + this.allParameters = allParameters; + } + + @Override + public void setupParameters(List<String> allParameters) + { + super.setupParameters(allParameters); + setAllParameters(allParameters); + } + +} diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/GridCustomExpressionTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/GridCustomExpressionTranslator.java index b1f17b906f12f3a512e8ca71c5391ac90531ff82..d254f1bd1819da52873d6c5afa0541ef9307f72e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/GridCustomExpressionTranslator.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/GridCustomExpressionTranslator.java @@ -29,7 +29,6 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GridCustomFilter; import ch.systemsx.cisd.openbis.generic.shared.dto.AbstractExpressionPE; import ch.systemsx.cisd.openbis.generic.shared.dto.GridCustomColumnPE; import ch.systemsx.cisd.openbis.generic.shared.dto.GridCustomFilterPE; -import ch.systemsx.cisd.openbis.generic.shared.dto.QueryPE; import ch.systemsx.cisd.openbis.generic.shared.util.ExpressionUtil; import ch.systemsx.cisd.openbis.generic.shared.util.HibernateUtils; @@ -68,7 +67,7 @@ public final class GridCustomExpressionTranslator result.setCode(escapeHtml(original.getCode())); result.setName(escapeHtml(original.getLabel())); - translateGridExpression(original, result); + translateExpression(original, result); return result; } } @@ -100,57 +99,24 @@ public final class GridCustomExpressionTranslator result.setName(escapeHtml(original.getName())); result.setupParameters(ExpressionUtil.extractParameters(original.getExpression())); - translateGridExpression(original, result); + translateExpression(original, result); return result; } } - /** - * A {@link GridCustomFilter} <---> {@link QueryPE} translator. - * - * @author Izabela Adamczyk - */ - public static final class QueryTranslator - { - public final static List<GridCustomFilter> translate(final List<QueryPE> queries) - { - final List<GridCustomFilter> result = new ArrayList<GridCustomFilter>(); - for (final QueryPE query : queries) - { - result.add(QueryTranslator.translate(query)); - } - return result; - } - - public final static GridCustomFilter translate(final QueryPE original) - { - if (original == null) - { - return null; - } - final GridCustomFilter result = new GridCustomFilter(); - result.setName(escapeHtml(original.getName())); - result.setupParameters(ExpressionUtil.extractParameters(original.getExpression())); - - translateGridExpression(original, result); - return result; - } - - } - - private static void translateGridExpression(final AbstractExpressionPE<?> gridExpression, + public static void translateExpression(final AbstractExpressionPE<?> expression, final AbstractExpression result) { - result.setId(HibernateUtils.getId(gridExpression)); - result.setModificationDate(gridExpression.getModificationDate()); - result.setExpression(escapeHtml(gridExpression.getExpression())); - result.setDescription(StringEscapeUtils.escapeHtml(gridExpression.getDescription())); - result.setRegistrator(PersonTranslator.translate(gridExpression.getRegistrator())); - result.setRegistrationDate(gridExpression.getRegistrationDate()); - result.setDatabaseInstance(DatabaseInstanceTranslator.translate(gridExpression + result.setId(HibernateUtils.getId(expression)); + result.setModificationDate(expression.getModificationDate()); + result.setExpression(escapeHtml(expression.getExpression())); + result.setDescription(StringEscapeUtils.escapeHtml(expression.getDescription())); + result.setRegistrator(PersonTranslator.translate(expression.getRegistrator())); + result.setRegistrationDate(expression.getRegistrationDate()); + result.setDatabaseInstance(DatabaseInstanceTranslator.translate(expression .getDatabaseInstance())); - result.setPublic(gridExpression.isPublic()); + result.setPublic(expression.isPublic()); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/IQueryClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/IQueryClientService.java index 334d98055a4165967f9e049111284cdea2faa5f9..52be9b7423013fbeea8e676e2e432efd98d3f2fd 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/IQueryClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/IQueryClientService.java @@ -25,9 +25,9 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteri import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableModelReference; import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GridCustomFilter; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IFilterOrColumnUpdates; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExpression; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.QueryExpression; /** * @author Piotr Buczek @@ -43,30 +43,30 @@ public interface IQueryClientService extends IClientService throws UserFailureException; /** Returns a list of all the canned custom queries created so far. */ - public List<GridCustomFilter> listQueries() throws UserFailureException; + public List<QueryExpression> listQueries() throws UserFailureException; /** * Returns all queries for the specified configuration. */ - public ResultSet<GridCustomFilter> listQueries( - IResultSetConfig<String, GridCustomFilter> resultSetConfig) throws UserFailureException; + public ResultSet<QueryExpression> listQueries( + IResultSetConfig<String, QueryExpression> resultSetConfig) throws UserFailureException; /** * Prepares export of queries. */ - public String prepareExportQueries(TableExportCriteria<GridCustomFilter> criteria) + public String prepareExportQueries(TableExportCriteria<QueryExpression> criteria) throws UserFailureException; /** * Registers specified new query. */ public void registerQuery(NewExpression query) throws UserFailureException; - + /** * Deletes specified queries. */ public void deleteQueries(List<TechId> filterIds) throws UserFailureException; - + /** * Updates specified query. */ diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/IQueryClientServiceAsync.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/IQueryClientServiceAsync.java index cc10d6f9790c4533100f5130f5849f4e968d565f..dd3503c807dfcd52578dece050124c308957215e 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/IQueryClientServiceAsync.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/IQueryClientServiceAsync.java @@ -27,9 +27,9 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteri import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableModelReference; import ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GridCustomFilter; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IFilterOrColumnUpdates; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExpression; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.QueryExpression; /** * @author Piotr Buczek @@ -45,23 +45,23 @@ public interface IQueryClientServiceAsync extends IClientServiceAsync AsyncCallback<TableModelReference> callback); /** @see IQueryClientService#listQueries(IResultSetConfig) */ - public void listQueries(IResultSetConfig<String, GridCustomFilter> resultSetConfig, - AsyncCallback<ResultSet<GridCustomFilter>> callback); + public void listQueries(IResultSetConfig<String, QueryExpression> resultSetConfig, + AsyncCallback<ResultSet<QueryExpression>> callback); /** @see IQueryClientService#listQueries() */ - public void listQueries(AsyncCallback<List<GridCustomFilter>> callback) + public void listQueries(AsyncCallback<List<QueryExpression>> callback) throws UserFailureException; /** @see IQueryClientService#prepareExportQueries(TableExportCriteria) */ - public void prepareExportQueries(TableExportCriteria<GridCustomFilter> criteria, + public void prepareExportQueries(TableExportCriteria<QueryExpression> criteria, AsyncCallback<String> callback); /** @see IQueryClientService#registerQuery(NewExpression) */ public void registerQuery(NewExpression query, AsyncCallback<Void> callback); - + /** @see IQueryClientService#deleteQueries(List) */ public void deleteQueries(List<TechId> filterIds, AsyncCallback<Void> callback); - + /** @see IQueryClientService#updateQuery(IFilterOrColumnUpdates) */ public void updateQuery(final IFilterOrColumnUpdates queryUpdate, AsyncCallback<Void> callback); } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java index 2dc827c8ebe94169c2355a87dc00ad3adde64de9..501f8fc5cc1d86d8c908f89ca5ec1271e95e67f9 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryBrowserGrid.java @@ -38,7 +38,7 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.dto.TableExportCriteri import ch.systemsx.cisd.openbis.generic.shared.basic.IColumnDefinition; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GridCustomFilter; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.QueryExpression; import ch.systemsx.cisd.openbis.plugin.query.client.web.client.IQueryClientServiceAsync; import ch.systemsx.cisd.openbis.plugin.query.client.web.client.application.Constants; import ch.systemsx.cisd.openbis.plugin.query.client.web.client.application.Dict; @@ -46,17 +46,16 @@ import ch.systemsx.cisd.openbis.plugin.query.client.web.client.application.Displ import ch.systemsx.cisd.openbis.plugin.query.client.web.client.application.ui.columns.QueryColDefKind; /** - * - * * @author Franz-Josef Elmer */ -public class QueryBrowserGrid extends AbstractSimpleBrowserGrid<GridCustomFilter> +public class QueryBrowserGrid extends AbstractSimpleBrowserGrid<QueryExpression> { private static final String BROWSER_ID = Constants.QUERY_ID_PREFIX + "queries_browser"; + private static final String GRID_ID = BROWSER_ID + "_grid"; - + private static class DeletionConfirmationDialog extends - AbstractDataConfirmationDialog<List<GridCustomFilter>> + AbstractDataConfirmationDialog<List<QueryExpression>> { private static final int LABEL_WIDTH = 60; @@ -67,7 +66,7 @@ public class QueryBrowserGrid extends AbstractSimpleBrowserGrid<GridCustomFilter private final AbstractAsyncCallback<Void> callback; public DeletionConfirmationDialog(IViewContext<IQueryClientServiceAsync> viewContext, - List<GridCustomFilter> data, AbstractAsyncCallback<Void> callback) + List<QueryExpression> data, AbstractAsyncCallback<Void> callback) { super(viewContext, data, viewContext.getMessage(Dict.DELETE_CONFIRMATION_TITLE)); this.callback = callback; @@ -85,7 +84,7 @@ public class QueryBrowserGrid extends AbstractSimpleBrowserGrid<GridCustomFilter protected String createMessage() { List<String> names = new ArrayList<String>(); - for (GridCustomFilter query : data) + for (QueryExpression query : data) { names.add(query.getName()); } @@ -106,12 +105,13 @@ public class QueryBrowserGrid extends AbstractSimpleBrowserGrid<GridCustomFilter QueryBrowserGrid browser = new QueryBrowserGrid(viewContext); return new DatabaseModificationAwareComponent(browser, browser); } - + private final IViewContext<IQueryClientServiceAsync> viewContext; - + QueryBrowserGrid(IViewContext<IQueryClientServiceAsync> viewContext) { - super(viewContext.getCommonViewContext(), BROWSER_ID, GRID_ID, DisplayTypeIDGenerator.QUERY_EDITOR); + super(viewContext.getCommonViewContext(), BROWSER_ID, GRID_ID, + DisplayTypeIDGenerator.QUERY_EDITOR); this.viewContext = viewContext; extendBottomToolbar(); } @@ -126,19 +126,21 @@ public class QueryBrowserGrid extends AbstractSimpleBrowserGrid<GridCustomFilter @Override public void componentSelected(ButtonEvent ce) { - new QueryEditor(viewContext, null, createRefreshGridAction()).show(); + new QueryEditor(viewContext, null, createRefreshGridAction()) + .show(); } }); addButton(addButton); final Button editButton = createSelectedItemButton(viewContext.getMessage(Dict.BUTTON_EDIT), - new ISelectedEntityInvoker<BaseEntityModel<GridCustomFilter>>() + new ISelectedEntityInvoker<BaseEntityModel<QueryExpression>>() { - public void invoke(BaseEntityModel<GridCustomFilter> selectedItem) + public void invoke(BaseEntityModel<QueryExpression> selectedItem) { - GridCustomFilter query = selectedItem.getBaseObject(); - new QueryEditor(viewContext, query, createRefreshGridAction()).show(); + QueryExpression query = selectedItem.getBaseObject(); + new QueryEditor(viewContext, query, createRefreshGridAction()) + .show(); } }); @@ -148,7 +150,7 @@ public class QueryBrowserGrid extends AbstractSimpleBrowserGrid<GridCustomFilter new AbstractCreateDialogListener() { @Override - protected Dialog createDialog(List<GridCustomFilter> selected, + protected Dialog createDialog(List<QueryExpression> selected, IBrowserGridActionInvoker invoker) { return new DeletionConfirmationDialog(viewContext, selected, @@ -161,27 +163,27 @@ public class QueryBrowserGrid extends AbstractSimpleBrowserGrid<GridCustomFilter } @Override - protected IColumnDefinitionKind<GridCustomFilter>[] getStaticColumnsDefinition() + protected IColumnDefinitionKind<QueryExpression>[] getStaticColumnsDefinition() { return QueryColDefKind.values(); } @Override - protected List<IColumnDefinition<GridCustomFilter>> getInitialFilters() + protected List<IColumnDefinition<QueryExpression>> getInitialFilters() { return asColumnFilters(new QueryColDefKind[] { QueryColDefKind.NAME, QueryColDefKind.PUBLIC }); } @Override - protected void listEntities(DefaultResultSetConfig<String, GridCustomFilter> resultSetConfig, - AbstractAsyncCallback<ResultSet<GridCustomFilter>> callback) + protected void listEntities(DefaultResultSetConfig<String, QueryExpression> resultSetConfig, + AbstractAsyncCallback<ResultSet<QueryExpression>> callback) { viewContext.getService().listQueries(resultSetConfig, callback); } @Override - protected void prepareExportEntities(TableExportCriteria<GridCustomFilter> exportCriteria, + protected void prepareExportEntities(TableExportCriteria<QueryExpression> exportCriteria, AbstractAsyncCallback<String> callback) { viewContext.getService().prepareExportQueries(exportCriteria, callback); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryEditor.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryEditor.java index b927763b431e87bfea68e09b1dc0c3f1c8499084..126c3ff7abbceaa8eab8640394d142ab601c7b27 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryEditor.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/module/QueryEditor.java @@ -33,8 +33,8 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.field.M import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.widget.AbstractRegistrationDialog; import ch.systemsx.cisd.openbis.generic.client.web.client.application.util.IDelegatedAction; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DatabaseModificationKind; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GridCustomFilter; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExpression; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.QueryExpression; import ch.systemsx.cisd.openbis.plugin.query.client.web.client.IQueryClientServiceAsync; import ch.systemsx.cisd.openbis.plugin.query.client.web.client.application.Constants; import ch.systemsx.cisd.openbis.plugin.query.client.web.client.application.Dict; @@ -56,10 +56,10 @@ public class QueryEditor extends AbstractRegistrationDialog private final CheckBoxField isPublicField; - private final GridCustomFilter queryOrNull; + private final QueryExpression queryOrNull; public QueryEditor(IViewContext<IQueryClientServiceAsync> viewContext, - GridCustomFilter queryOrNull, IDelegatedAction refreshAction) + QueryExpression queryOrNull, IDelegatedAction refreshAction) { super(viewContext, viewContext.getMessage(queryOrNull == null ? Dict.QUERY_CREATE_TITLE : Dict.QUERY_EDIT_TITLE), refreshAction); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/ui/columns/QueryColDefKind.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/ui/columns/QueryColDefKind.java index fc7b4062e6177125e63c6ff561af0b349bf3fd82..6ffdf77e2600b8311b05d59a3fc4a8b761c8ca3a 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/ui/columns/QueryColDefKind.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/client/application/ui/columns/QueryColDefKind.java @@ -20,73 +20,73 @@ import ch.systemsx.cisd.openbis.generic.client.web.client.application.Dict; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.AbstractColumnDefinitionKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.IColumnDefinitionKind; import ch.systemsx.cisd.openbis.generic.client.web.client.application.ui.columns.framework.renderers.SimpleYesNoRenderer; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GridCustomFilter; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.QueryExpression; /** * @author Franz-Josef Elmer */ -public enum QueryColDefKind implements IColumnDefinitionKind<GridCustomFilter> +public enum QueryColDefKind implements IColumnDefinitionKind<QueryExpression> { - NAME(new AbstractColumnDefinitionKind<GridCustomFilter>(Dict.NAME) + NAME(new AbstractColumnDefinitionKind<QueryExpression>(Dict.NAME) { @Override - public String tryGetValue(GridCustomFilter entity) + public String tryGetValue(QueryExpression entity) { return entity.getName(); } }), - DESCRIPTION(new AbstractColumnDefinitionKind<GridCustomFilter>(Dict.DESCRIPTION) + DESCRIPTION(new AbstractColumnDefinitionKind<QueryExpression>(Dict.DESCRIPTION) { @Override - public String tryGetValue(GridCustomFilter entity) + public String tryGetValue(QueryExpression entity) { return entity.getDescription(); } }), - EXPRESSION(new AbstractColumnDefinitionKind<GridCustomFilter>( + EXPRESSION(new AbstractColumnDefinitionKind<QueryExpression>( ch.systemsx.cisd.openbis.plugin.query.client.web.client.application.Dict.SQL_QUERY, true) { @Override - public String tryGetValue(GridCustomFilter entity) + public String tryGetValue(QueryExpression entity) { return entity.getExpression(); } }), - PUBLIC(new AbstractColumnDefinitionKind<GridCustomFilter>(Dict.IS_PUBLIC, true) + PUBLIC(new AbstractColumnDefinitionKind<QueryExpression>(Dict.IS_PUBLIC, true) { @Override - public String tryGetValue(GridCustomFilter entity) + public String tryGetValue(QueryExpression entity) { return SimpleYesNoRenderer.render(entity.isPublic()); } }), - REGISTRATOR(new AbstractColumnDefinitionKind<GridCustomFilter>(Dict.REGISTRATOR, true) + REGISTRATOR(new AbstractColumnDefinitionKind<QueryExpression>(Dict.REGISTRATOR, true) { @Override - public String tryGetValue(GridCustomFilter entity) + public String tryGetValue(QueryExpression entity) { return renderRegistrator(entity); } }), - REGISTRATION_DATE(new AbstractColumnDefinitionKind<GridCustomFilter>(Dict.REGISTRATION_DATE, + REGISTRATION_DATE(new AbstractColumnDefinitionKind<QueryExpression>(Dict.REGISTRATION_DATE, AbstractColumnDefinitionKind.DATE_COLUMN_WIDTH, true) { @Override - public String tryGetValue(GridCustomFilter entity) + public String tryGetValue(QueryExpression entity) { return renderRegistrationDate(entity); } }); - private final AbstractColumnDefinitionKind<GridCustomFilter> columnDefinitionKind; + private final AbstractColumnDefinitionKind<QueryExpression> columnDefinitionKind; - private QueryColDefKind(AbstractColumnDefinitionKind<GridCustomFilter> columnDefinitionKind) + private QueryColDefKind(AbstractColumnDefinitionKind<QueryExpression> columnDefinitionKind) { this.columnDefinitionKind = columnDefinitionKind; } @@ -96,7 +96,7 @@ public enum QueryColDefKind implements IColumnDefinitionKind<GridCustomFilter> return name(); } - public AbstractColumnDefinitionKind<GridCustomFilter> getDescriptor() + public AbstractColumnDefinitionKind<QueryExpression> getDescriptor() { return columnDefinitionKind; } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/server/QueryClientService.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/server/QueryClientService.java index 518e7cd86f579ff12cf873e88c38ba8769ae9e39..4b757eefb83f8f305b39dd3c11db0b09a53136fb 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/server/QueryClientService.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/client/web/server/QueryClientService.java @@ -34,9 +34,9 @@ import ch.systemsx.cisd.openbis.generic.client.web.server.resultset.IOriginalDat import ch.systemsx.cisd.openbis.generic.client.web.server.translator.UserFailureExceptionTranslator; import ch.systemsx.cisd.openbis.generic.shared.IServer; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GridCustomFilter; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IFilterOrColumnUpdates; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExpression; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.QueryExpression; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; import ch.systemsx.cisd.openbis.plugin.query.client.web.client.IQueryClientService; import ch.systemsx.cisd.openbis.plugin.query.shared.IQueryServer; @@ -100,7 +100,7 @@ public class QueryClientService extends AbstractClientService implements IQueryC } } - public List<GridCustomFilter> listQueries() + public List<QueryExpression> listQueries() throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { try @@ -113,15 +113,15 @@ public class QueryClientService extends AbstractClientService implements IQueryC } } - public ResultSet<GridCustomFilter> listQueries( - final IResultSetConfig<String, GridCustomFilter> resultSetConfig) + public ResultSet<QueryExpression> listQueries( + final IResultSetConfig<String, QueryExpression> resultSetConfig) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { try { - return listEntities(resultSetConfig, new IOriginalDataProvider<GridCustomFilter>() + return listEntities(resultSetConfig, new IOriginalDataProvider<QueryExpression>() { - public List<GridCustomFilter> getOriginalData() throws UserFailureException + public List<QueryExpression> getOriginalData() throws UserFailureException { return queryServer.listQueries(getSessionToken()); } @@ -132,7 +132,7 @@ public class QueryClientService extends AbstractClientService implements IQueryC } } - public String prepareExportQueries(TableExportCriteria<GridCustomFilter> criteria) + public String prepareExportQueries(TableExportCriteria<QueryExpression> criteria) throws ch.systemsx.cisd.openbis.generic.client.web.client.exception.UserFailureException { return prepareExportEntities(criteria); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java index 1b1bfb226695433c43683913d5279e5c9220b163..0e46a090fa45792513f06dc3e8e5f4e43009ca0b 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServer.java @@ -37,15 +37,15 @@ import ch.systemsx.cisd.openbis.generic.server.dataaccess.IQueryDAO; import ch.systemsx.cisd.openbis.generic.server.plugin.IDataSetTypeSlaveServerPlugin; import ch.systemsx.cisd.openbis.generic.server.plugin.ISampleTypeSlaveServerPlugin; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GridCustomFilter; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IFilterOrColumnUpdates; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExpression; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.QueryExpression; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; import ch.systemsx.cisd.openbis.generic.shared.dto.QueryPE; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; -import ch.systemsx.cisd.openbis.generic.shared.translator.GridCustomExpressionTranslator.QueryTranslator; import ch.systemsx.cisd.openbis.plugin.query.shared.IQueryServer; import ch.systemsx.cisd.openbis.plugin.query.shared.ResourceNames; +import ch.systemsx.cisd.openbis.plugin.query.shared.translator.QueryTranslator; /** * @author Franz-Josef Elmer @@ -122,7 +122,7 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS } } - public List<GridCustomFilter> listQueries(String sessionToken) + public List<QueryExpression> listQueries(String sessionToken) { checkSession(sessionToken); @@ -176,7 +176,7 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS public void updateQuery(String sessionToken, IFilterOrColumnUpdates updates) { checkSession(sessionToken); - + try { IQueryDAO queryDAO = getDAOFactory().getQueryDAO(); diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServerLogger.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServerLogger.java index 2d7d19f55c91330e3363bc7ea360cd1ba3949fde..e32cf2c2e0d61262017ffb7523fb84dabe90a266 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServerLogger.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/server/QueryServerLogger.java @@ -21,9 +21,9 @@ import java.util.List; import ch.systemsx.cisd.authentication.ISessionManager; import ch.systemsx.cisd.openbis.generic.server.AbstractServerLogger; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GridCustomFilter; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IFilterOrColumnUpdates; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExpression; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.QueryExpression; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; import ch.systemsx.cisd.openbis.generic.shared.dto.Session; import ch.systemsx.cisd.openbis.plugin.query.shared.IQueryServer; @@ -51,7 +51,7 @@ class QueryServerLogger extends AbstractServerLogger implements IQueryServer return null; } - public List<GridCustomFilter> listQueries(String sessionToken) + public List<QueryExpression> listQueries(String sessionToken) { logAccess(sessionToken, "list_queries"); return null; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/IQueryServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/IQueryServer.java index 458f1e074ee1b4a749471b5c512ff52f30384ed3..6b977a5931e13df8eb667c23b5fa7868e1525451 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/IQueryServer.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/IQueryServer.java @@ -27,9 +27,9 @@ import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.RoleSet; import ch.systemsx.cisd.openbis.generic.shared.authorization.annotation.RolesAllowed; import ch.systemsx.cisd.openbis.generic.shared.authorization.validator.ExpressionValidator; import ch.systemsx.cisd.openbis.generic.shared.basic.TechId; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.GridCustomFilter; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IFilterOrColumnUpdates; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExpression; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.QueryExpression; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.TableModel; import ch.systemsx.cisd.openbis.plugin.query.shared.authorization.predicate.DeleteQueryPredicate; import ch.systemsx.cisd.openbis.plugin.query.shared.authorization.predicate.UpdateQueryPredicate; @@ -51,18 +51,17 @@ public interface IQueryServer extends IServer @Transactional @RolesAllowed(RoleSet.OBSERVER) @ReturnValueFilter(validatorClass = ExpressionValidator.class) - public List<GridCustomFilter> listQueries(String sessionToken); - + public List<QueryExpression> listQueries(String sessionToken); + @Transactional @RolesAllowed(RoleSet.POWER_USER) public void registerQuery(String sessionToken, NewExpression expression); - + @Transactional @RolesAllowed(RoleSet.POWER_USER) - public void deleteQueries( - String sessionToken, + public void deleteQueries(String sessionToken, @AuthorizationGuard(guardClass = DeleteQueryPredicate.class) List<TechId> filterIds); - + @Transactional @RolesAllowed(RoleSet.POWER_USER) public void updateQuery( diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/translator/QueryTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/translator/QueryTranslator.java new file mode 100644 index 0000000000000000000000000000000000000000..b98a8db420f3635c44e9c799b557b996ccc27fec --- /dev/null +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/translator/QueryTranslator.java @@ -0,0 +1,66 @@ +/* + * Copyright 2010 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.plugin.query.shared.translator; + +import static org.apache.commons.lang.StringEscapeUtils.escapeHtml; + +import java.util.ArrayList; +import java.util.List; + +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.QueryExpression; +import ch.systemsx.cisd.openbis.generic.shared.dto.QueryPE; +import ch.systemsx.cisd.openbis.generic.shared.translator.GridCustomExpressionTranslator; +import ch.systemsx.cisd.openbis.generic.shared.util.ExpressionUtil; + +/** + * A {@link QueryExpression} <---> {@link QueryPE} translator. + * + * @author Piotr Buczek + */ +public final class QueryTranslator +{ + + private QueryTranslator() + { + // Can not be instantiated. + } + + public final static List<QueryExpression> translate(final List<QueryPE> queries) + { + final List<QueryExpression> result = new ArrayList<QueryExpression>(); + for (final QueryPE query : queries) + { + result.add(QueryTranslator.translate(query)); + } + return result; + } + + public final static QueryExpression translate(final QueryPE original) + { + if (original == null) + { + return null; + } + final QueryExpression result = new QueryExpression(); + result.setName(escapeHtml(original.getName())); + result.setupParameters(ExpressionUtil.extractParameters(original.getExpression())); + + GridCustomExpressionTranslator.translateExpression(original, result); + return result; + } + +}