Skip to content

Commit

Permalink
Code refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
suoapvs committed Jul 24, 2017
1 parent 9865b61 commit 0b799b0
Show file tree
Hide file tree
Showing 9 changed files with 101 additions and 147 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.salimov.yurii</groupId>
<artifactId>alexcoffee</artifactId>
<version>2.0</version>
<version>2.1</version>
<packaging>war</packaging>

<name>alexcoffee</name>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import ua.com.alexcoffee.model.user.User;
import ua.com.alexcoffee.model.user.UserBuilder;
import ua.com.alexcoffee.model.user.UserRole;
import ua.com.alexcoffee.service.interfaces.UserService;

Expand Down Expand Up @@ -151,18 +152,19 @@ public ModelAndView saveUser(
@RequestParam(value = "description") final String description,
final ModelAndView modelAndView
) {
final User user = new User();
user.setName(name);
user.setUsername(username);
user.setPassword(password);
user.setEmail(email);
user.setPhone(phone);
user.setVkontakte(vkontakte);
user.setFacebook(facebook);
user.setSkype(skype);
user.setDescription(description);
final UserBuilder userBuilder = User.getBuilder();
userBuilder.addName(name)
.addUsername(username)
.addPassword(password)
.addEmail(email)
.addPhone(phone)
.addVkontakte(vkontakte)
.addFacebook(facebook)
.addSkype(skype)
.addDescription(description);
final UserRole role = UserRole.valueOf(roleName);
user.setRole(role);
userBuilder.addRole(role);
final User user = userBuilder.build();
this.userService.add(user);
modelAndView.setViewName("redirect:/admin/user/all");
return modelAndView;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,15 @@
import ua.com.alexcoffee.model.basket.ShoppingCart;
import ua.com.alexcoffee.model.category.Category;
import ua.com.alexcoffee.model.order.Order;
import ua.com.alexcoffee.model.order.OrderBuilder;
import ua.com.alexcoffee.model.order.OrderStatus;
import ua.com.alexcoffee.model.position.SalePosition;
import ua.com.alexcoffee.model.product.Product;
import ua.com.alexcoffee.model.user.User;
import ua.com.alexcoffee.model.user.UserBuilder;
import ua.com.alexcoffee.model.user.UserRole;
import ua.com.alexcoffee.service.interfaces.*;

import java.util.ArrayList;
import java.util.List;

/**
* Класс-контроллер домашних страниц. К даному контроллеру и соответствующим страницам
* могут обращатсья все пользователи, независимо от ихних ролей.
Expand Down Expand Up @@ -107,7 +106,7 @@ public HomeController(
* @return Объект класса {@link ModelAndView}.
*/
@RequestMapping(
value = {"", "/", "/index", "/home"},
value = { "", "/", "/index", "/home" },
method = RequestMethod.GET
)
public ModelAndView home(final ModelAndView modelAndView) {
Expand Down Expand Up @@ -259,7 +258,7 @@ public ModelAndView addProductToCart(
* по запросу "/cart/add" методом GET.
*
* @throws IllegalMappingException Бросает исключение,если обратится к
* этому методу GET.
* этому методу GET.
*/
@RequestMapping(
value = "/cart/add",
Expand Down Expand Up @@ -305,7 +304,7 @@ public ModelAndView addProductToCartQuickly(
* по запросу "/cart/add_quickly" методом GET.
*
* @throws IllegalMappingException Бросает исключение, если обратится к
* этому методу GET.
* этому методу GET.
*/
@RequestMapping(
value = "/cart/add_quickly",
Expand Down Expand Up @@ -353,18 +352,17 @@ public ModelAndView viewCheckout(
final ModelAndView modelAndView
) {
if (this.shoppingCartService.getSize() > 0) {
final UserRole role = UserRole.CLIENT;
final User client = new User();
client.setName(name);
client.setEmail(email);
client.setPhone(phone);
client.setRole(role);
final OrderStatus status = OrderStatus.NEW;
final List<SalePosition> positions = new ArrayList<>(this.shoppingCartService.getSalePositions());
final Order order = new Order();
order.setStatus(status);
order.setClient(client);
order.setSalePositions(positions);
final UserBuilder userBuilder = User.getBuilder();
userBuilder.addRole(UserRole.CLIENT)
.addName(name)
.addEmail(email)
.addPhone(phone);
final User client = userBuilder.build();
final OrderBuilder orderBuilder = Order.getBuilder();
orderBuilder.addStatus(OrderStatus.NEW)
.addClient(client)
.addSalePositions(this.shoppingCartService.getSalePositions());
final Order order = orderBuilder.build();
this.orderService.add(order);
this.senderService.send(order);
modelAndView.addObject("order", order);
Expand Down Expand Up @@ -400,7 +398,7 @@ public ModelAndView viewCheckout(final ModelAndView modelAndView) {
* к запросам, к которым он не имеет права доступа (роли).
*
* @throws IllegalMappingException Бросает исключение в случае отсутствия
* прав доступа.
* прав доступа.
*/
@RequestMapping(
value = "/forbidden_exception",
Expand All @@ -419,7 +417,7 @@ public void getIllegalMappingException() throws IllegalMappingException {
* @return Объект класса {@link ModelAndView}.
*/
@RequestMapping(
value = {"/admin", "/admin/"},
value = { "/admin", "/admin/" },
method = RequestMethod.GET
)
public ModelAndView redirectToAdminPage(final ModelAndView modelAndView) {
Expand All @@ -434,7 +432,7 @@ public ModelAndView redirectToAdminPage(final ModelAndView modelAndView) {
* @return Объект класса {@link ModelAndView}.
*/
@RequestMapping(
value = {"/managers", "/managers/"},
value = { "/managers", "/managers/" },
method = RequestMethod.GET
)
public ModelAndView redirectToManagerPage(final ModelAndView modelAndView) {
Expand Down
5 changes: 4 additions & 1 deletion src/main/java/ua/com/alexcoffee/model/category/Category.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
*/
@Entity
@Table(name = "categories")
public class Category extends Model {
public final class Category extends Model {
/**
* Номер версии класса необходимый для десериализации и сериализации.
*/
Expand Down Expand Up @@ -79,6 +79,9 @@ public class Category extends Model {
)
private Collection<Product> products = new HashSet<>();

protected Category() {
}

/**
* Возвращает описание категории.
* Переопределенный метод родительского класса {@link Object}.
Expand Down
33 changes: 3 additions & 30 deletions src/main/java/ua/com/alexcoffee/model/model/Model.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,9 @@ public abstract class Model implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

protected Model() {
}

/**
* Возвращает описание категории.
* Переопределенный метод родительского класса {@link Object}.
Expand Down Expand Up @@ -102,36 +105,6 @@ public boolean equals(Object object) {
@Override
public abstract int hashCode();

/**
* Возвращает рандомную строку из набор символов и длинны по-умолчанию.
*
* @return Значение типа {@link String} - рандомная строка из набора
* символов CODE_PATTERN длиной {@value CODE_LENGTH}.
*/
protected String createRandomString() {
return createRandomString(CODE_PATTERN, CODE_LENGTH);
}

/**
* Возвращает рандомную строку используя набор символов pattern длиной length.
*
* @param pattern Набор вожможных для использованния символов.
* @param length Длина возвращаемой строки.
* @return Значение типа {@link String} - рандомная строка из набора символов
* pattern длиной length.
*/
protected String createRandomString(
final char[] pattern,
final int length
) {
final StringBuilder sb = new StringBuilder();
final Random random = new Random();
for (int i = 0; i < length; i++) {
sb.append(pattern[random.nextInt(pattern.length)]);
}
return sb.toString();
}

/**
* Конвертирует дату типа Date в строку используя для работы входящими параметрами
* формат даты {@value DATE_PATTERN} и часовой пояс (@value TIME_ZONE} по-умолчанию.
Expand Down
33 changes: 16 additions & 17 deletions src/main/java/ua/com/alexcoffee/model/order/Order.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
*/
@Entity
@Table(name = "orders")
public class Order extends Model {
public final class Order extends Model {
/**
* Номер версии класса необходимый для десериализации и сериализации.
*/
Expand Down Expand Up @@ -125,7 +125,10 @@ public class Order extends Model {
mappedBy = "order",
cascade = CascadeType.ALL
)
private List<SalePosition> salePositions = new ArrayList<>();
private Collection<SalePosition> salePositions = new ArrayList<>();

protected Order() {
}

/**
* Возвращает описание заказа. Переопределенный метод родительского класса {@link Object}.
Expand Down Expand Up @@ -294,7 +297,7 @@ public void clearSalePositions() {
* для чтения или пустой список.
*/
public Collection<SalePosition> getSalePositions() {
return getUnmodifiableList(this.salePositions);
return new ArrayList<>(this.salePositions);
}

/**
Expand All @@ -303,8 +306,7 @@ public Collection<SalePosition> getSalePositions() {
* @param positions Список торговых позиция.
*/
public void setSalePositions(final Collection<SalePosition> positions) {
clearSalePositions();
addSalePositions(positions);
this.salePositions = positions;
}

/**
Expand All @@ -322,14 +324,7 @@ public String getNumber() {
* @param number Номер заказа.
*/
public void setNumber(final String number) {
this.number = isNotEmpty(number) ? number : "";
}

/**
* Генерирует новый номер заказа.
*/
public void newNumber() {
this.number = createRandomString();
this.number = number;
}

/**
Expand All @@ -347,7 +342,7 @@ public Date getDate() {
* @param date Дата модификации заказа.
*/
public void setDate(final Date date) {
this.date = isNotNull(date) ? date : new Date();
this.date = date;
}

/**
Expand Down Expand Up @@ -419,7 +414,7 @@ public String getShippingAddress() {
* @param shippingAddress Адрес доставки заказа.
*/
public void setShippingAddress(final String shippingAddress) {
this.shippingAddress = isNotEmpty(shippingAddress) ? shippingAddress : "";
this.shippingAddress = shippingAddress;
}

/**
Expand All @@ -437,7 +432,7 @@ public String getShippingDetails() {
* @param shippingDetails Детали доставки заказа.
*/
public void setShippingDetails(final String shippingDetails) {
this.shippingDetails = isNotEmpty(shippingDetails) ? shippingDetails : "";
this.shippingDetails = shippingDetails;
}

/**
Expand All @@ -455,7 +450,7 @@ public String getDescription() {
* @param description Описание заказа.
*/
public void setDescription(final String description) {
this.description = isNotEmpty(description) ? description : "";
this.description = description;
}

/**
Expand All @@ -470,4 +465,8 @@ public double getPrice() {
}
return price;
}

public static OrderBuilder getBuilder() {
return new OrderBuilder();
}
}
5 changes: 4 additions & 1 deletion src/main/java/ua/com/alexcoffee/model/photo/Photo.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
*/
@Entity
@Table(name = "photos")
public class Photo extends Model {
public final class Photo extends Model {
/**
* Номер версии класса необходимый
* для десериализации и сериализации.
Expand Down Expand Up @@ -59,6 +59,9 @@ public class Photo extends Model {
@Column(name = "photo_link_long")
private String longUrl = "";

protected Photo() {
}

/**
* Возвращает описание изображения.
* Переопределенный метод родительского класса {@link Object}.
Expand Down
Loading

0 comments on commit 0b799b0

Please sign in to comment.