Package com.geodetix.geo.ejb

Source Code of com.geodetix.geo.ejb.GeometryFacadeBean

/*
* GeometryFacadeBean.java
*
* Using PostGIS Geometry Types with EJB2 - Proof of Concept
*
* Copyright 2006, Geodetix S.r.l. (http://www.geodetix.it)
* and individual contributors as indicated by the @authors tag.
*
*
* 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, either 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.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA or visit the web at
* http://www.gnu.org.
*
*/
package com.geodetix.geo.ejb;


import com.geodetix.geo.exception.ApplicationGeoLayerException;
import com.geodetix.geo.interfaces.GeometryLocalHome;
import com.geodetix.geo.interfaces.GeometryLocal;
import com.geodetix.geo.util.GeometryUtil;
import com.geodetix.geo.value.GeometryValue;

import org.apache.commons.logging.*;

import org.postgis.*;

import java.rmi.*;

import java.util.*;

import javax.ejb.*;

import javax.naming.*;


/**
* A SessionFacade for managing Geometry beans.
*
* @ejb.bean
*     name="GeometryFacade"
*     jndi-name="geodetix/geo/GeometryFacade"
*     local-jndi-name="geodetix/geo/GeometryFacadeLocal"
*     type="Stateless"
*     view-type="both"
*     transaction-type="Container"
*
* @ejb.ejb-ref
*     ejb-name="Geometry"
*     view-type="local"
*     ref-name="ejb/GeometryLocal"
*
* @author  <a href="mailto:antonio.pace@geodetix.it">Antonio Pace</a>
*/
public abstract class GeometryFacadeBean implements SessionBean {
    private SessionContext ctx;
   
   
    /**
     * EJB Initializer.
     *
     * @ejb.create-method
     */
    public void ejbCreate() throws CreateException {}
   
    /**
     * Called after the EJB creation.
     */
    public void ejbPostCreate() throws CreateException {}
   
    /**
     * Save the EJB session context.
     */
    public void setSessionContext(SessionContext ctx)
    throws EJBException, RemoteException {
        this.ctx = ctx;
    }
   
   
   
 
    /* ============ Finder Methods ============== */
   
    /**
     * Find all of the geometry beans contained in a <code>Polygon</code>.
     *
     * @ejb.interface-method
     *
     * @param polygon The Polygon to search in.
     */
    public Collection findByPolygon(org.postgis.Polygon polygon)
    throws ApplicationGeoLayerException {
        try {
            GeometryLocalHome geometryHome = GeometryUtil.getLocalHome();
            Collection       geometries    = geometryHome.findByPolygon(polygon);
           
            List result = new ArrayList();
           
            for (Iterator iter = geometries.iterator(); iter.hasNext(); ) {
                GeometryLocal geometry = (GeometryLocal) iter.next();
               
                result.add(geometry.getGeometryValue());
            }
           
            return result;
           
        } catch (NamingException e) {
            throw new ApplicationGeoLayerException(e);
        } catch (FinderException e) {
            throw new ApplicationGeoLayerException(e);
        }
    }
   
   
   
   
   
    /* =============== Business Iinterfaces Methods ============= */
   
   
    /**
     * Creates a new Geometry Bean.
     *
     * @ejb.interface-method
     *
     * @param geometry the <code>org.postgis.Geometry</code> that has to be
     * included in this EJB.
     * @param description the textual description of this bean.
     * @return a value object representing the created EJB.
     */
    public GeometryValue createGeometry(org.postgis.Geometry geometry, String description)
    throws ApplicationGeoLayerException {
        try {
            GeometryLocalHome geometryHome  = GeometryUtil.getLocalHome();
            GeometryLocal     geometryLocal =
                    geometryHome.create(geometry,description);
           
            return geometryLocal.getGeometryValue();
        } catch (NamingException e) {
            throw new ApplicationGeoLayerException(e);
        } catch (CreateException e) {
            throw new ApplicationGeoLayerException(e);
        }
    }
   
   
   
   
   
    /* ================== BMP Utility Methods ================= */
   
   
   
    /**
     * Create a non-OpenGIS DataBase table used to persist the Geometry Beans.
     * <em>Note that in a real-world application this method should be protected
     * by using a role-based security policy.</em>
     *
     * @ejb.interface-method
     *
     * @throws ApplicationGeoLayerException thrown if an error occours
     * during table creation.
     */
    public void createGeometryTable() throws ApplicationGeoLayerException {
        try {
            GeometryLocalHome geometryHome = GeometryUtil.getLocalHome();
           
            geometryHome.makeDbTable();
        } catch (NamingException e) {
            throw new ApplicationGeoLayerException(e);
        } catch (Exception e) {
            throw new ApplicationGeoLayerException(e);
        }
    }
   
   
    /**
     * Create an OpenGIS compliant database table used to persist the
     * Geometry Beans.
     * <em>Note that in a real-world application this method should be protected
     * by using a role-based security policy.</em>
     *
     * @ejb.interface-method
     *
     * @throws ApplicationGeoLayerException thrown if an error occours
     * during table creation.
     */
    public void createGeometryTable(String gemetryType, int srid, int geometryDimension )
    throws ApplicationGeoLayerException {
        try {
            GeometryLocalHome geometryHome = GeometryUtil.getLocalHome();
           
            geometryHome.makeDbTable(gemetryType, srid,  geometryDimension);
           
        } catch (NamingException e) {
            throw new ApplicationGeoLayerException(e);
        } catch (Exception e) {
            throw new ApplicationGeoLayerException(e);
        }
    }
   
   
   
    /**
     * Remove the EJB's persistence table from the database.
     * <em>Note that in a real-world application this method should be protected
     * by using a role-based security policy.</em>
     *
     * @ejb.interface-method
     *
     * @throws ApplicationGeoLayerException thrown if an error occours
     * during table creation.
     */
    public void dropGeometryTable() throws ApplicationGeoLayerException {
        try {
            GeometryLocalHome geometryHome = GeometryUtil.getLocalHome();
           
            geometryHome.dropDbTable();
        } catch (NamingException e) {
            throw new ApplicationGeoLayerException(e);
        } catch (Exception e) {
            throw new ApplicationGeoLayerException(e);
        }
    }
   
   
   
}
TOP

Related Classes of com.geodetix.geo.ejb.GeometryFacadeBean

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.