Nattanicha,
I have not used the JDBC-ODBC bridge. I did not manage to make it work.
What I have used is the direct JDBC driver for DBF files from HXTT.
You can get an evaluation copy here: http://www.hxtt.com/dbf.zip however
this is limited to 50 queries and than you need to restart ofbiz.
So i have done the following:
1) Unzipped and copyed the DBF_JDBC30.jar in
ofbiz/framework/entity/lib/jdbc
folder.
2) I have changed the fieldtype I use like this:
ofbiz/framework/entity/fieldtype/fieldtypevisualfoxpro.xml
--------------------------------------------------------------------------------
<fieldtypemodel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="
http://ofbiz.apache.org/dtds/fieldtypemodel.xsd">
<!-- ===================== field-type-def ==================== -->
<!-- General Types -->
<field-type-def type="blob" sql-type="M NOCPTRANS" java-type="
java.sql.Blob"></field-type-def>
<field-type-def type="date-time" sql-type="TIMESTAMP" java-type="
java.sql.Timestamp"></field-type-def>
<field-type-def type="date" sql-type="TIMESTAMP" java-type="
java.sql.Date"></field-type-def>
<field-type-def type="time" sql-type="TIMESTAMP" java-type="
java.sql.Time"></field-type-def>
<field-type-def type="currency-amount" sql-type="DOUBLE"
java-type="Double"><validate method="isSignedDouble" /></field-type-def>
<field-type-def type="currency-precise" sql-type="DOUBLE"
java-type="Double"><validate method="isSignedDouble" /></field-type-def>
<field-type-def type="floating-point" sql-type="DOUBLE"
java-type="Double"><validate method="isSignedDouble" /></field-type-def>
<field-type-def type="numeric" sql-type="NUMERIC"
java-type="Long"><validate method="isSignedLong" /></field-type-def>
<field-type-def type="id" sql-type="VARCHAR(20)"
java-type="String"></field-type-def>
<field-type-def type="id-long" sql-type="VARCHAR(60)"
java-type="String"></field-type-def>
<field-type-def type="id-vlong" sql-type="VARCHAR(250)"
java-type="String"></field-type-def>
<field-type-def type="indicator" sql-type="VARCHAR(1)"
java-type="String"></field-type-def>
<field-type-def type="very-short" sql-type="VARCHAR(10)"
java-type="String"></field-type-def>
<field-type-def type="short-varchar" sql-type="VARCHAR(60)"
java-type="String"></field-type-def>
<field-type-def type="long-varchar" sql-type="VARCHAR(255)"
java-type="String"></field-type-def>
<field-type-def type="very-long" sql-type="TEXT"
java-type="String"></field-type-def>
<field-type-def type="comment" sql-type="VARCHAR(255)"
java-type="String"></field-type-def>
<field-type-def type="description" sql-type="VARCHAR(255)"
java-type="String"></field-type-def>
<field-type-def type="name" sql-type="VARCHAR(100)"
java-type="String"></field-type-def>
<field-type-def type="value" sql-type="VARCHAR(255)"
java-type="String"></field-type-def>
<!-- Specialized Types -->
<field-type-def type="credit-card-number" sql-type="VARCHAR(255)"
java-type="String"><validate method="isAnyCard" /></field-type-def>
<field-type-def type="credit-card-date" sql-type="VARCHAR(20)"
java-type="String"><validate method="isDateAfterToday"
/></field-type-def>
<field-type-def type="email" sql-type="VARCHAR(255)"
java-type="String"><validate method="isEmail" /></field-type-def>
<field-type-def type="url" sql-type="VARCHAR(255)"
java-type="String"></field-type-def>
<field-type-def type="id-ne" sql-type="VARCHAR(20)"
java-type="String"><validate method="isNotEmpty" /></field-type-def>
<field-type-def type="id-long-ne" sql-type="VARCHAR(60)"
java-type="String"><validate method="isNotEmpty" /></field-type-def>
<field-type-def type="id-vlong-ne" sql-type="VARCHAR(250)"
java-type="String"><validate method="isNotEmpty" /></field-type-def>
<field-type-def type="tel-number" sql-type="VARCHAR(60)"
java-type="String"><validate method="isInternationalPhoneNumber"
/></field-type-def>
</fieldtypemodel>
---------------------------------------
3) I have defined the following entity in my application
entitymodel.xmlfile:
<entity entity-name="Articolo"
table-name="MAGART"
title="Articolo Legacy"
no-auto-stamp="true">
<field name="codice" type="id-ne"></field>
<field name="descrizione" col-name="DESCRIZION"
type="description"></field>
<field name="gruppo" col-name="GRUPPO"
type="description"></field>
<field name="prezzo" col-name="LISTINO9"
type="currency-amount"></field>
<prim-key field="codice"/>
</entity>
------------------------------------------
4) In the ofbiz/framework/entity/config/entityengine.xml file I have
defined
the followin datasource:
<datasource name="localvisualfoxpro"
helper-class="org.ofbiz.entity.datasource.GenericHelperDAO"
field-type-name="visualfoxpro"
check-on-start="false"
add-missing-on-start="false"
check-indices-on-start="false"
use-foreign-keys="false"
use-foreign-key-indices="false"
join-style="ansi-no-parenthesis"
alias-view-columns="false"
always-use-constraint-keyword="false">
<inline-jdbc
jdbc-driver="com.hxtt.sql.dbf.DBFDriver"
jdbc-uri="jdbc:dbf:///F:/myfoxprotestfolder"
jdbc-username=""
jdbc-password=""
isolation-level="ReadCommitted"
pool-minsize="2"
pool-maxsize="250"/>
</datasource>
Please note that you need to specify in the URL the FOLDER name where
your
dbf files are.
An additional suggestion:
To check that the JDBC driver and the URL used to connect to the DBF
database was OK (indipendently from OFBiz) I have used the Squirrel SQL
client.
When he was happy with the driver and the url used than I moved to
OFBiz.
Hope this helps,
Bruno
2008/3/18, Nattanicha Rittammanart <[EMAIL PROTECTED]>:
Hi
I try to use HXTT DBF ODBC but I found error as follows:
2008-03-18 16:22:01,765 (main) [ DatabaseUtil.java:351:ERROR]
Could not create table [HXTT]: SQL Exception while executing the
following:
CREATE TABLE HXTT (ACCID C(20) CONSTRAINT NOT NULL, ITEMID C(10), DEPRE
N(18,2), LAST_UPDATED_STAMP T, LAST_UPDATED_TX_STAMP T,
CREATED_STAMP T,
CREATED_TX_STAMP T, CONSTRAINT PK_HXTT PRIMARY KEY (ACCID))
Error was:* java.sql.SQLException: Syntax error: Stopped parse at C*
2008-03-18 16:22:01,781 (main) [ DatabaseUtil.java:2747:ERROR]
Could not create declared indices for entity [hxtt]: SQL Exception
while
executing the following:
CREATE INDEX HXTT_TXSTMP ON HXTT (LAST_UPDATED_TX_STAMP)
Error was: java.sql.SQLException: Table C:\data\HXTT.DBF doesn't exist.
2008-03-18 16:22:01,781 (main) [ DatabaseUtil.java:2747:ERROR]
Could not create declared indices for entity [hxtt]: SQL Exception
while
executing the following:
CREATE INDEX HXTT_TXCRTS ON HXTT (CREATED_TX_STAMP)
Error was: java.sql.SQLException: Table C:\data\HXTT.DBF doesn't exist.
And I also try VFPODBC. I also got error as follows:
DatabaseUtil.java:351:ERROR] Could not create table [ODBCFOXPRO]: SQL
Exception while executing the following:
CREATE TABLE ODBCFOXPRO (ACCID C(20) CONSTRAINT NOT NULL, ITEMID C(10),
DEPRE N(18,2), LAST_UPDATED_STAMP T, LAST_UPDATED_TX_STAMP T,
CREATED_STAMP T, CREATED_TX_STAMP T, CONSTRAINT PK_ODBCFOXPRO PRIMARY
KEY (ACCID))
Error was: *java.sql.SQLException: [Microsoft][ODBC Visual FoxPro
Driver]Syntax error.*
2008-03-18 16:27:33,562 (main) [ DatabaseUtil.java:2747:ERROR]
Could not create declared indices for entity [odbcfoxpro]: SQL
Exception
while executing the following:
CREATE INDEX ODBCFOXPRO_TXSTMP ON ODBCFOXPRO (LAST_UPDATED_TX_STAMP)
Error was: *java.sql.SQLException: [Microsoft][ODBC Visual FoxPro
Driver]Syntax error.*
2008-03-18 16:27:33,562 (main) [ DatabaseUtil.java:2747:ERROR]
Could not create declared indices for entity [odbcfoxpro]: SQL
Exception
while executing the following:
CREATE INDEX ODBCFOXPRO_TXCRTS ON ODBCFOXPRO (CREATED_TX_STAMP)
Error was: *java.sql.SQLException: [Microsoft][ODBC Visual FoxPro
Driver]Syntax error.*
I would like to know:
1. Am I correct to define DBF type? I follow fieldtypevisualfoxpro.xml
of Bruno.
2. How can I do to connect foxpro with OFBiz?
3. Why both 2 drivers got syntax errors?
Please suggest me.
Thanks in advance,
Nattanicha
Nattanicha Rittammanart wrote:
Hi, Bruno
I'm also develop the application on OFBiz by connecting with Foxpro.
Did you use "webtools"? In there you can schedule task depend on your
need. And I also found some code relate to scheduling as follows:
*To schedule a service to run at a later time or to repeat use this:*
// This example will schedule a job to run now.
Map context = UtilMisc.toMap("message","This is a test.");
try {
long startTime = (new Date()).getTime();
dispatcher.schedule("testScv", context, startTime);
}
catch (GenericServiceException e) {
e.printStackTrace();
}
// This example will schedule a service to run now and repeat once
every 5 seconds a total of 10 times.
Map context = UtilMisc.toMap("message","This is a test.");
try {
long startTime = (new Date()).getTime();
int frequency = RecurrenceRule.SECONDLY;
int interval = 5;
int count = 10;
dispatcher.schedule("testScv", context, startTime, frequency,
interval, count);
}
catch (GenericServiceException e) {
e.printStackTrace();
}
I got this from
http://ofbiz.apache.org/docs/services.html#ServiceEngine. Hope this
help.
I also would like to ask you about how to set ODBC. I saw from your
code that you use sun.jdbc.odbc.JdbcOdbcDriver. I need to use it also
but I cannot connect it with DBF file. Could you please describe me
how to do this in details?
Thanks in advance,
Nattanicha
Bruno Busco wrote:
Now i can access the Visual Fox Pro database from within ofbiz (using
a demo
version of the jdbc driver from http://www.hxtt.com).
I have defined a new entity and i can browse the VFP table using the
OFBiz
entity manager. That's cool!
In order to have the OFBiz regularly updated from the external
database I
should now write a service that transfer information from the
external
entities to the product and price in OFBiz, am i correct?
Could someone please indicate where i can find some similar tasks in
OFBiz
where i could start from?
I mean:
- how to write a task or service to transfer information between
entities in
OFBiz?
- how to schedule to have this task run automatically.
Many thanks in advance.
-Bruno
2008/3/15, Bruno Busco <[EMAIL PROTECTED]>:
oops,
i found the problem. I forgot to include the line:
<field-type name="visualfoxpro" loader="fieldfile" location="
fieldtypevisualfoxpro.xml"/>
in entityengine.xml. Sorry.
2008/3/15, Bruno Busco <[EMAIL PROTECTED]>:
I have created it now with this content:
<fieldtypemodel
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="
http://ofbiz.apache.org/dtds/fieldtypemodel.xsd">
<!-- ===================== field-type-def ====================
-->
<!-- General Types -->
<field-type-def type="blob" sql-type="C"
java-type="java.sql.Blob
"></field-type-def>
<field-type-def type="date-time" sql-type="T" java-type="
java.sql.Timestamp"></field-type-def>
<field-type-def type="date" sql-type="D"
java-type="java.sql.Date
"></field-type-def>
<field-type-def type="time" sql-type="T"
java-type="java.sql.Time
"></field-type-def>
<field-type-def type="currency-amount" sql-type="N(18,2)"
java-type="Double"><validate method="isSignedDouble"
/></field-type-def>
<field-type-def type="currency-precise" sql-type="N(18,3)"
java-type="Double"><validate method="isSignedDouble"
/></field-type-def>
<field-type-def type="floating-point" sql-type="F"
java-type="Double"><validate method="isSignedDouble"
/></field-type-def>
<field-type-def type="numeric" sql-type="I"
java-type="Long"><validate method="isSignedLong"
/></field-type-def>
<field-type-def type="id" sql-type="C(20)"
java-type="String"></field-type-def>
<field-type-def type="id-long" sql-type="C(60)"
java-type="String"></field-type-def>
<field-type-def type="id-vlong" sql-type="C(250)"
java-type="String"></field-type-def>
<field-type-def type="indicator" sql-type="C(1)"
java-type="String"></field-type-def>
<field-type-def type="very-short" sql-type="C(10)"
java-type="String"></field-type-def>
<field-type-def type="short-varchar" sql-type="C(60)"
java-type="String"></field-type-def>
<field-type-def type="long-varchar" sql-type="C(255)"
java-type="String"></field-type-def>
<field-type-def type="very-long" sql-type="TEXT"
java-type="String"></field-type-def>
<field-type-def type="comment" sql-type="C(255)"
java-type="String"></field-type-def>
<field-type-def type="description" sql-type="C(255)"
java-type="String"></field-type-def>
<field-type-def type="name" sql-type="C(100)"
java-type="String"></field-type-def>
<field-type-def type="value" sql-type="C(255)"
java-type="String"></field-type-def>
<!-- Specialized Types -->
<field-type-def type="credit-card-number" sql-type="C(255)"
java-type="String"><validate method="isAnyCard" /></field-type-def>
<field-type-def type="credit-card-date" sql-type="C(20)"
java-type="String"><validate method="isDateAfterToday"
/></field-type-def>
<field-type-def type="email" sql-type="C(255)"
java-type="String"><validate method="isEmail" /></field-type-def>
<field-type-def type="url" sql-type="C(255)"
java-type="String"></field-type-def>
<field-type-def type="id-ne" sql-type="C(20)"
java-type="String"><validate method="isNotEmpty"
/></field-type-def>
<field-type-def type="id-long-ne" sql-type="C(60)"
java-type="String"><validate method="isNotEmpty"
/></field-type-def>
<field-type-def type="id-vlong-ne" sql-type="C(250)"
java-type="String"><validate method="isNotEmpty"
/></field-type-def>
<field-type-def type="tel-number" sql-type="C(60)"
java-type="String"><validate method="isInternationalPhoneNumber"
/></field-type-def>
</fieldtypemodel>
but now ofbiz aborts completely. The last messages i can see is:
2008-03-15 17:54:50,265 (main) [ ModelViewEntity.java:468:WARN ]
Conversion for complex-alias needs to be implemented for cache and
in-memory
eval stuff to work correctly, will not work for alias:
statusDelay of
view-entity ExampleStatusDetail
2008-03-15 17:54:50,390 (main) [ ModelViewEntity.java:626:INFO ]
Throwing out field alias in view entity InventoryItemAndDetail
because one
already exists with the alias name [unitCost] and field name
[IID(InventoryItemDetail).unitCost], existing field name is
[II.unitCost
]
2008-03-15 17:54:50,406 (main) [ ModelViewEntity.java:468:WARN ]
Conversion for complex-alias needs to be implemented for cache and
in-memory
eval stuff to work correctly, will not work for alias:
quantityOrdered of
view-entity OrderItemQuantityReportGroupByItem
2008-03-15 17:54:50,406 (main) [ ModelViewEntity.java:468:WARN ]
Conversion for complex-alias needs to be implemented for cache and
in-memory
eval stuff to work correctly, will not work for alias: quantityOpen
of
view-entity OrderItemQuantityReportGroupByItem
2008-03-15 17:54:50,406 (main) [ ModelViewEntity.java:468:WARN ]
Conversion for complex-alias needs to be implemented for cache and
in-memory
eval stuff to work correctly, will not work for alias:
quantityOrdered of
view-entity OrderItemQuantityReportGroupByProduct
2008-03-15 17:54:50,406 (main) [ ModelViewEntity.java:468:WARN ]
Conversion for complex-alias needs to be implemented for cache and
in-memory
eval stuff to work correctly, will not work for alias: quantityOpen
of
view-entity OrderItemQuantityReportGroupByProduct
2008-03-15 17:54:50,421 (main) [ ModelViewEntity.java:468:WARN ]
Conversion for complex-alias needs to be implemented for cache and
in-memory
eval stuff to work correctly, will not work for alias:
quantityOrdered of
view-entity OrderItemAndShipGrpInvResAndItemSum
2008-03-15 17:54:50,421 (main) [ ModelViewEntity.java:468:WARN ]
Conversion for complex-alias needs to be implemented for cache and
in-memory
eval stuff to work correctly, will not work for alias:
totQuantityAvailable
of view-entity OrderItemAndShipGrpInvResAndItemSum
2008-03-15 17:54:50,546 (main) [ ModelReader.java:385:INFO ]
FINISHED LOADING ENTITIES - ALL FILES; #Entities=766
#ViewEntities=192
#Fields=7915 #Relationships=2640 #AutoRelationships=1947
2008-03-15 17:54:50,734 (main) [ GenericDelegator.java:148:INFO ]
Doing entity definition check...
2008-03-15 17:54:50,734 (main) [ ModelEntityChecker.java:500:INFO ]
[initReservedWords] array length=1023
2008/3/15, Jacques Le Roux <[EMAIL PROTECTED]>:
Did you try to create a fieldtypevisualfoxpro.xml file and put
"visualfoxpro" in field-type-name ?
Jacques
From: "Bruno Busco" <[EMAIL PROTECTED]>
I am working on Win XP, i have the FoxPro database and have
installed
the
Visual FoxPro odbc driver.
I can access the FoxPro database from Access so i know that the
odbc
driver
works well.
Now i am trying to configure ofbiz to access the FoxPro database
with the
following:
<datasource name="odbcfoxpro"
helper-class="
org.ofbiz.entity.datasource.GenericHelperDAO"
field-type-name="mysql"
check-on-start="true"
add-missing-on-start="true"
check-indices-on-start="true"
use-foreign-keys="false"
use-foreign-key-indices="true"
join-style="ansi-no-parenthesis"
alias-view-columns="false"
always-use-constraint-keyword="true">
<inline-jdbc
jdbc-driver="sun.jdbc.odbc.JdbcOdbcDriver"
jdbc-uri="jdbc:odbc:Arca2000Pro"
jdbc-username=""
jdbc-password=""
isolation-level="ReadCommitted"
pool-minsize="2"
pool-maxsize="250"/>
<!-- <jndi-jdbc jndi-server-name="localjndi"
jndi-name="java:/MySqlDataSource"
isolation-level="Serializable"/>
-->
</datasource>
but I get a lot of
2008-03-15 15:27:57,625 (main) [ DatabaseUtil.java
:1288:ERROR]
Error
getting column info for column. Error was:java.sql.SQLException:
Column not
found
Can anybody please suggest a solution?
Could it be becouse of the field-type-name="mysql" (but in this
case
how can
i get a Visual FoxPro fieldtype file?)
Thank you
- Bruno
2008/3/15, Bruno Busco <[EMAIL PROTECTED]>:
Hi,
i need to make my ofbiz box retrieve products information from a
legacy
FoxPro database.
The data should be done on a regular basis (lets say every night
of
once a
week) so it is not just a one time data import.
Googling around i have found this
http://lists.ofbiz.org/pipermail/users/2005-May/007836.html
Is out there any more updated how-to or documentation i could
start
from?
Many thanks for you suggestions!
Bruno
__________ NOD32 2953 (20080317) Information __________
This message was checked by NOD32 antivirus system.
http://www.eset.com
__________ NOD32 2954 (20080318) Information __________
This message was checked by NOD32 antivirus system.
http://www.eset.com
__________ NOD32 2956 (20080318) Information __________
This message was checked by NOD32 antivirus system.
http://www.eset.com