SPRING-SOURCE.RU | |
|
|
Доменная модель приложения может быть выражена как набор POJO с их взаимодействием. Ваша цель в дизайне подойти к работающему набору POJO и перечислить их взаимодействия.
POJO не представляют из себя ничего особенного. Это всего лишь обычные старые объекты Java. Если вы написали одну Java программу, то вы уже работаете с POJO.
POJO представляют отдельные сущности с поведением и состояниями в вашей системе. В случае PIX, мы создаем POJO для PixUsers, affiliates, pictures (photos), и albums. Вы не будете отслеживать взаимодействия album viewers (за исключением их регистрации как PixUsers), такие зрители не должны быть включены в доменную модель.
В Pix, PixUser – это центральная сущность. PixUser может загружать фотографии, создавать, и удалять альбомы, и добавлять комментарии к фотографиям.
Следующая информация сохраняется в PIX системе:
Имя пользователя и пароль используются для идентификации, необходимые пользователю для доступа к фотографиям. Пользователь может создавать свои альбомы в PIX системе. Пользователи могут оставлять комментарии на каждом созданном альбоме.
Код для этого POJO показан в частичных листингах. Вы можете найти полный листинг в файле PixUser.java из исходного кода.
Исходный код находится в папке wrox-pix-web (root для Maven 2). Исходный код для доменной модели можно найти в wrox-pix-web/src/main/java/com/wrox/beginspring/pix/model.
В исходных кодах можно встретить аннотации (например @Entity), а также дополнительные import объявления для поддержки этих аннотаций. Сейчас их можно игнорировать. Чуть позже мы рассмотрим эти аннотации в деталях.
package com.wrox.beginspring.pix.model; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class PixUser implements Serializable { private String userName; private String firstName; private String lastName; private String email; private String password; ... private List<Album> albums = new ArrayList<Album>(); private List<Comment> comments = new ArrayList<Comment>(); public PixUser() { } public PixUser(String userName, String firstName, String lastName, String email, String password) { super(); this.userName = userName; this.firstName = firstName; this.lastName = lastName; this.email = email; this.password = password; } public List<Album> getAlbums() { return albums; } public void setAlbums(List<Album> albums) { this.albums = albums; } ... }
Affiliate может регистрироваться в PIX системе, чтобы стать специальной группой PixUser.
Для affiliate, PIX система отслеживает следующую дополнительную информацию:
Java код для этого POJO находится в файле Affiliate.java, который расположен там же где и PixUser класс (wrox-pix-web/src/main/java/com/wrox/beginspring/pix/model). Этот класс частично представлен в этом листинге:
package com.wrox.beginspring.pix.model; import java.util.ArrayList; import java.util.List; public class Affiliate extends PixUser { private String companyName; private String faxNumber; private String websiteURL; public Affiliate(){ } public Affiliate(String userName, String firstName, String lastName, String email, String password, String companyName,String faxNumber, String websiteURL) { super(userName,firstName,lastName,email,password); setCompanyName(companyName); setFaxNumber(faxNumber); setWebsiteURL(websiteURL); } public String getCompanyName() { return companyName; } ... }
Каждый экземпляр Picture в системе PIX относится к загружаемой фотографии. Он содержит информацию о файле изображения, который находится на сервере. Для каждого изображения записанного на PIX, содержится следующая информация:
Каждое изображение может быть только в одном альбоме. Имя файла и путь к картинке записывается отдельно для простой манипуляции. Имя файла навряд ли изменяться, а вот путь к файлу может измениться, когда PIX разрастется и нужно будет мигрировать на большие запоминающие устройства.
Исходный код:
package com.wrox.beginspring.pix.model; import java.io.Serializable; import java.util.HashSet; import java.util.Set; public class Picture implements Serializable { private Integer id; private String name; private String description; private long size; private Set<Comment> comments = new HashSet<Comment>(); private Album album; private String fileName; private String path; public Picture() { } public Picture(String name, String location) { this.name = name; this.path = location; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } ... }
Изображения, которые пользователь загрузит в PIX систему организуются в альбомы. Каждый пользователь может группировать свои фотографии в один или более альбом. Одна фотография может находиться в одном альбоме. PixUser может создавать бесчисленное количество альбомов.
package com.wrox.beginspring.pix.model; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Date; public class Album implements Serializable{ private Integer id; private PixUser user; private String name; private String description; private Date creationDate = new Date(); private String[] labels; private List<Picture> pictures = new ArrayList<Picture>(); public Album() { } public Album(String name) { this.name = name; } ... }
Комментарии, добавленные к картинкам album viewer. Изображение может содержать один или более комментариев.
package com.wrox.beginspring.pix.model; public class Comment { private Integer id; private String comment; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getComment() { return comment; } public void setComment(String comment) { this.comment = comment; } ... }
Copyright © 2024 |