details: https://code.openbravo.com/erp/devel/pi/rev/9f9148601089 changeset: 29464:9f9148601089 user: Inigo Sanchez <inigo.sanchez <at> openbravo.com> date: Sun May 15 21:28:20 2016 +0200 summary: Related with issue 32769: Codereview improvements.
diffstat: modules/org.openbravo.service.datasource/src-db/database/sourcedata/AD_REF_LIST.xml | 12 + modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceServlet.java | 85 ++++++---- src-db/database/sourcedata/AD_REF_LIST.xml | 11 - 3 files changed, 63 insertions(+), 45 deletions(-) diffs (198 lines): diff -r ea18c2c210a6 -r 9f9148601089 modules/org.openbravo.service.datasource/src-db/database/sourcedata/AD_REF_LIST.xml --- a/modules/org.openbravo.service.datasource/src-db/database/sourcedata/AD_REF_LIST.xml Fri May 13 11:26:47 2016 +0200 +++ b/modules/org.openbravo.service.datasource/src-db/database/sourcedata/AD_REF_LIST.xml Sun May 15 21:28:20 2016 +0200 @@ -24,6 +24,18 @@ <!--23658853CF2D417B8FB94FE849DB3337--> <AD_MODULE_ID><![CDATA[A44B9BA75C354D8FB2E3F7D6EB6BFDC4]]></AD_MODULE_ID> <!--23658853CF2D417B8FB94FE849DB3337--></AD_REF_LIST> +<!--39FF39F25DD84390B4617D66E52C08EE--><AD_REF_LIST> +<!--39FF39F25DD84390B4617D66E52C08EE--> <AD_REF_LIST_ID><![CDATA[39FF39F25DD84390B4617D66E52C08EE]]></AD_REF_LIST_ID> +<!--39FF39F25DD84390B4617D66E52C08EE--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> +<!--39FF39F25DD84390B4617D66E52C08EE--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID> +<!--39FF39F25DD84390B4617D66E52C08EE--> <ISACTIVE><![CDATA[Y]]></ISACTIVE> +<!--39FF39F25DD84390B4617D66E52C08EE--> <VALUE><![CDATA[OBSERDS_CSVExportTranslateYesNoReference]]></VALUE> +<!--39FF39F25DD84390B4617D66E52C08EE--> <NAME><![CDATA[Translate Yes/No Reference in Export To CSV]]></NAME> +<!--39FF39F25DD84390B4617D66E52C08EE--> <DESCRIPTION><![CDATA[This preference allows the user to translate Yes/No references when uses export to CSV. If this preference is set to true the Yes/No references will translate when export to CSV.]]></DESCRIPTION> +<!--39FF39F25DD84390B4617D66E52C08EE--> <AD_REFERENCE_ID><![CDATA[A26BA480E2014707B47257024C3CBFF7]]></AD_REFERENCE_ID> +<!--39FF39F25DD84390B4617D66E52C08EE--> <AD_MODULE_ID><![CDATA[A44B9BA75C354D8FB2E3F7D6EB6BFDC4]]></AD_MODULE_ID> +<!--39FF39F25DD84390B4617D66E52C08EE--></AD_REF_LIST> + <!--62980B3E5545466D91CA8B2AC352AF72--><AD_REF_LIST> <!--62980B3E5545466D91CA8B2AC352AF72--> <AD_REF_LIST_ID><![CDATA[62980B3E5545466D91CA8B2AC352AF72]]></AD_REF_LIST_ID> <!--62980B3E5545466D91CA8B2AC352AF72--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> diff -r ea18c2c210a6 -r 9f9148601089 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 May 13 11:26:47 2016 +0200 +++ b/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceServlet.java Sun May 15 21:28:20 2016 +0200 @@ -54,7 +54,6 @@ import org.openbravo.base.exception.OBSecurityException; import org.openbravo.base.model.Entity; import org.openbravo.base.model.Property; -import org.openbravo.base.model.domaintype.BooleanDomainType; import org.openbravo.base.model.domaintype.EnumerateDomainType; import org.openbravo.base.secureApp.VariablesSecureApp; import org.openbravo.base.session.OBPropertiesProvider; @@ -289,6 +288,8 @@ private class QueryJSONWriterToCSV extends DefaultJsonDataService.QueryResultWriter { + private static final String YES_NO_REFERENCE_ID = "20"; + Writer writer; String fieldSeparator; String decimalSeparator; @@ -302,10 +303,12 @@ List<String> dateTimeCols = new ArrayList<String>(); List<String> timeCols = new ArrayList<String>(); List<String> numericCols = new ArrayList<String>(); + List<String> yesNoCols = new ArrayList<String>(); Map<String, DecimalFormat> formats = new HashMap<String, DecimalFormat>(); int clientUTCOffsetMiliseconds; TimeZone clientTimeZone; - Window windowToCsv = null; + String translatedLabelYes; + String translatedLabelNo; public QueryJSONWriterToCSV(HttpServletRequest request, HttpServletResponse response, Map<String, String> parameters, Entity entity) { @@ -408,6 +411,8 @@ } } + boolean preferenceCalculateFirst = true; + boolean translateYesNoReferences = false; for (String propKey : properties.keySet()) { final Property prop = properties.get(propKey); Column col = OBDal.getInstance().get(Column.class, prop.getColumnId()); @@ -462,11 +467,15 @@ timeCols.add(propKey); } else if (prop.isPrimitive() && prop.isNumericType()) { numericCols.add(propKey); - } - - // save current window to get preference properly - if (prop.getDomainType() instanceof BooleanDomainType) { - windowToCsv = window; + } else if (isYesNoReference(prop)) { + // Calculate if it is needed translate YesNo reference in export to CSV. + if (preferenceCalculateFirst) { + translateYesNoReferences = translateYesNoReferencesInCsv(window); + preferenceCalculateFirst = false; + } + if (translateYesNoReferences) { + yesNoCols.add(propKey); + } } if (!(prop.getDomainType() instanceof EnumerateDomainType)) { @@ -518,6 +527,23 @@ } } + private boolean isYesNoReference(Property prop) { + final Column column = OBDal.getInstance().get(Column.class, prop.getColumnId()); + return YES_NO_REFERENCE_ID.equals((String) DalUtil.getId(column.getReference())); + } + + private boolean translateYesNoReferencesInCsv(Window windowToCsv) { + boolean shouldCheck = false; + try { + shouldCheck = "Y".equals(Preferences.getPreferenceValue( + "OBSERDS_CSVExportTranslateYesNoReference", true, OBContext.getOBContext() + .getCurrentClient(), OBContext.getOBContext().getCurrentOrganization(), OBContext + .getOBContext().getUser(), OBContext.getOBContext().getRole(), windowToCsv)); + } catch (PropertyException prefNotDefined) { + } + return shouldCheck; + } + private void writeJSONProperties(JSONObject row) { final Iterator<?> itKeysF = row.keys(); Vector<String> keys = new Vector<String>(); @@ -560,8 +586,6 @@ } boolean isFirst = true; - boolean shouldCheckTranslation = false; - boolean preferenceCalculateFirst = true; while (itKeys.hasNext()) { String key = (String) itKeys.next(); if (key.endsWith(JsonConstants.IDENTIFIER)) { @@ -629,22 +653,8 @@ SimpleDateFormat timeFormat = JsonUtils.createTimeFormatWithoutGMTOffset(); timeFormat.setLenient(true); keyValue = timeFormat.format(clientTimezoneDate); - } else if (keyValue instanceof Boolean && keyValue != null) { - // Calculate if it is needed translate YesNo reference in export to csv. - if (preferenceCalculateFirst == true) { - shouldCheckTranslation = getValueShouldCheckTranslationPreference(); - preferenceCalculateFirst = false; - } - if (shouldCheckTranslation) { - String userLanguage = OBContext.getOBContext().getLanguage().getLanguage(); - if (keyValue.toString().equals("true")) { - keyValue = Utility.messageBD(new DalConnectionProvider(false), "OBUISC_Yes", - userLanguage); - } else if (keyValue.toString().equals("false")) { - keyValue = Utility.messageBD(new DalConnectionProvider(false), "OBUISC_No", - userLanguage); - } - } + } else if (yesNoCols.contains(key) && keyValue != null) { + keyValue = (Boolean) keyValue ? getTranslatedLabelYes() : getTranslatedLabelNo(); } if (keyValue != null && !keyValue.toString().equals("null")) { @@ -662,16 +672,23 @@ } } - private boolean getValueShouldCheckTranslationPreference() { - boolean shouldCheck = false; - try { - shouldCheck = "Y".equals(Preferences.getPreferenceValue("AllowExportCSV_YesNoTranslated", - true, OBContext.getOBContext().getCurrentClient(), OBContext.getOBContext() - .getCurrentOrganization(), OBContext.getOBContext().getUser(), OBContext - .getOBContext().getRole(), windowToCsv)); - } catch (PropertyException prefNotDefined) { + private String getTranslatedLabelYes() { + if (translatedLabelYes == null) { + translatedLabelYes = getTranslatedLabel("OBUISC_Yes"); } - return shouldCheck; + return translatedLabelYes; + } + + private String getTranslatedLabelNo() { + if (translatedLabelNo == null) { + translatedLabelNo = getTranslatedLabel("OBUISC_No"); + } + return translatedLabelNo; + } + + private String getTranslatedLabel(String label) { + String userLanguage = OBContext.getOBContext().getLanguage().getLanguage(); + return Utility.messageBD(new DalConnectionProvider(false), label, userLanguage); } private Date convertFromLocalToClientTimezone(Date localDate) { diff -r ea18c2c210a6 -r 9f9148601089 src-db/database/sourcedata/AD_REF_LIST.xml --- a/src-db/database/sourcedata/AD_REF_LIST.xml Fri May 13 11:26:47 2016 +0200 +++ b/src-db/database/sourcedata/AD_REF_LIST.xml Sun May 15 21:28:20 2016 +0200 @@ -8897,17 +8897,6 @@ <!--3946D07DF63C47E7A11BFADCF160D6B6--> <SEQNO><![CDATA[20]]></SEQNO> <!--3946D07DF63C47E7A11BFADCF160D6B6--></AD_REF_LIST> -<!--39FF39F25DD84390B4617D66E52C08EE--><AD_REF_LIST> -<!--39FF39F25DD84390B4617D66E52C08EE--> <AD_REF_LIST_ID><![CDATA[39FF39F25DD84390B4617D66E52C08EE]]></AD_REF_LIST_ID> -<!--39FF39F25DD84390B4617D66E52C08EE--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> -<!--39FF39F25DD84390B4617D66E52C08EE--> <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID> -<!--39FF39F25DD84390B4617D66E52C08EE--> <ISACTIVE><![CDATA[Y]]></ISACTIVE> -<!--39FF39F25DD84390B4617D66E52C08EE--> <VALUE><![CDATA[AllowExportCSV_YesNoTranslated]]></VALUE> -<!--39FF39F25DD84390B4617D66E52C08EE--> <NAME><![CDATA[Allow Export to CSV YesNo translated]]></NAME> -<!--39FF39F25DD84390B4617D66E52C08EE--> <AD_REFERENCE_ID><![CDATA[A26BA480E2014707B47257024C3CBFF7]]></AD_REFERENCE_ID> -<!--39FF39F25DD84390B4617D66E52C08EE--> <AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID> -<!--39FF39F25DD84390B4617D66E52C08EE--></AD_REF_LIST> - <!--3A38B5315B64459793BF256CEB6703B4--><AD_REF_LIST> <!--3A38B5315B64459793BF256CEB6703B4--> <AD_REF_LIST_ID><![CDATA[3A38B5315B64459793BF256CEB6703B4]]></AD_REF_LIST_ID> <!--3A38B5315B64459793BF256CEB6703B4--> <AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID> ------------------------------------------------------------------------------ Mobile security can be enabling, not merely restricting. Employees who bring their own devices (BYOD) to work are irked by the imposition of MDM restrictions. Mobile Device Manager Plus allows you to control only the apps on BYO-devices by containerizing them, leaving personal data untouched! https://ad.doubleclick.net/ddm/clk/304595813;131938128;j _______________________________________________ Openbravo-commits mailing list Openbravo-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbravo-commits