details:   /erp/devel/pi/rev/df92771945f8
changeset: 11027:df92771945f8
user:      Adrián Romero <adrianromero <at> openbravo.com>
date:      Fri Mar 04 17:19:19 2011 +0100
summary:   Backed out changeset ccf67943c792

details:   /erp/devel/pi/rev/268243d4b031
changeset: 11028:268243d4b031
user:      Adrián Romero <adrianromero <at> openbravo.com>
date:      Fri Mar 04 17:19:37 2011 +0100
summary:   Merging backout

diffstat:

 
modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MESSAGE.xml
                       |   11 +
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-grid.js
              |    4 +-
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
     |    3 +-
 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
           |   23 +-
 
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/templates/application-dynamic-js.ftl
 |    6 +-
 
modules/org.openbravo.service.datasource/src-db/database/sourcedata/AD_PREFERENCE.xml
                    |   14 +
 
modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceServlet.java
     |  138 ++++++++-
 src-db/database/model/functions/C_YEARPERIODS.xml                              
                          |   13 +-
 src-db/database/sourcedata/AD_PROCESS_PARA.xml                                 
                          |   18 -
 src-db/database/sourcedata/AD_TEXTINTERFACES.xml                               
                          |   20 +-
 src-db/database/sourcedata/AD_VAL_RULE.xml                                     
                          |   12 -
 src-wad/src/org/openbravo/wad/Configuration_Relation.xmlxml                    
                          |    1 +
 src-wad/src/org/openbravo/wad/Fields_data.xsql                                 
                          |   56 +---
 src-wad/src/org/openbravo/wad/Template_Relation.html                           
                          |    4 +-
 src-wad/src/org/openbravo/wad/Template_Relation.xml                            
                          |    3 +-
 src-wad/src/org/openbravo/wad/Wad.java                                         
                          |   34 +-
 src-wad/src/org/openbravo/wad/javasource.javaxml                               
                          |    4 +-
 src-wad/src/org/openbravo/wad/javasource.xml                                   
                          |    1 +
 src/org/openbravo/erpCommon/businessUtility/AuditTrailPopup_data.xsql          
                          |    5 +-
 src/org/openbravo/erpCommon/utility/Utility.java                               
                          |   32 ++
 20 files changed, 238 insertions(+), 164 deletions(-)

diffs (truncated from 859 to 300 lines):

diff -r ccf67943c792 -r 268243d4b031 
modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MESSAGE.xml
--- 
a/modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MESSAGE.xml
        Fri Mar 04 13:04:56 2011 +0100
+++ 
b/modules/org.openbravo.client.application/src-db/database/sourcedata/AD_MESSAGE.xml
        Fri Mar 04 17:19:37 2011 +0100
@@ -750,6 +750,17 @@
 <!--FF8080812DDB247F012DDCFAB5EC01A4-->  
<AD_MODULE_ID><![CDATA[9BA0836A3CD74EE4AB48753A47211BCC]]></AD_MODULE_ID>
 <!--FF8080812DDB247F012DDCFAB5EC01A4--></AD_MESSAGE>
 
+<!--FF8080812E8126B7012E8134F22F0013--><AD_MESSAGE>
+<!--FF8080812E8126B7012E8134F22F0013-->  
<AD_MESSAGE_ID><![CDATA[FF8080812E8126B7012E8134F22F0013]]></AD_MESSAGE_ID>
+<!--FF8080812E8126B7012E8134F22F0013-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--FF8080812E8126B7012E8134F22F0013-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--FF8080812E8126B7012E8134F22F0013-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--FF8080812E8126B7012E8134F22F0013-->  
<VALUE><![CDATA[OBUIAPP_ExportGrid]]></VALUE>
+<!--FF8080812E8126B7012E8134F22F0013-->  <MSGTEXT><![CDATA[Export to 
Spreadsheet]]></MSGTEXT>
+<!--FF8080812E8126B7012E8134F22F0013-->  <MSGTYPE><![CDATA[I]]></MSGTYPE>
+<!--FF8080812E8126B7012E8134F22F0013-->  
<AD_MODULE_ID><![CDATA[9BA0836A3CD74EE4AB48753A47211BCC]]></AD_MODULE_ID>
+<!--FF8080812E8126B7012E8134F22F0013--></AD_MESSAGE>
+
 <!--FF8081812D6761CF012D676DF2A70045--><AD_MESSAGE>
 <!--FF8081812D6761CF012D676DF2A70045-->  
<AD_MESSAGE_ID><![CDATA[FF8081812D6761CF012D676DF2A70045]]></AD_MESSAGE_ID>
 <!--FF8081812D6761CF012D676DF2A70045-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r ccf67943c792 -r 268243d4b031 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-grid.js
--- 
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-grid.js
       Fri Mar 04 13:04:56 2011 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-grid.js
       Fri Mar 04 17:19:37 2011 +0100
@@ -285,7 +285,9 @@
       _operationType: 'fetch',
       _noCount: true, // never do count for export
       exportAs: expProp.exportAs || 'csv',
-      exportToFile: true
+      viewState: expProp.viewState,
+      exportToFile: true,
+      _textMatchStyle: 'substring'
     }, this.getCriteria());
     
     OB.Utilities.postThroughHiddenForm(dsURL, d);
diff -r ccf67943c792 -r 268243d4b031 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
--- 
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
      Fri Mar 04 13:04:56 2011 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-standard-view.js
      Fri Mar 04 17:19:37 2011 +0100
@@ -198,7 +198,8 @@
                    
isc.OBToolbarIconButton.create(isc.OBToolbar.SAVECLOSE_BUTTON_PROPERTIES), 
                    
isc.OBToolbarIconButton.create(isc.OBToolbar.UNDO_BUTTON_PROPERTIES), 
                    
isc.OBToolbarIconButton.create(isc.OBToolbar.DELETE_BUTTON_PROPERTIES), 
-                   
isc.OBToolbarIconButton.create(isc.OBToolbar.REFRESH_BUTTON_PROPERTIES)];
+                   
isc.OBToolbarIconButton.create(isc.OBToolbar.REFRESH_BUTTON_PROPERTIES),
+                   
isc.OBToolbarIconButton.create(isc.OBToolbar.EXPORT_BUTTON_PROPERTIES)];
     
     // Look for specific toolabr buttons for this tab
     if (this.iconToolbarButtons) {
diff -r ccf67943c792 -r 268243d4b031 
modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
--- 
a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
    Fri Mar 04 13:04:56 2011 +0100
+++ 
b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/ob-toolbar.js
    Fri Mar 04 17:19:37 2011 +0100
@@ -25,7 +25,8 @@
   TYPE_DELETE: 'eliminate',
   TYPE_UNDO: 'undo',
   TYPE_REFRESH: 'refresh',
-  
+  TYPE_EXPORT: 'export',
+
   SAVE_BUTTON_PROPERTIES: {
     action: function(){
       this.view.saveRow();
@@ -179,6 +180,26 @@
     },
     keyboardShortcutId: 'ToolBar_Undo'
   },
+  EXPORT_BUTTON_PROPERTIES: {
+    action: function(){
+      var requestProperties = {
+              exportAs: 'csv',
+              exportDisplay: 'download',
+              params: {
+                exportToFile: true
+              }
+            };
+      requestProperties.viewState = this.view.viewGrid.getViewState();
+      this.view.viewGrid.exportData(requestProperties);
+    },
+    disabled: false,
+    buttonType: 'export',
+    prompt: OB.I18N.getLabel('OBUIAPP_ExportGrid'),
+    updateState: function() {
+      this.setDisabled(this.view.isShowingForm);
+    },
+  keyboardShortcutId: 'ToolBar_Export'
+  },
   // This offers a mechanism to add properties at runtime to buttons created 
through
   // templates and java
   BUTTON_PROPERTIES: {
diff -r ccf67943c792 -r 268243d4b031 
modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/templates/application-dynamic-js.ftl
--- 
a/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/templates/application-dynamic-js.ftl
  Fri Mar 04 13:04:56 2011 +0100
+++ 
b/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/templates/application-dynamic-js.ftl
  Fri Mar 04 17:19:37 2011 +0100
@@ -26,11 +26,11 @@
         name : '${(data.user.name!'')?js_string}',
         email : '${(data.user.email!'')?js_string}',
         roleId: '${data.role.id}',
-        roleName: '${data.role.name}',
+        roleName: '${data.role.name?js_string}',
         clientId: '${data.client.id}',
-        clientName: '${data.client.name}',
+        clientName: '${data.client.name?js_string}',
         organizationId: '${data.organization.id}',
-        organizationName: '${data.organization.name}'
+        organizationName: '${data.organization.name?js_string}'
 };
 
 OB.AccessibleEntities = {
diff -r ccf67943c792 -r 268243d4b031 
modules/org.openbravo.service.datasource/src-db/database/sourcedata/AD_PREFERENCE.xml
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ 
b/modules/org.openbravo.service.datasource/src-db/database/sourcedata/AD_PREFERENCE.xml
     Fri Mar 04 17:19:37 2011 +0100
@@ -0,0 +1,14 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<data>
+<!--FF8080812E804F64012E805A54F70007--><AD_PREFERENCE>
+<!--FF8080812E804F64012E805A54F70007-->  
<AD_PREFERENCE_ID><![CDATA[FF8080812E804F64012E805A54F70007]]></AD_PREFERENCE_ID>
+<!--FF8080812E804F64012E805A54F70007-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--FF8080812E804F64012E805A54F70007-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--FF8080812E804F64012E805A54F70007-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--FF8080812E804F64012E805A54F70007-->  
<ATTRIBUTE><![CDATA[CSVFieldSeparator]]></ATTRIBUTE>
+<!--FF8080812E804F64012E805A54F70007-->  <VALUE><![CDATA[,]]></VALUE>
+<!--FF8080812E804F64012E805A54F70007-->  
<ISPROPERTYLIST><![CDATA[N]]></ISPROPERTYLIST>
+<!--FF8080812E804F64012E805A54F70007-->  
<AD_MODULE_ID><![CDATA[A44B9BA75C354D8FB2E3F7D6EB6BFDC4]]></AD_MODULE_ID>
+<!--FF8080812E804F64012E805A54F70007--></AD_PREFERENCE>
+
+</data>
diff -r ccf67943c792 -r 268243d4b031 
modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceServlet.java
--- 
a/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceServlet.java
      Fri Mar 04 13:04:56 2011 +0100
+++ 
b/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceServlet.java
      Fri Mar 04 17:19:37 2011 +0100
@@ -22,9 +22,13 @@
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.Writer;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 import java.util.Vector;
 
@@ -46,10 +50,14 @@
 import org.openbravo.client.kernel.BaseKernelServlet;
 import org.openbravo.client.kernel.KernelUtils;
 import org.openbravo.client.kernel.OBUserException;
+import org.openbravo.client.kernel.RequestContext;
+import org.openbravo.dal.core.OBContext;
 import org.openbravo.dal.core.SessionHandler;
 import org.openbravo.dal.service.OBDal;
 import org.openbravo.database.SessionInfo;
+import org.openbravo.erpCommon.businessUtility.Preferences;
 import org.openbravo.erpCommon.security.UsageAudit;
+import org.openbravo.erpCommon.utility.PropertyException;
 import org.openbravo.service.json.JsonConstants;
 import org.openbravo.service.json.JsonUtils;
 import org.openbravo.service.web.InvalidContentException;
@@ -164,10 +172,8 @@
           log.error("Error trying to apply datasource filter with class: " + 
filterClass, e);
         }
       }
-
       // now do the action
       String result = getDataSource(request).fetch(parameters);
-
       boolean isExport = "true".equals(parameters.get("exportToFile"));
       if (isExport) {
         String exportAs = parameters.get("exportAs");
@@ -175,7 +181,7 @@
           exportAs = "csv";
         }
         if ("csv".equals(exportAs)) {
-          writeResultCSV(response, result);
+          writeResultCSV(request, response, parameters, result);
         } else {
           log.error("Unsupported export format: " + exportAs);
         }
@@ -422,47 +428,129 @@
     w.close();
   }
 
-  private void writeResultCSV(HttpServletResponse response, String result) 
throws IOException,
-      JSONException {
+  private void writeResultCSV(HttpServletRequest request, HttpServletResponse 
response,
+      Map<String, String> parameters, String result) throws IOException, 
JSONException {
     response.setContentType("text/csv; charset=UTF-8");
     response.setHeader("Content-Disposition", "attachment; 
filename=ExportedData.csv");
+    VariablesSecureApp vars = new VariablesSecureApp(request);
 
     JSONObject jsonResult = new JSONObject(result);
     JSONArray data = jsonResult.getJSONObject("response").getJSONArray("data");
+    String fieldSeparator;
+    try {
+      fieldSeparator = Preferences.getPreferenceValue("CSVFieldSeparator", 
false, null, null,
+          OBContext.getOBContext().getUser(), null, null);
+    } catch (PropertyException e) {
+      log.warn("CSV Field Separator couldn't be found. Using default 
separator: ,");
+      fieldSeparator = ",";
+    }
 
+    List<String> fieldProperties = new ArrayList<String>();
+    if (parameters.get("viewState") != null
+        && !parameters.get("viewState").toString().equals("undefined")) {
+      String viewStateO = parameters.get("viewState");
+      String viewStateWithoutParenthesis = viewStateO.substring(1, 
viewStateO.length() - 1);
+      JSONObject viewState = new JSONObject(viewStateWithoutParenthesis);
+      String fieldA = viewState.getString("field");
+      JSONArray fields = new JSONArray(fieldA);
+      for (int i = 0; i < fields.length(); i++) {
+        JSONObject field = fields.getJSONObject(i);
+        if (field.has("visible") && !field.getBoolean("visible")) {
+          // The field is not visible. We should not export it
+          continue;
+        }
+        if (field.getString("name").equals("_checkboxField")
+            || field.getString("name").equals("_editLink")) {
+          continue;
+        }
+        fieldProperties.add(field.getString("name"));
+      }
+    }
     StringBuffer csv = new StringBuffer();
     if (data.length() > 0) {
-      final JSONObject headerRow = data.getJSONObject(0);
-
-      final Iterator<?> itKeys = headerRow.keys();
-      Vector<String> keys = new Vector<String>();
-      boolean isFirst = true;
-      while (itKeys.hasNext()) {
-        if (isFirst) {
-          isFirst = false;
-        } else {
-          csv.append(",");
+      if (fieldProperties.size() > 0) {
+        // If the request came with the view state information, we get the 
properties from there
+        for (int i = 0; i < fieldProperties.size(); i++) {
+          if (i > 0) {
+            csv.append(fieldSeparator);
+          }
+          csv.append("\"").append(fieldProperties.get(i)).append("\"");
         }
-        String key = (String) itKeys.next();
-        keys.add(key);
-        csv.append("'").append(key).append("'");
+      } else {
+        // If not, we get them from the JSONObject itself
+        final JSONObject headerRow = data.getJSONObject(0);
+        final Iterator<?> itKeysF = headerRow.keys();
+        Vector<String> keys = new Vector<String>();
+        boolean isFirst = true;
+        while (itKeysF.hasNext()) {
+          String key = (String) itKeysF.next();
+          if (key.endsWith("_identifier")) {
+            continue;
+          }
+          if (fieldProperties.size() > 0 && !fieldProperties.contains(key)) {
+            // Field is not visible. We don't show it
+            continue;
+          }
+          if (isFirst) {
+            isFirst = false;
+          } else {
+            csv.append(fieldSeparator);
+          }
+          keys.add(key);
+          csv.append("'").append(key).append("'");
+        }
       }
 
       for (int i = 0; i < data.length(); i++) {
         JSONObject row = data.getJSONObject(i);
         csv.append("\n");
-        isFirst = true;
-        for (String key : keys) {
+        final Iterator<?> itKeys;
+        if (fieldProperties.size() > 0) {
+          itKeys = fieldProperties.iterator();
+        } else {
+          itKeys = row.keys();
+        }
+        boolean isFirst = true;
+        while (itKeys.hasNext()) {
+          String key = (String) itKeys.next();
+          if (key.endsWith("_identifier")) {
+            continue;
+          }
+          if (fieldProperties.size() > 0 && !fieldProperties.contains(key)) {
+            // Field is not visible. We don't show it
+            continue;
+          }
           if (isFirst) {
             isFirst = false;
           } else {
-            csv.append(",");
+            csv.append(fieldSeparator);
           }
-          Object keyValue = row.get(key);
-          if (keyValue instanceof String) {
-            Replace.replace((String) keyValue, "\"", "\"\"");
+          if (!row.has(key)) {
+            continue;

------------------------------------------------------------------------------
What You Don't Know About Data Connectivity CAN Hurt You
This paper provides an overview of data connectivity, details
its effect on application quality, and explores various alternative
solutions. http://p.sf.net/sfu/progress-d2d
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to