Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/server/LoadArtifactServiceImpl.java @ 3719:e82acd5c86f7
Merged revisions 5495-5496,5509,5514-5515,5521-5526 via svnmerge from
file:///home/clients/bsh/bsh-generischer-viewer/Material/SVN/flys-client/trunk
........
r5495 | ingo | 2012-09-17 14:55:09 +0200 (Mo, 17 Sep 2012) | 1 line
Added missing i18n strings for minfo state description.
........
r5496 | ingo | 2012-09-17 15:47:43 +0200 (Mo, 17 Sep 2012) | 1 line
Tagged 'flys-client' as 2.9.1
........
r5509 | teichmann | 2012-09-18 17:54:37 +0200 (Di, 18 Sep 2012) | 1 line
Removed trailing whitespace.
........
r5514 | bricks | 2012-09-19 09:56:42 +0200 (Mi, 19 Sep 2012) | 2 lines
Add missing Changelog entry for r5472
........
r5515 | bricks | 2012-09-19 09:59:35 +0200 (Mi, 19 Sep 2012) | 2 lines
Implement a scrolling gauge info tree
........
r5521 | bricks | 2012-09-19 14:41:48 +0200 (Mi, 19 Sep 2012) | 2 lines
Add station info to the gauges
........
r5522 | bricks | 2012-09-19 14:43:43 +0200 (Mi, 19 Sep 2012) | 2 lines
Improve the handling of the GaugePanel in the ParameterList
........
r5523 | bricks | 2012-09-19 14:51:02 +0200 (Mi, 19 Sep 2012) | 4 lines
Improve the GaugePanel
Be locale aware and only load the gauge info if the river name changes.
........
r5524 | bricks | 2012-09-19 15:14:46 +0200 (Mi, 19 Sep 2012) | 5 lines
Fix a NullPointerException
When iterating over a list it must be checked if the reference to the list is
valid.
........
r5525 | bricks | 2012-09-19 15:16:24 +0200 (Mi, 19 Sep 2012) | 2 lines
Don't display the GaugePanel if no river is selected
........
r5526 | bricks | 2012-09-19 15:18:36 +0200 (Mi, 19 Sep 2012) | 2 lines
Use the wstunit from the river as unit for the Pegelnullpunkt
........
flys-client/tags/2.9.1@5528 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Wed, 19 Sep 2012 14:42:48 +0000 |
parents | 51ed89b754ae |
children |
line wrap: on
line source
package de.intevation.flys.client.server; import java.util.ArrayList; import java.util.HashMap; import org.apache.log4j.Logger; import de.intevation.flys.client.shared.exceptions.ServerException; import de.intevation.flys.client.shared.model.Artifact; import de.intevation.flys.client.shared.model.Collection; import de.intevation.flys.client.shared.model.Recommendation; import de.intevation.flys.client.client.services.LoadArtifactService; /** * This service creates a new Artifact based on a given Recommendation and puts * this new artifact into a specified Collection. * * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> */ public class LoadArtifactServiceImpl extends ArtifactServiceImpl implements LoadArtifactService { private static final Logger logger = Logger.getLogger(LoadArtifactServiceImpl.class); /** Error. */ public static final String ERROR_LOAD_ARTIFACT = "error_load_artifact"; /** * Clones or creates a single artifact and adds it to a collection. * * Note that in contrast to loadMany, always the given factory is used * to clone the artifact. * * @param parent collection to add recommendation to. * @param recom recommendation to create clone for. * @param factory factory to use. * @param locale the locale to translate messages. */ public Artifact load( Collection parent, Recommendation recom, String factory, String locale ) throws ServerException { logger.info( "LoadArtifactServiceImpl.load: " + recom.getMasterArtifact()); String url = getServletContext().getInitParameter("server-url"); // 1) Clone the Artifact specified in >>recom<< Artifact clone = ArtifactHelper.createArtifact( url, locale, factory, recom); if (clone != null) { logger.debug("Successfully create Artifact Clone. Add now!"); Collection c = CollectionHelper.addArtifact( parent, clone, url, locale); if (c != null) { logger.debug("Successfully added Clone to Collection."); return clone; } } throw new ServerException(ERROR_LOAD_ARTIFACT); } /** * Clone/create one or more artifacts and add it to a collection, avoiding * duplicates. * * @param parent Collection where clones will be added to. * @param recoms definitions of source of clone. * @param factory name of factory to use when cloning artifacts (can be * null in which case the recommendations getFactory() will * be used. * @param locale the locale to translate messages. * * @return cloned artifacts (same artifact might be contained multiple * times). */ public Artifact[] loadMany( Collection parent, Recommendation[] recoms, String factory, String locale ) throws ServerException { logger.debug("LoadArtifactServiceImpl.loadMany"); String url = getServletContext().getInitParameter("server-url"); ArrayList<Artifact> artifacts = new ArrayList<Artifact>(); HashMap<Recommendation, Artifact> cloneMap = new HashMap<Recommendation, Artifact>(); // TODO Respect the index of what to clone. // 1) Clone the Artifacts specified in >>recoms<< for (Recommendation recom : recoms) { // Do not do two clones of two identical recommendations. Artifact prevClone = cloneMap.get(recom); if (prevClone != null) { // Already cloned a recommendation like this. logger.debug("LoadArtifactServiceImpl: Avoid reclones, " + "clone already exists."); artifacts.add(prevClone); } else { // Not already cloned. String realFactory = factory != null ? factory : recom.getFactory(); logger.debug("One will be cloned with : " + realFactory); Artifact clone = ArtifactHelper.createArtifact( url, locale, realFactory, recom); if (clone != null) { logger.debug("LoadArtifactServiceImple: Successfully " + "loaded Artifact Clone."); Collection c = CollectionHelper.addArtifact( parent, clone, url, locale); if (c != null) { artifacts.add(clone); // Remember we cloned a recommendation like this. cloneMap.put(recom, clone); } else { throw new ServerException(ERROR_LOAD_ARTIFACT); } } } } return artifacts.toArray(new Artifact[artifacts.size()]); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :