Изменение размеров изображений

Автор PremaServices - Вторник, 25 Июнь 2013. В рубриках: Java

При помощи утилиты Thumbnailator

Изменение размеров изображений

Иногда в приложении может потребоваться "на-лету" менять размер изображения. Предположим, например, что на сервер в базу данных позволено пользователям загружать картинки. Они могут при этом грузить изображения различного разрешения, но нам необходимо приводить их все к одному знаменателю, например, по ширине. И кроме того, делать из этих картинок превьюшки.

В этом нам поможет хорошая утилита Thumbnailator, которая сделает за нас всю работу и превратит решение проблемы в пять минут.

Validation API: проверка объекта на уникальность при помощи @Unique

Автор PremaServices - Понедельник, 24 Июнь 2013. В рубриках: Validation API, Hibernate

Реализация собственного класса валидации

Validation API: проверка объекта на уникальность при помощи @Unique

Проверка нового объекта на уникальность при сохранении в базу данных - одна из самых необходимых проверок. Однако, в Hibernate через Validation API она по умолчанию не реализована по ряду вполне допустимых причин. Вследствие этого, такая проверка стандартно выполняется уже на более низком уровне при взаимодействии фреймворка с СУБД и в случае нарушения целостности базы данных бросает исключение HibernateException.

Конечно, это не слишком удобно извлекать информацию из исключения и пытаться понять, почему оно произошло: то ли целостность нарушена при сохранении, то ли ещё много и много различных других причин...

В хорошем приложении нарушение целостности лучше фиксировать заранее и посылать пользователю красивое сообщение об ошибке, а не HibernateException, чтобы он мог поправить ситуацию. Это можно реализовать обычными дополнительными методами, но более привлекательно и удобно создать специальную аннотацию, тем более если в приложении во всю используется Validation API. Этот подход реализован в данной статье.

Вызов хранимой процедуры средствами Hibernate

Автор PremaServices - Четверг, 20 Июнь 2013. В рубриках: Запросы к базе данных, Hibernate

Простой пример обращения к MS SQL

Вызов хранимой процедуры средствами Hibernate

Наше приложение - админка для интернет-ТВ, расположенная на сервере потокового вещания. Одна из ее множества функций - в определенный момент времени выбирать из базы данных программу передач на следующий день и затем по таймеру запускать в эфир.

База данных располагается на стороннем сервере, и с ней работают менеджеры контента. И выборка данных осуществляется нашей админкой посредством хранимой процедуры, написанной администратором СУБД. Так что нашему приложению ничего, кроме названия процедуры, а также входных и выходных параметров, знать не надо. Удобно!

Validation API: русификация сообщений об ошибках

Автор PremaServices - Воскресенье, 16 Июнь 2013. В рубриках: Validation API, Hibernate

ПРОВЕРКА ДАННЫХ В SPRING + HIBERNATE

Validation API: русификация сообщений об ошибках

По умолчанию в Hibernate Validation API на английском языке прописаны тексты сообщений для всех стандартных проверок, например таких как @NotBlank и @NotNull. Но, конечно, нам необходимо русифицировать эти сообщения, чтобы в браузере они выводились на красивом языке, понятном пользователю.

Сделать это очень просто. Необходимо создать собственный файл под названием ValidationMessages.properties и положить его в classpath нашего проекта. В этом случае тексты сообщений будут сначала искаться в нашем файле, а уж потом в файле по умолчанию.

Validation API: сложные проверки

Автор PremaServices - Понедельник, 24 Июнь 2013. В рубриках: Validation API, Hibernate

Аннотация уровня класса объекта

Validation API: сложные проверки

Под сложной проверкой подразумеваются случаи, когда условие накладывается не на одно свойство объекта, а сразу на несколько. В этом случае требуется описать аннотацию уровня класса с @Target(ElementType.TYPE), где реализовать все необходимое. Один такой пример проверки на уникальность объекта @Unique уже был реализован нами ранее. Рассмотрим ещё один простой случай, когда свойства объекта связаны между собой логическими отношениями.

Доступ к ресурсам из Spring

Автор PremaServices - Пятница, 21 Июнь 2013. В рубриках: Spring

Работа с файловой системой

Доступ к ресурсам из Spring

Иногда приложению может потребоваться доступ к файловой системе, например, считать какой-нибудь XML-файл с настройками или загрузить картинку, сохраненную не в базе данных, а на диске.

В контексте обычного сервлета Java мы привыкли делать это таким образом:

public void init (ServletConfig conf) throws ServletException {
	InputStream in = conf.getServletContext().getResourceAsStream(path);
	
}

В Spring все делается также просто, но немного иначе. Для начала необходимо создать класс, который будет отвечать за загрузку ресурсов, и унаследовать его от org.springframework.context.ResourceLoaderAware.

Validation API: собственный валидатор на примере @NotNullObjectId

Автор PremaServices - Среда, 19 Июнь 2013. В рубриках: Validation API, Hibernate

Проверка данных в Spring + Hibernate

Validation API: собственный валидатор на примере @NotNullObjectId

Проверка пользовательских данных в Spring является одним из ключевых моментов в разработке приложений, и просто необходима, если мы хотим создать стабильный и дружественный пользователю проект. Обычно она производится на двух этапах: как на стороне клиента при помощи скриптов, например, JQuery, так и на стороне сервера.

Для этой цели в этой статье мы используем Hibernate Validation API, который расширяет стандартные возможности Java Validation API, и в свою очередь расширим его возможности, создав свой собственный класс валидации.

Определим проблему и поставим задачу. У меня есть web-приложение по учету студентов в одной из заочных школ астрологии. При регистрации нового студента менеджеру необходимо указать в каком городе (и, соответственно, стране) он проживает. Естественно, по мере необходимости менеджер добавляет в таблицы стран и городов новые значения, расширяя географию учащихся.

Вот на этом простейшем примере стран и городов мы и рассмотрим решение нашей задачи.