ingo@1022: /*
ingo@1022: * Copyright (c) 2010 by Intevation GmbH
ingo@1022: *
ingo@1022: * This program is free software under the LGPL (>=v2.1)
ingo@1022: * Read the file LGPL.txt coming with the software for details
ingo@1022: * or visit http://www.gnu.org/licenses/ if it does not exist.
ingo@1022: */
ingo@1022:
tim@2: package de.intevation.gnv.artifactdatabase.client;
tim@2:
tim@957: import java.io.IOException;
tim@957: import java.io.OutputStream;
tim@957: import java.util.Collection;
tim@957: import java.util.Locale;
tim@957:
tim@957: import org.w3c.dom.Document;
tim@957:
tim@2: import de.intevation.gnv.artifactdatabase.client.exception.ArtifactDatabaseClientException;
ingo@665: import de.intevation.gnv.artifactdatabase.client.exception.ArtifactDatabaseInputException;
tim@9: import de.intevation.gnv.artifactdatabase.objects.ArtifactDescription;
ingo@673: import de.intevation.gnv.artifactdatabase.objects.ArtifactFactory;
tim@2: import de.intevation.gnv.artifactdatabase.objects.ArtifactObject;
tim@164: import de.intevation.gnv.artifactdatabase.objects.ArtifactStatisticsSet;
tim@12: import de.intevation.gnv.artifactdatabase.objects.InputParameter;
tim@402: import de.intevation.gnv.artifactdatabase.objects.map.MapService;
tim@2:
tim@2: /**
ingo@690: * This interface describes basic methods for the communication between artifact
ingo@690: * server and this client.
sascha@699: *
sascha@684: * @author Tim Englich
sascha@684: * @author Ingo Weinzierl
tim@2: */
tim@2: public interface ArtifactDatabaseClient {
tim@36:
ingo@1008: public final static String ARTIFACTDATABASE_COUNT_ID = "de.intevation.gnv.artifactdatabase.client.ArtifactDatabase.count";
tim@36:
ingo@1008: public final static String ARTIFACTDATABASE_URL_ID = "de.intevation.gnv.artifactdatabase.client.ArtifactDatabase.url";
tim@36:
tim@2: /**
tim@2: * Return the Artifactfactories which can be resolved.
sascha@681: *
tim@2: * @return the Artifactfactories which can be resolved.
ingo@690: * @throws ArtifactDatabaseClientException if a general error occured in the
ingo@690: * artifact server.
ingo@690: * @throws ArtifactDatabaseInputException if the input data was valid.
tim@2: */
tim@36: public Collection getArtifactFactories()
ingo@665: throws ArtifactDatabaseClientException, ArtifactDatabaseInputException;
tim@2:
tim@7: /**
ingo@690: * Call the create operation of the artifact server and returns a new
ingo@690: * artifact with the information returned by the artifact server.
sascha@699: *
tim@7: * @param artifactFactory
tim@9: * @return the new Artifact
ingo@690: * @throws ArtifactDatabaseClientException if a general error occured in the
ingo@690: * artifact server.
ingo@690: * @throws ArtifactDatabaseInputException if the input data was valid.
tim@7: */
tim@36: public ArtifactObject createNewArtifact(ArtifactObject artifactFactory)
ingo@665: throws ArtifactDatabaseClientException, ArtifactDatabaseInputException;
tim@7:
tim@9: /**
ingo@690: * Call the describe operation of the artifact server.
sascha@681: *
ingo@690: * @param artifactFactory
tim@9: * @param currentArtifact
sascha@699: * @param includeUI
tim@9: * @return the Current Artifact
ingo@690: * @throws ArtifactDatabaseClientException if a general error occured in the
ingo@690: * artifact server.
ingo@690: * @throws ArtifactDatabaseInputException if the input data was valid.
tim@9: */
tim@36: public ArtifactDescription getCurrentStepDescription(
ingo@665: ArtifactObject artifactFactory,
ingo@665: ArtifactObject currentArtifact,
ingo@665: boolean includeUI)
ingo@665: throws ArtifactDatabaseClientException, ArtifactDatabaseInputException;
tim@36:
tim@12: /**
sascha@681: *
tim@13: * @param artifactFactory
tim@12: * @param currentArtifact
tim@13: * @param target
tim@13: * @param inputParameter
ingo@690: * @return the artifact description.
ingo@690: * @throws ArtifactDatabaseClientException if a general error occured in the
ingo@690: * artifact server.
ingo@690: * @throws ArtifactDatabaseInputException if the input data was valid.
tim@12: */
tim@38: public ArtifactDescription doNextStep(
ingo@665: ArtifactObject artifactFactory,
ingo@665: ArtifactObject currentArtifact,
ingo@665: String target,
ingo@665: Collection inputParameter)
ingo@665: throws ArtifactDatabaseClientException, ArtifactDatabaseInputException;
tim@36:
tim@957: /**
tim@957: * Calls the advancecommand for the given Artifact at the Artifactdatabase.
tim@957: * Stepping to the given target using the given Artifactfactory
tim@957: * @param factory the Factory which provide the information about which
tim@957: * Artifactdatabase has to be called.
tim@957: * @param artifact the Artifact which should be moved to the next state.
tim@957: * @param target the Id of the next State which should the artifact should
tim@957: * be moved to.
tim@957: * @throws IOException
tim@957: * @throws ArtifactDatabaseClientException
tim@957: * @throws ArtifactDatabaseInputException
tim@957: */
ingo@394: public void doAdvance(
ingo@394: ArtifactObject factory,
ingo@394: ArtifactObject artifact,
ingo@665: String target)
tim@957: throws IOException,
tim@957: ArtifactDatabaseClientException,
tim@957: ArtifactDatabaseInputException;
ingo@394:
tim@13: /**
tim@13: * @param artifactFactory
tim@13: * @param currentArtifact
tim@13: * @param inputParameter
ingo@690: * @throws ArtifactDatabaseClientException if a general error occured in the
ingo@690: * artifact server.
ingo@690: * @throws ArtifactDatabaseInputException if the input data was valid.
tim@13: */
tim@36: public void doFeed(ArtifactObject artifactFactory,
ingo@665: ArtifactObject currentArtifact,
ingo@665: Collection inputParameter)
ingo@665: throws ArtifactDatabaseClientException, ArtifactDatabaseInputException;
tim@36:
tim@13: /**
ingo@690: * Call the out operation of the artifact server.
sascha@681: *
tim@13: * @param artifactFactory
tim@13: * @param currentArtifact
tim@13: * @param stream
tim@13: * @param targetName
ingo@690: * @param exportMode
tim@13: * @param mimeType
sascha@699: * @param inputParameter
tim@13: * @throws ArtifactDatabaseClientException
tim@13: */
ingo@583: public void doOutput(
ingo@583: ArtifactObject artifactFactory,
ingo@583: ArtifactObject currentArtifact,
ingo@583: OutputStream stream,
ingo@583: String targetName,
ingo@583: String exportMode,
ingo@583: String mimeType,
ingo@583: Collection inputParameter)
ingo@583: throws ArtifactDatabaseClientException;
tim@36:
ingo@670:
ingo@690: /**
ingo@690: * Write the current artifact to an xml file.
sascha@699: *
ingo@690: * @param artifactFactory
ingo@690: * @param currentArtifact
ingo@690: * @param out
ingo@690: * @throws ArtifactDatabaseClientException
ingo@690: */
ingo@670: public void doExport(
ingo@670: ArtifactObject artifactFactory,
ingo@670: ArtifactObject currentArtifact,
ingo@670: OutputStream out)
ingo@670: throws ArtifactDatabaseClientException;
ingo@670:
ingo@673:
ingo@690: /**
ingo@690: * Import an artifact from xml file.
sascha@699: *
ingo@690: * @param factory
ingo@690: * @param document
ingo@690: * @return a status message. If the import was successful, it contains
ingo@690: * information about the imported artifact, otherwise a failure is
ingo@690: * contained.
ingo@690: * @throws ArtifactDatabaseClientException
ingo@690: * @throws IOException
ingo@690: */
ingo@673: public Document doImport(
ingo@673: ArtifactFactory factory,
ingo@673: Document document)
ingo@673: throws ArtifactDatabaseClientException, IOException;
ingo@673:
tim@32: /**
ingo@690: * Publish shapefiles of an artifact as WMS layer.
sascha@699: *
ingo@570: * @param factory
ingo@570: * @param artifact
sascha@699: * @param inputParameter
ingo@570: * @return URL to wms service as string
ingo@690: * @throws ArtifactDatabaseClientException
sascha@699: * @throws ArtifactDatabaseInputException
ingo@570: */
ingo@668: public Document publishWMS(
ingo@668: ArtifactObject factory,
ingo@668: ArtifactObject artifact,
ingo@668: Collection inputParameter
tim@676: )throws ArtifactDatabaseClientException, ArtifactDatabaseInputException;
ingo@570:
ingo@570:
ingo@570: /**
ingo@690: * Start statistics calculation.
sascha@699: *
tim@32: * @param artifactFactory
tim@32: * @param currentArtifact
ingo@690: * @return the calculated statistic.
tim@32: * @throws ArtifactDatabaseClientException
tim@32: */
tim@164: public Collection calculateStatistics(
ingo@690: ArtifactObject artifactFactory,
ingo@690: ArtifactObject currentArtifact)
ingo@690: throws ArtifactDatabaseClientException;
sascha@681:
ingo@690: /**
ingo@690: * Set the current locale.
ingo@690: * @param locale
ingo@690: */
tim@40: public void setLocale(Locale locale);
sascha@681:
ingo@690: /**
ingo@703: * Get the current locale.
ingo@703: * @return the current locale.
ingo@703: */
ingo@703: public Locale getLocale();
ingo@703:
ingo@703: /**
ingo@690: * Returns some meta information about the currently selected
ingo@690: * ArtifactFactory.
ingo@690: *
ingo@690: * @param mapServices
ingo@690: * @param geometry
ingo@690: * @param srs
ingo@690: * @return the information.
ingo@690: * @throws ArtifactDatabaseClientException
ingo@690: * @throws ArtifactDatabaseInputException
ingo@690: */
ingo@665: public Collection getArtifactFactoryMetaInformation(
sascha@681: Collection mapServices,
sascha@681: String geometry,
ingo@665: String srs)
ingo@665: throws ArtifactDatabaseClientException, ArtifactDatabaseInputException;
sascha@681:
tim@2: }
sascha@700: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :