Mercurial > dive4elements > river
view gwt-client/src/main/java/org/dive4elements/river/client/client/ui/AbstractSingleItemPanel.java @ 9661:9b8ba3b83a15
Importer (s/u-info) vegetation zones: new database column in vegetation_type table for german type name,
localized vegetation type names by querying the database instead of translating by resource property,
detecting and cancelling the import of a second vegetation zone file for a river,
detecting, logging, cancelling in case of wrong column titles,
detecting, logging and ignoring lines with missing (color) values,
comparing vegetation zone name and class with the database and logging+ignoring in case of inconsistencies,
starting the most elevated zone with 0 instead of -1 overflow days
author | mschaefer |
---|---|
date | Mon, 23 Mar 2020 16:38:12 +0100 |
parents | ba0561906f81 |
children |
line wrap: on
line source
/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde * Software engineering by * Björnsen Beratende Ingenieure GmbH * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.client.client.ui; import java.util.ArrayList; import java.util.List; import org.dive4elements.river.client.client.ui.FromToTableHelperPanel.IColumnClickHandler; import org.dive4elements.river.client.shared.model.Data; import org.dive4elements.river.client.shared.model.DataItem; import org.dive4elements.river.client.shared.model.DataList; import org.dive4elements.river.client.shared.model.DefaultData; import org.dive4elements.river.client.shared.model.DefaultDataItem; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.form.fields.TextItem; import com.smartgwt.client.widgets.layout.HLayout; import com.smartgwt.client.widgets.layout.VLayout; /** * @author Domenico Nardi Tironi * */ public abstract class AbstractSingleItemPanel extends AbstractUIProvider { private static final long serialVersionUID = 1L; public interface IMultiSingleBehaviour { void appendValue(final TextItem inputItem, final String value); List<String> validate(List<String> errors, String sValue); void setValidInputs(List<String> validInputs); void setErrorForItemMsg(String errorForItemMsg); boolean isMultipleInputsAllowed(); String titleForCreateOld(); String appendStringForCreateOld(); } private TextItem inputItem; private String title = null; protected List<String> validInputs = new ArrayList<String>(); private final IMultiSingleBehaviour behaviour; protected abstract String getDatakey(); protected abstract Canvas createWidget(final DataList data); public AbstractSingleItemPanel(final IMultiSingleBehaviour behaviour) { this.behaviour = behaviour; } @Override public final Canvas create(final DataList data) { final VLayout layout = new VLayout(); final IColumnClickHandler fromHandler = new IColumnClickHandler() { // add to external class @Override public void columnClicked(final String value) { appendValue(value); } }; this.title = data.get(0).getDescription(); final FromToTableHelperPanel helper = new FromToTableHelperPanel(data, getDatakey(), this.MSG, fromHandler, null); final Canvas table = helper.getTable(); this.validInputs = helper.getKeycolEntries(); this.behaviour.setValidInputs(this.validInputs); this.behaviour.setErrorForItemMsg(this.errorForItemMsg());// , this.MSG); this.helperContainer.addMember(table); final Canvas submit = getNextButton(); final Canvas widget = createWidget(data); layout.addMember(widget); layout.addMember(submit); return layout; } @Override public final Canvas createOld(final DataList dataList) { final List<Data> items = dataList.getAll(); final Data years = getData(items, getDatakey()); final DataItem[] yearsItems = years.getItems(); final String v1 = this.behaviour.isMultipleInputsAllowed() ? yearsItems[0].getStringValue().replace(" ", ", ") : yearsItems[0].getStringValue(); final String append = this.behaviour.appendStringForCreateOld() != null ? this.behaviour.appendStringForCreateOld() : ""; final Label old = new Label(new StringBuilder().append(v1).append(" ").append(append).toString()); final HLayout layout = new HLayout(); layout.setWidth("400px"); final String labelStr = this.behaviour.titleForCreateOld() != null ? this.behaviour.titleForCreateOld() : dataList.getLabel(); final Label label = new Label(labelStr); label.setWidth("200px"); final Canvas back = getBackButton(dataList.getState()); layout.addMember(label); layout.addMember(old); layout.addMember(back); return layout; } @Override protected final Data[] getData() { final List<String> errors = this.validate(); // do not allow advance state if (errors.size() > 0) { showErrors(errors); } if (this.inputItem != null && !this.inputItem.getValueAsString().isEmpty()) { final List<Data> data = new ArrayList<Data>(); final DataItem yearsdata = new DefaultDataItem(getDatakey(), getDatakey(), StringArrayParseHelper.trimRawString(this.inputItem.getValueAsString())); data.add(new DefaultData(getDatakey(), null, null, new DataItem[] { yearsdata })); return data.toArray(new Data[data.size()]); } return new Data[0]; } protected final TextItem createInputItem(final String title) { this.inputItem = PanelHelper.createItem(title);// new TextItem(title); return this.inputItem; } protected abstract String errorForItemMsg(); protected final void appendValue(final String value) { this.behaviour.appendValue(this.inputItem, value); } @Override public final List<String> validate() { final List<String> errors = new ArrayList<String>(); errors.addAll(ValidationHelper.checkForEmpty(this.inputItem, this.MSG)); final String sValue = this.inputItem.getValueAsString(); return this.behaviour.validate(errors, sValue); } }