[
https://issues.apache.org/jira/browse/OFBIZ-276?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jacques Le Roux closed OFBIZ-276.
---------------------------------
Resolution: Duplicate
Assignee: Jacques Le Roux
> Froogle Data Export
> -------------------
>
> Key: OFBIZ-276
> URL: https://issues.apache.org/jira/browse/OFBIZ-276
> Project: OFBiz
> Issue Type: New Feature
> Components: product
> Affects Versions: SVN trunk
> Reporter: Marco Risaliti
> Assignee: Jacques Le Roux
> Priority: Minor
> Attachments: DataFile.patch, DataIO_Froogle.patch,
> DataIO_Froogle2.patch, froogle.php, froogle_patch.patch,
> ProductExportServices.java
>
>
> This is a copy of the old-jira issue
> http://jira.undersunconsulting.com/browse/OFBIZ-886 from Andrew Sykes.
> =====================================================
> Attached is a _very_ rough outline of how I think a froogle export would go.
> This needs a lot of work still, but I'm out of time, so hopefully someone
> else can take it up.
>
>
> All Comments Work Log Change History Sort Order:
> Comment by Andrew Sykes [16/May/06 01:43 PM] [ Permlink ]
> A rough outline
> Comment by rohit [17/May/06 04:44 AM] [ Permlink ]
> hi,
> i am very new to java and ofbiz. i have been using the oscommerce shopping
> cart for more than 3 years, but fell for the amazing functionality that ofbiz
> provides. Though oscommerce performs a very small part of the what ofbiz can
> it still has some very useful and essential functions for webmaster and web
> marketeers. i am attaching a froogle data exporter from oscommerce site. The
> file works independent of the oscommerce installation, i mean one need not
> have oscommerce installed to get it working. It works excellently and i used
> to set a cron object such that the file was run once a week.
> i hope this file will give an idea of how to develop a froogle data exporter
> for ofbiz. if i am not wrong we can also tweek this file to retreive the data
> from ofbiz database and export to froogle. this might be a temporary solution
> and may require one to have php installed, but i guess it will save valuable
> time.
> any comments or suggestions are welcome.
> rohit
> Comment by rohit [17/May/06 04:49 AM] [ Permlink ]
> if one needs more information about the file attached, please visit
> http://www.oscommerce.com/community/contributions,3876/category,all/search,froogle.
>
> oscommerce is a basic shoppinh cart, but with a very vibrant community, the
> feature and modules are very useful to any webmaster. if ofbiz could include
> some ideas from oscommerce, it could improve even better.
> rohit
> Comment by Andrew Sykes [17/May/06 06:39 AM] [ Permlink ]
> Rohit,
> This would be a VERY messy approach, and I'm not entirely convinced it would
> even work with OFBiz
> The code I've supplied is more than half of what is required to get a froogle
> export working.
> I have set it up as a service as that allows it to be scheduled using the
> JobScheduler.
> If you are looking for somewhere to start with OFBiz code, this is as good a
> place as any :-)
> Comment by David Yoon [17/May/06 01:19 PM] [ Permlink ]
> Hi guys, I'm also working on this issue, although I'm making something a bit
> more generic so you could add multiple comparison shopping sites. So far I've
> configured it to work (update, export, upload) for froogle, and shopAmex.
> Instead of recursing through all the product_categories, I was thinking of
> using the inventory_item table as the base, since most of the cs sites want
> the products that you upload to be available. currently I'm flattening the
> product, inventory_item, category, price, tables into a single export_product
> table which contains all the fields necessary for the various cs feed sites.
> The update for this table is taking quite a long time though (like 30 mins,
> since there are 22k products in the database). Any suggestions?
> d.
> Comment by Andrew Sykes [17/May/06 04:39 PM] [ Permlink ]
> David,
> I'm not sure it's a good idea to use the inventory_item table as it's not
> actually necessary to use inventory management to run an OFBiz ecommerce
> site. Some users just won't care about inventory (e.g. JIT ordering). While
> others will have a thirdparty application for inventory management.
> Andrew
> Comment by Si Chen [18/May/06 11:07 AM] [ Permlink ]
> Hey everybody -
> I'd like to help. Sorry I got to the party late. We did this once before too,
> but it got entombed in some custom code that's no longer worth extracting.
> Here is what I'd suggest:
> 1. Andrew' approach is mostly correctly, but I'd rather use productStoreId
> than webSiteId. Andrew, you are actually using webSiteId to get
> productStoreId, but productStoreId is more direct. Also very important: you
> need to pull all your variant products as well, which I don't see, or people
> would miss most of your real physical products. I definitely don't think
> InventoryItem is what you should be using, by the way.
> 2. You'll need to configure some links for the products and probabily also an
> "atc=___" tag for tracking marketing campaigns (so you know if froogle or
> whatever actually made you sales!) I'd suggest a .properties file.
> 3. The best way to render the output is actually using the content manager to
> create a FTL template of froogle's layout and then render against data. Look
> at the DhlServices.java or the GLExportServices in our Financials module.
> It's much easier this way than hardcoding formats into Java and more
> maintainable as well should the formats change (as they inevitably do.)
> Let me know if you need any help...
> Comment by Andrew Sykes [18/May/06 12:15 PM] [ Permlink ]
> The reason for using websiteId is that you need it further down to create the
> links properly. Some comments in my code would have helped here :-)
> I'm not sure that people would necessarily want to spam froogle with all
> their variants, (for example, imagine a clothes store). Also, variants do not
> necesssarily belong to any category, so that might lead to problems.
> I totally agree about rendering, again I apologise for not adding this to my
> comments.
> Comment by Si Chen [18/May/06 12:37 PM] [ Permlink ]
> Andrew,
> I think you're right about the websiteId then. So you set the URL as well in
> WebSite, like in the standardContentPrefix field?
> Why don't we make variants/no variants a flag so people can choose?
> No problem about the comments.
> Anybody want to work on this and submit one we can put into OFBiz?
> Si
> Comment by Si Chen [18/May/06 12:41 PM] [ Permlink ]
> Rohit,
> So here's a question about your PHP file, totally off topic, but I'm just
> curious about osCommerce: How does this patch work? You put it somewhere, and
> somebody downloads the main osCommerce and then this patch? So it's tested
> with a particular module...but not necessarily others? Do you just put it in
> your www/ directory and it runs?
> Now, what about licensing--there's no license terms in the header, so what do
> we assume it's licensed under? GPL? Apache?
> Please don't get me wrong--I'm not saying it's bad--I'm just curious.
> Thanks,
> Si
> Comment by Ray Barlow [18/May/06 12:53 PM] [ Permlink ]
> I have already done some mods to the version Andrew posted, and thrown a
> screen in front of it. I had registered a Froogle account the weekend before
> with a view to working on this so the whole thread has come at a good time.
> The mods I've made already include output created using the DataFile class so
> I won't rush to change that to FTL rendering. I'll try and polish a little
> more in the next few days and then post it back here although I doubt that it
> will be fit for commiting at that stage.
> Comment by rohit [18/May/06 12:58 PM] [ Permlink ]
> Hi Si,
> Thanks for asking. Just to give you an idea Oscommerce is an open source
> shopping cart based on PHP. The software and its modules like the file
> attached are under GLP license.
> Oscommerce has a basic module and the community members can create new
> functionality and share with other. The froogle exporteer file is almost
> independed on oscommerce files, though it depends on the database structure
> of oscommerce. One can simply upload the file to a webserver and set a cron
> object for it to run weekly. that is it.
> i mentioned this file, to explore the possibility of something like this for
> ofbiz, something thats very easy to install and run and that new users as
> well as existing users of ofbiz can easy use for there websites.
> i have using oscommerce for 3 years and believe me it does not do even 10% of
> what ofbiz can do, but the ability of community to develop new contributions
> such as froogle exporter, etc and the relative ease of integrating these
> contributions into existing webstores, is where i guess oscommerce takes the
> lead. i am still learning ofbiz and i hope i am proved wrong. And i did like
> to add that you must visit oscommerce.com and take a look on how the 100K
> community members have contributed to it.
> Rohit
> Comment by Andrew Sykes [18/May/06 01:49 PM] [ Permlink ]
> I'm glad to hear that someone has been spurred into action by my
> contribution, thanks for looking into this Ray. You may want to contact Ian
> Gilbert (if you haven't already) as he was also planning to do something with
> it, perhaps you guys could collaborate?
> I think Si's suggestion of an optional include variants (may) be useful - can
> you give an example scenario please Si? Also one thing to consider, there is
> a filter category (whose name escapes me) that specifies which products to
> show on a site, would this mess up variant posting?
> I think it would also be good to add an optional categoryId parameter to the
> service definition and a recurse[Y/N] flag. This would mean that without a
> categoryId posting would start from the browse root, with a categoryId
> posting would start from the specified category and if recurse==N posting
> would be exclusively for that category.
> In my additional comments on the user list, I suggested using the DataFile
> stuff, as that was the first thing that sprung to mind, I really don't see
> any objection to carrying on down that route, although someone else might
> know different...
> Has anyone considered whether setting the Froogle category in the
> CategoryAttr is a good approach, I'd be interested to hear any comments on
> this...
> Also, what about the FTP part, it would be nice if OFBiz handled that
> directly, anyone have any suggestioins?
> Finally if FTP is integrated, we need somewhere to store the FTP address and
> credentials - any suggestions?
> Comment by Si Chen [18/May/06 02:22 PM] [ Permlink ]
> Hey -
> 1. Why variants: if someone searches for "white shirt" on froogle and all you
> had was the virtual "shirt" but not variants, you might not get listed.
> 2. No idea about the filter category.
> 3. Recurse - yeah probably a good idea too.
> 4. I still think the content template + render is better than DataFile, but I
> could be convinced otherwise.
> 5. I think there are some FtpServices.java in ofbiz now. Not sure what it
> does though.
> Comment by Andrew Sykes [18/May/06 02:43 PM] [ Permlink ]
> Si,
> Sure that could be an issue, but would you really want to send
> 5 colours x 5 neck sizes x 5 chest sizes x 10 braiding colours
> = 1250 products
> (ok, a bit excessive, but you get the point I'm sure)
> I'm guessing froogle would probably take quite a dim view of this especially
> if they all had the same product image and description.
> Also, having done a few clothing sites, they never have products this
> generic, because...
> A/ They'd never get a google rank
> B/ The retailer would always find a more descriptive product name.
> "White Shirt" is more likely to be a category name.
> I've been trying to think of a scenario where variants would be useful, but I
> just don't think product names would ever be generic enough to need this.
> Comment by Si Chen [18/May/06 02:47 PM] [ Permlink ]
> That's why it's a configurable parameter, so if you don't want it, you don't
> have to use it. It's OK if you don't put it in--I can add it later if we
> decide to use it.
> Also: FTP address and credentials - use a .properties file in a config/
> directory. That's how the freight shipping and payment processors are
> handled.
> Comment by Si Chen [18/May/06 03:02 PM] [ Permlink ]
> Rohit,
> Thanks for your comments. I actually do know of oscommerce but wasn't quite
> sure how it worked. Thanks for explaining it.
> Well, we are definitely a community project as well and do indeed accept
> contributions from a fairly large number of people. I think the difference
> you find is not only a greater set of features but also a more formal
> framework and process for building applications. Hopefully this will work for
> you. All this stuff may seem intimidating at first, but you can definitely
> learn it (if I can learn it, anybody can learn it), and once you know it, it
> will make your work very easy.
> Ok, end of my digressions.
> Si
> Comment by Ray Barlow [21/May/06 06:03 AM] [ Permlink ]
> DataFile.patch adds support to write a DataFile with a header row.
> Comment by Ray Barlow [21/May/06 06:10 AM] [ Permlink ]
> I have added a menu on the catalog application called "DataIO" next to
> "Configurations" and in there is a new screen for Froogle.
> The screen contains comments about what is still required to be done which to
> be honest still includes a fair amount to be a really cool implementation,
> but this submission will at least generate the Froogle file. I've only run on
> the demo data so far but will deploy it on one of my live sites asap and test
> generating and submitting to Froogle for real.
> Although not complete if this is acceptable then it would be nice to commit a
> version sooner rather than wait for the holy grail of FTP automation etc.
> Comment by rohit [21/May/06 10:28 PM] [ Permlink ]
> Hi,
> Can you please give some instructions on how to install it. I will surely
> test it and give my feedback.
> rohit
> Comment by Ray Barlow [22/May/06 06:59 AM] [ Permlink ]
> The two files I attached are created as SVN patch files. Depending on your
> platform and tool depends on how you apply them and to be honest applying
> patches is not something I've done a lot of. For Windows if your using
> tortoise SVN (which is very good) try right click on the root folder and
> "Apply Patch" from the sub menu. For the command line I think you'd use the
> "patch" command, but for both I'd suggest a test folder and google would be a
> good option.
> On a more general note I forgot to mention that I saw the "DataIO" section
> being an area for control of other features being talked about like Yahoo,
> Amazon and maybe even some simple catalogue data import/export routines.
> Comment by rohit [24/May/06 09:23 AM] [ Permlink ]
> hi Ray,
> i am sorry but i could not get it working. i was initially using
> opentaps-0.9.0 but then tried it on SVN using the tortoise SVN client.
> i will really appreciate if you could be more specific about how you went
> about installing. For. e.g. in which folders are these files to be copied
> into and if there is any code that needs to be edited manually.
> i am new to ofbiz, hence a little more detailed instructions will help a lot.
> thank,
> rohit
> Comment by rohit [24/May/06 11:43 PM] [ Permlink ]
> hi Ray,
> i was able to get the files install, but i am getting the following error,
> when i try to use the froogle exporter:
> 3057047[ServiceEventHandler.java:317:ERROR]
> ---- exception report
> ----------------------------------------------------------
> Service invocation error
> Exception: org.ofbiz.service.GenericServiceException
> Message: Service target threw an unexpected exception (null)
> ---- stack trace
> ---------------------------------------------------------------
> org.ofbiz.service.GenericServiceException: Service target threw an unexpected
> exception (null)
> org.ofbiz.service.engine.StandardJavaEngine.serviceInvoker(StandardJavaEngine.java:113)
>
> org.ofbiz.service.engine.StandardJavaEngine.runSync(StandardJavaEngine.java:63)
>
> org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:340)
> org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:214)
> org.ofbiz.service.GenericDispatcher.runSync(GenericDispatcher.java:123)
> org.ofbiz.webapp.event.ServiceEventHandler.invoke(ServiceEventHandler.java:301)
>
> org.ofbiz.webapp.control.RequestHandler.runEvent(RequestHandler.java:416)
> org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:252)
> org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:191)
> org.ofbiz.webapp.control.ControlServlet.doPost(ControlServlet.java:87)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>
> org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:258)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526)
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
>
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>
> java.lang.Thread.run(Thread.java:534)
> java.lang.NullPointerException
> org.ofbiz.product.product.ProductExportServices.productsToCsv(ProductExportServices.java:73)
>
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> java.lang.reflect.Method.invoke(Method.java:324)
> org.ofbiz.service.engine.StandardJavaEngine.serviceInvoker(StandardJavaEngine.java:101)
>
> org.ofbiz.service.engine.StandardJavaEngine.runSync(StandardJavaEngine.java:63)
>
> org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:340)
> org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:214)
> org.ofbiz.service.GenericDispatcher.runSync(GenericDispatcher.java:123)
> org.ofbiz.webapp.event.ServiceEventHandler.invoke(ServiceEventHandler.java:301)
>
> org.ofbiz.webapp.control.RequestHandler.runEvent(RequestHandler.java:416)
> org.ofbiz.webapp.control.RequestHandler.doRequest(RequestHandler.java:252)
> org.ofbiz.webapp.control.ControlServlet.doGet(ControlServlet.java:191)
> org.ofbiz.webapp.control.ControlServlet.doPost(ControlServlet.java:87)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>
> org.ofbiz.webapp.control.ContextFilter.doFilter(ContextFilter.java:258)
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526)
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
>
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>
> java.lang.Thread.run(Thread.java:534)
> --------------------------------------------------------------------------------
>
> 3057047[ RequestHandler.java:283:ERROR] Request froogleExport caused an error
> with the following message: Error calling event:
> org.ofbiz.webapp.event.EventHandlerException: Service invocation error (null)
> 3057047[ RequestHandler.java:395:INFO ] [RequestHandler.doRequest]: Response
> is a view.
> 3057047[ RequestHandler.java:547:INFO ] servletName=control, view=Froogle
> 3057109[ UtilXml.java:242:DEBUG] XML Read 0.062s:
> file:/C:/ofbiz/applications/product/widget/catalog/DataIOScreens.xml
> 3057109[ ScreenFactory.java:120:INFO ] Got 2 screens in 0.062s from:
> file:/C:/ofbiz/applications/product/widget/catalog/DataIOScreens.xml
> 3057281[ UtilXml.java:242:DEBUG] XML Read 0.156s:
> file:/C:/ofbiz/applications/product/widget/catalog/CatalogCommonScreens.xml
> 3057281[ ScreenFactory.java:120:INFO ] Got 13 screens in 0.156s from:
> file:/C:/ofbiz/applications/product/widget/catalog/CatalogCommonScreens.xml
> 3057328[ UtilXml.java:242:DEBUG] XML Read 0.031s:
> file:/C:/ofbiz/framework/common/widget/CommonScreens.xml
> 3057344[ ScreenFactory.java:120:INFO ] Got 8 screens in 0.047s from:
> file:/C:/ofbiz/framework/common/widget/CommonScreens.xml
> 3057578[ UtilXml.java:242:DEBUG] XML Read 0.047s:
> file:/C:/ofbiz/applications/product/widget/catalog/CommonScreens.xml
> 3057578[ ScreenFactory.java:120:INFO ] Got 9 screens in 0.047s from:
> file:/C:/ofbiz/applications/product/widget/catalog/CommonScreens.xml
> 3057750[ ServiceDispatcher.java:452:DEBUG] [[Sync service finished-
> total:0.0,since last(Begin):0.0]] - 'catalog /
> getProductCategoryAndLimitedMembers'
> 3057812[ ControlServlet.java:258:DEBUG] [[[froogleExport] Done rendering
> page, Servlet Finished- total:1.125,since last([froogleExport] S...):1.125]]
> 3061609[ ControlServlet.java:98 :INFO ] The character encoding of the request
> is: [null]. The character encoding we will use for the request and response
> is: [UTF-8]
> 3061625[ ControlServlet.java:134:DEBUG] [[[froogleExport] Servlet Starting,
> doing setup- total:0.0,since last(Begin):0.0]]
> 3061625[ ControlServlet.java:183:DEBUG] [[[froogleExport] Setup done, doing
> Event(s) and View(s)- total:0.0,since last([froogleExport] S...):0.0]]
> 3061625[ RequestHandler.java:212:INFO ] [Processing Request]: froogleExport
> 3061672[ ServiceDispatcher.java:386:DEBUG] [[Sync service failed...-
> total:0.0,since last(Begin):0.0]] - 'catalog / froogleExport'
> 3061687[ ServiceDispatcher.java:389:ERROR]
> Please advise what might be wrong.
> rohit
> Comment by Ray Barlow [05/Jun/06 12:17 PM] [ Permlink ]
> Attached is an improved version that has a little more error checking and
> also uses drop down lists to reduce user entry errors, for data such as
> webSiteId. The NPE exception Rohit was experiencing would have been due to an
> invalid webSiteId entry.
> Also added support for tracking codes if defined in the marketing module and
> a check to skip null images for products.
> It would be nice to see this reviewed and committed if possible. DataFile
> patch still stands as submitted before as I've not changed anything in it
> that for this update.
> Comment by rohit [21/Jul/06 01:58 AM] [ Permlink ]
> hi,
> i have attached a new patch file to work with nre requirement of google base
> format. This patch has been created on the latest SVN 424158.
> Comment by rohit [21/Jul/06 02:00 AM] [ Permlink ]
> This patch has all the changes. you need only this file to implement froogle
> on ofbiz.
> Comment by Marco Risaliti [13/Sep/06 04:12 PM] [ Permlink ]
> May I have to move it to the new jira server ?
> Thanks
> Marco
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.