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>