details:   https://code.openbravo.com/erp/devel/pi/rev/2ec4fc94819a
changeset: 14031:2ec4fc94819a
user:      Adrián Romero <adrianromero <at> openbravo.com>
date:      Thu Oct 20 10:57:03 2011 +0200
summary:   Adding support for Binary Objects to JSON web services

details:   https://code.openbravo.com/erp/devel/pi/rev/6fa410969266
changeset: 14032:6fa410969266
user:      Adrián Romero <adrianromero <at> openbravo.com>
date:      Thu Oct 20 11:01:15 2011 +0200
summary:   Fixes issue 0018646: The Create columns from table process does not 
handle BYTEA columns
It has been added in the PL/SQL proccess AD_TABLE_IMPORT support for BYTEA 
(Postgresql) and BLOB (Oracle) data types

diffstat:

 
modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
 |  4 ++++
 
modules/org.openbravo.service.json/src/org/openbravo/service/json/JsonToDataConverter.java
 |  4 ++++
 src-db/database/model/functions/AD_TABLE_IMPORT.xml                            
            |  4 ++++
 3 files changed, 12 insertions(+), 0 deletions(-)

diffs (75 lines):

diff -r 9acda851780a -r 6fa410969266 
modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
--- 
a/modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
        Wed Oct 19 09:56:13 2011 +0200
+++ 
b/modules/org.openbravo.service.json/src/org/openbravo/service/json/DataToJsonConverter.java
        Thu Oct 20 11:01:15 2011 +0200
@@ -26,11 +26,13 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.codec.binary.Base64;
 import org.codehaus.jettison.json.JSONException;
 import org.codehaus.jettison.json.JSONObject;
 import org.hibernate.ObjectNotFoundException;
 import org.openbravo.base.model.Entity;
 import org.openbravo.base.model.Property;
+import org.openbravo.base.model.domaintype.BinaryDomainType;
 import org.openbravo.base.model.domaintype.EncryptedStringDomainType;
 import org.openbravo.base.model.domaintype.HashedStringDomainType;
 import org.openbravo.base.model.domaintype.TimestampDomainType;
@@ -272,6 +274,8 @@
     } else if (property.getDomainType() instanceof HashedStringDomainType
         || property.getDomainType() instanceof EncryptedStringDomainType) {
       return "***";
+    } else if (property.getDomainType() instanceof BinaryDomainType && value 
instanceof byte[]) {
+      return Base64.encodeBase64String((byte[]) value);
     }
     return value;
   }
diff -r 9acda851780a -r 6fa410969266 
modules/org.openbravo.service.json/src/org/openbravo/service/json/JsonToDataConverter.java
--- 
a/modules/org.openbravo.service.json/src/org/openbravo/service/json/JsonToDataConverter.java
        Wed Oct 19 09:56:13 2011 +0200
+++ 
b/modules/org.openbravo.service.json/src/org/openbravo/service/json/JsonToDataConverter.java
        Thu Oct 20 11:01:15 2011 +0200
@@ -33,6 +33,7 @@
 
 import javax.servlet.ServletException;
 
+import org.apache.commons.codec.binary.Base64;
 import org.apache.log4j.Logger;
 import org.codehaus.jettison.json.JSONArray;
 import org.codehaus.jettison.json.JSONException;
@@ -41,6 +42,7 @@
 import org.openbravo.base.model.Entity;
 import org.openbravo.base.model.Property;
 import org.openbravo.base.model.domaintype.BigDecimalDomainType;
+import org.openbravo.base.model.domaintype.BinaryDomainType;
 import org.openbravo.base.model.domaintype.EncryptedStringDomainType;
 import org.openbravo.base.model.domaintype.HashedStringDomainType;
 import org.openbravo.base.model.domaintype.TimestampDomainType;
@@ -204,6 +206,8 @@
           // TODO: translate error message
           throw new Error("Could not encrypt password", e);
         }
+      } else if (value instanceof String && property.getDomainType() 
instanceof BinaryDomainType) {
+        return Base64.decodeBase64((String) value);
       }
       return value;
     } catch (Exception e) {
diff -r 9acda851780a -r 6fa410969266 
src-db/database/model/functions/AD_TABLE_IMPORT.xml
--- a/src-db/database/model/functions/AD_TABLE_IMPORT.xml       Wed Oct 19 
09:56:13 2011 +0200
+++ b/src-db/database/model/functions/AD_TABLE_IMPORT.xml       Thu Oct 20 
11:01:15 2011 +0200
@@ -198,6 +198,8 @@
         v_FieldLength:=19;
       ELSIF(Cur_Column.Data_Type IN('NUMBER')) THEN
         v_FieldLength:=COALESCE(Cur_Column.Data_Precision, 10) +2;
+      ELSIF(Cur_Column.Data_Type IN ('BYTEA', 'BLOB')) THEN
+        v_FieldLength:=4000;
       ELSE
         v_FieldLength:=Cur_Column.Data_Length;
       END IF;
@@ -218,6 +220,8 @@
           v_AD_Reference_ID:='22';
         ELSIF(Cur_Column.Data_Type IN ('DATE', 'TIMESTAMP')) THEN
           v_AD_Reference_ID:='15';
+       ELSIF(Cur_Column.Data_Type IN ('BYTEA', 'BLOB')) THEN
+         v_AD_Reference_ID:='23';
         ELSE
           v_AD_Reference_ID:='10'; -- if not found, use String
           v_CorrectType:='N';

------------------------------------------------------------------------------
The demand for IT networking professionals continues to grow, and the
demand for specialized networking skills is growing even more rapidly.
Take a complimentary Learning@Ciosco Self-Assessment and learn 
about Cisco certifications, training, and career opportunities. 
http://p.sf.net/sfu/cisco-dev2dev
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to