Mercurial > dive4elements > river
view flys-client/src/main/java/de/intevation/flys/client/server/LoadArtifactServiceImpl.java @ 1314:4c716bec7822
Validate selection of pairs in wdiff, show error(s) if invalid.
flys-client/trunk@2952 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Wed, 12 Oct 2011 12:42:53 +0000 |
parents | 489e6a82fe84 |
children | a3c04eb326f3 |
line wrap: on
line source
package de.intevation.flys.client.server; import java.util.ArrayList; import java.util.HashMap; 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 { public static final String ERROR_LOAD_ARTIFACT = "error_load_artifact"; public Artifact load( Collection parent, Recommendation recom, String factory, String url, String locale ) throws ServerException { System.out.println( "LoadArtifactServiceImpl.load: " + recom.getMasterArtifact()); // 1) Clone the Artifact specified in >>recom<< Artifact clone = ArtifactHelper.createArtifact( url, locale, factory, recom); if (clone != null) { System.out.println("Successfully create Artifact Clone. Add now!"); Collection c = CollectionHelper.addArtifact( parent, clone, url, locale); if (c != null) { System.out.println("Successfully added Clone to Collection."); return clone; } } throw new ServerException(ERROR_LOAD_ARTIFACT); } /** * Clone one or more artifacts and add it to a collection, avoid duplicates. * * @param parent Collection where clones will be added to. * @param recommendations definitions of source of clone. * @param factory name of factory to use when cloning artifacts. * @return cloned artifacts (same artifact might be contained multiple * times). */ public Artifact[] loadMany( Collection parent, Recommendation[] recoms, String factory, String url, String locale ) throws ServerException { System.out.println("LoadArtifactServiceImpl.loadMany"); 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. System.out.println("LoadArtifactServiceImpl: Avoid reclones, " + "clone already exists."); artifacts.add(prevClone); } else { // Not already cloned. Artifact clone = ArtifactHelper.createArtifact( url, locale, factory, recom); if (clone != null) { System.out.println("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 :