- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
/**
* @param loginName
* @return
* This method is create a LoginName as Input data
*/
public String getLoginName(String loginName)
{
String userQuery="select u.LoginName from User u";
Recordset rs_user=null;
rs_user = CustomExternalServiceImplUtil.getInstance().executeQuery(userQuery);
List<String> userList = new ArrayList<String>();
while(rs_user.moveNext()){
userList.add(rs_user.valueFromIndex(0).toString());
}
int i=1;
String result = loginName;
for(int j=0; j < userList.size(); j++){
if(userList.get(j).equals(result))
{
result = loginName+i++;
j=0;
}
}
return result;
}
Рефаткоринг чужого кода. Минут пять втуплял, что же тут вообще делается. Еще столько же придумывал, как же это привести в божеский вид с сохранением прежней функциональности.
Lure Of Chaos 06.09.2011 18:36 # 0
2. использовать уточнение where
roman-kashitsyn 06.09.2011 18:53 # +2
roman-kashitsyn 06.09.2011 18:56 # +6
lucidfox 07.09.2011 05:07 # +2
Странно, что не CustomExternalServiceImplUtilFactoryProv ider.getInstance().getCustomExternalServ iceImplUtilFactory().createCustomExterna lServiceImplUtil()
roman-kashitsyn 07.09.2011 06:47 # 0
roman-kashitsyn 07.09.2011 09:14 # +3
roman-kashitsyn 06.09.2011 19:17 # 0
absolut 06.09.2011 21:48 # +2
roman-kashitsyn 06.09.2011 23:57 # 0
roman-kashitsyn 07.09.2011 13:06 # 0
absolut 07.09.2011 13:32 # +1
Lure Of Chaos 07.09.2011 15:14 # 0
SmackMyBitchUp 08.09.2011 16:03 # 0
lucidfox 07.09.2011 05:09 # 0
Вообще, конечно, мне непонятно, зачем использовать Recordset, когда в JPA есть удобные getResultList и getSingleResult.
А ещё лучше использовать QueryDSL и не хранить запросы строками.
roman-kashitsyn 07.09.2011 06:49 # 0
lucidfox 07.09.2011 09:48 # 0
String userQuery="select u.LoginName from User u";
Это что, не JPQL?
roman-kashitsyn 07.09.2011 09:54 # 0
lucidfox 07.09.2011 10:07 # 0
askell 07.09.2011 13:10 # 0
roman-kashitsyn 07.09.2011 13:13 # 0
roman-kashitsyn 07.09.2011 10:54 # 0
В JPA 2 есть Criteria API, хотя критерии Hibernate мне кажутся более простыми
lucidfox 07.09.2011 11:46 # 0
QueryDSL значительно удобнее. И естественным синтаксисом, и отделением параметров запроса от реализации.
roman-kashitsyn 07.09.2011 12:09 # 0
SadKo 08.09.2011 12:28 # 0
Lure Of Chaos 08.09.2011 16:41 # 0
lucidfox 08.09.2011 21:58 # −1
absolut 08.09.2011 22:39 # +5
SmackMyBitchUp 09.09.2011 12:02 # 0
roman-kashitsyn 09.09.2011 12:32 # 0
roman-kashitsyn 07.09.2011 12:31 # 0
lucidfox 07.09.2011 09:50 # 0
Очень надо такое счастье. Guice + Guice-Persist наше всё.
roman-kashitsyn 07.09.2011 10:15 # 0
Lure Of Chaos 07.09.2011 15:15 # 0
absolut 07.09.2011 15:33 # +2
Lure Of Chaos 07.09.2011 15:34 # 0
absolut 07.09.2011 15:38 # 0
Lure Of Chaos 07.09.2011 15:44 # 0
roman-kashitsyn 07.09.2011 15:47 # +4
roman-kashitsyn 07.09.2011 15:39 # 0
Lure Of Chaos 07.09.2011 16:15 # 0
1.1. поэтому можно писать класс как угодно, наследовать от чего угодно, и использовать повторно, тестировать без поднятия фреймворка, нет конфликтов имен через наследуемые классы и интерфейсы
1.2. Dependency Injection через аннотации вместо явного управления
1.3. если что-то поменялось, ничего не надо переименовывать - достаточно изменить аннотацию
2. идеология компонентов (компонент=1 класс + 1 шаблон)
2.1 возможность держать всё, относящееся к компоненту (класс, шаблон, ресурсы) в одной папке, а не разворачивать всю глубину соседнего дерева templates, resources или assets
2.2. запросто локализуемые ресурсы (достаточно добавить префикс локали к имени)
2.3. инстанс класса на сессию (для каждого пользователя свои поля класса)
2.4. в режиме разработки нет необходимости перезапускать аппликацию, изменения применяются сразу же
3. язык шаблонов: шаблон представляет из себя xml-файл без строгой схемы, фреймворк реагирует только на теги и аттрибуты в собственном неймспейсе, а точнее - каждый такой тег представляет собой компонент со своими событиями; аттрибуты приходят в обработчик после байндинга как параметры метода.
3.1. поэтому шаблоны выглядят очень просто, шаблон не устрашает всякими проверками
3.2. шаблон пассивен (код не включишь)
3.3. шаблон можно отдать даже посредственному верстуну, не слыша его ворчаний по поводу непонятного кода в шаблонах
3.4. даже в визуалках нет такой каши, как в Smarty-подобных шаблонах
4. нативная интеграция JPA, Hibernate, Spring, Acegi и др.
5. сборка через Maven
6. Дока в порядке, фреймворк учится за 5 минут, хорошее сообщество
может, кое-что и упустил, но это важные свойства для меня, как разработчика.
roman-kashitsyn 07.09.2011 16:28 # 0
На работе суровый JSF 1.2 =(
Lure Of Chaos 07.09.2011 16:34 # 0
разве же ResourceBundle сам понимает, что, если мы указали файл flag.jpg, то, если текущий язык русский, то сначала искать flag_ru_RU.jpg, потом flag_ru.jpg, потом flag_en.jpg, а потом уж flag.jpg? кажется, нужно этот механизм писать самому - в тапестри это поведение по умолчанию
roman-kashitsyn 07.09.2011 16:46 # 0
Lure Of Chaos 07.09.2011 16:49 # 0
кстати, в альфа-версии 5.3 там уже появилось еще одно измерение ресурсов, называемое skin или theme - c той же лёгкостью можно для тех же компонентов создать мобильную версию, например, не дублируя код.
Lure Of Chaos 07.09.2011 16:43 # 0
Правда, есть опасность, что, если тапестри понравился, потом начинаешь плеваться от всех других фреймов =(
Lure Of Chaos 07.09.2011 16:15 # 0
1. раньше тапестри был довольно прожорлив (128М котенку не хватало, нужно было 300-400). Это было в версии 5.0, ща вроде бы получше с этим
2. в режиме разработки раньше котенок очень часто падал с OutOfMemoryError: PermGen space - это пофиксили в версии 5.2
3. не нашел никакой CMS на тапестри, только фреймворк
4. АБСОЛЮТНО НИКАКОЙ кодогенерации, всё пишем исключительно ручками :( даже в Playframework это есть...
5. хорошая поддержка IDE Idea и Netbeans, практически из коробки, а вот мой любимый Eclipse обошли - первоначальная настройка похожа на танцы с бубном - поэтому для новых проектов клонирую самодельный helloworld
lucidfox 07.09.2011 17:00 # 0
Lure Of Chaos 07.09.2011 17:47 # 0
1. в Tapestry javascript придётся писать самому, нет его генерации на основе кода Java. Зато благодаря стандартным компонентам, это придётся делать не так часто
2. шаблоны - строго XML, а не HTML
3. нет понятия наследования разметки
3. не надо расширять стандартные базовые компоненты (хотя - можно), вся логика работы строится по аннотациям, либо по соглашениям именования
4. Tapestry IoC есть предлагает и свои, и возможность создавать т.н. сервисы - невизуальные компоненты, к которым можно обращаться из любого места
5. Tapestry много заимствовал из AOP - есть декораторы (теперь рекомендуются к использованию т.н. "советчики"), с помощью которых можно расширить или заместить, а точнее, обернуть, любой метод или сервис. В Wicket я такого не нашел
6. Помимо компонентов, есть возможность создавать т.н. "примеси"(mixins) - фичи, которые могут быть использованы в любом компоненте - например, что бы при нажатии на ссылку или кнопку выдавалось подтверждение. Есть ли миксины в Викете? не слышал
7. Склейка жабаскриптов и стилей в один файл, хотя на каждый компонент может быть привязаны свои маленькие кусочки через аннотации.
8. Ах да, к недостаткам Tapestry: он для клиентской части использует Prototype+Scriptalicious, поэтому на данный момент JQuery можно использовать только в режиме noConflict. Однако, Говард обещал сделать абстрактный слой, который будет работать с любым js-фреймворком - и действительно, в SVN появились таковые наработки, они будут в стабильной 5.3 версии
вообще, пишут вот что: https://cwiki.apache.org/WICKET/for-tapestry-users.html
Lure Of Chaos 07.09.2011 16:18 # 0
1. шаблонизатор там только Smarty-подобный
2. stateless-идеология напоминает скорее PHP, нет удобства связаннного в постоянном кручении процесса аппликации...
roman-kashitsyn 07.09.2011 16:51 # 0
Lure Of Chaos 07.09.2011 16:52 # 0
i-- 06.09.2011 22:29 # 0
roman-kashitsyn 06.09.2011 23:56 # +1
lucidfox 07.09.2011 17:10 # 0
Фиксед?
SmackMyBitchUp 08.09.2011 15:57 # 0
lucidfox 08.09.2011 15:58 # 0
SmackMyBitchUp 08.09.2011 16:01 # +2
inkanus-gray 08.09.2011 16:02 # 0
roman-kashitsyn 08.09.2011 16:01 # 0
SmackMyBitchUp 08.09.2011 16:03 # 0
roman-kashitsyn 08.09.2011 16:22 # +2
SmackMyBitchUp 08.09.2011 18:12 # 0
Uhehesh 08.09.2011 18:14 # 0
absolut 09.09.2011 07:15 # 0
tir 09.09.2011 07:38 # 0