+65
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
for (...) {
Comparator<Date> date_comparator = new Comparator<Date>() {
@Override
public int compare(Date s1, Date s2) {
long n1 = s1.getTime();
long n2 = s2.getTime();
if (n1 < n2)
return -1;
else if (n1 > n2)
return 1;
else
return 0;
}
};
Date beforeSaveDate = (Date) beforeSaveParam.getValue();
beforeSaveDate.setSeconds(0);
Date toSaveDate = (Date) toSaveParam.getValue();
comparedValue = date_comparator.compare(beforeSaveDate, toSaveDate);
}
Задача была сравнить две даты, игнорируя при этом секунды.
LexeY4eg,
13 Января 2012
+80
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
private static final char DELIM = '_';
public String createDocName() {
...
final String sDelim = Character.toString(DELIM);
String res = stringWithDelimiter(docType) + stringWithDelimiter(docNumber) + stringWithDelimiter(docDate) + stringWithDelimiter(documentReceiptDate);
res = res.length() < sDelim.length() ? "" : res.substring(0, res.length() - sDelim.length());
res = res.replace(sDelim + sDelim + sDelim, sDelim);
res = res.replace(sDelim + sDelim, sDelim);
if (res.charAt(0) == DELIM)
res = res.substring(1);
if (res.charAt(res.length() - 1) == DELIM)
res.substring(0, res.length() - sDelim.length());
return res;
}
private String stringWithDelimiter(Object o) {
final String sDelim = Character.toString(DELIM);
String s = (String) o;
return StringUtils.isNotEmpty(s) ? s + sDelim : sDelim;
}
метод createDocName должен из нескольких полей документа составить имя документа, используя в качестве разделителя "_".
Сначала я не мог предположить что делает этот код, но подсказал коллега по работе:
потензицально, вызов String res = stringWithDelimiter(docType) + stringWithDelimiter(docNumber) + stringWithDelimiter(docDate) + stringWithDelimiter(documentReceiptDate) ; может давать запись например такую: "docType___" - в случае если docNumber, docDate и documentReceiptDate будут пустыми строками (а можно получить и "___documentReceiptDate".
НО, предусмотрительный разработчик позаботился об это проблеме!
Он заменяет, "___" и "__" с помощью:
res = res.replace(sDelim + sDelim + sDelim, sDelim);
res = res.replace(sDelim + sDelim, sDelim);
Затем удаляет знаки подчеркиваний в начале и в конце строки:
if (res.charAt(0) == DELIM)
res = res.substring(1);
if (res.charAt(res.length() - 1) == DELIM)
res.substring(0, res.length() - sDelim.length());
Отличное решение, можно было бы конечно переписать метод stringWithDelimiter, чтобы он не дописывал "_" для пустых строк, но это ведь не так круто правда? Жаль только что придется этот класный код снова переписывать если вдруг измениться число параметров, или поменяется разделитель...
LexeY4eg,
23 Ноября 2011
+153
- 1
- 2
- 3
- 4
- 5
if (!field.parentElement.childNodes[0].checked)
{
getElementByFieldName("Original").parentNode.childNodes[0].disabled = true;
getElementByFieldName("Duplicate").parentNode.childNodes[0].disabled = true;
...
Далее идет ещё примерно 20 аналогичных обращений, аля parentNode.childNodes[0]
Очень читабельный и понятный код! :)
LexeY4eg,
23 Ноября 2011
+81
- 1
- 2
- 3
- 4
- 5
Date date = (Date)value.getParam("DocReceiptDate");
if (date.getHours() == 24) {
date.setHours(0);
}
String documentReceiptDate = (new SimpleDateFormat("dd.MM.yyyy.kk.mm")).format(date);
Элегантная попытка форматирования даты.
Задача было вместо 24 часов писать 00, например не "24.11.2011.24.23", а "24.11.2011.00.23".
Как все уже догадались, следовало просто использовать формат "dd.MM.yyyy.HH.mm".
LexeY4eg,
23 Ноября 2011