Skip to content

Commit be31b01

Browse files
fix: DB Parameter with display type. (#41)
1 parent 5ac0ad7 commit be31b01

File tree

4 files changed

+110
-45
lines changed

4 files changed

+110
-45
lines changed

src/main/java/org/spin/service/grpc/util/db/ParameterUtil.java

+18-3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.compiere.util.DisplayType;
3232
import org.spin.service.grpc.util.value.BooleanManager;
3333
import org.spin.service.grpc.util.value.NumberManager;
34+
import org.spin.service.grpc.util.value.StringManager;
3435
import org.spin.service.grpc.util.value.TimeManager;
3536
import org.spin.service.grpc.util.value.ValueManager;
3637

@@ -200,10 +201,20 @@ public static Object getValueToFilterRestriction(int displayTypeId, Object value
200201
if (value == null) {
201202
return transformValue;
202203
}
204+
if (displayTypeId <= 0) {
205+
return transformValue;
206+
}
203207
if (DisplayType.isID(displayTypeId) || DisplayType.Integer == displayTypeId) {
204-
transformValue = NumberManager.getIntegerFromObject(
208+
Integer integerValue = NumberManager.getIntegerFromObject(
205209
value
206210
);
211+
transformValue = integerValue;
212+
if (integerValue == null && (DisplayType.Search == displayTypeId || DisplayType.Table == displayTypeId)) {
213+
// no casteable for integer, as `AD_Language`, `EntityType`
214+
transformValue = StringManager.getStringFromObject(
215+
value
216+
);
217+
}
207218
} else if (DisplayType.isNumeric(displayTypeId)) {
208219
transformValue = NumberManager.getBigDecimalFromObject(
209220
value
@@ -217,14 +228,18 @@ public static Object getValueToFilterRestriction(int displayTypeId, Object value
217228
value
218229
);
219230
} else if (DisplayType.List == displayTypeId) {
220-
transformValue = value.toString();
231+
transformValue = StringManager.getStringFromObject(
232+
value
233+
);
221234
if (value instanceof Boolean) {
222235
transformValue = BooleanManager.getBooleanToString(
223236
value.toString()
224237
);
225238
}
226239
} else if (DisplayType.isText(displayTypeId)) {
227-
transformValue = value.toString();
240+
transformValue = StringManager.getStringFromObject(
241+
value
242+
);
228243
} else if (DisplayType.Button == displayTypeId) {
229244
// if (value instanceof Integer || value instanceof Long) {
230245
// transformValue = NumberManager.getIntegerFromObject(

src/main/java/org/spin/service/grpc/util/value/BooleanManager.java

-15
Original file line numberDiff line numberDiff line change
@@ -99,21 +99,6 @@ public static String getBooleanToString(String value) {
9999
getBooleanFromString(value)
100100
);
101101
}
102-
/**
103-
* @deprecated
104-
* @see {@link BooleanManager.getBooleanToTranslated(String)}
105-
* @param value
106-
* @param translated
107-
* @return
108-
*/
109-
public static String getBooleanToString(String value, boolean translated) {
110-
if (translated) {
111-
return getBooleanToTranslated(value);
112-
}
113-
return getBooleanToString(
114-
getBooleanFromString(value)
115-
);
116-
}
117102
public static String getBooleanToString(boolean value) {
118103
String convertedValue = "N";
119104
if (value) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/************************************************************************************
2+
* Copyright (C) 2018-present E.R.P. Consultores y Asociados, C.A. *
3+
* Contributor(s): Edwin Betancourt, [email protected] *
4+
* This program is free software: you can redistribute it and/or modify *
5+
* it under the terms of the GNU General Public License as published by *
6+
* the Free Software Foundation, either version 2 of the License, or *
7+
* (at your option) any later version. *
8+
* This program is distributed in the hope that it will be useful, *
9+
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
10+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
11+
* GNU General Public License for more details. *
12+
* You should have received a copy of the GNU General Public License *
13+
* along with this program. If not, see <https://www.gnu.org/licenses/>. *
14+
************************************************************************************/
15+
16+
package org.spin.service.grpc.util.value;
17+
18+
import java.util.Optional;
19+
20+
/**
21+
* Class for handle String values
22+
* @author Edwin Betancourt, [email protected], https://github.com/EdwinBetanc0urt
23+
*/
24+
public class StringManager {
25+
26+
/**
27+
* Convert null on ""
28+
* @param value
29+
* @return
30+
*/
31+
public static String getValidString(String value) {
32+
return Optional.ofNullable(value).orElse("");
33+
}
34+
35+
36+
/**
37+
* Convert Object to String
38+
* @param value
39+
* @return
40+
*/
41+
public static String getStringFromObject(Object value) {
42+
if (value == null) {
43+
return null;
44+
}
45+
// return value.toString();
46+
return (String) value;
47+
}
48+
49+
}

src/main/java/org/spin/service/grpc/util/value/ValueManager.java

+43-27
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import java.time.ZoneOffset;
2727
import java.util.HashMap;
2828
import java.util.Map;
29-
import java.util.Optional;
3029
import java.util.Properties;
3130

3231
import org.adempiere.core.domains.models.I_C_Order;
@@ -167,7 +166,9 @@ public static Value.Builder getValueFromString(String value) {
167166
return getValueFromNull();
168167
}
169168
return Value.newBuilder().setStringValue(
170-
validateNull(value)
169+
StringManager.getValidString(
170+
value
171+
)
171172
);
172173
}
173174

@@ -339,8 +340,12 @@ public static Timestamp getTimestampFromValue(Value dateValue) {
339340
if(type == null || value == null) {
340341
return null;
341342
}
342-
String validType = Optional.ofNullable(type.getStringValue()).orElse("");
343-
String validValue = Optional.ofNullable(value.getStringValue()).orElse("");
343+
String validType = StringManager.getValidString(
344+
type.getStringValue()
345+
);
346+
String validValue = StringManager.getValidString(
347+
value.getStringValue()
348+
);
344349
if((!validType.equals(TYPE_DATE)
345350
&& !validType.equals(TYPE_DATE_TIME))
346351
|| validValue.length() == 0) {
@@ -398,7 +403,14 @@ public static Value.Builder getValueFromTimestamp(Timestamp value) {
398403
}
399404

400405

401-
406+
/**
407+
* Get String from a value
408+
* @param value
409+
* @return
410+
*/
411+
public static String getStringFromValue(Value value) {
412+
return getStringFromValue(value, false);
413+
}
402414
/**
403415
* Get String from a value
404416
* @param value
@@ -416,16 +428,8 @@ public static String getStringFromValue(Value value, boolean uppercase) {
416428
}
417429
return stringValue;
418430
}
419-
420-
/**
421-
* Get String from a value
422-
* @param value
423-
* @return
424-
*/
425-
public static String getStringFromValue(Value value) {
426-
return getStringFromValue(value, false);
427-
}
428-
431+
432+
429433
/**
430434
* Get integer from a value
431435
* @param value
@@ -488,7 +492,10 @@ public static Value.Builder getValueFromReference(Object value, int referenceId)
488492
return getValueFromBigDecimal(bigDecimalValue);
489493
} else if(DisplayType.YesNo == referenceId) {
490494
if (value instanceof String) {
491-
return getValueFromStringBoolean((String) value);
495+
String stringValue = StringManager.getStringFromObject(
496+
value
497+
);
498+
return getValueFromStringBoolean(stringValue);
492499
}
493500
return getValueFromBoolean((Boolean) value);
494501
} else if(DisplayType.isDate(referenceId)) {
@@ -497,7 +504,12 @@ public static Value.Builder getValueFromReference(Object value, int referenceId)
497504
);
498505
return getValueFromTimestamp(dateValue);
499506
} else if(DisplayType.isText(referenceId) || DisplayType.List == referenceId) {
500-
return getValueFromString((String) value);
507+
String stringValue = StringManager.getStringFromObject(
508+
value
509+
);
510+
return getValueFromString(
511+
stringValue
512+
);
501513
} else if (DisplayType.Button == referenceId) {
502514
if (value instanceof Integer) {
503515
return getValueFromInteger((Integer) value);
@@ -512,8 +524,11 @@ public static Value.Builder getValueFromReference(Object value, int referenceId)
512524
);
513525
return getValueFromInteger(bigDecimalValue);
514526
} else if (value instanceof String) {
527+
String stringValue = StringManager.getStringFromObject(
528+
value
529+
);
515530
return getValueFromString(
516-
(String) value
531+
stringValue
517532
);
518533
}
519534
return getValueFromObject(value);
@@ -690,7 +705,7 @@ public static Map<String, Object> convertValuesMapToObjects(Map<String, Value> v
690705
/**
691706
* Convert Selection values from gRPC to ADempiere values
692707
* @param values
693-
* @param displayTypeColumns <ColumnName, DisplayType>
708+
* @param displayTypeColumns Map(ColumnName, DisplayType)
694709
* @return
695710
*/
696711
public static Map<String, Object> convertValuesMapToObjects(Map<String, Value> values, Map<String, Integer> displayTypeColumns) {
@@ -803,7 +818,9 @@ public static boolean isDateValue(Value value) {
803818
if(type == null) {
804819
return false;
805820
}
806-
String validType = Optional.ofNullable(type.getStringValue()).orElse("");
821+
String validType = StringManager.getValidString(
822+
type.getStringValue()
823+
);
807824
return validType.equals(TYPE_DATE) || validType.equals(TYPE_DATE_TIME);
808825
}
809826

@@ -824,9 +841,9 @@ public static boolean isDecimalValue(Value value) {
824841
if(type == null) {
825842
return false;
826843
}
827-
String validType = Optional.ofNullable(
844+
String validType = StringManager.getValidString(
828845
type.getStringValue()
829-
).orElse("");
846+
);
830847
return validType.equals(TYPE_DECIMAL);
831848
}
832849

@@ -888,14 +905,13 @@ public static boolean isLookup(int displayType) {
888905
/**
889906
* Convert null on ""
890907
* @param value
908+
* @deprecated Use {@link StringManager#getValidString()} instead.
891909
* @return
892910
*/
893911
public static String validateNull(String value) {
894-
if(value == null) {
895-
value = "";
896-
}
897-
//
898-
return value;
912+
return StringManager.getValidString(
913+
value
914+
);
899915
}
900916

901917

0 commit comments

Comments
 (0)