package com.lst.lc.dao.impl;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.hibernate.Query;
import org.springframework.stereotype.Repository;
import org.springframework.web.multipart.MultipartFile;
import com.lst.lc.dao.CourseDao;
import com.lst.lc.entities.Course;
import com.lst.lc.entities.RelUserCourse;
import com.lst.lc.entities.User;
@Repository("courseDao")
public class CourseDaoImpl extends BaseDao implements CourseDao {
@Override
public void addCourse(Course course) {
save(course);
}
@Override
public Course getCourse(int id) {
return get(Course.class, id);
}
@Override
public void updateCourse(Course course) {
update(course);
}
@Override
public List<Course> getEnabledCourses() {
String hqlString = "from Courses as course where course.enabled=?";
Query query = query(hqlString);
query.setString(0, "1");
List<Course> ts = query.list();
return ts;
}
@Override
public List<Course> getAllCourses() {
return getAll("Course");
}
@Override
public void update(int courseId, String title, String description,
String difficulty, int categoryId, int directionId, String enabled) {
String hql = "update Course as course set course.title = ?, course.description = ?, course.difficulty = ?, course.category.categoryId = ?, course.direction.directionId = ?, course.enabled = ? where course.courseId = ?";
Query query = query(hql);
query.setString(0, title).setString(1, description)
.setString(2, difficulty).setInteger(3, categoryId)
.setInteger(4, directionId).setString(5, enabled)
.setInteger(6, courseId).executeUpdate();
}
@Override
public void update(int courseId, String title, String description,
String difficulty, int categoryId, int directionId, String enabled,
String imageUrl) {
String hql = "update Course as course set course.title = ?, course.description = ?, course.difficulty = ?, course.category.categoryId = ?, course.direction.directionId = ?, course.enabled = ?, course.imageUrl = ? where course.courseId = ?";
Query query = query(hql);
query.setString(0, title).setString(1, description)
.setString(2, difficulty).setInteger(3, categoryId)
.setInteger(4, directionId).setString(5, enabled)
.setString(6, imageUrl).setInteger(7, courseId).executeUpdate();
}
@Override
public Query getAllCoursesOfCategory(int categoryId) {
String hql = "from Course as course where course.category.categoryId = ?";
Query query = query(hql);
query.setInteger(0, categoryId);
return query;
}
@Override
public Query getAllCoursesOfCategoryByNums(int categoryId) {
String hql = "from Course as course where course.category.categoryId = ? order by course.studentNums desc";
Query query = query(hql);
query.setInteger(0, categoryId);
return query;
}
@Override
public Query getQuery(String hql) {
return query(hql);
}
@Override
public void delete(int courseId) {
String hql = "delete Course as course where course.courseId = ?";
Query query = query(hql);
query.setInteger(0, courseId).executeUpdate();
}
@Override
public List<Course> search(String key) {
String hql = "from Course as course where course.title like ?";
Query query = query(hql).setString(0, "%" + key + "%");
return query.list();
}
@Override
public List<Course> getOtherCourses(int courseId, int directionId) {
String hql = "from Course as course where course.courseId <> ? and course.direction.directionId = ? order by course.studentNums desc";
Query query = query(hql).setInteger(0, courseId).setInteger(1, directionId).setMaxResults(5);
return query.list();
}
@Override
public void addNums(int courseId) {
String hql = "update Course as course set course.studentNums = course.studentNums + 1 where course.courseId = ?";
Query query = query(hql).setInteger(0, courseId);
query.executeUpdate();
}
@Override
public List<User> getUsers(int courseId) {
List<User> users = new ArrayList<User>();
Course course = get(Course.class, courseId);
Set<RelUserCourse> ruc = course.getRelUserCourses();
Object[] rucs = ruc.toArray();
int length = rucs.length / 2;
if(length == 0)
return users;
if(length > 5)
length = 5;
for(int i = 0; i < length; i++){
users.add(((RelUserCourse)rucs[i]).getUser());
}
return users;
}
@Override
public List<Course> getCourseOfUser(int userId) {
return null;
}
@Override
public long getCount() {
String hql = "select count(*) from Course";
Query query = query(hql);
long res = (long) query.uniqueResult();
return res;
}
}