All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.hasait.sprinkler.ui.relay.RelaysView Maven / Gradle / Ivy

Go to download

Sprinkler - Spring Boot application for controlling sprinklers using Raspberry Pi

The newest version!
/*
 * Copyright (C) 2021 by Sebastian Hasait (sebastian at hasait dot de)
 *
 * 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 de.hasait.sprinkler.ui.relay;


import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.data.selection.SelectionEvent;
import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.spring.annotation.SpringComponent;
import com.vaadin.flow.spring.annotation.UIScope;
import de.hasait.sprinkler.domain.relay.RelayPO;
import de.hasait.sprinkler.domain.relay.RelayRepository;
import de.hasait.sprinkler.service.relay.provider.RelayProvider;
import de.hasait.sprinkler.service.relay.provider.RelayProviderService;
import de.hasait.sprinkler.ui.AbstractCrudGrid;
import de.hasait.sprinkler.ui.MainLayout;
import de.hasait.sprinkler.ui.UiConstants;
import jakarta.annotation.security.PermitAll;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *
 */
@PermitAll
@Route(value = "relays", layout = MainLayout.class)
@PageTitle(RelaysView.TITLE)
@SpringComponent
@UIScope
public class RelaysView extends AbstractCrudGrid {

    public static final String TITLE = "Relays";

    private static final Logger LOG = LoggerFactory.getLogger(RelaysView.class);

    private final TestForm testForm;

    private final RelayProviderService relayProviderService;

    public RelaysView(RelayRepository repository, RelayForm beanForm, TestForm testForm, RelayProviderService relayProviderService) {
        super(3, repository, beanForm);

        this.testForm = testForm;
        this.relayProviderService = relayProviderService;

        add(testForm);

        Grid.Column name = beanGrid.addColumn(RelayPO::getName);
        name.setHeader(UiConstants.CAPTION_NAME);

        Grid.Column providerId = beanGrid.addColumn(RelayPO::getProviderId);
        providerId.setHeader(UiConstants.CAPTION_PROVIDER_ID);

        Grid.Column providerConfig = beanGrid.addColumn(RelayPO::getProviderConfig);
        providerConfig.setHeader(UiConstants.CAPTION_PROVIDER_CONFIG);

        Grid.Column active = beanGrid.addColumn(po -> {
            try {
                return relayProviderService.isActive(po.getProviderId(), po.getProviderConfig());
            } catch (RuntimeException e) {
                LOG.warn("{} failed", RelayProvider.class.getSimpleName(), e);
                // TODO make it somehow visible for the user
                return false;
            }
        });
        active.setHeader(UiConstants.CAPTION_ACTIVE);
    }

    @Override
    protected RelayPO newPO() {
        return new RelayPO();
    }


    @Override
    protected void onGridSelectionChanged(SelectionEvent event) {
        super.onGridSelectionChanged(event);

        testForm.setRelay(getGridSelection());
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy