Here is an interesting blog talking about some of the issues:
http://radar.oreilly.com/archives/2006/05/where_20_standards_1.html
This was written in 2006 and it could be that GeoRSS has come on stronger
since then.

You may well want to implement your app using GeoRSS. I forgot that I added
the RomeEventHandler. I see that JIRA issue OFBIZ-721 deals with RSS and my
issue is https://issues.apache.org/jira/browse/OFBIZ-1208. Maybe we should
use 1208 to capture discussion.

My controller.xml file has these:

    <!--handler name="wfs" type="view" class="
org.ofbiz.webapp.view.WfsViewHandler"/-->
    <handler name="rome" type="request" class="
org.ofbiz.webapp.event.RomeEventHandler"/>
...
    <request-map uri="ViewCustomRssFeed">
        <security https="false" auth="false"/>
        <event type="rome" invoke="generateCustomRssFeed"/>
        <response name="success" type="none"/>
        <response name="error" type="view" value="error"/>
    </request-map>

Here is the code for generateCustomRssFeed:


       public static Map generateCustomRssFeed(DispatchContext dctx, Map
context) {
           Debug.logInfo("generateCustomCustomRssFeed(0) context:" +
context, module);
           GenericValue userLogin = (GenericValue) context.get("userLogin");
           String entryLink = (String) context.get("entryLink");
           String feedType = (String) context.get("feedType");
           Locale locale = (Locale) context.get("locale");

           // create the main link
           String mainLink = (String) context.get("mainLink");

           LocalDispatcher dispatcher = dctx.getDispatcher();
           GenericDelegator delegator = dctx.getDelegator();

           // get the main blog content
           GenericValue content = null;
             // create the feed
           SyndFeed feed = new SyndFeedImpl();
           feed.setFeedType(feedType);
           feed.setLink(mainLink);

           feed.setTitle("Custom RSS Feed");
           feed.setDescription("Custom RSS Feed");
           Debug.logInfo("generateCustomRssFeed(1) feed:" + feed, module);
           feed.setEntries(generateEntryList(dispatcher, delegator,
entryLink, locale, userLogin));

           Map resp = ServiceUtil.returnSuccess();
           resp.put("wireFeed", feed.createWireFeed());
           return resp;
       }

       public static List generateEntryList(LocalDispatcher dispatcher,
GenericDelegator delegator, String entryLink, Locale locale, GenericValue
userLogin) {
           List entries = FastList.newInstance();
           List customList = null;
           Map nullMap = null;
           try {
               customList = delegator.findByAnd("CustomEntity", nullMap);
           } catch (GenericEntityException e) {
               Debug.logError(e, module);
           }

           if (UtilValidate.isEmpty(customList)) {
               return entries;
           }


               Iterator i = customList.iterator();
               while (i.hasNext()) {
                   GenericValue v = (GenericValue) i.next();
           Debug.logInfo("generateEntryList(1) v:" + v, module);
                   String sub = v.getString("customName");
                   if (sub != null) {
                       String thisLink = entryLink + "?customId=" +
v.getString("customId");
                       SyndContent desc = new SyndContentImpl();
                       desc.setType("text/plain");
                       desc.setValue(sub);

                       SyndEntry entry = new SyndEntryImpl();
                       entry.setTitle(v.getString("customName"));
                       entry.setPublishedDate(v.getTimestamp
("createdStamp"));
                       entry.setDescription(desc);
                       entry.setLink(thisLink);

//entry.setAuthor((v.getString("createdByUserLogin")));

                       GeoRSSModule geoRSSModule = new W3CGeoModuleImpl();
                       Double lon = v.getDouble("longitude");
                       Double lat = v.getDouble("latitude");
                       //GeoRSSModule geoRSSModule = new SimpleModuleImpl();
                       if (lon != null && lat != null) {
                           Position pos = new Position( lat.doubleValue(),
lon.doubleValue());
                           geoRSSModule.setPosition(pos);
                           entry.getModules().add(geoRSSModule);
                           Debug.logInfo("generateEntryList(2) entry:" +
entry, module);
                           entries.add(entry);
                       }
                   }
               }

           return entries;
       }

I have added most of this email to JIRA-1208. I should mention that this
work was sponsored by HotWax.

-Al

On 11/26/07, Chris Howe <[EMAIL PROTECTED]> wrote:
>
> From an OFBiz community perspective KML/Z would just be an output manner
> (simply done through freemarker templates) as there doesn't seem to be a
> whole lot of interest in storing data in XML (I floated the Xindice
> integration earlier in the year and while it works there doesn't seem to be
> much interest).  The storage seems to be better through adding geospatial
> tables or a secondary database and then linking it to a contentId.
>
> I need to do quite a bit of homework on the issue as a whole before I
> bloviate on the issue.  The topics that need to be decide on would be:
> 1) storage format
> 2) retrieval/output format(s)
> 3) miscellaneous tools (centroid, area, perimeter, etc calculations)
> 4) possibly rendering tools (if online map overlays are too limiting)
> Let me know if I'm missing areas while I get my reading list in order :-)
>
> ----- Original Message ----
> From: Al Byers <[EMAIL PROTECTED]>
> To: [email protected]
> Sent: Monday, November 26, 2007 12:18:02 PM
> Subject: Re: GIS Tools/modeling
>
> Chris,
>
> I am not sure that KML and KMZ are not better ways to go. I went the
> "community" route because it just seems to fit in with OFBiz's
> philosophy
> and even Google should be  (and I think is) using open source standards
> in
> their work. I should be able to discuss the advantages and
> disadvantages of
> the Google vs. the Geoserver/MapBuilder approaches, but I would have to
> research the KML/Z tech more, first.
>
> The question to me answered is whether or not KML/Z are as good at
> accessing
> Geoserver servers as the MapBuilder product. If they don't do as good a
> job,
> then I think that developers may sometimes wish to access data that is
> not
> served up by Google Maps and won't be able to.
>
> The other test for KML/Z is if you can do custom rollover popups with
> KML/Z.
> It is easy to do simple ones, but sometimes you may wish to do more
> complicated ones and I am not sure about the suitability of KML/Z for
> that -
> though I would guess it does fine.
>
> Please don't hesitate to discuss your issues here. Adding GIS to OFBiz
> would
> be a really cool add-on and the more people we can involve, the better.
>
> -Al
>
> On 11/26/07, Chris Howe <[EMAIL PROTECTED]> wrote:
> >
> > Very interesting. My implementation is extremely crude in comparison.
>   I
> > was only outputting KML and KMZ for Google Earth. It seems I have
> quite a
> > bit of homework to do before being able to add very much to the
> discussion.
> >
> > ----- Original Message ----
> > From: Al Byers <[EMAIL PROTECTED]>
> > To: [email protected]
> > Sent: Monday, November 26, 2007 10:46:31 AM
> > Subject: Re: GIS Tools/modeling
> >
> >
> > Hey Chris,
> >
> > Yes, I did some GIS work a few months ago. What I did was add a WFS
> > interface to OFBiz. It is WfsEventHandler class in webapp.event. I
> did
> > a lot
> > of work with GeoServer (http://docs.codehaus.org/display/GEOS/Home)
> >   and
> > MapBuilder  (http://docs.codehaus.org/display/MAInterstinP/Home) for
> the
> > client
> > side.
> > I used MySQL for a geo spatial DB. I think GeoServer is definitely
> the
> > way
> > to go for the server since it is Java based and I had no trouble
> > including
> > it in my ofbiz tomcat setup. There is an effort to consolidate many
> of
> > the
> > various client packages (such as OpenLayers) and MapBuilder seems to
> be
> > at
> > the forefront of that effort (it uses OpenLayers to render, but adds
> an
> > XML
> > syntax for implementing client frontends.
> >
> > It is a very exciting time for the GIS community as they are working
> > together to create products and mashups that are the same sort of
> > Goliath-killers in the GIS world that OFBiz is becoming in the ERP
> > world.
> >
> > I also did a GeoRSS interface so that I could add markers to Google
> > Maps,
> > but I did not see how to add that to the ofbiz base code. I would be
> > willing
> > to share that code if we can see where to add it. See
> > http://docs.codehaus.org/display/GEOSDOC/GeoRSS.
> >
> > I think the WFS interface is the critical part, as it lets you use
> > other
> > servers like GeoServer to server up the base GIS layers, but lets you
> > use
> > OFBiz to store and server the "points of interest". I only modeled
> > points
> > with my WfsEventHandler class. It needs to be extended to do a
> > rectangular
> > "find". One of the key things that I did was implement the
> "ogc:filter"
> > using FreeMarker templates. That is the part that needs to be
> extended
> > to
> > implement the rectangular find.
> >
> > If you are not familiar with the WFS, WMS and WCS standards, you need
> > to be.
> > They are what make all the synergy possible.
> >
> > It has been a few months since I have had a chance to work on it
> (which
> > might as well be a few years at my age) so you might want to google
> > "gis"
> > and "ofbiz" to see what else I had to say about it. I would be glad
> to
> > discuss and work on something more substantial for ofbiz, but I am
> not
> > actively working on GIS at the moment, so my time will be limited.
> >
> > -Al
> >
> > On 11/26/07, Chris Howe <[EMAIL PROTECTED]> wrote:
> > >
> > > I just completed a rather remedial GIS implementation (very poorly
> > > designed, but works for it's purpose).  Anyone have any
> > > interest/experience/intelligent thought with this?
> > >
> > >
> > >
> >
> >
> >
> >
>
>
>
>

Reply via email to