List of usage examples for org.hibernate.criterion Restrictions gt
public static SimpleExpression gt(String propertyName, Object value)
From source file:de.lemo.dms.connectors.moodle_1_9.ExtractAndMapMoodle.java
License:Open Source License
@Override @SuppressWarnings("unchecked") public void getLMStables(final DBConfigObject dbConf, final long readingfromtimestamp, List<Long> courses, List<String> logins) { final Session session = HibernateUtil.getSessionFactory(dbConf).openSession(); final Transaction tx = session.beginTransaction(); boolean hasCR = false; if (courses != null && courses.size() > 0) hasCR = true;/* w w w . j ava 2 s.c o m*/ boolean empty = false; //Read Context Criteria criteria = session.createCriteria(ContextLMS.class, "obj"); List<Long> contextLevels = new ArrayList<Long>(); contextLevels.add(40L); contextLevels.add(50L); criteria.add(Restrictions.in("obj.contextlevel", contextLevels)); criteria.addOrder(Property.forName("obj.id").asc()); this.contextLms = criteria.list(); logger.info("ContextLMS tables: " + this.contextLms.size()); if (logins != null && !logins.isEmpty()) { List<String> archetypes = new ArrayList<String>(); List<Long> roleIds = new ArrayList<Long>(); List<String> userIds = new ArrayList<String>(); archetypes.add("%manager%"); archetypes.add("%coursecreator%"); archetypes.add("%teacher%"); archetypes.add("%editingteacher%"); criteria = session.createCriteria(RoleLMS.class, "obj"); criteria.add(Restrictions.in("obj.shortname", archetypes)); for (RoleLMS role : (List<RoleLMS>) criteria.list()) roleIds.add(role.getId()); criteria = session.createCriteria(UserLMS.class, "obj"); criteria.add(Restrictions.in("obj.username", logins)); for (UserLMS user : (List<UserLMS>) criteria.list()) userIds.add(user.getId() + ""); criteria = session.createCriteria(RoleAssignmentsLMS.class, "obj"); criteria.add(Restrictions.in("obj.userid", userIds)); criteria.add(Restrictions.in("obj.roleid", roleIds)); for (ContextLMS c : this.contextLms) { for (RoleAssignmentsLMS ra : (List<RoleAssignmentsLMS>) criteria.list()) { if (c.getContextlevel() == 50 && c.getId() == ra.getContextid()) { courses.add(c.getInstanceid()); hasCR = true; } } } } // reading the LMS Database, create tables as lists of instances of the DB-table classes criteria = session.createCriteria(LogLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.add(Restrictions.gt("obj.time", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.logLms = criteria.list(); logger.info("LogLMS tables: " + this.logLms.size()); criteria = session.createCriteria(ResourceLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.resourceLms = criteria.list(); logger.info("ResourceLMS tables: " + this.resourceLms.size()); criteria = session.createCriteria(CourseModulesLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.courseModulesLms = criteria.list(); logger.info("CourseModulesLMS tables: " + this.courseModulesLms.size()); criteria = session.createCriteria(ChatLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.chatLms = criteria.list(); logger.info("ChatLMS tables: " + this.chatLms.size()); criteria = session.createCriteria(ChatLogLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (ChatLMS e : this.chatLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.chat", ids)); } criteria.add(Restrictions.gt("obj.timestamp", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (hasCR && empty) this.chatLogLms = new ArrayList<ChatLogLMS>(); else this.chatLogLms = criteria.list(); logger.info("ChatLogLMS tables: " + this.chatLogLms.size()); criteria = session.createCriteria(CourseCategoriesLMS.class, "obj"); criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.courseCategoriesLms = criteria.list(); logger.info("CourseCategoriesLMS tables: " + this.courseCategoriesLms.size()); criteria = session.createCriteria(CourseLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.id", courses)); criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.courseLms = criteria.list(); logger.info("CourseLMS tables: " + this.courseLms.size()); final Query forumPosts; if (!hasCR) { forumPosts = session .createQuery("from ForumPostsLMS x where x.modified>=:readingtimestamp order by x.id asc"); forumPosts.setParameter("readingtimestamp", readingfromtimestamp); this.forumPostsLms = forumPosts.list(); } else { String courseClause = "("; for (int i = 0; i < courses.size(); i++) { courseClause += courses.get(i); if (i < courses.size() - 1) courseClause += ","; else courseClause += ")"; } forumPosts = session.createSQLQuery( "SELECT posts.id,posts.userid,posts.created,posts.modified,posts.subject,posts.message,posts.discussion from mdl_forum_posts as posts JOIN mdl_log as logs ON posts.userid = logs.userid Where logs.course in " + courseClause + " and (posts.created = logs.time or posts.modified = logs.time) AND posts.modified>=:readingtimestamp "); forumPosts.setParameter("readingtimestamp", readingfromtimestamp); List<Object[]> tmpl = forumPosts.list(); this.forumPostsLms = new ArrayList<ForumPostsLMS>(); for (Object[] obj : tmpl) { ForumPostsLMS p = new ForumPostsLMS(); if (obj[0].getClass().equals(BigInteger.class)) { p.setId(((BigInteger) obj[0]).longValue()); } else { p.setId(((Integer) obj[0]).longValue()); } if (obj[0].getClass().equals(BigInteger.class)) { p.setUserid(((BigInteger) obj[1]).longValue()); } else { p.setUserid(((Integer) obj[1]).longValue()); } if (obj[0].getClass().equals(BigInteger.class)) { p.setCreated(((BigInteger) obj[2]).longValue()); } else { p.setCreated(((Integer) obj[2]).longValue()); } if (obj[0].getClass().equals(BigInteger.class)) { p.setModified(((BigInteger) obj[3]).longValue()); } else { p.setModified(((Integer) obj[3]).longValue()); } p.setSubject((String) obj[4]); p.setMessage((String) obj[5]); if (obj[0].getClass().equals(BigInteger.class)) { p.setDiscussion(((BigInteger) obj[6]).longValue()); } else { p.setDiscussion(((Integer) obj[6]).longValue()); } this.forumPostsLms.add(p); } } logger.info("ForumPostsLMS tables: " + this.forumPostsLms.size()); criteria = session.createCriteria(ForumLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.add(Restrictions.ge("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.forumLms = criteria.list(); logger.info("ForumLMS tables: " + this.forumLms.size()); criteria = session.createCriteria(GroupsLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.courseid", courses)); criteria.add(Restrictions.ge("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.groupLms = criteria.list(); logger.info("GroupsLMS tables: " + this.groupLms.size()); criteria = session.createCriteria(QuizLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.add(Restrictions.ge("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.quizLms = criteria.list(); logger.info("QuizLMS tables: " + this.quizLms.size()); criteria = session.createCriteria(WikiLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.add(Restrictions.ge("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.wikiLms = criteria.list(); logger.info("WikiLMS tables: " + this.wikiLms.size()); criteria = session.createCriteria(GroupsMembersLMS.class, "obj"); empty = false; if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (GroupsLMS e : this.groupLms) ids.add(e.getId()); empty = ids.isEmpty(); if (!empty) criteria.add(Restrictions.in("obj.groupid", ids)); } criteria.add(Restrictions.ge("obj.timeadded", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (hasCR && empty) this.groupMembersLms = new ArrayList<GroupsMembersLMS>(); else this.groupMembersLms = criteria.list(); logger.info("GroupsMembersLMS tables: " + this.groupMembersLms.size()); criteria = session.createCriteria(QuizQuestionInstancesLMS.class, "obj"); empty = false; if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizLMS e : this.quizLms) ids.add(e.getId()); empty = ids.isEmpty(); if (!empty) criteria.add(Restrictions.in("obj.quiz", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if (hasCR && empty) this.quizQuestionInstancesLms = new ArrayList<QuizQuestionInstancesLMS>(); else this.quizQuestionInstancesLms = criteria.list(); logger.info("QuizQuestionInstancesLMS tables: " + this.quizQuestionInstancesLms.size()); criteria = session.createCriteria(QuestionStatesLMS.class, "obj"); empty = false; if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizQuestionInstancesLMS e : this.quizQuestionInstancesLms) ids.add(e.getQuestion()); if (empty = ids.isEmpty()) ; criteria.add(Restrictions.in("obj.question", ids)); } criteria.add(Restrictions.gt("obj.timestamp", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (hasCR && empty) this.questionStatesLms = new ArrayList<QuestionStatesLMS>(); else this.questionStatesLms = criteria.list(); logger.info("QuestionStatesLMS tables: " + this.questionStatesLms.size()); criteria = session.createCriteria(QuestionLMS.class, "obj"); empty = false; if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizQuestionInstancesLMS e : this.quizQuestionInstancesLms) ids.add(e.getQuestion()); if (empty = ids.isEmpty()) ; criteria.add(Restrictions.in("obj.id", ids)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (hasCR && empty) this.questionLms = new ArrayList<QuestionLMS>(); else this.questionLms = criteria.list(); logger.info("QuestionLMS tables: " + this.questionLms.size()); criteria = session.createCriteria(ContextLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.instanceid", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.contextLms = criteria.list(); logger.info("ContextLMS tables: " + this.contextLms.size()); criteria = session.createCriteria(RoleAssignmentsLMS.class, "obj"); empty = false; if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (ContextLMS c : this.contextLms) { if (c.getContextlevel() == 50 && courses.contains(c.getInstanceid())) ids.add(c.getId()); } if (empty = ids.isEmpty()) ; criteria.add(Restrictions.in("obj.contextid", ids)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (hasCR && empty) this.roleAssignmentsLms = new ArrayList<RoleAssignmentsLMS>(); else this.roleAssignmentsLms = criteria.list(); logger.info("RoleAssignmentsLMS tables: " + this.roleAssignmentsLms.size()); criteria = session.createCriteria(UserLMS.class, "obj"); empty = false; if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (RoleAssignmentsLMS e : this.roleAssignmentsLms) ids.add(e.getUserid()); if (empty = ids.isEmpty()) ; criteria.add(Restrictions.in("obj.id", ids)); } if (readingfromtimestamp > 0) { criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); } criteria.addOrder(Property.forName("obj.id").asc()); if (hasCR && empty) this.userLms = new ArrayList<UserLMS>(); else this.userLms = criteria.list(); logger.info("UserLMS tables: " + this.userLms.size()); criteria = session.createCriteria(RoleLMS.class, "obj"); criteria.addOrder(Property.forName("obj.id").asc()); this.roleLms = criteria.list(); logger.info("RoleLMS tables: " + this.roleLms.size()); criteria = session.createCriteria(AssignmentLMS.class, "obj"); if (hasCR) { criteria.add(Restrictions.in("obj.course", courses)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.assignmentLms = criteria.list(); logger.info("AssignmentLMS tables: " + this.assignmentLms.size()); criteria = session.createCriteria(AssignmentSubmissionsLMS.class, "obj"); empty = false; if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (AssignmentLMS e : this.assignmentLms) ids.add(e.getId()); if (empty = ids.isEmpty()) ; criteria.add(Restrictions.in("obj.assignment", ids)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (hasCR && empty) this.assignmentSubmissionLms = new ArrayList<AssignmentSubmissionsLMS>(); else this.assignmentSubmissionLms = criteria.list(); logger.info("AssignmentSubmissionsLMS tables: " + this.assignmentSubmissionLms.size()); criteria = session.createCriteria(QuizGradesLMS.class, "obj"); empty = false; if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizLMS e : this.quizLms) ids.add(e.getId()); if (empty = ids.isEmpty()) ; criteria.add(Restrictions.in("obj.quiz", ids)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (hasCR && empty) this.quizGradesLms = new ArrayList<QuizGradesLMS>(); else this.quizGradesLms = criteria.list(); logger.info("QuizGradesLMS tables: " + this.quizGradesLms.size()); criteria = session.createCriteria(ForumDiscussionsLMS.class, "obj"); empty = false; if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (ForumLMS e : this.forumLms) ids.add(e.getId()); if (empty = ids.isEmpty()) ; criteria.add(Restrictions.in("obj.forum", ids)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (hasCR && empty) this.forumDiscussionsLms = new ArrayList<ForumDiscussionsLMS>(); else this.forumDiscussionsLms = criteria.list(); logger.info("ForumDiscussionsLMS tables: " + this.forumDiscussionsLms.size()); criteria = session.createCriteria(ScormLMS.class, "obj"); if (hasCR) { criteria.add(Restrictions.in("obj.course", courses)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.scormLms = criteria.list(); logger.info("ScormLMS tables: " + this.scormLms.size()); criteria = session.createCriteria(GradeItemsLMS.class, "obj"); if (hasCR) { criteria.add(Restrictions.in("obj.courseid", courses)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.gradeItemsLms = criteria.list(); logger.info("GradeItemsLMS tables: " + this.gradeItemsLms.size()); criteria = session.createCriteria(GradeGradesLMS.class, "obj"); empty = false; if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (GradeItemsLMS e : this.gradeItemsLms) ids.add(e.getId()); if (empty = ids.isEmpty()) ; criteria.add(Restrictions.in("obj.itemid", ids)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (hasCR && empty) this.gradeGradesLms = new ArrayList<GradeGradesLMS>(); else this.gradeGradesLms = criteria.list(); logger.info("GradeGradesLMS tables: " + this.gradeGradesLms.size()); // hibernate session finish and close tx.commit(); session.close(); }
From source file:de.lemo.dms.connectors.moodle_2_3.ExtractAndMapMoodle.java
License:Open Source License
@Override @SuppressWarnings("unchecked") public void getLMStables(final DBConfigObject dbConfig, final long readingfromtimestamp, List<Long> courses, List<String> logins) { // accessing DB by creating a session and a transaction using HibernateUtil final Session session = HibernateUtil.getSessionFactory(dbConfig).openSession(); session.clear();// w ww.j av a2 s .c om final Transaction tx = session.beginTransaction(); boolean hasCR = false; if (courses != null && courses.size() > 0) hasCR = true; else courses = new ArrayList<Long>(); boolean empty = false; //Read Context Criteria criteria = session.createCriteria(ContextLMS.class, "obj"); List<Long> contextLevels = new ArrayList<Long>(); contextLevels.add(40L); contextLevels.add(50L); //Read ContextLevels criteria.add(Restrictions.in("obj.contextlevel", contextLevels)); criteria.addOrder(Property.forName("obj.id").asc()); this.contextLms = criteria.list(); logger.info("ContextLMS tables: " + this.contextLms.size()); if (logins != null && !logins.isEmpty()) { List<String> archetypes = new ArrayList<String>(); List<Long> roleIds = new ArrayList<Long>(); List<String> userIds = new ArrayList<String>(); archetypes.add("manager"); archetypes.add("coursecreator"); archetypes.add("teacher"); archetypes.add("editingteacher"); criteria = session.createCriteria(RoleLMS.class, "obj"); criteria.add(Restrictions.in("obj.archetype", archetypes)); for (RoleLMS role : (List<RoleLMS>) criteria.list()) roleIds.add(role.getId()); criteria = session.createCriteria(UserLMS.class, "obj"); criteria.add(Restrictions.in("obj.username", logins)); for (UserLMS user : (List<UserLMS>) criteria.list()) userIds.add(user.getId() + ""); criteria = session.createCriteria(RoleAssignmentsLMS.class, "obj"); criteria.add(Restrictions.in("obj.userid", userIds)); criteria.add(Restrictions.in("obj.roleid", roleIds)); for (ContextLMS c : this.contextLms) { for (RoleAssignmentsLMS ra : (List<RoleAssignmentsLMS>) criteria.list()) { if (c.getContextlevel() == 50 && c.getId() == ra.getContextid()) { courses.add(c.getInstanceid()); hasCR = true; } } } } // reading the LMS Database, create tables as lists of instances of the DB-table classes criteria = session.createCriteria(AssignLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.assignLms = criteria.list(); logger.info("AssignLMS tables: " + this.assignLms.size()); //Read RoleAssignments criteria = session.createCriteria(RoleAssignmentsLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (ContextLMS c : this.contextLms) { if (c.getContextlevel() == 50 && courses.contains(c.getInstanceid())) ids.add(c.getId()); } if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.contextid", ids)); } //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.roleAssignmentsLms = criteria.list(); else this.roleAssignmentsLms = new ArrayList<RoleAssignmentsLMS>(); logger.info("RoleAssignmentsLMS tables: " + this.roleAssignmentsLms.size()); //Read AssignGrades criteria = session.createCriteria(AssignGradesLMS.class, "obj"); if (hasCR) { List<Long> tmp = new ArrayList<Long>(); for (AssignLMS assign : assignLms) { tmp.add(assign.getId()); } if (!(empty = tmp.isEmpty())) criteria.add(Restrictions.in("obj.assignment", tmp)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.assignGradesLms = criteria.list(); else this.assignGradesLms = new ArrayList<AssignGradesLMS>(); logger.info("AssignGradesLMS tables: " + this.assignGradesLms.size()); //Read Enrol criteria = session.createCriteria(EnrolLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.courseid", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.enrolLms = criteria.list(); logger.info("EnrolLMS tables: " + this.enrolLms.size()); //Read Modules criteria = session.createCriteria(ModulesLMS.class, "obj"); criteria.addOrder(Property.forName("obj.id").asc()); this.modulesLms = criteria.list(); logger.info("ModulesLMS tables: " + this.modulesLms.size()); //Read UserEnrolments criteria = session.createCriteria(UserEnrolmentsLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (EnrolLMS e : this.enrolLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.enrolid", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.userEnrolmentsLms = criteria.list(); else this.userEnrolmentsLms = new ArrayList<UserEnrolmentsLMS>(); logger.info("UserEnrolmentsLMS tables: " + this.userEnrolmentsLms.size()); //Read CourseModules criteria = session.createCriteria(CourseModulesLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.courseModulesLms = criteria.list(); logger.info("CourseModulesLMS tables: " + this.courseModulesLms.size()); //Read Log criteria = session.createCriteria(LogLMS.class, "obj"); if (hasCR) { criteria.add(Restrictions.in("obj.course", courses)); } criteria.add(Restrictions.gt("obj.time", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.logLms = criteria.list(); logger.info("LogLMS tables: " + this.logLms.size()); //Read Resource criteria = session.createCriteria(ResourceLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.resourceLms = criteria.list(); logger.info("ResourceLMS tables: " + this.resourceLms.size()); //Read Urls criteria = session.createCriteria(UrlLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.urlLms = criteria.list(); logger.info("UrlLMS tables: " + this.urlLms.size()); //Read Pages criteria = session.createCriteria(PageLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.pageLms = criteria.list(); logger.info("UrlLMS tables: " + this.pageLms.size()); //Read Quiz criteria = session.createCriteria(QuizLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.quizLms = criteria.list(); logger.info("QuizLMS tables: " + this.quizLms.size()); //Read QuizAttempts criteria = session.createCriteria(QuizAttemptsLMS.class, "obj"); if (hasCR) if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizLMS e : this.quizLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.quiz", ids)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.quizAttemptsLms = criteria.list(); else this.quizAttemptsLms = new ArrayList<QuizAttemptsLMS>(); logger.info("QuizAttemptsLMS tables: " + this.quizAttemptsLms.size()); //Read Chats criteria = session.createCriteria(ChatLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.chatLms = criteria.list(); logger.info("ChatLMS tables: " + this.chatLms.size()); //Read ChatLog criteria = session.createCriteria(ChatLogLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (ChatLMS e : this.chatLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.chat", ids)); } criteria.add(Restrictions.gt("obj.timestamp", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.chatLogLms = criteria.list(); else this.chatLogLms = new ArrayList<ChatLogLMS>(); logger.info("ChatLogLMS tables: " + this.chatLogLms.size()); criteria = session.createCriteria(CourseCategoriesLMS.class, "obj"); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.courseCategoriesLms = criteria.list(); logger.info("CourseCategoriesLMS tables: " + this.courseCategoriesLms.size()); criteria = session.createCriteria(CourseLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.id", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.courseLms = criteria.list(); logger.info("CourseLMS tables: " + this.courseLms.size()); final Query forumPosts; if (!hasCR) { forumPosts = session .createQuery("from ForumPostsLMS x where x.modified>=:readingtimestamp order by x.id asc"); forumPosts.setParameter("readingtimestamp", readingfromtimestamp); this.forumPostsLms = forumPosts.list(); } else { String courseClause = "("; for (int i = 0; i < courses.size(); i++) { courseClause += courses.get(i); if (i < courses.size() - 1) courseClause += ","; else courseClause += ")"; } forumPosts = session.createSQLQuery( "SELECT posts.id,posts.userid,posts.created,posts.modified,posts.subject,posts.message,posts.discussion from mdl_forum_posts as posts JOIN mdl_log as logs ON posts.userid = logs.userid Where logs.course in " + courseClause + " and (posts.created = logs.time or posts.modified = logs.time) AND posts.modified>=:readingtimestamp"); forumPosts.setParameter("readingtimestamp", readingfromtimestamp); List<Object[]> tmpl = forumPosts.list(); this.forumPostsLms = new ArrayList<ForumPostsLMS>(); for (Object[] obj : tmpl) { ForumPostsLMS p = new ForumPostsLMS(); if (obj[0].getClass().equals(BigInteger.class)) { p.setId(((BigInteger) obj[0]).longValue()); } else { p.setId(((Integer) obj[0]).longValue()); } if (obj[0].getClass().equals(BigInteger.class)) { p.setUserid(((BigInteger) obj[1]).longValue()); } else { p.setUserid(((Integer) obj[1]).longValue()); } if (obj[0].getClass().equals(BigInteger.class)) { p.setCreated(((BigInteger) obj[2]).longValue()); } else { p.setCreated(((Integer) obj[2]).longValue()); } if (obj[0].getClass().equals(BigInteger.class)) { p.setModified(((BigInteger) obj[3]).longValue()); } else { p.setModified(((Integer) obj[3]).longValue()); } p.setSubject((String) obj[4]); p.setMessage((String) obj[5]); if (obj[0].getClass().equals(BigInteger.class)) { p.setDiscussion(((BigInteger) obj[6]).longValue()); } else { p.setDiscussion(((Integer) obj[6]).longValue()); } this.forumPostsLms.add(p); } } logger.info("ForumPostsLMS tables: " + this.forumPostsLms.size()); criteria = session.createCriteria(ForumLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.forumLms = criteria.list(); logger.info("ForumLMS tables: " + this.forumLms.size()); criteria = session.createCriteria(GroupsLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.courseid", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.groupLms = criteria.list(); logger.info("GroupsLMS tables: " + this.groupLms.size()); criteria = session.createCriteria(WikiLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.wikiLms = criteria.list(); logger.info("WikiLMS tables: " + this.wikiLms.size()); criteria = session.createCriteria(GroupsMembersLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (GroupsLMS e : this.groupLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.groupid", ids)); } //criteria.add(Restrictions.gt("obj.timeadded", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.groupMembersLms = criteria.list(); else this.groupMembersLms = new ArrayList<GroupsMembersLMS>(); logger.info("GroupsMembersLMS tables: " + this.groupMembersLms.size()); criteria = session.createCriteria(QuizQuestionInstancesLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizLMS e : this.quizLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.quiz", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.quizQuestionInstancesLms = criteria.list(); else this.quizQuestionInstancesLms = new ArrayList<QuizQuestionInstancesLMS>(); logger.info("QuizQuestionInstancesLMS tables: " + this.quizQuestionInstancesLms.size()); criteria = session.createCriteria(QuestionStatesLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizQuestionInstancesLMS e : this.quizQuestionInstancesLms) ids.add(e.getQuestion()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.question", ids)); } criteria.add(Restrictions.gt("obj.timestamp", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.questionStatesLms = criteria.list(); else this.questionStatesLms = new ArrayList<QuestionStatesLMS>(); logger.info("QuestionStatesLMS tables: " + this.questionStatesLms.size()); criteria = session.createCriteria(QuestionLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizQuestionInstancesLMS e : this.quizQuestionInstancesLms) ids.add(e.getQuestion()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.id", ids)); } //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.questionLms = criteria.list(); else this.questionLms = new ArrayList<QuestionLMS>(); logger.info("QuestionLMS tables: " + this.questionLms.size()); criteria = session.createCriteria(UserLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (RoleAssignmentsLMS e : this.roleAssignmentsLms) ids.add(Long.valueOf(e.getUserid())); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.id", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.userLms = criteria.list(); else this.userLms = new ArrayList<UserLMS>(); logger.info("UserLMS tables: " + this.userLms.size()); criteria = session.createCriteria(RoleLMS.class, "obj"); criteria.addOrder(Property.forName("obj.id").asc()); this.roleLms = criteria.list(); logger.info("RoleLMS tables: " + this.roleLms.size()); criteria = session.createCriteria(QuizGradesLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizLMS e : this.quizLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.quiz", ids)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.quizGradesLms = criteria.list(); else this.quizGradesLms = new ArrayList<QuizGradesLMS>(); logger.info("QuizGradesLMS tables: " + this.quizGradesLms.size()); criteria = session.createCriteria(ForumDiscussionsLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (ForumLMS e : this.forumLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.forum", ids)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.forumDiscussionsLms = criteria.list(); else this.forumDiscussionsLms = new ArrayList<ForumDiscussionsLMS>(); logger.info("ForumDiscussionsLMS tables: " + this.forumDiscussionsLms.size()); criteria = session.createCriteria(ScormLMS.class, "obj"); if (hasCR) { criteria.add(Restrictions.in("obj.course", courses)); } //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.scormLms = criteria.list(); logger.info("ScormLMS tables: " + this.scormLms.size()); criteria = session.createCriteria(GradeItemsLMS.class, "obj"); if (hasCR) { criteria.add(Restrictions.in("obj.courseid", courses)); } //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.gradeItemsLms = criteria.list(); logger.info("GradeItemsLMS tables: " + this.gradeItemsLms.size()); criteria = session.createCriteria(GradeGradesLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (GradeItemsLMS e : this.gradeItemsLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.itemid", ids)); } //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.gradeGradesLms = criteria.list(); else this.gradeGradesLms = new ArrayList<GradeGradesLMS>(); logger.info("GradeGradesLMS tables: " + this.gradeGradesLms.size()); // hibernate session finish and close tx.commit(); session.close(); }
From source file:de.lemo.dms.connectors.moodle_2_3.ExtractAndMapMoodle.java
License:Open Source License
@Override @SuppressWarnings("unchecked") public void getLMStables(final DBConfigObject dbConf, final long readingfromtimestamp, final long readingtotimestamp, List<Long> courses, List<String> logins) { // accessing DB by creating a session and a transaction using HibernateUtil final Session session = HibernateUtil.getSessionFactory(dbConf).openSession(); // Session session = HibernateUtil.getDynamicSourceDBFactoryMoodle("jdbc:mysql://localhost/moodle19", session.clear();/*from ww w . j a v a 2s . c o m*/ final Transaction tx = session.beginTransaction(); // reading the LMS Database, create tables as lists of instances of the DB-table classes Criteria criteria; boolean hasCR = false; if (courses != null && courses.size() > 0) hasCR = true; boolean empty = false; if (this.userLms == null) { //Read Context criteria = session.createCriteria(ContextLMS.class, "obj"); List<Long> contextLevels = new ArrayList<Long>(); contextLevels.add(40L); contextLevels.add(50L); criteria.add(Restrictions.in("obj.contextlevel", contextLevels)); criteria.addOrder(Property.forName("obj.id").asc()); this.contextLms = criteria.list(); logger.info("ContextLMS tables: " + this.contextLms.size()); if (logins != null && !logins.isEmpty()) { List<String> archetypes = new ArrayList<String>(); List<Long> roleIds = new ArrayList<Long>(); List<String> userIds = new ArrayList<String>(); archetypes.add("manager"); archetypes.add("coursecreator"); archetypes.add("teacher"); archetypes.add("editingteacher"); criteria = session.createCriteria(RoleLMS.class, "obj"); criteria.add(Restrictions.in("obj.archetype", archetypes)); for (RoleLMS role : (List<RoleLMS>) criteria.list()) roleIds.add(role.getId()); criteria = session.createCriteria(UserLMS.class, "obj"); criteria.add(Restrictions.in("obj.username", logins)); for (UserLMS user : (List<UserLMS>) criteria.list()) userIds.add(user.getId() + ""); criteria = session.createCriteria(RoleAssignmentsLMS.class, "obj"); criteria.add(Restrictions.in("obj.userid", userIds)); criteria.add(Restrictions.in("obj.roleid", roleIds)); for (ContextLMS c : this.contextLms) { for (RoleAssignmentsLMS ra : (List<RoleAssignmentsLMS>) criteria.list()) { if (c.getContextlevel() == 50 && c.getId() == ra.getContextid()) { courses.add(c.getInstanceid()); hasCR = true; } } } } criteria = session.createCriteria(AssignLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.assignLms = criteria.list(); logger.info("AssignLMS tables: " + this.assignLms.size()); criteria = session.createCriteria(EnrolLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.courseid", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.enrolLms = criteria.list(); logger.info("EnrolLMS tables: " + this.enrolLms.size()); criteria = session.createCriteria(ModulesLMS.class, "obj"); criteria.addOrder(Property.forName("obj.id").asc()); this.modulesLms = criteria.list(); logger.info("ModulesLMS tables: " + this.modulesLms.size()); criteria = session.createCriteria(UserEnrolmentsLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (EnrolLMS e : this.enrolLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.enrolid", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.userEnrolmentsLms = criteria.list(); else this.userEnrolmentsLms = new ArrayList<UserEnrolmentsLMS>(); logger.info("UserEnrolmentsLMS tables: " + this.userEnrolmentsLms.size()); criteria = session.createCriteria(CourseModulesLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.courseModulesLms = criteria.list(); logger.info("CourseModulesLMS tables: " + this.courseModulesLms.size()); criteria = session.createCriteria(ResourceLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.resourceLms = criteria.list(); logger.info("ResourceLMS tables: " + this.resourceLms.size()); //Read Urls criteria = session.createCriteria(UrlLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.urlLms = criteria.list(); logger.info("UrlLMS tables: " + this.urlLms.size()); //Read Pages criteria = session.createCriteria(PageLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.pageLms = criteria.list(); logger.info("UrlLMS tables: " + this.pageLms.size()); criteria = session.createCriteria(CourseLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.id", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.courseLms = criteria.list(); logger.info("CourseLMS tables: " + this.courseLms.size()); criteria = session.createCriteria(ChatLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.chatLms = criteria.list(); logger.info("ChatLMS tables: " + this.chatLms.size()); criteria = session.createCriteria(CourseCategoriesLMS.class, "obj"); criteria.addOrder(Property.forName("obj.id").asc()); this.courseCategoriesLms = criteria.list(); logger.info("CourseCategoriesLMS tables: " + this.courseCategoriesLms.size()); criteria = session.createCriteria(ForumLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.forumLms = criteria.list(); logger.info("ForumLMS tables: " + this.forumLms.size()); criteria = session.createCriteria(GroupsLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.courseid", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.groupLms = criteria.list(); logger.info("GroupsLMS tables: " + this.groupLms.size()); criteria = session.createCriteria(QuizLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.quizLms = criteria.list(); logger.info("QuizLMS tables: " + this.quizLms.size()); criteria = session.createCriteria(WikiLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.wikiLms = criteria.list(); logger.info("WikiLMS tables: " + this.wikiLms.size()); criteria = session.createCriteria(QuizQuestionInstancesLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizLMS e : this.quizLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.quiz", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.quizQuestionInstancesLms = criteria.list(); else this.quizQuestionInstancesLms = new ArrayList<QuizQuestionInstancesLMS>(); logger.info("QuizQuestionInstancesLMS tables: " + this.quizQuestionInstancesLms.size()); criteria = session.createCriteria(QuestionLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizQuestionInstancesLMS e : this.quizQuestionInstancesLms) ids.add(e.getQuestion()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.id", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.questionLms = criteria.list(); else this.questionLms = new ArrayList<QuestionLMS>(); logger.info("QuestionLMS tables: " + this.questionLms.size()); criteria = session.createCriteria(RoleLMS.class, "obj"); criteria.addOrder(Property.forName("obj.id").asc()); this.roleLms = criteria.list(); logger.info("RoleLMS tables: " + this.roleLms.size()); session.clear(); /* criteria = session.createCriteria(AssignmentLMS.class, "obj"); if(hasCR) { criteria.add(Restrictions.in("obj.course", courses)); } criteria.addOrder(Property.forName("obj.id").asc()); this.assignmentLms = criteria.list(); logger.info("AssignmentLMS tables: " + this.assignmentLms.size()); */ criteria = session.createCriteria(ScormLMS.class, "obj"); if (hasCR) { criteria.add(Restrictions.in("obj.course", courses)); } criteria.addOrder(Property.forName("obj.id").asc()); this.scormLms = criteria.list(); logger.info("ScormLMS tables: " + this.scormLms.size()); criteria = session.createCriteria(GradeItemsLMS.class, "obj"); if (hasCR) { criteria.add(Restrictions.in("obj.courseid", courses)); } criteria.addOrder(Property.forName("obj.id").asc()); this.gradeItemsLms = criteria.list(); logger.info("GradeItemsLMS tables: " + this.gradeItemsLms.size()); criteria = session.createCriteria(RoleAssignmentsLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (ContextLMS c : this.contextLms) { if (c.getContextlevel() == 50 && courses.contains(c.getInstanceid())) ids.add(c.getId()); } if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.contextid", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.roleAssignmentsLms = criteria.list(); else this.roleAssignmentsLms = new ArrayList<RoleAssignmentsLMS>(); logger.info("RoleAssignmentsLMS tables: " + this.roleAssignmentsLms.size()); criteria = session.createCriteria(UserLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (RoleAssignmentsLMS e : this.roleAssignmentsLms) ids.add(Long.valueOf(e.getUserid())); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.id", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.userLms = criteria.list(); else this.userLms = new ArrayList<UserLMS>(); logger.info("UserLMS tables: " + this.userLms.size()); } criteria = session.createCriteria(QuizAttemptsLMS.class, "obj"); if (hasCR) if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizLMS e : this.quizLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.quiz", ids)); } criteria.add(Restrictions.lt("obj.timemodified", readingtotimestamp)); criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.quizAttemptsLms = criteria.list(); else this.quizAttemptsLms = new ArrayList<QuizAttemptsLMS>(); logger.info("QuizAttemptsLMS tables: " + this.quizAttemptsLms.size()); criteria = session.createCriteria(LogLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.add(Restrictions.lt("obj.time", readingtotimestamp)); criteria.add(Restrictions.gt("obj.time", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.logLms = criteria.list(); logger.info("LogLMS tables: " + this.logLms.size()); criteria = session.createCriteria(ChatLogLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (ChatLMS e : this.chatLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.chat", ids)); } criteria.add(Restrictions.lt("obj.timestamp", readingtotimestamp)); criteria.add(Restrictions.gt("obj.timestamp", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.chatLogLms = criteria.list(); else this.chatLogLms = new ArrayList<ChatLogLMS>(); logger.info("ChatLogLMS tables: " + this.chatLogLms.size()); final Query forumPosts; if (!hasCR) { forumPosts = session.createQuery( "from ForumPostsLMS x where x.created>=:readingtimestamp and x.created<=:ceiling order by x.id asc"); forumPosts.setParameter("readingtimestamp", readingfromtimestamp); forumPosts.setParameter("ceiling", readingtotimestamp); this.forumPostsLms = forumPosts.list(); } else { String courseClause = "("; for (int i = 0; i < courses.size(); i++) { courseClause += courses.get(i); if (i < courses.size() - 1) courseClause += ","; else courseClause += ")"; } forumPosts = session.createSQLQuery( "SELECT posts.id,posts.userid,posts.created,posts.modified,posts.subject,posts.message,posts.discussion from forum_posts as posts JOIN log as logs ON posts.userid = logs.userid Where logs.course in " + courseClause + " and (posts.created = logs.time or posts.modified = logs.time) AND posts.created>=:readingtimestamp and posts.created<=:ceiling"); forumPosts.setParameter("readingtimestamp", readingfromtimestamp); forumPosts.setParameter("ceiling", readingtotimestamp); List<Object[]> tmpl = forumPosts.list(); if (this.forumPostsLms == null) this.forumPostsLms = new ArrayList<ForumPostsLMS>(); for (Object[] obj : tmpl) { ForumPostsLMS p = new ForumPostsLMS(); if (obj[0].getClass().equals(BigInteger.class)) { p.setId(((BigInteger) obj[0]).longValue()); } else { p.setId(((Integer) obj[0]).longValue()); } if (obj[0].getClass().equals(BigInteger.class)) { p.setUserid(((BigInteger) obj[1]).longValue()); } else { p.setUserid(((Integer) obj[1]).longValue()); } if (obj[0].getClass().equals(BigInteger.class)) { p.setCreated(((BigInteger) obj[2]).longValue()); } else { p.setCreated(((Integer) obj[2]).longValue()); } if (obj[0].getClass().equals(BigInteger.class)) { p.setModified(((BigInteger) obj[3]).longValue()); } else { p.setModified(((Integer) obj[3]).longValue()); } p.setSubject((String) obj[4]); p.setMessage((String) obj[5]); if (obj[0].getClass().equals(BigInteger.class)) { p.setDiscussion(((BigInteger) obj[6]).longValue()); } else { p.setDiscussion(((Integer) obj[6]).longValue()); } this.forumPostsLms.add(p); } } logger.info("ForumPostsLMS tables: " + this.forumPostsLms.size()); final Query forumPostsModified; if (!hasCR) { forumPostsModified = session.createQuery( "from ForumPostsLMS x where x.modified>=:readingtimestamp and x.modified<=:ceiling order by x.id asc"); this.forumPostsLms.addAll(forumPostsModified.list()); } else { String courseClause = "("; for (int i = 0; i < courses.size(); i++) { courseClause += courses.get(i); if (i < courses.size() - 1) courseClause += ","; else courseClause += ")"; } forumPostsModified = session.createSQLQuery( "SELECT posts.id,posts.userid,posts.created,posts.modified,posts.subject,posts.message from mdl_forum_posts as posts JOIN mdl_log as logs ON posts.userid = logs.userid Where logs.course in " + courseClause + " and (posts.created = logs.time or posts.modified = logs.time) AND posts.modified>=:readingtimestamp and posts.modified<=:ceiling"); forumPostsModified.setParameter("readingtimestamp", readingfromtimestamp); forumPostsModified.setParameter("ceiling", readingtotimestamp); List<Object[]> tmpl = forumPostsModified.list(); if (this.forumPostsLms == null) this.forumPostsLms = new ArrayList<ForumPostsLMS>(); for (Object[] obj : tmpl) { ForumPostsLMS p = new ForumPostsLMS(); p.setId(((Integer) obj[0]).longValue()); p.setUserid(((Integer) obj[1]).longValue()); p.setCreated(((Integer) obj[2]).longValue()); p.setModified(((Integer) obj[3]).longValue()); p.setSubject((String) obj[4]); p.setMessage((String) obj[5]); this.forumPostsLms.add(p); } } logger.info("ForumPostsModifiedLMS tables: " + this.forumPostsLms.size()); session.clear(); criteria = session.createCriteria(AssignGradesLMS.class, "obj"); if (hasCR) { List<Long> tmp = new ArrayList<Long>(); for (AssignLMS assign : assignLms) { tmp.add(assign.getId()); } if (!(empty = tmp.isEmpty())) criteria.add(Restrictions.in("obj.assignment", tmp)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.add(Restrictions.lt("obj.timemodified", readingtotimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.assignGradesLms = criteria.list(); else this.assignGradesLms = new ArrayList<AssignGradesLMS>(); logger.info("AssignGradesLMS tables: " + this.assignGradesLms.size()); criteria = session.createCriteria(GroupsMembersLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (GroupsLMS e : this.groupLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.groupid", ids)); } criteria.add(Restrictions.lt("obj.timeadded", readingtotimestamp)); criteria.add(Restrictions.gt("obj.timeadded", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.groupMembersLms = criteria.list(); else this.groupMembersLms = new ArrayList<GroupsMembersLMS>(); logger.info("GroupsMembersLMS tables: " + this.groupMembersLms.size()); criteria = session.createCriteria(QuestionStatesLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizQuestionInstancesLMS e : this.quizQuestionInstancesLms) ids.add(e.getQuestion()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.question", ids)); } criteria.add(Restrictions.lt("obj.timestamp", readingtotimestamp)); criteria.add(Restrictions.gt("obj.timestamp", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.questionStatesLms = criteria.list(); else this.questionStatesLms = new ArrayList<QuestionStatesLMS>(); logger.info("QuestionStatesLMS tables: " + this.questionStatesLms.size()); /* criteria = session.createCriteria(AssignmentSubmissionsLMS.class, "obj"); if(hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for(AssignmentLMS e : this.assignmentLms) ids.add(e.getId()); if(!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.id", ids)); } criteria.add(Restrictions.lt("obj.timecreated", readingtotimestamp)); criteria.add(Restrictions.gt("obj.timecreated", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if(!(hasCR && empty)) this.assignmentSubmissionLms = criteria.list(); else this.assignmentSubmissionLms = new ArrayList<AssignmentSubmissionsLMS>(); logger.info("AssignmentSubmissionsLMS tables: " + this.userLms.size()); */ criteria = session.createCriteria(QuizGradesLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizLMS e : this.quizLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.quiz", ids)); } criteria.add(Restrictions.lt("obj.timemodified", readingtotimestamp)); criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.quizGradesLms = criteria.list(); else this.quizGradesLms = new ArrayList<QuizGradesLMS>(); logger.info("QuizGradesLMS tables: " + this.quizGradesLms.size()); criteria = session.createCriteria(ForumDiscussionsLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (ForumLMS e : this.forumLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.forum", ids)); } criteria.add(Restrictions.lt("obj.timemodified", readingtotimestamp)); criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.forumDiscussionsLms = criteria.list(); else this.forumDiscussionsLms = new ArrayList<ForumDiscussionsLMS>(); logger.info("ForumDiscussionsLMS tables: " + this.forumDiscussionsLms.size()); criteria = session.createCriteria(GradeGradesLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (GradeItemsLMS e : this.gradeItemsLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.itemid", ids)); } //criteria.add(Restrictions.lt("obj.timemodified", readingtotimestamp)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.gradeGradesLms = criteria.list(); else this.gradeGradesLms = new ArrayList<GradeGradesLMS>(); logger.info("GradeGradesLMS tables: " + this.gradeGradesLms.size()); session.clear(); // hibernate session finish and close tx.commit(); session.close(); }
From source file:de.lemo.dms.connectors.moodle_2_7.ExtractAndMapMoodle.java
License:Open Source License
@Override @SuppressWarnings("unchecked") public void getLMStables(final DBConfigObject dbConfig, final long readingfromtimestamp, List<Long> courses, List<String> logins) { // accessing DB by creating a session and a transaction using HibernateUtil final Session session = HibernateUtil.getSessionFactory(dbConfig).openSession(); session.clear();//from ww w . j a va 2 s. c o m final Transaction tx = session.beginTransaction(); boolean hasCR = false; if (courses != null && courses.size() > 0) hasCR = true; else courses = new ArrayList<Long>(); boolean empty = false; //Read Context Criteria criteria = session.createCriteria(ContextLMS.class, "obj"); List<Long> contextLevels = new ArrayList<Long>(); contextLevels.add(40L); contextLevels.add(50L); criteria.add(Restrictions.in("obj.contextlevel", contextLevels)); criteria.addOrder(Property.forName("obj.id").asc()); this.contextLms = criteria.list(); logger.info("ContextLMS tables: " + this.contextLms.size()); if (logins != null && !logins.isEmpty()) { List<String> archetypes = new ArrayList<String>(); List<Long> roleIds = new ArrayList<Long>(); List<String> userIds = new ArrayList<String>(); archetypes.add("manager"); archetypes.add("coursecreator"); archetypes.add("teacher"); archetypes.add("editingteacher"); criteria = session.createCriteria(RoleLMS.class, "obj"); criteria.add(Restrictions.in("obj.archetype", archetypes)); for (RoleLMS role : (List<RoleLMS>) criteria.list()) roleIds.add(role.getId()); criteria = session.createCriteria(UserLMS.class, "obj"); criteria.add(Restrictions.in("obj.username", logins)); for (UserLMS user : (List<UserLMS>) criteria.list()) userIds.add(user.getId() + ""); criteria = session.createCriteria(RoleAssignmentsLMS.class, "obj"); criteria.add(Restrictions.in("obj.userid", userIds)); criteria.add(Restrictions.in("obj.roleid", roleIds)); for (ContextLMS c : this.contextLms) { for (RoleAssignmentsLMS ra : (List<RoleAssignmentsLMS>) criteria.list()) { if (c.getContextlevel() == 50 && c.getId() == ra.getContextid()) { courses.add(c.getInstanceid()); hasCR = true; } } } } // reading the LMS Database, create tables as lists of instances of the DB-table classes criteria = session.createCriteria(AssignLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.assignLms = criteria.list(); logger.info("AssignLMS tables: " + this.assignLms.size()); //Read RoleAssignments criteria = session.createCriteria(RoleAssignmentsLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (ContextLMS c : this.contextLms) { if (c.getContextlevel() == 50 && courses.contains(c.getInstanceid())) ids.add(c.getId()); } if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.contextid", ids)); } //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.roleAssignmentsLms = criteria.list(); else this.roleAssignmentsLms = new ArrayList<RoleAssignmentsLMS>(); logger.info("RoleAssignmentsLMS tables: " + this.roleAssignmentsLms.size()); //Read Assign criteria = session.createCriteria(AssignGradesLMS.class, "obj"); if (hasCR) { List<Long> tmp = new ArrayList<Long>(); for (AssignLMS assign : assignLms) { tmp.add(assign.getId()); } if (!(empty = tmp.isEmpty())) criteria.add(Restrictions.in("obj.assignment", tmp)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.assignGradesLms = criteria.list(); else this.assignGradesLms = new ArrayList<AssignGradesLMS>(); logger.info("AssignGradesLMS tables: " + this.assignGradesLms.size()); //Read Enrol criteria = session.createCriteria(EnrolLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.courseid", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.enrolLms = criteria.list(); logger.info("EnrolLMS tables: " + this.enrolLms.size()); //Read Modules criteria = session.createCriteria(ModulesLMS.class, "obj"); criteria.addOrder(Property.forName("obj.id").asc()); this.modulesLms = criteria.list(); logger.info("ModulesLMS tables: " + this.modulesLms.size()); //Read UserEnrolments criteria = session.createCriteria(UserEnrolmentsLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (EnrolLMS e : this.enrolLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.enrolid", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.userEnrolmentsLms = criteria.list(); else this.userEnrolmentsLms = new ArrayList<UserEnrolmentsLMS>(); logger.info("UserEnrolmentsLMS tables: " + this.userEnrolmentsLms.size()); //Read CourseModules criteria = session.createCriteria(CourseModulesLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.courseModulesLms = criteria.list(); logger.info("CourseModulesLMS tables: " + this.courseModulesLms.size()); //Read Log criteria = session.createCriteria(LogstoreStandardLogLMS.class, "obj"); if (hasCR) { criteria.add(Restrictions.in("obj.course", courses)); } criteria.add(Restrictions.gt("obj.timecreated", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.timecreated").asc()); this.logstoreLms = criteria.list(); logger.info("LogLMS tables: " + this.logstoreLms.size()); //Read Resource criteria = session.createCriteria(ResourceLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.resourceLms = criteria.list(); logger.info("ResourceLMS tables: " + this.resourceLms.size()); //Read Urls criteria = session.createCriteria(UrlLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.urlLms = criteria.list(); logger.info("UrlLMS tables: " + this.urlLms.size()); //Read Pages criteria = session.createCriteria(PageLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.pageLms = criteria.list(); logger.info("PageLMS tables: " + this.pageLms.size()); //Read Quiz criteria = session.createCriteria(QuizLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.quizLms = criteria.list(); logger.info("QuizLMS tables: " + this.quizLms.size()); //Read QuizAttempts criteria = session.createCriteria(QuizAttemptsLMS.class, "obj"); if (hasCR) if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizLMS e : this.quizLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.quiz", ids)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.quizAttemptsLms = criteria.list(); else this.quizAttemptsLms = new ArrayList<QuizAttemptsLMS>(); logger.info("QuizAttemptsLMS tables: " + this.quizAttemptsLms.size()); //Read Chats criteria = session.createCriteria(ChatLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.chatLms = criteria.list(); logger.info("ChatLMS tables: " + this.chatLms.size()); //Read ChatLog criteria = session.createCriteria(ChatLogLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (ChatLMS e : this.chatLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.chat", ids)); } criteria.add(Restrictions.gt("obj.timestamp", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.chatLogLms = criteria.list(); else this.chatLogLms = new ArrayList<ChatLogLMS>(); logger.info("ChatLogLMS tables: " + this.chatLogLms.size()); criteria = session.createCriteria(CourseCategoriesLMS.class, "obj"); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.courseCategoriesLms = criteria.list(); logger.info("CourseCategoriesLMS tables: " + this.courseCategoriesLms.size()); criteria = session.createCriteria(CourseLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.id", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.courseLms = criteria.list(); logger.info("CourseLMS tables: " + this.courseLms.size()); final Query forumPosts; if (!hasCR) { forumPosts = session .createQuery("from ForumPostsLMS x where x.modified>=:readingtimestamp order by x.id asc"); forumPosts.setParameter("readingtimestamp", readingfromtimestamp); this.forumPostsLms = forumPosts.list(); } else { String courseClause = "("; for (int i = 0; i < courses.size(); i++) { courseClause += courses.get(i); if (i < courses.size() - 1) courseClause += ","; else courseClause += ")"; } forumPosts = session.createSQLQuery( "SELECT posts.id,posts.userid,posts.created,posts.modified,posts.subject,posts.message,posts.discussion from mdl_forum_posts as posts JOIN mdl_logstore_standard_log as logs ON posts.userid = logs.userid Where logs.courseid in " + courseClause + " and (posts.created = logs.timecreated or posts.modified = logs.timecreated) AND posts.modified>=:readingtimestamp"); forumPosts.setParameter("readingtimestamp", readingfromtimestamp); List<Object[]> tmpl = forumPosts.list(); this.forumPostsLms = new ArrayList<ForumPostsLMS>(); for (Object[] obj : tmpl) { ForumPostsLMS p = new ForumPostsLMS(); if (obj[0].getClass().equals(BigInteger.class)) { p.setId(((BigInteger) obj[0]).longValue()); } else { p.setId(((Integer) obj[0]).longValue()); } if (obj[0].getClass().equals(BigInteger.class)) { p.setUserid(((BigInteger) obj[1]).longValue()); } else { p.setUserid(((Integer) obj[1]).longValue()); } if (obj[0].getClass().equals(BigInteger.class)) { p.setCreated(((BigInteger) obj[2]).longValue()); } else { p.setCreated(((Integer) obj[2]).longValue()); } if (obj[0].getClass().equals(BigInteger.class)) { p.setModified(((BigInteger) obj[3]).longValue()); } else { p.setModified(((Integer) obj[3]).longValue()); } p.setSubject((String) obj[4]); p.setMessage((String) obj[5]); if (obj[0].getClass().equals(BigInteger.class)) { p.setDiscussion(((BigInteger) obj[6]).longValue()); } else { p.setDiscussion(((Integer) obj[6]).longValue()); } this.forumPostsLms.add(p); } } logger.info("ForumPostsLMS tables: " + this.forumPostsLms.size()); criteria = session.createCriteria(ForumLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.forumLms = criteria.list(); logger.info("ForumLMS tables: " + this.forumLms.size()); criteria = session.createCriteria(GroupsLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.courseid", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.groupLms = criteria.list(); logger.info("GroupsLMS tables: " + this.groupLms.size()); criteria = session.createCriteria(WikiLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.wikiLms = criteria.list(); logger.info("WikiLMS tables: " + this.wikiLms.size()); criteria = session.createCriteria(WikiPagesLMS.class, "obj"); if (hasCR && !this.wikiLms.isEmpty()) { Set<Long> wikiids = new HashSet<Long>(); for (WikiLMS wiki : this.wikiLms) { wikiids.add(wiki.getId()); } criteria.add(Restrictions.in("obj.subwikiid", wikiids)); } //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.wikiPagesLms = criteria.list(); logger.info("WikiPagesLMS tables: " + this.wikiPagesLms.size()); criteria = session.createCriteria(GroupsMembersLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (GroupsLMS e : this.groupLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.groupid", ids)); } //criteria.add(Restrictions.gt("obj.timeadded", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.groupMembersLms = criteria.list(); else this.groupMembersLms = new ArrayList<GroupsMembersLMS>(); logger.info("GroupsMembersLMS tables: " + this.groupMembersLms.size()); /* criteria = session.createCriteria(QuestionStatesLMS.class, "obj"); if(hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for(QuizQuestionInstancesLMS e : this.quizQuestionInstancesLms) ids.add(e.getQuestion()); if(!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.question", ids)); } criteria.add(Restrictions.gt("obj.timestamp", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if(!(hasCR && empty)) this.questionStatesLms = criteria.list(); else this.questionStatesLms = new ArrayList<QuestionStatesLMS>(); logger.info("QuestionStatesLMS tables: " + this.questionStatesLms.size()); */ /* criteria = session.createCriteria(QuestionLMS.class, "obj"); if(hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for(QuizQuestionInstancesLMS e : this.quizQuestionInstancesLms) ids.add(e.getQuestion()); if(!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.id", ids)); } //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if(!(hasCR && empty)) this.questionLms = criteria.list(); else this.questionLms = new ArrayList<QuestionLMS>(); logger.info("QuestionLMS tables: " + this.questionLms.size()); */ criteria = session.createCriteria(UserLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (RoleAssignmentsLMS e : this.roleAssignmentsLms) ids.add(Long.valueOf(e.getUserid())); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.id", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.userLms = criteria.list(); else this.userLms = new ArrayList<UserLMS>(); logger.info("UserLMS tables: " + this.userLms.size()); criteria = session.createCriteria(RoleLMS.class, "obj"); criteria.addOrder(Property.forName("obj.id").asc()); this.roleLms = criteria.list(); logger.info("RoleLMS tables: " + this.roleLms.size()); criteria = session.createCriteria(QuizGradesLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizLMS e : this.quizLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.quiz", ids)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.quizGradesLms = criteria.list(); else this.quizGradesLms = new ArrayList<QuizGradesLMS>(); logger.info("QuizGradesLMS tables: " + this.quizGradesLms.size()); criteria = session.createCriteria(ForumDiscussionsLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (ForumLMS e : this.forumLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.forum", ids)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.forumDiscussionsLms = criteria.list(); else this.forumDiscussionsLms = new ArrayList<ForumDiscussionsLMS>(); logger.info("ForumDiscussionsLMS tables: " + this.forumDiscussionsLms.size()); criteria = session.createCriteria(ScormLMS.class, "obj"); if (hasCR) { criteria.add(Restrictions.in("obj.course", courses)); } //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.scormLms = criteria.list(); logger.info("ScormLMS tables: " + this.scormLms.size()); criteria = session.createCriteria(GradeItemsLMS.class, "obj"); if (hasCR) { criteria.add(Restrictions.in("obj.courseid", courses)); } //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.gradeItemsLms = criteria.list(); logger.info("GradeItemsLMS tables: " + this.gradeItemsLms.size()); criteria = session.createCriteria(GradeGradesLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (GradeItemsLMS e : this.gradeItemsLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.itemid", ids)); } //criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.gradeGradesLms = criteria.list(); else this.gradeGradesLms = new ArrayList<GradeGradesLMS>(); logger.info("GradeGradesLMS tables: " + this.gradeGradesLms.size()); // hibernate session finish and close tx.commit(); session.close(); }
From source file:de.lemo.dms.connectors.moodle_2_7.ExtractAndMapMoodle.java
License:Open Source License
@Override @SuppressWarnings("unchecked") public void getLMStables(final DBConfigObject dbConf, final long readingfromtimestamp, final long readingtotimestamp, List<Long> courses, List<String> logins) { // accessing DB by creating a session and a transaction using HibernateUtil final Session session = HibernateUtil.getSessionFactory(dbConf).openSession(); // Session session = HibernateUtil.getDynamicSourceDBFactoryMoodle("jdbc:mysql://localhost/moodle19", session.clear();/*from w w w .ja va 2s.c om*/ final Transaction tx = session.beginTransaction(); // reading the LMS Database, create tables as lists of instances of the DB-table classes Criteria criteria; boolean hasCR = false; if (courses != null && courses.size() > 0) hasCR = true; boolean empty = false; if (this.userLms == null) { //Read Context criteria = session.createCriteria(ContextLMS.class, "obj"); List<Long> contextLevels = new ArrayList<Long>(); contextLevels.add(40L); contextLevels.add(50L); criteria.add(Restrictions.in("obj.contextlevel", contextLevels)); criteria.addOrder(Property.forName("obj.id").asc()); this.contextLms = criteria.list(); logger.info("ContextLMS tables: " + this.contextLms.size()); if (logins != null && !logins.isEmpty()) { List<String> archetypes = new ArrayList<String>(); List<Long> roleIds = new ArrayList<Long>(); List<String> userIds = new ArrayList<String>(); archetypes.add("manager"); archetypes.add("coursecreator"); archetypes.add("teacher"); archetypes.add("editingteacher"); criteria = session.createCriteria(RoleLMS.class, "obj"); criteria.add(Restrictions.in("obj.archetype", archetypes)); for (RoleLMS role : (List<RoleLMS>) criteria.list()) roleIds.add(role.getId()); criteria = session.createCriteria(UserLMS.class, "obj"); criteria.add(Restrictions.in("obj.username", logins)); for (UserLMS user : (List<UserLMS>) criteria.list()) userIds.add(user.getId() + ""); criteria = session.createCriteria(RoleAssignmentsLMS.class, "obj"); criteria.add(Restrictions.in("obj.userid", userIds)); criteria.add(Restrictions.in("obj.roleid", roleIds)); for (ContextLMS c : this.contextLms) { for (RoleAssignmentsLMS ra : (List<RoleAssignmentsLMS>) criteria.list()) { if (c.getContextlevel() == 50 && c.getId() == ra.getContextid()) { courses.add(c.getInstanceid()); hasCR = true; } } } } criteria = session.createCriteria(AssignLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.assignLms = criteria.list(); logger.info("AssignLMS tables: " + this.assignLms.size()); criteria = session.createCriteria(EnrolLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.courseid", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.enrolLms = criteria.list(); logger.info("EnrolLMS tables: " + this.enrolLms.size()); criteria = session.createCriteria(ModulesLMS.class, "obj"); criteria.addOrder(Property.forName("obj.id").asc()); this.modulesLms = criteria.list(); logger.info("ModulesLMS tables: " + this.modulesLms.size()); criteria = session.createCriteria(UserEnrolmentsLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (EnrolLMS e : this.enrolLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.enrolid", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.userEnrolmentsLms = criteria.list(); else this.userEnrolmentsLms = new ArrayList<UserEnrolmentsLMS>(); logger.info("UserEnrolmentsLMS tables: " + this.userEnrolmentsLms.size()); criteria = session.createCriteria(CourseModulesLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.courseModulesLms = criteria.list(); logger.info("CourseModulesLMS tables: " + this.courseModulesLms.size()); criteria = session.createCriteria(ResourceLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.resourceLms = criteria.list(); logger.info("ResourceLMS tables: " + this.resourceLms.size()); //Read Urls criteria = session.createCriteria(UrlLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.urlLms = criteria.list(); logger.info("UrlLMS tables: " + this.urlLms.size()); //Read Pages criteria = session.createCriteria(PageLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.pageLms = criteria.list(); logger.info("UrlLMS tables: " + this.pageLms.size()); criteria = session.createCriteria(CourseLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.id", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.courseLms = criteria.list(); logger.info("CourseLMS tables: " + this.courseLms.size()); criteria = session.createCriteria(ChatLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.chatLms = criteria.list(); logger.info("ChatLMS tables: " + this.chatLms.size()); criteria = session.createCriteria(CourseCategoriesLMS.class, "obj"); criteria.addOrder(Property.forName("obj.id").asc()); this.courseCategoriesLms = criteria.list(); logger.info("CourseCategoriesLMS tables: " + this.courseCategoriesLms.size()); criteria = session.createCriteria(ForumLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.forumLms = criteria.list(); logger.info("ForumLMS tables: " + this.forumLms.size()); criteria = session.createCriteria(GroupsLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.courseid", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.groupLms = criteria.list(); logger.info("GroupsLMS tables: " + this.groupLms.size()); criteria = session.createCriteria(QuizLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.quizLms = criteria.list(); logger.info("QuizLMS tables: " + this.quizLms.size()); criteria = session.createCriteria(WikiLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.addOrder(Property.forName("obj.id").asc()); this.wikiLms = criteria.list(); logger.info("WikiLMS tables: " + this.wikiLms.size()); /* criteria = session.createCriteria(QuizQuestionInstancesLMS.class, "obj"); if(hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for(QuizLMS e : this.quizLms) ids.add(e.getId()); if(!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.quiz", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if(!(hasCR && empty)) this.quizQuestionInstancesLms = criteria.list(); else this.quizQuestionInstancesLms = new ArrayList<QuizQuestionInstancesLMS>(); logger.info("QuizQuestionInstancesLMS tables: " + this.quizQuestionInstancesLms.size()); */ /* criteria = session.createCriteria(QuestionLMS.class, "obj"); if(hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for(QuizQuestionInstancesLMS e : this.quizQuestionInstancesLms) ids.add(e.getQuestion()); if(!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.id", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if(!(hasCR && empty)) this.questionLms = criteria.list(); else this.questionLms = new ArrayList<QuestionLMS>(); logger.info("QuestionLMS tables: " + this.questionLms.size()); */ criteria = session.createCriteria(RoleLMS.class, "obj"); criteria.addOrder(Property.forName("obj.id").asc()); this.roleLms = criteria.list(); logger.info("RoleLMS tables: " + this.roleLms.size()); session.clear(); /* criteria = session.createCriteria(AssignmentLMS.class, "obj"); if(hasCR) { criteria.add(Restrictions.in("obj.course", courses)); } criteria.addOrder(Property.forName("obj.id").asc()); this.assignmentLms = criteria.list(); logger.info("AssignmentLMS tables: " + this.assignmentLms.size()); */ criteria = session.createCriteria(ScormLMS.class, "obj"); if (hasCR) { criteria.add(Restrictions.in("obj.course", courses)); } criteria.addOrder(Property.forName("obj.id").asc()); this.scormLms = criteria.list(); logger.info("ScormLMS tables: " + this.scormLms.size()); criteria = session.createCriteria(GradeItemsLMS.class, "obj"); if (hasCR) { criteria.add(Restrictions.in("obj.courseid", courses)); } criteria.addOrder(Property.forName("obj.id").asc()); this.gradeItemsLms = criteria.list(); logger.info("GradeItemsLMS tables: " + this.gradeItemsLms.size()); criteria = session.createCriteria(RoleAssignmentsLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (ContextLMS c : this.contextLms) { if (c.getContextlevel() == 50 && courses.contains(c.getInstanceid())) ids.add(c.getId()); } if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.contextid", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.roleAssignmentsLms = criteria.list(); else this.roleAssignmentsLms = new ArrayList<RoleAssignmentsLMS>(); logger.info("RoleAssignmentsLMS tables: " + this.roleAssignmentsLms.size()); criteria = session.createCriteria(UserLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (RoleAssignmentsLMS e : this.roleAssignmentsLms) ids.add(Long.valueOf(e.getUserid())); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.id", ids)); } criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.userLms = criteria.list(); else this.userLms = new ArrayList<UserLMS>(); logger.info("UserLMS tables: " + this.userLms.size()); } criteria = session.createCriteria(QuizAttemptsLMS.class, "obj"); if (hasCR) if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizLMS e : this.quizLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.quiz", ids)); } criteria.add(Restrictions.lt("obj.timemodified", readingtotimestamp)); criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.quizAttemptsLms = criteria.list(); else this.quizAttemptsLms = new ArrayList<QuizAttemptsLMS>(); logger.info("QuizAttemptsLMS tables: " + this.quizAttemptsLms.size()); criteria = session.createCriteria(LogstoreStandardLogLMS.class, "obj"); if (hasCR) criteria.add(Restrictions.in("obj.course", courses)); criteria.add(Restrictions.lt("obj.time", readingtotimestamp)); criteria.add(Restrictions.gt("obj.time", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); this.logstoreLms = criteria.list(); logger.info("LogLMS tables: " + this.logstoreLms.size()); criteria = session.createCriteria(ChatLogLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (ChatLMS e : this.chatLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.chat", ids)); } criteria.add(Restrictions.lt("obj.timestamp", readingtotimestamp)); criteria.add(Restrictions.gt("obj.timestamp", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.chatLogLms = criteria.list(); else this.chatLogLms = new ArrayList<ChatLogLMS>(); logger.info("ChatLogLMS tables: " + this.chatLogLms.size()); final Query forumPosts; if (!hasCR) { forumPosts = session.createQuery( "from ForumPostsLMS x where x.created>=:readingtimestamp and x.created<=:ceiling order by x.id asc"); forumPosts.setParameter("readingtimestamp", readingfromtimestamp); forumPosts.setParameter("ceiling", readingtotimestamp); this.forumPostsLms = forumPosts.list(); } else { String courseClause = "("; for (int i = 0; i < courses.size(); i++) { courseClause += courses.get(i); if (i < courses.size() - 1) courseClause += ","; else courseClause += ")"; } forumPosts = session.createSQLQuery( "SELECT posts.id,posts.userid,posts.created,posts.modified,posts.subject,posts.message,posts.discussion from forum_posts as posts JOIN logstore_standard_log as logs ON posts.userid = logs.userid Where logs.courseid in " + courseClause + " and (posts.created = logs.timecreated or posts.modified = logs.timecreated) AND posts.created>=:readingtimestamp and posts.created<=:ceiling"); forumPosts.setParameter("readingtimestamp", readingfromtimestamp); forumPosts.setParameter("ceiling", readingtotimestamp); List<Object[]> tmpl = forumPosts.list(); if (this.forumPostsLms == null) this.forumPostsLms = new ArrayList<ForumPostsLMS>(); for (Object[] obj : tmpl) { ForumPostsLMS p = new ForumPostsLMS(); if (obj[0].getClass().equals(BigInteger.class)) { p.setId(((BigInteger) obj[0]).longValue()); } else { p.setId(((Integer) obj[0]).longValue()); } if (obj[0].getClass().equals(BigInteger.class)) { p.setUserid(((BigInteger) obj[1]).longValue()); } else { p.setUserid(((Integer) obj[1]).longValue()); } if (obj[0].getClass().equals(BigInteger.class)) { p.setCreated(((BigInteger) obj[2]).longValue()); } else { p.setCreated(((Integer) obj[2]).longValue()); } if (obj[0].getClass().equals(BigInteger.class)) { p.setModified(((BigInteger) obj[3]).longValue()); } else { p.setModified(((Integer) obj[3]).longValue()); } p.setSubject((String) obj[4]); p.setMessage((String) obj[5]); if (obj[0].getClass().equals(BigInteger.class)) { p.setDiscussion(((BigInteger) obj[6]).longValue()); } else { p.setDiscussion(((Integer) obj[6]).longValue()); } this.forumPostsLms.add(p); } } logger.info("ForumPostsLMS tables: " + this.forumPostsLms.size()); final Query forumPostsModified; if (!hasCR) { forumPostsModified = session.createQuery( "from ForumPostsLMS x where x.modified>=:readingtimestamp and x.modified<=:ceiling order by x.id asc"); this.forumPostsLms.addAll(forumPostsModified.list()); } else { String courseClause = "("; for (int i = 0; i < courses.size(); i++) { courseClause += courses.get(i); if (i < courses.size() - 1) courseClause += ","; else courseClause += ")"; } forumPostsModified = session.createSQLQuery( "SELECT posts.id,posts.userid,posts.created,posts.modified,posts.subject,posts.message from mdl_forum_posts as posts JOIN mdl_log as logs ON posts.userid = logs.userid Where logs.course in " + courseClause + " and (posts.created = logs.time or posts.modified = logs.time) AND posts.modified>=:readingtimestamp and posts.modified<=:ceiling"); forumPostsModified.setParameter("readingtimestamp", readingfromtimestamp); forumPostsModified.setParameter("ceiling", readingtotimestamp); List<Object[]> tmpl = forumPostsModified.list(); if (this.forumPostsLms == null) this.forumPostsLms = new ArrayList<ForumPostsLMS>(); for (Object[] obj : tmpl) { ForumPostsLMS p = new ForumPostsLMS(); p.setId(((Integer) obj[0]).longValue()); p.setUserid(((Integer) obj[1]).longValue()); p.setCreated(((Integer) obj[2]).longValue()); p.setModified(((Integer) obj[3]).longValue()); p.setSubject((String) obj[4]); p.setMessage((String) obj[5]); this.forumPostsLms.add(p); } } logger.info("ForumPostsModifiedLMS tables: " + this.forumPostsLms.size()); session.clear(); criteria = session.createCriteria(AssignGradesLMS.class, "obj"); if (hasCR) { List<Long> tmp = new ArrayList<Long>(); for (AssignLMS assign : assignLms) { tmp.add(assign.getId()); } if (!(empty = tmp.isEmpty())) criteria.add(Restrictions.in("obj.assignment", tmp)); } criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.add(Restrictions.lt("obj.timemodified", readingtotimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.assignGradesLms = criteria.list(); else this.assignGradesLms = new ArrayList<AssignGradesLMS>(); logger.info("AssignGradesLMS tables: " + this.assignGradesLms.size()); criteria = session.createCriteria(GroupsMembersLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (GroupsLMS e : this.groupLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.groupid", ids)); } criteria.add(Restrictions.lt("obj.timeadded", readingtotimestamp)); criteria.add(Restrictions.gt("obj.timeadded", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.groupMembersLms = criteria.list(); else this.groupMembersLms = new ArrayList<GroupsMembersLMS>(); logger.info("GroupsMembersLMS tables: " + this.groupMembersLms.size()); /* criteria = session.createCriteria(QuestionStatesLMS.class, "obj"); if(hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for(QuizQuestionInstancesLMS e : this.quizQuestionInstancesLms) ids.add(e.getQuestion()); if(!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.question", ids)); } criteria.add(Restrictions.lt("obj.timestamp", readingtotimestamp)); criteria.add(Restrictions.gt("obj.timestamp", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if(!(hasCR && empty)) this.questionStatesLms = criteria.list(); else this.questionStatesLms = new ArrayList<QuestionStatesLMS>(); logger.info("QuestionStatesLMS tables: " + this.questionStatesLms.size()); */ /* criteria = session.createCriteria(AssignmentSubmissionsLMS.class, "obj"); if(hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for(AssignmentLMS e : this.assignmentLms) ids.add(e.getId()); if(!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.id", ids)); } criteria.add(Restrictions.lt("obj.timecreated", readingtotimestamp)); criteria.add(Restrictions.gt("obj.timecreated", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if(!(hasCR && empty)) this.assignmentSubmissionLms = criteria.list(); else this.assignmentSubmissionLms = new ArrayList<AssignmentSubmissionsLMS>(); logger.info("AssignmentSubmissionsLMS tables: " + this.userLms.size()); */ criteria = session.createCriteria(QuizGradesLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (QuizLMS e : this.quizLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.quiz", ids)); } criteria.add(Restrictions.lt("obj.timemodified", readingtotimestamp)); criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.quizGradesLms = criteria.list(); else this.quizGradesLms = new ArrayList<QuizGradesLMS>(); logger.info("QuizGradesLMS tables: " + this.quizGradesLms.size()); criteria = session.createCriteria(ForumDiscussionsLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (ForumLMS e : this.forumLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.forum", ids)); } criteria.add(Restrictions.lt("obj.timemodified", readingtotimestamp)); criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.forumDiscussionsLms = criteria.list(); else this.forumDiscussionsLms = new ArrayList<ForumDiscussionsLMS>(); logger.info("ForumDiscussionsLMS tables: " + this.forumDiscussionsLms.size()); criteria = session.createCriteria(GradeGradesLMS.class, "obj"); if (hasCR) { ArrayList<Long> ids = new ArrayList<Long>(); for (GradeItemsLMS e : this.gradeItemsLms) ids.add(e.getId()); if (!(empty = ids.isEmpty())) criteria.add(Restrictions.in("obj.itemid", ids)); } criteria.add(Restrictions.lt("obj.timemodified", readingtotimestamp)); criteria.add(Restrictions.gt("obj.timemodified", readingfromtimestamp)); criteria.addOrder(Property.forName("obj.id").asc()); if (!(hasCR && empty)) this.gradeGradesLms = criteria.list(); else this.gradeGradesLms = new ArrayList<GradeGradesLMS>(); logger.info("GradeGradesLMS tables: " + this.gradeGradesLms.size()); session.clear(); // hibernate session finish and close tx.commit(); session.close(); }
From source file:de.sub.goobi.forms.AktuelleSchritteForm.java
License:Open Source License
/** * Report the problem./* w w w. j a v a 2 s . c o m*/ * * @return problem as String */ @SuppressWarnings("unchecked") public String ReportProblem() { User ben = (User) Helper.getManagedBeanValue("#{LoginForm.myBenutzer}"); if (ben == null) { Helper.setFehlerMeldung("userNotFound"); return ""; } if (myLogger.isDebugEnabled()) { myLogger.debug("mySchritt.ID: " + this.mySchritt.getId()); myLogger.debug("Korrekturschritt.ID: " + this.myProblemID); } this.myDav.UploadFromHome(this.mySchritt.getProcess()); Date myDate = new Date(); this.mySchritt.setProcessingStatusEnum(TaskStatus.LOCKED); this.mySchritt.setEditTypeEnum(TaskEditType.MANUAL_SINGLE); mySchritt.setProcessingTime(new Date()); mySchritt.setProcessingUser(ben); this.mySchritt.setProcessingBegin(null); try { Task temp = serviceManager.getTaskService().find(this.myProblemID); temp.setProcessingStatusEnum(TaskStatus.OPEN); temp = serviceManager.getTaskService().setCorrectionStep(temp); temp.setProcessingEnd(null); org.kitodo.data.database.beans.ProcessProperty pe = new org.kitodo.data.database.beans.ProcessProperty(); pe.setTitle(Helper.getTranslation("Korrektur notwendig")); pe.setValue("[" + this.formatter.format(new Date()) + ", " + serviceManager.getUserService().getFullName(ben) + "] " + this.problemMessage); pe.setType(PropertyType.messageError); pe.setProcess(this.mySchritt.getProcess()); this.mySchritt.getProcess().getProperties().add(pe); String message = Helper.getTranslation("KorrekturFuer") + " " + temp.getTitle() + ": " + this.problemMessage + " (" + serviceManager.getUserService().getFullName(ben) + ")"; this.mySchritt.getProcess().setWikiField(WikiFieldHelper.getWikiMessage(this.mySchritt.getProcess(), this.mySchritt.getProcess().getWikiField(), "error", message)); serviceManager.getTaskService().save(temp); serviceManager.getProcessService().getHistoryInitialized(this.mySchritt.getProcess()) .add(new History(myDate, temp.getOrdering().doubleValue(), temp.getTitle(), HistoryType.taskError, temp.getProcess())); /* * alle Schritte zwischen dem aktuellen und dem Korrekturschritt * wieder schliessen */ List<Task> alleSchritteDazwischen = Helper.getHibernateSession().createCriteria(Task.class) .add(Restrictions.le("ordering", this.mySchritt.getOrdering())) .add(Restrictions.gt("ordering", temp.getOrdering())).addOrder(Order.asc("ordering")) .createCriteria("process").add(Restrictions.idEq(this.mySchritt.getProcess().getId())).list(); for (Iterator<Task> iter = alleSchritteDazwischen.iterator(); iter.hasNext();) { Task step = iter.next(); step.setProcessingStatusEnum(TaskStatus.LOCKED); step = serviceManager.getTaskService().setCorrectionStep(step); step.setProcessingEnd(null); serviceManager.getTaskService().save(step); } /* * den Prozess aktualisieren, so dass der Sortierungshelper * gespeichert wird */ this.serviceManager.getProcessService().save(this.mySchritt.getProcess()); } catch (DAOException | IOException | ResponseException e) { myLogger.error("task couldn't get saved/inserted", e); } this.problemMessage = ""; this.myProblemID = 0; return FilterAlleStart(); }
From source file:de.sub.goobi.forms.AktuelleSchritteForm.java
License:Open Source License
/** * Problem-behoben-Meldung an nachfolgende Schritte. */// www .j a v a2 s . c om @SuppressWarnings("unchecked") public List<Task> getNextStepsForProblemSolution() { List<Task> alleNachfolgendenSchritte = Helper.getHibernateSession().createCriteria(Task.class) .add(Restrictions.gt("ordering", this.mySchritt.getOrdering())).add(Restrictions.eq("priority", 10)) .addOrder(Order.asc("ordering")).createCriteria("process") .add(Restrictions.idEq(this.mySchritt.getProcess().getId())).list(); return alleNachfolgendenSchritte; }
From source file:de.sub.goobi.helper.BatchStepHelper.java
License:Open Source License
private void reportProblem() { Date myDate = new Date(); this.currentStep.setProcessingStatusEnum(TaskStatus.LOCKED); this.currentStep.setEditTypeEnum(TaskEditType.MANUAL_SINGLE); currentStep.setProcessingTime(new Date()); User ben = (User) Helper.getManagedBeanValue("#{LoginForm.myBenutzer}"); if (ben != null) { currentStep.setProcessingUser(ben); }/*from w w w .j a v a 2 s.c o m*/ this.currentStep.setProcessingBegin(null); try { Task temp = null; for (Task s : this.currentStep.getProcess().getTasks()) { if (s.getTitle().equals(this.myProblemStep)) { temp = s; } } if (temp != null) { temp.setProcessingStatusEnum(TaskStatus.OPEN); temp = serviceManager.getTaskService().setCorrectionStep(temp); temp.setProcessingEnd(null); Property processProperty = new Property(); processProperty.setTitle(Helper.getTranslation("Korrektur notwendig")); processProperty.setValue("[" + this.formatter.format(new Date()) + ", " + serviceManager.getUserService().getFullName(ben) + "] " + this.problemMessage); processProperty.setType(PropertyType.messageError); processProperty.getProcesses().add(this.currentStep.getProcess()); this.currentStep.getProcess().getProperties().add(processProperty); String message = Helper.getTranslation("KorrekturFuer") + " " + temp.getTitle() + ": " + this.problemMessage + " (" + serviceManager.getUserService().getFullName(ben) + ")"; this.currentStep.getProcess() .setWikiField(WikiFieldHelper.getWikiMessage(this.currentStep.getProcess(), this.currentStep.getProcess().getWikiField(), "error", message)); this.serviceManager.getTaskService().save(temp); this.serviceManager.getProcessService().getHistoryInitialized(this.currentStep.getProcess()) .add(new History(myDate, temp.getOrdering().doubleValue(), temp.getTitle(), HistoryTypeEnum.taskError, temp.getProcess())); /* * alle Schritte zwischen dem aktuellen und dem Korrekturschritt * wieder schliessen */ @SuppressWarnings("unchecked") List<Task> alleSchritteDazwischen = Helper.getHibernateSession().createCriteria(Task.class) .add(Restrictions.le("ordering", this.currentStep.getOrdering())) .add(Restrictions.gt("ordering", temp.getOrdering())).addOrder(Order.asc("ordering")) .createCriteria("process").add(Restrictions.idEq(this.currentStep.getProcess().getId())) .list(); for (Task task : alleSchritteDazwischen) { task.setProcessingStatusEnum(TaskStatus.LOCKED); task = serviceManager.getTaskService().setCorrectionStep(task); task.setProcessingEnd(null); } } /* * den Prozess aktualisieren, so dass der Sortierungshelper * gespeichert wird */ } catch (DataException e) { logger.error(e); } }
From source file:de.sub.goobi.helper.BatchStepHelper.java
License:Open Source License
/** * Get next tasks for problem solution.// w ww.j a va2 s . c om * * @return list of selected items */ @SuppressWarnings("unchecked") public List<SelectItem> getNextStepsForProblemSolution() { List<SelectItem> answer = new ArrayList<>(); List<Task> alleNachfolgendenSchritte = Helper.getHibernateSession().createCriteria(Task.class) .add(Restrictions.gt("ordering", this.currentStep.getOrdering())) .add(Restrictions.eq("priority", 10)).addOrder(Order.asc("ordering")).createCriteria("process") .add(Restrictions.idEq(this.currentStep.getProcess().getId())).list(); for (Task s : alleNachfolgendenSchritte) { answer.add(new SelectItem(s.getTitle(), serviceManager.getTaskService().getTitleWithUserName(s))); } return answer; }
From source file:de.tuclausthal.submissioninterface.persistence.dao.impl.SubmissionDAO.java
License:Open Source License
@Override public Submission getUngradedSubmission(Task task, int lastSubmissionID) { return (Submission) getSession().createCriteria(Submission.class, "sub") .add(Restrictions.gt("submissionid", lastSubmissionID)).add(Restrictions.eq("task", task)) .createCriteria("submitters").add(Restrictions.isNull("sub.points")) .addOrder(Order.asc("sub.submissionid")).setMaxResults(1).uniqueResult(); }