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
