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