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 :