// Path: src/main/java/org/springside/examples/quickstart/entity/Task.java
// @Entity
// @Table(name = "ss_task")
// public class Task extends IdEntity {
// 
// 	private String title;
// 	private String description;
// 	private User user;
// 
// 	// JSR303 BeanValidator的校验规则
// 	@NotBlank
// 	public String getTitle() {
// 		return title;
// 	}
// 
// 	public void setTitle(String title) {
// 		this.title = title;
// 	}
// 
// 	public String getDescription() {
// 		return description;
// 	}
// 
// 	public void setDescription(String description) {
// 		this.description = description;
// 	}
// 
// 	// JPA 基于USER_ID列的多对一关系定义
// 	@ManyToOne
// 	@JoinColumn(name = "user_id")
// 	public User getUser() {
// 		return user;
// 	}
// 
// 	public void setUser(User user) {
// 		this.user = user;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return ToStringBuilder.reflectionToString(this);
// 	}
// }
// 
// Path: src/main/java/org/springside/examples/quickstart/service/task/TaskService.java
// @Component
// // 类中所有public函数都纳入事务管理的标识.
// @Transactional
// public class TaskService {
// 
// 	private TaskDao taskDao;
// 
// 	public Task getTask(Long id) {
// 		return taskDao.findOne(id);
// 	}
// 
// 	public void saveTask(Task entity) {
// 		taskDao.save(entity);
// 	}
// 
// 	public void deleteTask(Long id) {
// 		taskDao.delete(id);
// 	}
// 
// 	public List<Task> getAllTask() {
// 		return (List<Task>) taskDao.findAll();
// 	}
// 
// 	public Page<Task> getUserTask(Long userId, Map<String, Object> searchParams, int pageNumber, int pageSize,
// 			String sortType) {
// 		PageRequest pageRequest = buildPageRequest(pageNumber, pageSize, sortType);
// 		Specification<Task> spec = buildSpecification(userId, searchParams);
// 
// 		return taskDao.findAll(spec, pageRequest);
// 	}
// 
// 	/**
// 	 * 创建分页请求.
// 	 */
// 	private PageRequest buildPageRequest(int pageNumber, int pagzSize, String sortType) {
// 		Sort sort = null;
// 		if ("auto".equals(sortType)) {
// 			sort = new Sort(Direction.DESC, "id");
// 		} else if ("title".equals(sortType)) {
// 			sort = new Sort(Direction.ASC, "title");
// 		}
// 
// 		return new PageRequest(pageNumber - 1, pagzSize, sort);
// 	}
// 
// 	/**
// 	 * 创建动态查询条件组合.
// 	 */
// 	private Specification<Task> buildSpecification(Long userId, Map<String, Object> searchParams) {
// 		Map<String, SearchFilter> filters = SearchFilter.parse(searchParams);
// 		filters.put("user.id", new SearchFilter("user.id", Operator.EQ, userId));
// 		Specification<Task> spec = DynamicSpecifications.bySearchFilter(filters.values(), Task.class);
// 		return spec;
// 	}
// 
// 	@Autowired
// 	public void setTaskDao(TaskDao taskDao) {
// 		this.taskDao = taskDao;
// 	}
// }


import org.springside.examples.quickstart.entity.Task;
import org.springside.examples.quickstart.service.task.TaskService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.util.UriComponentsBuilder;
import org.springside.modules.beanvalidator.BeanValidators;
import org.springside.modules.web.MediaTypes;
import javax.validation.Validator;
import java.net.URI;
import java.util.List;
/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package org.springside.examples.quickstart.rest;



/**
 * Task的Restful API的Controller.
 * 
 * @author calvin
 */
@RestController
@RequestMapping(value = "/api/v1/task")
public class TaskRestController {

	private static Logger logger = LoggerFactory.getLogger(TaskRestController.class);

	@Autowired
// Path: src/main/java/org/springside/examples/quickstart/entity/Task.java
// @Entity
// @Table(name = "ss_task")
// public class Task extends IdEntity {
// 
// 	private String title;
// 	private String description;
// 	private User user;
// 
// 	// JSR303 BeanValidator的校验规则
// 	@NotBlank
// 	public String getTitle() {
// 		return title;
// 	}
// 
// 	public void setTitle(String title) {
// 		this.title = title;
// 	}
// 
// 	public String getDescription() {
// 		return description;
// 	}
// 
// 	public void setDescription(String description) {
// 		this.description = description;
// 	}
// 
// 	// JPA 基于USER_ID列的多对一关系定义
// 	@ManyToOne
// 	@JoinColumn(name = "user_id")
// 	public User getUser() {
// 		return user;
// 	}
// 
// 	public void setUser(User user) {
// 		this.user = user;
// 	}
// 
// 	@Override
// 	public String toString() {
// 		return ToStringBuilder.reflectionToString(this);
// 	}
// }
// 
// Path: src/main/java/org/springside/examples/quickstart/service/task/TaskService.java
// @Component
// // 类中所有public函数都纳入事务管理的标识.
// @Transactional
// public class TaskService {
// 
// 	private TaskDao taskDao;
// 
// 	public Task getTask(Long id) {
// 		return taskDao.findOne(id);
// 	}
// 
// 	public void saveTask(Task entity) {
// 		taskDao.save(entity);
// 	}
// 
// 	public void deleteTask(Long id) {
// 		taskDao.delete(id);
// 	}
// 
// 	public List<Task> getAllTask() {
// 		return (List<Task>) taskDao.findAll();
// 	}
// 
// 	public Page<Task> getUserTask(Long userId, Map<String, Object> searchParams, int pageNumber, int pageSize,
// 			String sortType) {
// 		PageRequest pageRequest = buildPageRequest(pageNumber, pageSize, sortType);
// 		Specification<Task> spec = buildSpecification(userId, searchParams);
// 
// 		return taskDao.findAll(spec, pageRequest);
// 	}
// 
// 	/**
// 	 * 创建分页请求.
// 	 */
// 	private PageRequest buildPageRequest(int pageNumber, int pagzSize, String sortType) {
// 		Sort sort = null;
// 		if ("auto".equals(sortType)) {
// 			sort = new Sort(Direction.DESC, "id");
// 		} else if ("title".equals(sortType)) {
// 			sort = new Sort(Direction.ASC, "title");
// 		}
// 
// 		return new PageRequest(pageNumber - 1, pagzSize, sort);
// 	}
// 
// 	/**
// 	 * 创建动态查询条件组合.
// 	 */
// 	private Specification<Task> buildSpecification(Long userId, Map<String, Object> searchParams) {
// 		Map<String, SearchFilter> filters = SearchFilter.parse(searchParams);
// 		filters.put("user.id", new SearchFilter("user.id", Operator.EQ, userId));
// 		Specification<Task> spec = DynamicSpecifications.bySearchFilter(filters.values(), Task.class);
// 		return spec;
// 	}
// 
// 	@Autowired
// 	public void setTaskDao(TaskDao taskDao) {
// 		this.taskDao = taskDao;
// 	}
// }


// Path: src/main/java/org/springside/examples/quickstart/rest/TaskRestController.java
import org.springside.examples.quickstart.entity.Task;
import org.springside.examples.quickstart.service.task.TaskService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.util.UriComponentsBuilder;
import org.springside.modules.beanvalidator.BeanValidators;
import org.springside.modules.web.MediaTypes;
import javax.validation.Validator;
import java.net.URI;
import java.util.List;

/*******************************************************************************
 * Copyright (c) 2005, 2014 springside.github.io
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 *******************************************************************************/
package org.springside.examples.quickstart.rest;



/**
 * Task的Restful API的Controller.
 * 
 * @author calvin
 */
@RestController
@RequestMapping(value = "/api/v1/task")
public class TaskRestController {

	private static Logger logger = LoggerFactory.getLogger(TaskRestController.class);

	@Autowired
	private TaskService taskService;