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 ?