SPRING-SOURCE.RU

Доменная модель

Доменная модель приложения может быть выражена как набор POJO с их взаимодействием. Ваша цель в дизайне подойти к работающему набору POJO и перечислить их взаимодействия.

POJO не представляют из себя ничего особенного. Это всего лишь обычные старые объекты Java. Если вы написали одну Java программу, то вы уже работаете с POJO.

POJO представляют отдельные сущности с поведением и состояниями в вашей системе. В случае PIX, мы создаем POJO для PixUsers, affiliates, pictures (photos), и albums. Вы не будете отслеживать взаимодействия album viewers (за исключением их регистрации как PixUsers), такие зрители не должны быть включены в доменную модель.

PixUser POJO

В 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 POJO

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 POJO

Каждый экземпляр 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;
	}
...
}
		

Album POJO

Изображения, которые пользователь загрузит в 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;
	}
...
}
		

Comment POJO

Комментарии, добавленные к картинкам 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;
	}
...
}