| /** |
| * |
| * 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 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation |
| */ |
| package org.eclipse.osbp.xtext.datamart.common; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import org.eclipse.osbp.ui.api.datamart.DatamartFilter; |
| import org.eclipse.osbp.ui.api.datamart.DatamartFilter.FilterType; |
| |
| import com.vaadin.ui.Component; |
| |
| public class DatamartUiFilterFactory { |
| Map<String, Component> uiFilters = new HashMap<>(); |
| public Component getUiFilter(DatamartFilter filter, int numMultiRows){ |
| Component component = uiFilters.get(filter.getName()); |
| if (component == null) { |
| switch (filter.getMultipleType()) { |
| case SINGLE: |
| uiFilters.put(filter.getName(), new DatamartSingleSelect(filter.getData())); |
| break; |
| case MULTIPLE: |
| uiFilters.put(filter.getName(), new DatamartMultiSelect(numMultiRows, (filter.getType() != FilterType.EXCEPT), filter.getData())); |
| break; |
| default: |
| break; |
| } |
| switch (filter.getType()) { |
| case BETWEEN: |
| uiFilters.put(filter.getName(), new DatamartBetweenText()); |
| break; |
| case BETWEEN_DATE: |
| uiFilters.put(filter.getName(), new DatamartBetweenDate(filter.format, filter.resolution)); |
| break; |
| default: |
| break; |
| } |
| component = uiFilters.get(filter.getName()); |
| } |
| return component; |
| } |
| } |