У меня проблема. Сначала позвольте мне показать вам структуру бобов, которую я хочу сравнить:
ItemDTO содержит:
- имя
- Itemid
- Тип
- подтип
- * 1016 часть тела *
- цена
ItemOnCharacterDTO содержит:
- OwnerId
- Itemid
- Количество
- место
ItemDTO статически считывается из файлов XML. Их тысячи, и они не меняются (по крайней мере, мне все равно, если они меняются в данный момент).
ItemOnCharacterDTOs создаются путем запроса к базе данных. OwnerID, itemID, количество и местоположение варьируются в зависимости от символа и, следовательно, сохраняются в базе данных. ItemID здесь соответствует действительному ItemDTO.
У меня есть массив (или ArrayList) ItemOnCharacterDTO-объектов, которые я хочу отсортировать по нескольким критериям, например, by "itemOnCharacterDTO.ownerID", "itemDTO.name", "itemDTO.type".
Если бы я объединил ItemDTO и ItemOnCharacterDTO в один класс (например, ItemAllDTO), я мог бы легко использовать apache BeanComparator . Однако, я не.
Причина в том, что у пользователя может быть несколько элементов на разных персонажах. Базовые данные элемента (ItemDTO-данные) одинаковы, в то время как пользовательские данные (ItemOnCharacterDTO-данные) изменяются. Поэтому я загружаю первый только один раз, загружая пользовательские данные каждый раз, когда сталкиваюсь с другим ItemOnCharacterDTO.
Поскольку я пишу все это в GWT, я решил отсортировать на сервере, потому что именно там находится вся информация (в отличие от внешнего интерфейса, где информация, относящаяся к элементам, загружается с нумерацией страниц). Я использую Java на стороне сервера. Я написал картограф для правильного извлечения статических XML-данных из XML-файлов, связанных с предметами. Но информация, связанная с символами, хранится в базе данных mysql .
Я хочу иметь возможность сортировать массив или ArrayList ItemOnCharacterDTOs по атрибутам, присутствующим в ItemOnCharacterDTO- или ItemDTO-объекте (У меня есть способ определить, к какому DTO принадлежит данный атрибут - значение: Я знаю, что если пользователь сортирует по «количеству», мне нужно проверить ItemOnCharacterDTO-объект для этого атрибута, а не ItemDTO-объект).
У каждого пользователя может быть несколько тысяч объектов. Каждый ItemOnCharacterDTO имеет около 5 атрибутов, но каждый ItemDTO имеет около 25 или около того. Поэтому объединение их в один объект - даже просто для сравнения - на самом деле не вариант, так как это будет очень медленно и занимать память.
У кого-то есть лучший подход? Я рад за любую помощь - даже если вы просто даете сырую идею. Я разберусь с этим.
Большое спасибо заранее! Ваша помощь очень ценится!
Игорь.
P.s .: Если у вас есть дополнительные вопросы, пожалуйста, не стесняйтесь спрашивать - я отвечу как можно скорее!
P.s.2: есть ли что-то вроде "LINQ" для Java? Может быть, это поможет мне решить мою проблему?