com.holonplatform.vaadin.components.builders.PropertySelectInputBuilder Maven / Gradle / Ivy
/*
* Copyright 2016-2017 Axioma srl.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.holonplatform.vaadin.components.builders;
import com.holonplatform.core.datastore.DataTarget;
import com.holonplatform.core.datastore.Datastore;
import com.holonplatform.core.internal.utils.ObjectUtils;
import com.holonplatform.core.property.Property;
import com.holonplatform.core.property.PropertyBox;
import com.holonplatform.core.property.PropertySet;
import com.holonplatform.core.query.QueryConfigurationProvider;
import com.holonplatform.vaadin.components.Input;
import com.holonplatform.vaadin.data.ItemDataProvider;
/**
* Builder to create selection {@link Input}s with {@link Property} data source support.
*
* @param Value type
* @param Component type
* @param Selection type
* @param Concrete builder type
*
* @since 5.0.0
*/
public interface PropertySelectInputBuilder, S, B extends PropertySelectInputBuilder>
extends BaseSelectInputBuilder {
/**
* Set the selection items data provider to obtain items.
* @param dataProvider Items data provider (not null)
* @return this
*/
B dataSource(ItemDataProvider dataProvider);
/**
* Use given {@link Datastore} with given dataTarget
as items data source.
* @param Property type
* @param datastore Datastore to use (not null)
* @param dataTarget Data target to use to load items (not null)
* @param properties Item property set (not null)
* @param queryConfigurationProviders Optional additional {@link QueryConfigurationProvider}s
* @return this
*/
default
> B dataSource(Datastore datastore, DataTarget> dataTarget, Iterable
properties,
QueryConfigurationProvider... queryConfigurationProviders) {
ObjectUtils.argumentNotNull(properties, "Properties must be not null");
return dataSource(ItemDataProvider.create(datastore, dataTarget,
(properties instanceof PropertySet) ? (PropertySet>) properties : PropertySet.of(properties),
queryConfigurationProviders));
}
/**
* Use given {@link Datastore} with given dataTarget
as items data source.
* @param
Property type
* @param datastore Datastore to use (not null)
* @param dataTarget Data target to use to load items (not null)
* @param properties Item property set (not null)
* @return this
*/
@SuppressWarnings("unchecked")
default
> B dataSource(Datastore datastore, DataTarget> dataTarget, P... properties) {
ObjectUtils.argumentNotNull(properties, "Properties must be not null");
return dataSource(datastore, dataTarget, PropertySet.of(properties));
}
}