Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/CalculationSelectSinfo.java @ 9609:8232a3f5967b
#20 SinfoResultType
author | dnt_bjoernsen <d.tironi@bjoernsen.de> |
---|---|
date | Wed, 09 Oct 2019 15:43:39 +0200 |
parents | f692f5a0536a |
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.artifacts.sinfo; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.apache.log4j.Logger; import org.dive4elements.artifacts.Artifact; import org.dive4elements.artifacts.CallContext; import org.dive4elements.artifacts.CallMeta; import org.dive4elements.artifacts.common.utils.XMLUtils; import org.dive4elements.river.artifacts.model.CollisionHibernateFactory; import org.dive4elements.river.artifacts.resources.Resources; import org.dive4elements.river.artifacts.sinfo.collision.CollisionAccess; import org.dive4elements.river.artifacts.states.DefaultState; import org.dive4elements.river.model.sinfo.Collision; import org.w3c.dom.Element; /** * @author Gernot Belger */ public class CalculationSelectSinfo extends DefaultState { private static final long serialVersionUID = 1L; /** The log that is used in this class. */ private static Logger log = Logger.getLogger(CalculationSelectSinfo.class); @Override protected Element[] createItems(final XMLUtils.ElementCreator cr, final Artifact artifact, final String name, final CallContext context) { final CallMeta meta = context.getMeta(); final Collection<Element> calcs = new ArrayList<>(SinfoCalcMode.values().length); for (final SinfoCalcMode calcMode : SinfoCalcMode.values()) { final String calc = calcMode.name(); final String label = Resources.getMsg(meta, calc, calc); final Element element = createItem(cr, new String[] { label, calc }); calcs.add(element); } return calcs.toArray(new Element[calcs.size()]); } @Override public boolean validate(final Artifact artifact) throws IllegalArgumentException { log.debug("CalculationSelect.validate"); final SINFOArtifact sinfo = (SINFOArtifact) artifact; /* throws an exception if calculation mode is invalid */ final String calcmode = sinfo.getCalculationMode().toString(); // "toString()" is important if (calcmode.equals("sinfo_calc_collision")) { final CollisionAccess access = new CollisionAccess((SINFOArtifact) artifact); final List<Collision> list = CollisionHibernateFactory.getCollisionsByRiver(access.getRiver()); if (list.size() == 0) { throw new IllegalArgumentException("error_no_data_for_river"); } } return true; } }