Package org.geotools.process.impl

Source Code of org.geotools.process.impl.SimpleProcess

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2008, Open Source Geospatial Foundation (OSGeo)
*
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License as published by the Free Software Foundation;
*    version 2.1 of the License.
*
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*/
package org.geotools.process.impl;

import java.util.HashMap;
import java.util.Map;

import org.geotools.process.ProcessFactory;
import org.geotools.util.NullProgressListener;
import org.opengis.util.ProgressListener;

/**
* Provide an implementation for a simple process (ie so quick and easy it
* is not going to need to report progress as it goes).
*
* @author gdavis
*
* @source $URL$
*/
public abstract class SimpleProcess extends AbstractProcess {
    /** Can only run once... should not need to check this but we are being careful */
    private boolean started = false;
    protected Map<String,Object> input;
    protected Map<String,Object> result;
   
    protected SimpleProcess( ProcessFactory factory ){
        super( factory );
    }
       
    final public Map<String,Object> execute( Map<String,Object> input, ProgressListener monitor ) {
        if (started) throw new IllegalStateException("Process can only be run once");
        started = true;
       
        if( monitor == null ) monitor = new NullProgressListener();
        try {
            if( monitor.isCanceled() ) return null; // respect isCanceled
            this.input = input;
            result = new HashMap<String,Object>();
           
            process();
           
            return result;           
        }
        catch( Throwable eek){
            monitor.exceptionOccurred( eek );
            return null;
        }
        finally {
            monitor.complete();           
        }
    }
   
    /**
     * Implement your own process here.
     *
     * @throws Exception
     */
    public abstract void process() throws Exception;

    protected Object get(String key ){
        return input.get( key );
    }
}
TOP

Related Classes of org.geotools.process.impl.SimpleProcess

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.