adjusted legal info, filter changes, historized
Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/BeanReferenceFieldPresentation.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/BeanReferenceFieldPresentation.java
index 6e952bd..2256cd8 100644
--- a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/BeanReferenceFieldPresentation.java
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/BeanReferenceFieldPresentation.java
@@ -159,6 +159,9 @@
field.setDialog(true);
}
+ field.addValueChangeListener(e -> {
+ String evt = e.toString();
+ });
applyCaptions();
initializeField(field);
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/ComboBoxPresentation.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/ComboBoxPresentation.java
index 33d05f6..33490ee 100644
--- a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/ComboBoxPresentation.java
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/ComboBoxPresentation.java
@@ -151,6 +151,9 @@
combo.addStyleName(modelAccess.getCssClass());
}
+ combo.addValueChangeListener(e -> {
+ String evt = e.toString();
+ });
applyCaptions();
initializeField(combo);
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/SuggestTextFieldPresentation.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/SuggestTextFieldPresentation.java
index b0a8919..c94e208 100644
--- a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/SuggestTextFieldPresentation.java
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/SuggestTextFieldPresentation.java
@@ -12,6 +12,10 @@
*/
package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.internal;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
import java.util.Locale;
import org.eclipse.core.databinding.Binding;
@@ -23,29 +27,50 @@
import org.eclipse.emf.databinding.EMFObservables;
import org.eclipse.osbp.ecview.core.common.editpart.IElementEditpart;
import org.eclipse.osbp.ecview.core.common.model.core.YEmbeddableBindingEndpoint;
+import org.eclipse.osbp.ecview.core.common.model.core.YEmbeddableSelectionEndpoint;
import org.eclipse.osbp.ecview.core.common.model.core.YEmbeddableValueEndpoint;
import org.eclipse.osbp.ecview.core.common.notification.IReloadRequestService;
import org.eclipse.osbp.ecview.core.extension.model.extension.ExtensionModelPackage;
import org.eclipse.osbp.ecview.core.extension.model.extension.YSuggestTextField;
import org.eclipse.osbp.ecview.core.extension.model.extension.YSuggestTextFieldEvents;
import org.eclipse.osbp.ecview.core.ui.core.editparts.extension.ISuggestTextFieldEditpart;
+import org.eclipse.osbp.runtime.common.annotations.DtoUtils;
+import org.eclipse.osbp.runtime.common.annotations.HistIsCurrent;
+import org.eclipse.osbp.runtime.common.historized.UUIDHist;
import org.eclipse.osbp.runtime.common.state.ISharedStateContext;
+import org.eclipse.osbp.runtime.common.util.BeanUtils;
import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.common.AbstractFieldWidgetPresenter;
import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.internal.util.Util;
import org.eclipse.osbp.runtime.web.vaadin.common.data.BeanServiceLazyLoadingContainer;
import org.eclipse.osbp.runtime.web.vaadin.common.data.IBeanSearchServiceFactory;
+import org.eclipse.osbp.runtime.web.vaadin.common.data.IGlobalFilterable;
import org.eclipse.osbp.vaadin.addons.suggesttext.SuggestTextField;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.vaadin.data.Container;
+import com.vaadin.data.sort.SortOrder;
import com.vaadin.data.util.ObjectProperty;
+import com.vaadin.data.util.converter.Converter;
+import com.vaadin.data.util.filter.Compare;
+import com.vaadin.data.util.filter.Compare.Equal;
import com.vaadin.server.ErrorMessage;
+import com.vaadin.shared.data.sort.SortDirection;
+import com.vaadin.ui.Alignment;
import com.vaadin.ui.Component;
import com.vaadin.ui.Component.Focusable;
import com.vaadin.ui.ComponentContainer;
import com.vaadin.ui.Field;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.Grid.Column;
+import com.vaadin.ui.Grid.SelectionMode;
+import com.vaadin.ui.NativeButton;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
-// TODO: Auto-generated Javadoc
/**
* This presenter is responsible to render a text field on the given layout.
*/
@@ -72,6 +97,10 @@
private boolean updateBinding;
+ private Equal histCurrentFilter;
+
+ private Binding dtoBinding;
+
/**
* Constructor.
*
@@ -100,6 +129,12 @@
text.setImmediate(true);
text.setLimit(10);
text.setAutoHide(modelAccess.yField.isAutoHidePopup());
+ text.setShowHistoryDialogCallback(() -> showHistorizedDialog());
+
+ if (BeanUtils.isHistorized(modelAccess.yField.getType())) {
+ text.setHistorized(true);
+ }
+
setupComponent(text, getCastedModel());
associateWidget(text, modelAccess.yField);
@@ -110,7 +145,7 @@
text.setId(getEditpart().getId());
}
- property = new ObjectProperty<String>(null, String.class);
+ property = new ObjectProperty<>(null, String.class);
text.getTextField().setPropertyDataSource(property);
text.addSelectionChangedListener(new SuggestTextField.SelectionChangedListener() {
@@ -132,6 +167,13 @@
text.setContainerDataSource(datasource);
text.setCaptionPropertyId(modelAccess.yField.getItemCaptionProperty());
+ text.setCaptionPropertyRetriever((dto) -> {
+ if (dto == null) {
+ return "";
+ }
+ return (String) DtoUtils.getValue(dto, modelAccess.yField.getItemCaptionProperty());
+ });
+
text.setFilterPropertyId(modelAccess.yField.getItemFilterProperty());
String uuidProp = modelAccess.yField.getItemUUIDProperty();
@@ -177,6 +219,10 @@
Util.applyCaptions(getI18nService(), modelAccess.getLabel(), modelAccess.getLabelI18nKey(), getLocale(), text);
}
+ protected void showHistorizedDialog() {
+ new DialogHandleImp().open();
+ }
+
/*
* (non-Javadoc)
*
@@ -204,6 +250,8 @@
if (bindableValue instanceof YEmbeddableValueEndpoint) {
return internalGetValueEndpoint();
+ } else if (bindableValue instanceof YEmbeddableSelectionEndpoint) {
+ return internalGetDtoEndpoint();
}
throw new IllegalArgumentException("Not a valid input: " + bindableValue);
}
@@ -213,12 +261,20 @@
*
* @return the i observable value
*/
+ @SuppressWarnings("rawtypes")
protected IObservableValue internalGetValueEndpoint() {
// return the observable value for text
return EMFObservables.observeValue(castEObject(getModel()),
ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__VALUE);
}
+ @SuppressWarnings("rawtypes")
+ protected IObservableValue internalGetDtoEndpoint() {
+ // return the observable value for the current dto
+ return EMFObservables.observeValue(castEObject(getModel()),
+ ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__CURRENT_VALUE_DTO);
+ }
+
/**
* Creates the bindings for the given values.
*
@@ -250,6 +306,15 @@
unregisterBinding(keyBinding);
}
+ if (dtoBinding != null) {
+ unregisterBinding(dtoBinding);
+ }
+
+ if (histCurrentFilter != null) {
+ IGlobalFilterable filterable = (IGlobalFilterable) field.getContainerDataSource();
+ filterable.removeGlobalContainerFilter(histCurrentFilter);
+ }
+
if (field == null) {
return;
}
@@ -261,6 +326,18 @@
field.setSuggestionEnabled(false);
if (modelAccess.yField.isUseSuggestions()) {
+
+ if (BeanUtils.isHistorized(modelAccess.yField.getType())) {
+ java.lang.reflect.Field histCurrentField = BeanUtils.getField(modelAccess.yField.getType(),
+ HistIsCurrent.class);
+ if (histCurrentField != null) {
+ histCurrentFilter = new Compare.Equal(histCurrentField.getName(), true);
+
+ IGlobalFilterable filterable = (IGlobalFilterable) field.getContainerDataSource();
+ filterable.addGlobalContainerFilter(histCurrentFilter);
+ }
+ }
+
// in suggest mode do not update from UI to model
keyBinding = createBindingsByAccessor(castEObject(getModel()),
ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__KEYS, field, "keys",
@@ -270,6 +347,10 @@
ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__VALUE, field.getTextField(),
new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));
+ dtoBinding = createBindingsByAccessor(castEObject(getModel()),
+ ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__CURRENT_VALUE_DTO, field, "currentItemId",
+ new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
+ new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));
} else {
keyBinding = createBindingsByAccessor(castEObject(getModel()),
ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__KEYS, field, "keys",
@@ -279,6 +360,10 @@
ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__VALUE, field.getTextField(),
new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE),
new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));
+ dtoBinding = createBindingsByAccessor(castEObject(getModel()),
+ ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__CURRENT_VALUE_DTO, field, "currentItemId",
+ new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
+ new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));
}
field.setSuggestionEnabled(modelAccess.yField.isUseSuggestions());
@@ -286,6 +371,7 @@
// create the model binding from model to ECView-model
registerBinding(valueBinding);
registerBinding(keyBinding);
+ registerBinding(dtoBinding);
} finally {
updateBinding = false;
}
@@ -328,8 +414,8 @@
// unbind all active bindings
unbind();
- Component parent = ((Component) text.getParent());
- if (parent != null && parent instanceof ComponentContainer) {
+ Component parent = text.getParent();
+ if (parent instanceof ComponentContainer) {
((ComponentContainer) parent).removeComponent(text);
}
@@ -402,6 +488,10 @@
}
}
+ protected void internalSetLastHistorizedSuggestion(Object itemId) {
+ internalSetLastSuggestion(itemId);
+ }
+
protected void internalSetLastSuggestion(Object itemId) {
IReloadRequestService service = getViewContext().getService(IReloadRequestService.class.getName());
if (service != null && itemId != null) {
@@ -489,6 +579,50 @@
}
}
+ // @SuppressWarnings("serial")
+ // class HistorizedWrapper extends CustomComponent {
+ //
+ // private final Class<?> type;
+ // private Component content;
+ // private CustomTextField textField;
+ //
+ // private HistorizedWrapper(Class<?> type) {
+ // this.type = type;
+ // init();
+ // }
+ //
+ // protected void init() {
+ // content = createContent();
+ // setCompositionRoot(content);
+ // setSizeFull();
+ // }
+ //
+ // protected Component createContent() {
+ //
+ // textField = new CustomTextField();
+ // Component content = null;
+ // if (BeanUtils.isHistorized(type)) {
+ // HorizontalLayout layout = new HorizontalLayout();
+ // content = layout;
+ // layout.addComponent(textField);
+ //
+ // Button button = new Button("H");
+ // button.setSizeUndefined();
+ // layout.addComponent(button);
+ // button.addClickListener((e) -> {
+ // showHistorizedDialog();
+ // });
+ //
+ // layout.setExpandRatio(textField, 1.0f);
+ // } else {
+ // content = textField;
+ // }
+ //
+ // return content;
+ // }
+ //
+ // }
+
/**
* The Class CustomTextField.
*/
@@ -546,7 +680,7 @@
modelAccess.yField.setUseSuggestions(suggestionEnabled);
}
}
-
+
public int getTabIndex() {
return tabIndex;
}
@@ -584,4 +718,141 @@
}
}
}
+
+ @SuppressWarnings("serial")
+ class DialogHandleImp {
+
+ private Window window;
+
+ @SuppressWarnings("unchecked")
+ public void open() {
+
+ if (modelAccess.yField.getCurrentValueDTO() == null) {
+ return;
+ }
+
+ window = new Window();
+ window.setClosable(true);
+ window.setModal(true);
+
+ VerticalLayout content = new VerticalLayout();
+ // content.setHeight("450px");
+ // content.setWidth("600px");
+ content.setMargin(true);
+ content.setSpacing(true);
+ content.setSizeFull();
+ window.setContent(content);
+
+ VerticalLayout renderTarget = new VerticalLayout();
+ renderTarget.setMargin(true);
+ renderTarget.setSpacing(true);
+ renderTarget.setSizeFull();
+ content.addComponent(renderTarget);
+ content.setExpandRatio(renderTarget, 1.0f);
+ UI ui = SuggestTextFieldPresentation.this.text.getUI();
+ ui.addWindow(window);
+
+ Grid grid = new Grid();
+ grid.setHeight("450px");
+ grid.setWidth("600px");
+ grid.setSelectionMode(SelectionMode.SINGLE);
+ renderTarget.addComponent(grid);
+ renderTarget.setExpandRatio(grid, 1.0f);
+
+ IBeanSearchServiceFactory factory = getViewContext().getService(IBeanSearchServiceFactory.class.getName());
+ ISharedStateContext sharedState = getViewContext().getService(ISharedStateContext.class.getName());
+ @SuppressWarnings("rawtypes")
+ BeanServiceLazyLoadingContainer<?> datasource = new BeanServiceLazyLoadingContainer(
+ factory.createService(modelAccess.yField.getType(), true), modelAccess.yField.getType(), sharedState);
+
+ Object currentSelected = modelAccess.yField.getCurrentValueDTO();
+ java.lang.reflect.Field idField = DtoUtils.getIdField(currentSelected.getClass());
+ String idProperty = idField.getName();
+ String validFromProperty = "validFrom";
+ Object idValue = DtoUtils.getIdValue(currentSelected);
+ if (idValue instanceof UUIDHist) {
+ UUIDHist histIdValue = (UUIDHist) idValue;
+ idValue = histIdValue.id;
+ validFromProperty = idProperty + ".validFrom";
+ idProperty = idProperty + ".id";
+ }
+
+ // add the validFrom from UUIDHist as nested property
+ datasource.addNestedContainerProperty(validFromProperty);
+
+ Container.Filter filter = new Compare.Equal(idProperty, idValue);
+ datasource.addGlobalContainerFilter(filter);
+
+ grid.setContainerDataSource(datasource);
+
+ java.lang.reflect.Field domainKeyField = DtoUtils.getDomainKeyField(modelAccess.yField.getType());
+ java.lang.reflect.Field domainDescField = DtoUtils.getDomainDescriptionField(modelAccess.yField.getType());
+
+ // prepare columns to show
+ //
+ List<String> columnsToShow = new ArrayList<>();
+ if (domainKeyField != null) {
+ columnsToShow.add(domainKeyField.getName());
+ }
+ columnsToShow.add(validFromProperty);
+ if (domainDescField != null) {
+ columnsToShow.add(domainDescField.getName());
+ }
+ columnsToShow.add("histCurrent");
+
+ grid.setColumns(columnsToShow.toArray());
+
+ Column valFromColumn = grid.getColumn(validFromProperty);
+ valFromColumn.setConverter(new Converter<String, Long>() {
+
+ DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
+
+ @Override
+ public Long convertToModel(String value, Class<? extends Long> targetType, Locale locale)
+ throws Converter.ConversionException {
+ throw new IllegalStateException();
+ }
+
+ @Override
+ public String convertToPresentation(Long value, Class<? extends String> targetType, Locale locale)
+ throws Converter.ConversionException {
+ return df.format(new Date(value));
+ }
+
+ @Override
+ public Class<Long> getModelType() {
+ return Long.class;
+ }
+
+ @Override
+ public Class<String> getPresentationType() {
+ return String.class;
+ }
+
+ });
+
+ grid.setSortOrder(Collections.singletonList(new SortOrder(validFromProperty, SortDirection.DESCENDING)));
+
+ // create a button to use the current selection
+ //
+ NativeButton useBotton = new NativeButton("select version");
+ renderTarget.addComponent(useBotton);
+ useBotton.setEnabled(true);
+ renderTarget.setComponentAlignment(useBotton, Alignment.BOTTOM_RIGHT);
+
+ useBotton.addClickListener(e -> {
+ Object dto = grid.getSelectedRow();
+ internalSetLastHistorizedSuggestion(dto);
+ close();
+ });
+
+ window.setHeight("450px");
+ window.setWidth("600px");
+ window.center();
+ }
+
+ public void close() {
+ window.close();
+ }
+ }
}
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/services/WidgetAssocationsService.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/services/WidgetAssocationsService.java
index 2c562c5..17de654 100644
--- a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/services/WidgetAssocationsService.java
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/services/WidgetAssocationsService.java
@@ -21,6 +21,7 @@
import org.eclipse.osbp.ecview.core.common.model.core.YFocusable;
import org.eclipse.osbp.ecview.core.common.services.AbstractWidgetAssocationsService;
import org.eclipse.osbp.ecview.core.extension.model.extension.YPanel;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTabSheet;
import com.vaadin.ui.Component;
@@ -50,7 +51,7 @@
synchronized (associations) {
for (Map.Entry<Component, YElement> entry : associations.entrySet()) {
YElement yElement = entry.getValue();
- if (yElement instanceof YFocusable && !(yElement instanceof YPanel)) {
+ if (yElement instanceof YFocusable && !(yElement instanceof YPanel) && !(yElement instanceof YTabSheet)) {
int yElementLayoutIdx = ((YFocusable) yElement).getLayoutIdx();
if (layoutIdx == yElementLayoutIdx) {
return yElement;
diff --git a/org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin/feature.xml b/org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin/feature.xml
index 4922c01..46eec6b 100644
--- a/org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin/feature.xml
+++ b/org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin/feature.xml
@@ -17,7 +17,7 @@
label="%featureName"
version="0.9.0.qualifier"
provider-name="%providerName"
- plugin="org.eclipse.osbp.runtime.web.ecview.presentation.vaadin">
+ plugin="org.eclipse.osbp.license">
<description>
%description
diff --git a/org.eclipse.osbp.runtime.web.feature.testbase/feature.xml b/org.eclipse.osbp.runtime.web.feature.testbase/feature.xml
index 3e1e2ed..a9c92c1 100644
--- a/org.eclipse.osbp.runtime.web.feature.testbase/feature.xml
+++ b/org.eclipse.osbp.runtime.web.feature.testbase/feature.xml
@@ -1,69 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
- <!--#=======================================================================
- --><!--#
- Copyright
- (c)
- 2011,
- 2016
- -
- Loetz
- GmbH&Co.KG
- (69115
- Heidelberg,
- Germany)
- --><!--#
- All
- rights
- reserved.
- This
- program
- and
- the
- accompanying
- materials
- --><!--#
- are
- made
- available
- under
- the
- terms
- of
- the
- Eclipse
- Public
- License
- v1.0
- --><!--#
- which
- accompanies
- this
- distribution,
- and
- is
- available
- at
- --><!--#
- http://www.eclipse.org/legal/epl-v10.html
- --><!--#
- --><!--#
- Contributors:
- --><!--#
-
-
-
-
- Christophe
- Loetz
- (Loetz
- GmbH&Co.KG)
- -
- initial
- API
- and
- implementation
- --><!--#=======================================================================
- --><feature id="org.eclipse.osbp.runtime.web.feature.testbase" label="%featureName" version="0.9.0.qualifier" provider-name="%providerName">
+<feature id="org.eclipse.osbp.runtime.web.feature.testbase"
+ label="%featureName"
+ version="0.9.0.qualifier"
+ provider-name="%providerName"
+ plugin="org.eclipse.osbp.license">
<description>
%description
diff --git a/org.eclipse.osbp.runtime.web.feature.vaadin.addon.osgi/feature.xml b/org.eclipse.osbp.runtime.web.feature.vaadin.addon.osgi/feature.xml
index a14f3a3..58dbac5 100644
--- a/org.eclipse.osbp.runtime.web.feature.vaadin.addon.osgi/feature.xml
+++ b/org.eclipse.osbp.runtime.web.feature.vaadin.addon.osgi/feature.xml
@@ -17,7 +17,7 @@
label="%featureName"
version="0.9.0.qualifier"
provider-name="%providerName"
- plugin="org.eclipse.osbp.runtime.web.vaadin.osgi">
+ plugin="org.eclipse.osbp.license">
<description>
%description
diff --git a/org.eclipse.osbp.runtime.web.feature.vaadin.common/feature.xml b/org.eclipse.osbp.runtime.web.feature.vaadin.common/feature.xml
index 05c0ace..247ed35 100644
--- a/org.eclipse.osbp.runtime.web.feature.vaadin.common/feature.xml
+++ b/org.eclipse.osbp.runtime.web.feature.vaadin.common/feature.xml
@@ -17,7 +17,7 @@
label="%featureName"
version="0.9.0.qualifier"
provider-name="%providerName"
- plugin="org.eclipse.osbp.runtime.web.vaadin.common">
+ plugin="org.eclipse.osbp.license">
<description>
%description
diff --git a/org.eclipse.osbp.runtime.web.feature.vaadin.components/feature.xml b/org.eclipse.osbp.runtime.web.feature.vaadin.components/feature.xml
index a2ff89f..ac26e3c 100644
--- a/org.eclipse.osbp.runtime.web.feature.vaadin.components/feature.xml
+++ b/org.eclipse.osbp.runtime.web.feature.vaadin.components/feature.xml
@@ -17,7 +17,7 @@
label="%featureName"
version="0.9.0.qualifier"
provider-name="%providerName"
- plugin="org.eclipse.osbp.runtime.web.vaadin.components">
+ plugin="org.eclipse.osbp.license">
<description>
%description
diff --git a/org.eclipse.osbp.runtime.web.feature.vaadin.databinding/feature.xml b/org.eclipse.osbp.runtime.web.feature.vaadin.databinding/feature.xml
index 20b1490..b730bad 100644
--- a/org.eclipse.osbp.runtime.web.feature.vaadin.databinding/feature.xml
+++ b/org.eclipse.osbp.runtime.web.feature.vaadin.databinding/feature.xml
@@ -17,7 +17,7 @@
label="%featureName"
version="0.9.0.qualifier"
provider-name="%providerName"
- plugin="org.eclipse.osbp.runtime.web.vaadin.databinding">
+ plugin="org.eclipse.osbp.license">
<description>
%description
diff --git a/org.eclipse.osbp.runtime.web.feature.vaadin.osgi/feature.xml b/org.eclipse.osbp.runtime.web.feature.vaadin.osgi/feature.xml
index 04f3fe3..44a44a0 100644
--- a/org.eclipse.osbp.runtime.web.feature.vaadin.osgi/feature.xml
+++ b/org.eclipse.osbp.runtime.web.feature.vaadin.osgi/feature.xml
@@ -17,7 +17,8 @@
label="%featureName"
version="0.9.0.qualifier"
provider-name="%providerName"
- plugin="org.eclipse.osbp.runtime.web.vaadin.osgi">
+ plugin="org.eclipse.osbp.license">
+
<description>
%description
diff --git a/org.eclipse.osbp.runtime.web.target/.project b/org.eclipse.osbp.runtime.web.target/.project
deleted file mode 100644
index 3060072..0000000
--- a/org.eclipse.osbp.runtime.web.target/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.osbp.runtime.web.target</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.m2e.core.maven2Builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.m2e.core.maven2Nature</nature>
- </natures>
-</projectDescription>
diff --git a/org.eclipse.osbp.runtime.web.target/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.web.target/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 99f26c0..0000000
--- a/org.eclipse.osbp.runtime.web.target/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.web.target/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.web.target/.settings/org.eclipse.m2e.core.prefs
deleted file mode 100644
index f897a7f..0000000
--- a/org.eclipse.osbp.runtime.web.target/.settings/org.eclipse.m2e.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-activeProfiles=
-eclipse.preferences.version=1
-resolveWorkspaceProjects=true
-version=1
diff --git a/org.eclipse.osbp.runtime.web.target/org.eclipse.osbp.runtime.web.target.kepler.target b/org.eclipse.osbp.runtime.web.target/org.eclipse.osbp.runtime.web.target.kepler.target
deleted file mode 100644
index 1c8de48..0000000
--- a/org.eclipse.osbp.runtime.web.target/org.eclipse.osbp.runtime.web.target.kepler.target
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target includeMode="feature" name="org.eclipse.osbp.runtime.web.target.kepler" sequenceNumber="36">
-<locations>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.apache.httpcomponents.httpcore.source" version="4.1.4.v201203221030"/>
-<unit id="org.apache.httpcomponents.httpcore" version="4.1.4.v201203221030"/>
-<unit id="org.apache.httpcomponents.httpcore.nio" version="4.1.0.v201101201700"/>
-<unit id="org.apache.httpcomponents.httpcore.nio.source" version="4.1.0.v201101201700"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.apache.httpcomponents.httpclient" version="4.1.2.v201203221030"/>
-<unit id="org.apache.httpcomponents.httpclient.source" version="4.1.2.v201203221030"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.emf.ecp.ecview.feature.core.feature.group" version="0.0.1.201406272004"/>
-<repository location="http://lun.lunifera.org/downloads/p2/ecview/nightly/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.equinox.sdk.feature.group" version="3.9.0.v20140221-1852"/>
-<unit id="org.eclipse.platform.sdk" version="4.3.2.M20140221-1700"/>
-<unit id="org.eclipse.emf.sdk.feature.group" version="2.9.2.v20140203-1126"/>
-<repository location="http://download.eclipse.org/releases/kepler"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.junit.source" version="4.10.0.v4_10_0_v20120426-0900"/>
-<unit id="org.junit" version="4.10.0.v4_10_0_v20120426-0900"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.osbp.dependencies.feature.security.shiro.feature.group" version="1.2.2"/>
-<unit id="org.eclipse.osbp.runtime.feature.common.feature.group" version="0.0.1.201405120903"/>
-<unit id="org.eclipse.osbp.dependencies.feature.assert-utilities.feature.group" version="1.2.2"/>
-<unit id="org.eclipse.osbp.runtime.feature.common.source.feature.group" version="0.0.1.201405120903"/>
-<unit id="org.eclipse.osbp.dependencies.feature.vaadin.feature.group" version="7.1.9"/>
-<repository location="http://lun.lunifera.org/downloads/p2/lunifera/kepler/latest/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.apache.commons.math" version="2.1.0.v201105210652"/>
-<unit id="org.apache.commons.lang" version="2.6.0.v201205030909"/>
-<unit id="org.apache.commons.collections" version="3.2.0.v201005080500"/>
-<unit id="org.apache.commons.beanutils" version="1.8.0.v201205091237"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.osbp.dsl.feature.entities.headless.feature.group" version="0.0.1.201406261127"/>
-<unit id="org.eclipse.osbp.dsl.feature.dto.headless.source.feature.group" version="0.0.1.201406261127"/>
-<unit id="org.eclipse.osbp.dsl.feature.entities.headless.source.feature.group" version="0.0.1.201406261127"/>
-<unit id="org.eclipse.osbp.dsl.feature.common.headless.feature.group" version="0.0.1.201406261127"/>
-<unit id="org.eclipse.osbp.dsl.feature.common.headless.source.feature.group" version="0.0.1.201406261127"/>
-<unit id="org.eclipse.osbp.dsl.feature.dto.headless.feature.group" version="0.0.1.201406261127"/>
-<repository location="http://lun.lunifera.org/downloads/p2/lunifera/kepler/latest/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.xtext.redist.feature.group" version="2.6.1.v201406120726"/>
-<unit id="org.eclipse.xtext.ui.feature.group" version="2.6.1.v201406120726"/>
-<unit id="org.eclipse.xtext.runtime.feature.group" version="2.6.1.v201406120726"/>
-<unit id="org.eclipse.xtext.xbase.feature.group" version="2.6.1.v201406120726"/>
-<unit id="org.eclipse.xtext.examples.feature.group" version="2.6.1.v201406120726"/>
-<unit id="org.eclipse.xtext.sdk.feature.group" version="2.6.1.v201406120726"/>
-<unit id="org.eclipse.xtext.docs.feature.group" version="2.6.1.v201406120726"/>
-<repository location="http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases"/>
-</location>
-</locations>
-</target>
diff --git a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/BeanServiceLazyLoadingContainer.java b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/BeanServiceLazyLoadingContainer.java
index ca93392..b68e858 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/BeanServiceLazyLoadingContainer.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/BeanServiceLazyLoadingContainer.java
@@ -29,7 +29,6 @@
import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent;
import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherDataTag;
import org.eclipse.osbp.runtime.common.event.IEventDispatcher;
-import org.eclipse.osbp.runtime.common.filter.IDatamartService;
import org.eclipse.osbp.runtime.common.filter.SortBy;
import org.eclipse.osbp.runtime.common.filter.SortOrder;
import org.eclipse.osbp.runtime.common.state.ISharedStateContext;
@@ -62,7 +61,7 @@
public class BeanServiceLazyLoadingContainer<BEANTYPE> extends AbstractContainer
implements Filterable, Indexed, SimpleFilterable, ILazyRefreshFilterable, Sortable, ValueChangeListener,
Container.ItemSetChangeNotifier, Container.PropertySetChangeNotifier, IClearable, INestedPropertyAble<BEANTYPE>,
- IAlreadyLoadedItemIdProvider<BEANTYPE>, IEventDispatcher.Receiver {
+ IAlreadyLoadedItemIdProvider<BEANTYPE>, IEventDispatcher.Receiver, IGlobalFilterable {
/** The Constant LOGGER. */
private static final Logger LOGGER = LoggerFactory.getLogger(BeanServiceLazyLoadingContainer.class);
@@ -75,6 +74,14 @@
/** The sort order. */
private SortOrder sortOrder = new SortOrder();
+ /**
+ * These filters are not automatically removed by
+ * removeAllContainerFilters.<br>
+ * Eg, they are used by Historized DTOs to filter only their current
+ * version.
+ */
+ private List<Filter> globalFilters = new ArrayList<Filter>();
+
/** The filters. */
private List<Filter> filters = new ArrayList<Filter>();
@@ -719,6 +726,36 @@
fireItemSetChange();
}
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.web.vaadin.common.data.IGlobalFilterable#addGlobalContainerFilter(com.vaadin.data.Container.Filter)
+ */
+ @Override
+ public void addGlobalContainerFilter(Filter filter) throws UnsupportedFilterException {
+ if (!globalFilters.contains(filter)) {
+ globalFilters.add(filter);
+ }
+ if (!filters.contains(filter)) {
+ filters.add(filter);
+ clearCache();
+ }
+
+ fireItemSetChange();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osbp.runtime.web.vaadin.common.data.IGlobalFilterable#removeGlobalContainerFilter(com.vaadin.data.Container.Filter)
+ */
+ @Override
+ public void removeGlobalContainerFilter(Filter filter) throws UnsupportedFilterException {
+ globalFilters.remove(filter);
+
+ if (filters.remove(filter)) {
+ clearCache();
+
+ fireItemSetChange();
+ }
+ }
+
/**
* Clear cache.
*/
@@ -752,6 +789,10 @@
boolean hadFilters = !filters.isEmpty();
filters.clear();
+
+ // but add the globalFilters again
+ filters.addAll(globalFilters);
+
clearCache();
if (hadFilters) {
diff --git a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactory.java b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactory.java
index 9efbf59..77ea39f 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactory.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactory.java
@@ -15,7 +15,6 @@
package org.eclipse.osbp.runtime.web.vaadin.common.data;
-// TODO: Auto-generated Javadoc
/**
* This factory is exposed as an OSGi service and will return new bean search
* service instances for the given bean type.
@@ -33,5 +32,16 @@
* @return the i bean search service< bea n>
*/
<BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> type);
+
+ /**
+ * Returns the {@link IBeanSearchService} for the given type. If no proper
+ * implementation could be found, an in memory service will be returned.
+ *
+ * @param <BEAN> the generic type
+ * @param type the type
+ * @param ignoreHistorizedFilter the historized filter is ignored
+ * @return the i bean search service< bea n>
+ */
+ <BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> type, boolean ignoreHistorizedFilter);
}
diff --git a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactoryDelegate.java b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactoryDelegate.java
index 615c299..bfc34c8 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactoryDelegate.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactoryDelegate.java
@@ -15,7 +15,6 @@
package org.eclipse.osbp.runtime.web.vaadin.common.data;
-// TODO: Auto-generated Javadoc
/**
* Implementations are factories used by the {@link IBeanSearchServiceFactory}.
* Delegates are hooked up by {@link IBeanSearchServiceFactory} and requests for
@@ -35,4 +34,14 @@
*/
<BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> bean);
+ /**
+ * Returns the {@link IBeanSearchService} for the given type. If no proper
+ * implementation could be found, <code>null</code> must be returned.
+ *
+ * @param <BEAN> the generic type
+ * @param bean the bean
+ * @param ignoreHistorizedFilter the historized filter should be ignored
+ * @return the i bean search service
+ */
+ <BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> bean, boolean ignoreHistorizedFilter);
}
diff --git a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IGlobalFilterable.java b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IGlobalFilterable.java
new file mode 100644
index 0000000..91d33bc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IGlobalFilterable.java
@@ -0,0 +1,28 @@
+package org.eclipse.osbp.runtime.web.vaadin.common.data;
+
+import com.vaadin.data.Container.Filter;
+import com.vaadin.data.util.filter.UnsupportedFilterException;
+
+/**
+ * Allows to add global filters which are not automatically be removed.
+ *
+ */
+public interface IGlobalFilterable {
+
+ /**
+ * Adds a global filter which will never be removed automatically.
+ *
+ * @param filter
+ * @throws UnsupportedFilterException
+ */
+ void addGlobalContainerFilter(Filter filter) throws UnsupportedFilterException;
+
+ /**
+ * Removes a global filter which will never be removed automatically.
+ *
+ * @param filter
+ * @throws UnsupportedFilterException
+ */
+ void removeGlobalContainerFilter(Filter filter) throws UnsupportedFilterException;
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchService.java b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchService.java
index 2603af0..a71f641 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchService.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchService.java
@@ -34,16 +34,22 @@
private final LFilterConverter converter = new LFilterConverter();
private final IDTOService<BEAN> delegate;
private final Class<BEAN> type;
+ private boolean ignoreHistorizedFilter = false;
public StatefulDelegatingDtoSearchService(IDTOService<BEAN> delegate, Class<BEAN> type) {
+ this(delegate, type, false);
+ }
+
+ public StatefulDelegatingDtoSearchService(IDTOService<BEAN> delegate, Class<BEAN> type, boolean ignoreHistorizedFilter) {
this.delegate = delegate;
this.type = type;
-
+ this.ignoreHistorizedFilter = ignoreHistorizedFilter;
+
if (delegate == null) {
LOGGER.error("Delegate could not be found for " + type);
}
}
-
+
private boolean checkDelegate() {
if (delegate == null) {
LOGGER.error("Delegate could not be found for " + type);
@@ -57,8 +63,10 @@
if (!checkDelegate()) {
return 0;
}
-
- return delegate.size(createQuery(filters));
+ delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+ int size = delegate.size(createQuery(filters));
+ delegate.setIgnoreHistorizedFilter(false);
+ return size;
}
/**
@@ -91,8 +99,10 @@
if (!checkDelegate()) {
return false;
}
-
- return delegate.contains(bean, createQuery(filters));
+ delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+ boolean result = delegate.contains(bean, createQuery(filters));
+ delegate.setIgnoreHistorizedFilter(false);
+ return result;
}
@Override
@@ -100,7 +110,10 @@
if (!checkDelegate()) {
return null;
}
- return delegate.getNext(bean, createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+ BEAN result = delegate.getNext(bean, createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(false);
+ return result;
}
@Override
@@ -108,7 +121,10 @@
if (!checkDelegate()) {
return null;
}
- return delegate.getPrevious(bean, createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+ BEAN result = delegate.getPrevious(bean, createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(false);
+ return result;
}
@Override
@@ -116,7 +132,10 @@
if (!checkDelegate()) {
return null;
}
- return delegate.getFirst(createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+ BEAN result = delegate.getFirst(createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(false);
+ return result;
}
@Override
@@ -124,7 +143,10 @@
if (!checkDelegate()) {
return null;
}
- return delegate.getLast(createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+ BEAN result = delegate.getLast(createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(false);
+ return result;
}
@Override
@@ -132,7 +154,10 @@
if (!checkDelegate()) {
return false;
}
- return delegate.isFirst(bean, createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+ boolean result = delegate.isFirst(bean, createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(false);
+ return result;
}
@Override
@@ -140,7 +165,10 @@
if (!checkDelegate()) {
return false;
}
- return delegate.isLast(bean, createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+ boolean result = delegate.isLast(bean, createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(false);
+ return result;
}
@Override
@@ -148,7 +176,10 @@
if (!checkDelegate()) {
return 0;
}
- return delegate.indexOf(bean, createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+ int result = delegate.indexOf(bean, createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(false);
+ return result;
}
@Override
@@ -156,7 +187,10 @@
if (!checkDelegate()) {
return null;
}
- return delegate.getByIndex(index, createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+ BEAN result = delegate.getByIndex(index, createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(false);
+ return result;
}
@Override
@@ -164,7 +198,10 @@
if (!checkDelegate()) {
return null;
}
- return delegate.getByIndex(startIndex, numberOfItems, createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+ List<BEAN> result = delegate.getByIndex(startIndex, numberOfItems, createQuery(filters, sortOrder));
+ delegate.setIgnoreHistorizedFilter(false);
+ return result;
}
@Override
@@ -172,6 +209,9 @@
if (bean == null) {
return null;
}
- return delegate.get(DtoUtils.getIdValue(bean));
+ delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+ BEAN result = delegate.get(DtoUtils.getIdValue(bean));
+ delegate.setIgnoreHistorizedFilter(false);
+ return result;
}
}
diff --git a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchServiceFactoryDelegate.java b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchServiceFactoryDelegate.java
index 12f725e..b4f5c33 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchServiceFactoryDelegate.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchServiceFactoryDelegate.java
@@ -19,17 +19,21 @@
/**
* Tries to create a bean search service backed by a DTO-Service.
*/
-@SuppressWarnings("restriction")
@Component
public class StatefulDelegatingDtoSearchServiceFactoryDelegate implements
IBeanSearchServiceFactoryDelegate {
@Override
public <BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> bean) {
+ return createService(bean, false);
+ }
+
+ @Override
+ public <BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> bean, boolean ignoreHistorizedFilter) {
// if a service that delegates to the database could be found, use it.
IDTOService<BEAN> service = DtoServiceAccess.getService(bean);
if (service != null) {
- return new StatefulDelegatingDtoSearchService<BEAN>(service, bean);
+ return new StatefulDelegatingDtoSearchService<BEAN>(service, bean, ignoreHistorizedFilter);
}
return null;
}
diff --git a/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/container/DatasourceServiceFactoryDelegate.java b/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/container/DatasourceServiceFactoryDelegate.java
index 2c9b649..f5ed097 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/container/DatasourceServiceFactoryDelegate.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/container/DatasourceServiceFactoryDelegate.java
@@ -15,6 +15,7 @@
import org.eclipse.osbp.runtime.common.datasource.IDataSourceService;
import org.eclipse.osbp.runtime.web.vaadin.common.data.IBeanSearchService;
import org.eclipse.osbp.runtime.web.vaadin.common.data.IBeanSearchServiceFactoryDelegate;
+import org.eclipse.osbp.runtime.web.vaadin.common.data.IGlobalFilterable;
import org.eclipse.osbp.runtime.web.vaadin.common.data.StatefulInMemoryBeanSearchService;
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
@@ -33,10 +34,15 @@
private static final Logger LOGGER = LoggerFactory
.getLogger(DatasourceServiceFactoryDelegate.class);
+
+ @Override
+ public <DataSourceInfo> IBeanSearchService<DataSourceInfo> createService(Class<DataSourceInfo> type) {
+ return createService(type, false);
+ }
+
@SuppressWarnings("unchecked")
@Override
- public <DataSourceInfo> IBeanSearchService<DataSourceInfo> createService(
- Class<DataSourceInfo> type) {
+ public <DataSourceInfo> IBeanSearchService<DataSourceInfo> createService(Class<DataSourceInfo> type, boolean ignoreHistorizedFilter) {
if (type != IDataSourceService.DataSourceInfo.class) {
return null;
}
diff --git a/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanReferenceField.java b/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanReferenceField.java
index 79766da..96bcbb6 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanReferenceField.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanReferenceField.java
@@ -13,9 +13,12 @@
package org.eclipse.osbp.runtime.web.vaadin.components.fields;
import org.eclipse.core.databinding.Binding;
+import org.eclipse.osbp.runtime.common.annotations.HistIsCurrent;
import org.eclipse.osbp.runtime.common.state.ISharedStateContext;
+import org.eclipse.osbp.runtime.common.util.BeanUtils;
import org.eclipse.osbp.runtime.web.vaadin.common.data.BeanServiceLazyLoadingContainer;
import org.eclipse.osbp.runtime.web.vaadin.common.data.IBeanSearchService;
+import org.eclipse.osbp.runtime.web.vaadin.common.data.IGlobalFilterable;
import org.eclipse.osbp.runtime.web.vaadin.components.widget.LazyLoadingComboBox;
import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
@@ -24,6 +27,8 @@
import com.vaadin.data.Container.Filter;
import com.vaadin.data.Property;
import com.vaadin.data.util.ObjectProperty;
+import com.vaadin.data.util.filter.Compare;
+import com.vaadin.data.util.filter.Compare.Equal;
import com.vaadin.server.Resource;
import com.vaadin.server.ThemeResource;
import com.vaadin.shared.ui.combobox.FilteringMode;
@@ -149,6 +154,19 @@
if (filter != null) {
container.addContainerFilter(filter);
}
+
+ if (BeanUtils.isHistorized(type)) {
+ java.lang.reflect.Field histCurrentField = BeanUtils.getField(type,
+ HistIsCurrent.class);
+ if (histCurrentField != null) {
+ Equal histCurrentFilter = new Compare.Equal(histCurrentField.getName(), true);
+
+ IGlobalFilterable filterable = (IGlobalFilterable) container;
+ filterable.addGlobalContainerFilter(histCurrentFilter);
+ }
+ }
+
+
comboBox.setContainerDataSource(container);
comboBox.setFilteringMode(FilteringMode.CONTAINS);
diff --git a/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanSearchServiceFactory.java b/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanSearchServiceFactory.java
index ad9110b..baf85be 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanSearchServiceFactory.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanSearchServiceFactory.java
@@ -35,10 +35,15 @@
@Override
public <BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> bean) {
+ return createService(bean, false);
+ }
+
+ @Override
+ public <BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> bean, boolean ignoreHistorizedFilter) {
synchronized (delegates) {
for (IBeanSearchServiceFactoryDelegate delegate : delegates) {
- IBeanSearchService<BEAN> service = delegate.createService(bean);
+ IBeanSearchService<BEAN> service = delegate.createService(bean, ignoreHistorizedFilter);
if (service != null) {
return service;
}
@@ -59,4 +64,5 @@
delegates.remove(delegate);
}
+
}
diff --git a/setup/target-luna.target b/setup/target-luna.target
deleted file mode 100644
index 248464e..0000000
--- a/setup/target-luna.target
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target includeMode="feature" name="org.eclipse.osbp.xtext.builder.target.luna" sequenceNumber="105">
-<locations>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.apache.commons.lang3" version="3.1.0.v201403281430"/>
-<unit id="org.apache.commons.collections.source" version="3.2.0.v2013030210310"/>
-<unit id="org.apache.commons.beanutils.source" version="1.8.0.v201205091237"/>
-<unit id="org.apache.commons.beanutils" version="1.8.0.v201205091237"/>
-<unit id="org.apache.commons.lang3.source" version="3.1.0.v201403281430"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20140525021250/repository/"/>
-</location>
-<location path="${eclipse_home}" type="Profile"/>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.osbp.dependencies.feature.atmosphere.feature.group" version="2.1.2.vaadin3"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.databinding.feature.group" version="0.0.1.201408110750"/>
-<unit id="org.eclipse.osbp.xtext.builder.feature.service.xbase.source.feature.group" version="0.8.2.201408121142"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.common.source.feature.group" version="0.0.1.201408110750"/>
-<unit id="org.eclipse.osbp.xtext.builder.feature.service.jvmtypes.source.feature.group" version="0.8.2.201408121142"/>
-<unit id="org.eclipse.osbp.dependencies.feature.vaadin.feature.group" version="7.2.5"/>
-<unit id="org.eclipse.osbp.xtext.builder.feature.types.feature.group" version="0.8.2.201408121142"/>
-<unit id="org.eclipse.osbp.dependencies.feature.jetty.websockets.feature.group" version="8.1.14"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.components.source.feature.group" version="0.0.1.201408110750"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.common.feature.group" version="0.0.1.201408110750"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.components.feature.group" version="0.0.1.201408110750"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin.feature.group" version="0.0.1.201408110750"/>
-<unit id="org.eclipse.osbp.runtime.feature.common.source.feature.group" version="0.7.1.201407011710"/>
-<unit id="org.eclipse.osbp.xtext.builder.feature.service.jvmtypes.feature.group" version="0.8.2.201408121142"/>
-<unit id="org.eclipse.osbp.xtext.builder.feature.types.source.feature.group" version="0.8.2.201408121142"/>
-<unit id="org.eclipse.osbp.runtime.feature.common.feature.group" version="0.7.1.201407011710"/>
-<unit id="org.eclipse.osbp.xtext.builder.feature.service.xbase.feature.group" version="0.8.2.201408121142"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin.source.feature.group" version="0.0.1.201408110750"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.databinding.source.feature.group" version="0.0.1.201408110750"/>
-<repository location="http://lun.lunifera.org/downloads/p2/lunifera/luna/latest/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.apache.commons.collections.source" version="3.2.0.v2013030210310"/>
-<unit id="javax.xml.bind" version="2.2.0.v201105210648"/>
-<unit id="org.apache.commons.collections" version="3.2.0.v2013030210310"/>
-<unit id="javax.xml.stream" version="1.0.1.v201004272200"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20140525021250/repository/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="javax.activation.source" version="1.1.0.v201211130549"/>
-<unit id="javax.activation" version="1.1.0.v201211130549"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20140525021250/repository/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.ecp.ecview.feature.core.feature.group" version="0.7.0"/>
-<unit id="org.eclipse.emf.ecp.ecview.feature.core.source.feature.group" version="0.7.0"/>
-<repository location="http://lun.lunifera.org/downloads/p2/ecview/nightly/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.osbp.dependencies.feature.security.shiro.feature.group" version="1.2.3"/>
-<repository location="http://lun.lunifera.org/downloads/p2/lunifera/luna/latest/"/>
-</location>
-</locations>
-</target>