konto usunięte

Temat: bledne wywolanie metody

Witam,

Z góry przepraszam za byc moze niejasne opisanie problemu, ale postaram się opisać jak najjaśniej. Mój pierwszy post w tej grupie ale przejdzmy do rzeczy, otóż mam taka metode (List. 1), która pobiera ciąg znaków z bazy danych z pola powód korekty. Założeniem jest, że dla Network.SAM_M jest 14-znakowy int, a dla Network.SAM_R jest 15:

List. 1

public String getOrderIDWithSAM() {
if (remarks != null && remarks.length() >= RETURN_NUMBER_LENGTH) {
Matcher m = makroPattern.matcher(remarks);
if (m.find()) {
String number = remarks.substring(m.start(), m.end());
System.out.println("RETURN_NUMBER: " + number); //zwraca z pola CorrectionReason(powód korekty) 14 lub 15 cyfrowy
return number;
}
}
return orderID;
}


Ta metoda ma jeszcze odwołanie prywatne:

private static final int RETURN_NUMBER_LENGTH = 14;
private static Pattern makroPattern = Pattern.compile("\\d{" + RETURN_NUMBER_LENGTH + "}");

I gdy ustawiam RETURN_NUMBER_LENGHT na 14 to w wywołanie dla Network.SAM_M jest OK i zwraca mi oczekiwana wartość, a dla Network.SAM_R nie, sytuacja ma sie inaczej gdy w RETURN_NUMBER_LENGHT ustawie 15 to wówczas dla Network.SAM_M brak jednego, ostatniego znaku a dla Network.SAM_R jest OK.

Wywołanie jej występuję w pliku xml:

List.2

append(" <BuyerOrderNumber>").append(Application.getNetwork() == Network.SAM_M || Application.getNetwork() == Network.SAM_R ? invoice.getOrderIDWithSAM() : invoice.getOrderID()).append("</BuyerOrderNumber>\n")


Wg mnie błąd tkwi w metodzie getOrderIDWithSAM, pomimo że jest postawiony znak ">=" macie jakiś pomysł jak można to najprościej rozwiązac ?
Piotr T.

Piotr T. Spring/Microservices

Temat: bledne wywolanie metody

Źródłem problemów jest zły/nieczytelny kod w 2 różnych językach :

1. Application.getNetwork() == Network.SAM_M || Application.getNetwork() == Network.SAM_R ? invoice.getOrderIDWithSAM() : invoice.getOrderID()

To powinna być metoda taka z if-em/switchem

2. Używanie regexpa (czyli de facto 2 języka)
co oznacza RegExp o treści \d{15} a co o treści \d{14}?
http://en.wikipedia.org/wiki/Regular_expression

Jaki jest wynik wywołania ?
Matcher m = makroPattern.matcher(remarks);

Następna dyskusja:

Metody komunikacji w aplika...




Wyślij zaproszenie do