/**
* File ./src/main/java/de/lemo/dms/test/TestDataCreatorMoodle.java
* Lemo-Data-Management-Server for learning analytics.
* Copyright (C) 2013
* Leonard Kappe, Andreas Pursian, Sebastian Schwarzrock, Boris Wenzlaff
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
**/
/**
* File ./main/java/de/lemo/dms/test/TestDataCreatorMoodle.java
* Date 2013-01-24
* Project Lemo Learning Analytics
*/
package de.lemo.dms.test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.hibernate.Query;
import org.hibernate.Session;
import de.lemo.dms.connectors.moodle_1_9.mapping.AssignmentLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.AssignmentSubmissionsLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.ChatLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.ChatLogLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.ContextLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.CourseCategoriesLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.CourseLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.ForumDiscussionsLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.ForumLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.ForumPostsLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.GradeGradesLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.GradeItemsLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.GroupsLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.GroupsMembersLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.LogLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.QuestionLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.QuestionStatesLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.QuizGradesLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.QuizLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.QuizQuestionInstancesLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.ResourceLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.RoleAssignmentsLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.RoleLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.ScormLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.UserLMS;
import de.lemo.dms.connectors.moodle_1_9.mapping.WikiLMS;
import de.lemo.dms.core.config.ServerConfiguration;
import de.lemo.dms.db.IDBHandler;
import de.lemo.dms.db.mapping.AssignmentLogMining;
import de.lemo.dms.db.mapping.AssignmentMining;
import de.lemo.dms.db.mapping.ChatLogMining;
import de.lemo.dms.db.mapping.ChatMining;
import de.lemo.dms.db.mapping.CourseAssignmentMining;
import de.lemo.dms.db.mapping.CourseForumMining;
import de.lemo.dms.db.mapping.CourseGroupMining;
import de.lemo.dms.db.mapping.CourseLogMining;
import de.lemo.dms.db.mapping.CourseMining;
import de.lemo.dms.db.mapping.CourseQuizMining;
import de.lemo.dms.db.mapping.CourseResourceMining;
import de.lemo.dms.db.mapping.CourseScormMining;
import de.lemo.dms.db.mapping.CourseUserMining;
import de.lemo.dms.db.mapping.CourseWikiMining;
import de.lemo.dms.db.mapping.LevelCourseMining;
import de.lemo.dms.db.mapping.LevelMining;
import de.lemo.dms.db.mapping.LevelAssociationMining;
import de.lemo.dms.db.mapping.ForumLogMining;
import de.lemo.dms.db.mapping.ForumMining;
import de.lemo.dms.db.mapping.GroupMining;
import de.lemo.dms.db.mapping.GroupUserMining;
import de.lemo.dms.db.mapping.QuestionLogMining;
import de.lemo.dms.db.mapping.QuestionMining;
import de.lemo.dms.db.mapping.QuizLogMining;
import de.lemo.dms.db.mapping.QuizMining;
import de.lemo.dms.db.mapping.QuizQuestionMining;
import de.lemo.dms.db.mapping.QuizUserMining;
import de.lemo.dms.db.mapping.ResourceLogMining;
import de.lemo.dms.db.mapping.ResourceMining;
import de.lemo.dms.db.mapping.RoleMining;
import de.lemo.dms.db.mapping.ScormLogMining;
import de.lemo.dms.db.mapping.ScormMining;
import de.lemo.dms.db.mapping.UserMining;
import de.lemo.dms.db.mapping.WikiLogMining;
import de.lemo.dms.db.mapping.WikiMining;
import de.lemo.dms.db.mapping.abstractions.ILogMining;
/**
* Class to test the moodle data creator
* @author Sebastian Schwarzrock
*
*/
public class TestDataCreatorMoodle {
private List<AssignmentMining> assignmentList;
private List<AssignmentLogMining> assignmentLogList;
private List<ChatMining> chatList;
private List<ChatLogMining> chatLogList;
private List<CourseMining> courseList;
private List<CourseLogMining> courseLogList;
private List<CourseAssignmentMining> courseAssignmentList;
private List<CourseForumMining> courseForumList;
private List<CourseGroupMining> courseGroupList;
private List<CourseQuizMining> courseQuizList;
private List<CourseResourceMining> courseResourceList;
private List<CourseScormMining> courseScormList;
private List<CourseUserMining> courseUserList;
private List<CourseWikiMining> courseWikiList;
private List<ForumMining> forumList;
private List<ForumLogMining> forumLogList;
private List<GroupMining> groupList;
private List<GroupUserMining> groupUserList;
private List<QuestionMining> questionList;
private List<QuestionLogMining> questionLogList;
private List<QuizMining> quizList;
private List<QuizLogMining> quizLogList;
private List<QuizQuestionMining> quizQuestionList;
private List<QuizUserMining> quizUserList;
private List<ResourceLogMining> resourceLogList;
private List<ResourceMining> resourceList;
private List<RoleMining> roleList;
private List<ScormMining> scormList;
private List<ScormLogMining> scormLogList;
private List<UserMining> userList;
private List<WikiMining> wikiList;
private List<WikiLogMining> wikiLogList;
private List<LevelMining> departmentList;
private List<LevelMining> degreeList;
private List<LevelAssociationMining> departmentDegreeList;
private List<LevelCourseMining> degreeCourseList;
private static List<LogLMS> logLms = new ArrayList<LogLMS>();
private static List<ResourceLMS> resourceLms = new ArrayList<ResourceLMS>();
private static List<CourseLMS> courseLms = new ArrayList<CourseLMS>();
private static List<ForumLMS> forumLms = new ArrayList<ForumLMS>();
private static List<WikiLMS> wikiLms = new ArrayList<WikiLMS>();
private static List<UserLMS> userLms = new ArrayList<UserLMS>();
private static List<QuizLMS> quizLms = new ArrayList<QuizLMS>();
private static List<QuizQuestionInstancesLMS> quizQuestionInstancesLms = new ArrayList<QuizQuestionInstancesLMS>();
private static List<QuestionLMS> questionLms = new ArrayList<QuestionLMS>();
private static List<GroupsLMS> groupLms = new ArrayList<GroupsLMS>();
private static List<GroupsMembersLMS> groupMembersLms = new ArrayList<GroupsMembersLMS>();
private static List<QuestionStatesLMS> questionStatesLms = new ArrayList<QuestionStatesLMS>();
private static List<ForumPostsLMS> forumPostsLms = new ArrayList<ForumPostsLMS>();
private static List<RoleLMS> roleLms = new ArrayList<RoleLMS>();
private static List<ContextLMS> contextLms = new ArrayList<ContextLMS>();
private static List<RoleAssignmentsLMS> roleAssignmentsLms = new ArrayList<RoleAssignmentsLMS>();
private static List<AssignmentLMS> assignmentLms = new ArrayList<AssignmentLMS>();
private static List<AssignmentSubmissionsLMS> assignmentSubmissionLms = new ArrayList<AssignmentSubmissionsLMS>();
private static List<QuizGradesLMS> quizGradesLms = new ArrayList<QuizGradesLMS>();
private static List<ForumDiscussionsLMS> forumDiscussionsLms = new ArrayList<ForumDiscussionsLMS>();
private static List<ScormLMS> scormLms = new ArrayList<ScormLMS>();
private static List<GradeGradesLMS> gradeGradesLms = new ArrayList<GradeGradesLMS>();
private static List<GradeItemsLMS> gradeItemsLms = new ArrayList<GradeItemsLMS>();
private static List<ChatLMS> chatLms = new ArrayList<ChatLMS>();
private static List<ChatLogLMS> chatLogLms = new ArrayList<ChatLogLMS>();
private static List<CourseCategoriesLMS> courseCategoriesLms = new ArrayList<CourseCategoriesLMS>();
private Map<Long, CourseMining> couAssMap;
private Map<Long, CourseMining> couForMap;
private Map<Long, CourseMining> couGroMap;
private Map<Long, CourseMining> couQuiMap;
private Map<Long, CourseMining> couUseMap;
private Map<Long, CourseMining> couResMap;
private Map<Long, CourseMining> couScoMap;
private Map<Long, CourseMining> couWikMap;
private Map<Long, LevelMining> degCouMap;
private Map<Long, LevelMining> depDegMap;
private void generateUserLMS()
{
for (final UserMining item : this.userList)
{
final UserLMS lms = new UserLMS();
lms.setId(item.getId());
lms.setCurrentlogin(item.getCurrentLogin());
lms.setLastaccess(item.getLastAccess());
lms.setFirstaccess(item.getFirstAccess());
lms.setLastlogin(item.getLastLogin());
TestDataCreatorMoodle.userLms.add(lms);
}
}
private void generateRoleLMS()
{
for (final RoleMining item : this.roleList)
{
final RoleLMS lms = new RoleLMS();
lms.setId(item.getId());
lms.setName(item.getName());
lms.setShortname(item.getShortname());
lms.setSortorder(item.getSortOrder());
lms.setDescription(item.getDescription());
TestDataCreatorMoodle.roleLms.add(lms);
}
}
private void generateWikiLMS()
{
for (final WikiMining item : this.wikiList)
{
final WikiLMS lms = new WikiLMS();
lms.setId(item.getId());
lms.setName(item.getTitle());
lms.setTimemodified(item.getTimeModified());
lms.setSummary(item.getSummary());
lms.setCourse(this.couWikMap.get(item.getId()).getId());
TestDataCreatorMoodle.wikiLms.add(lms);
}
}
private void generateScormLMS()
{
for (final ScormMining item : this.scormList)
{
final ScormLMS lms = new ScormLMS();
lms.setId(item.getId());
lms.setName(item.getTitle());
lms.setTimemodified(item.getTimeModified());
lms.setMaxgrade(item.getMaxGrade());
lms.setTimemodified(item.getTimeModified());
lms.setCourse(this.couScoMap.get(item.getId()).getId());
TestDataCreatorMoodle.scormLms.add(lms);
}
}
private void generateContextLMS()
{
final HashMap<Long, ContextLMS> depIdMap = new HashMap<Long, ContextLMS>();
final HashMap<Long, ContextLMS> degIdMap = new HashMap<Long, ContextLMS>();
final HashMap<Long, ContextLMS> couIdMap = new HashMap<Long, ContextLMS>();
// Create entries (context, course_categories) for all departments
for (final LevelMining item : this.departmentList)
{
final ContextLMS lms = new ContextLMS();
final CourseCategoriesLMS lms2 = new CourseCategoriesLMS();
lms2.setId(TestDataCreatorMoodle.courseCategoriesLms.size() + 1);
lms2.setTitle(item.getTitle());
lms2.setDepth(1);
lms2.setPath("/" + item.getId());
lms.setContextlevel(40);
lms.setDepth(2);
lms.setInstanceid(lms2.getId());
lms.setId(TestDataCreatorMoodle.contextLms.size() + 1);
lms.setPath("/1/" + lms.getId());
TestDataCreatorMoodle.courseCategoriesLms.add(lms2);
TestDataCreatorMoodle.contextLms.add(lms);
depIdMap.put(item.getId(), lms);
}
// Create entries (context, course_categories) for all degrees
for (final LevelMining item : this.degreeList)
{
final CourseCategoriesLMS lms2 = new CourseCategoriesLMS();
final LevelMining dm = this.depDegMap.get(item.getId());
lms2.setId(TestDataCreatorMoodle.courseCategoriesLms.size() + 1);
lms2.setTitle(item.getTitle());
lms2.setDepth(2);
lms2.setPath("/" + depIdMap.get(dm.getId()).getId() + "/" + lms2.getId());
final ContextLMS lms = new ContextLMS();
lms.setContextlevel(40);
lms.setDepth(3);
lms.setInstanceid(lms2.getId());
lms.setId(TestDataCreatorMoodle.contextLms.size() + 1);
final ContextLMS cl = depIdMap.get(dm.getId());
lms.setPath(cl.getPath() + "/" + lms.getId());
degIdMap.put(item.getId(), lms);
TestDataCreatorMoodle.contextLms.add(lms);
TestDataCreatorMoodle.courseCategoriesLms.add(lms2);
}
// Create entries (context) for all courses
for (final LevelCourseMining item : this.degreeCourseList)
{
final ContextLMS lms = new ContextLMS();
lms.setId(TestDataCreatorMoodle.contextLms.size() + 1);
lms.setDepth(4);
lms.setContextlevel(50);
lms.setInstanceid(item.getCourse().getId());
final ContextLMS cl = degIdMap.get(item.getLevel().getId());
lms.setPath(cl.getPath() + "/" + lms.getId());
couIdMap.put(item.getId(), lms);
TestDataCreatorMoodle.contextLms.add(lms);
}
// Create entries (role_assignments) for all users
for (final CourseUserMining item : this.courseUserList)
{
final RoleAssignmentsLMS lms2 = new RoleAssignmentsLMS();
lms2.setId(item.getId());
lms2.setRoleid(item.getRole().getId());
lms2.setUserid(item.getUser().getId());
lms2.setTimeend(item.getEnrolend());
lms2.setTimestart(item.getEnrolstart());
lms2.setContextid(couIdMap.get(item.getCourse().getId()).getId());
TestDataCreatorMoodle.roleAssignmentsLms.add(lms2);
}
}
private void generateCourseLogs()
{
for (final CourseLogMining item : this.courseLogList)
{
final LogLMS lms = new LogLMS();
lms.setId(item.getId());
lms.setAction(item.getAction());
lms.setModule("course");
lms.setTime(item.getTimestamp());
lms.setCourse(item.getCourse().getId());
lms.setUserid(item.getUser().getId());
TestDataCreatorMoodle.logLms.add(lms);
}
}
private void generateLogLMS()
{
final List<ILogMining> logs = new ArrayList<ILogMining>();
logs.addAll(this.resourceLogList);
logs.addAll(this.assignmentLogList);
logs.addAll(this.forumLogList);
logs.addAll(this.quizLogList);
logs.addAll(this.wikiLogList);
logs.addAll(this.scormLogList);
Collections.sort(logs);
for (int i = 0; i < logs.size(); i++)
{
logs.get(i).setId(i + 1);
}
for (final ResourceLogMining item : this.resourceLogList)
{
final LogLMS lms = new LogLMS();
lms.setId(item.getId());
lms.setCourse(item.getCourse().getId());
lms.setModule("resource");
lms.setTime(item.getTimestamp());
lms.setAction(item.getAction());
lms.setInfo(item.getResource().getId() + "");
lms.setUserid(item.getUser().getId());
TestDataCreatorMoodle.logLms.add(lms);
}
final HashMap<Long, ForumDiscussionsLMS> forDisSet = new HashMap<Long, ForumDiscussionsLMS>();
for (final ForumLogMining item : this.forumLogList)
{
final LogLMS lms = new LogLMS();
final ForumPostsLMS lms2 = new ForumPostsLMS();
lms2.setId(TestDataCreatorMoodle.forumPostsLms.size() + 1);
lms2.setMessage(item.getMessage());
lms2.setSubject(item.getSubject());
lms2.setUserid(item.getUser().getId());
lms2.setCreated(item.getTimestamp());
lms2.setModified(item.getTimestamp());
TestDataCreatorMoodle.forumPostsLms.add(lms2);
if ((item.getAction().equals("add discussion") || item.getAction().equals("view discussion")))
{
final ForumDiscussionsLMS lms3 = new ForumDiscussionsLMS();
lms3.setId(item.getForum().getId());
lms3.setForum(item.getForum().getId());
forDisSet.put(lms3.getId(), lms3);
}
lms.setId(item.getId());
lms.setAction(item.getAction());
lms.setModule("forum");
lms.setInfo(item.getForum().getId() + "");
lms.setTime(item.getTimestamp());
lms.setCourse(item.getCourse().getId());
lms.setUserid(item.getUser().getId());
TestDataCreatorMoodle.logLms.add(lms);
}
TestDataCreatorMoodle.forumDiscussionsLms.addAll(forDisSet.values());
for (final AssignmentLogMining item : this.assignmentLogList)
{
final LogLMS lms = new LogLMS();
lms.setId(item.getId());
lms.setAction(item.getAction());
lms.setModule("assignment");
lms.setInfo(item.getAssignment().getId() + "");
lms.setTime(item.getTimestamp());
lms.setCourse(item.getCourse().getId());
lms.setUserid(item.getUser().getId());
TestDataCreatorMoodle.logLms.add(lms);
if (item.getAction().equals("upload"))
{
final AssignmentSubmissionsLMS lms2 = new AssignmentSubmissionsLMS();
lms2.setGrade(item.getGrade().longValue());
lms2.setAssignment(item.getAssignment().getId());
lms2.setUserid(item.getUser().getId() + "");
lms2.setTimemodified(item.getTimestamp());
lms2.setId(TestDataCreatorMoodle.assignmentSubmissionLms.size() + 1);
TestDataCreatorMoodle.assignmentSubmissionLms.add(lms2);
}
}
for (final QuizLogMining item : this.quizLogList)
{
final LogLMS lms = new LogLMS();
lms.setId(item.getId());
lms.setAction(item.getAction());
lms.setModule("quiz");
lms.setInfo(item.getQuiz().getId() + "");
lms.setTime(item.getTimestamp());
lms.setCourse(item.getCourse().getId());
lms.setUserid(item.getUser().getId());
if (!item.getAction().equals("review"))
{
final QuizGradesLMS lms2 = new QuizGradesLMS();
lms2.setGrade(item.getGrade());
lms2.setTimemodified(item.getTimestamp());
lms2.setUserid(item.getUser().getId() + "");
lms2.setQuiz(item.getQuiz().getId());
lms2.setId(TestDataCreatorMoodle.quizGradesLms.size() + 1);
TestDataCreatorMoodle.quizGradesLms.add(lms2);
}
TestDataCreatorMoodle.logLms.add(lms);
}
for (final ScormLogMining item : this.scormLogList)
{
final LogLMS lms = new LogLMS();
lms.setId(item.getId());
lms.setAction(item.getAction());
lms.setModule("scorm");
lms.setInfo(item.getScorm().getId() + "");
lms.setTime(item.getTimestamp());
lms.setCourse(item.getCourse().getId());
lms.setUserid(item.getUser().getId());
TestDataCreatorMoodle.logLms.add(lms);
}
for (final WikiLogMining item : this.wikiLogList)
{
final LogLMS lms = new LogLMS();
lms.setId(item.getId());
lms.setAction(item.getAction());
lms.setModule("wiki");
lms.setInfo(item.getWiki().getId() + "");
lms.setTime(item.getTimestamp());
lms.setCourse(item.getCourse().getId());
lms.setUserid(item.getUser().getId());
lms.setCmid(item.getWiki().getId());
TestDataCreatorMoodle.logLms.add(lms);
}
}
private void generateResourceLMS()
{
for (final ResourceMining item : this.resourceList)
{
final ResourceLMS lms = new ResourceLMS();
lms.setId(item.getId());
lms.setType(item.getType());
lms.setName(item.getTitle());
lms.setTimemodified(item.getTimeModified());
if (this.couResMap.get(item.getId()) != null) {
lms.setCourse(this.couResMap.get(item.getId()).getId());
}
TestDataCreatorMoodle.resourceLms.add(lms);
}
}
private void generateForumLMS()
{
final HashMap<Long, Long> cFMap = new HashMap<Long, Long>();
for (final Iterator<CourseForumMining> iter = this.courseForumList.iterator(); iter.hasNext();)
{
final CourseForumMining item = iter.next();
cFMap.put(item.getForum().getId(), item.getCourse().getId());
}
for (final ForumMining item : this.forumList)
{
final ForumLMS lms = new ForumLMS();
lms.setId(item.getId());
lms.setTimemodified(item.getTimeModified());
lms.setName(item.getTitle());
lms.setIntro(item.getSummary());
lms.setCourse(cFMap.get(lms.getId()));
TestDataCreatorMoodle.forumLms.add(lms);
}
}
private void generateCourseLMS()
{
for (final CourseMining item : this.courseList)
{
final CourseLMS lms = new CourseLMS();
lms.setId(item.getId());
lms.setFullname(item.getTitle());
lms.setShortname(item.getShortname());
lms.setTimemodified(item.getTimeModified());
lms.setTimecreated(item.getTimeCreated());
lms.setEnrolstartdate(item.getEnrolStart());
lms.setEnrolenddate(item.getEnrolEnd());
lms.setStartdate(item.getStartDate());
TestDataCreatorMoodle.courseLms.add(lms);
}
}
private void generateChatLogLMS()
{
final HashMap<Long, Long> couId = new HashMap<Long, Long>();
for (final ChatLogMining item : this.chatLogList)
{
final ChatLogLMS lms = new ChatLogLMS();
lms.setMessage(item.getMessage());
lms.setTimestamp(item.getTimestamp());
lms.setChat(item.getChat().getId());
lms.setUser(item.getUser().getId());
lms.setId(item.getId());
couId.put(item.getChat().getId(), item.getCourse().getId());
TestDataCreatorMoodle.chatLogLms.add(lms);
}
for (final ChatMining item : this.chatList)
{
final ChatLMS lms = new ChatLMS();
lms.setId(item.getId());
if (couId.get(item.getId()) != null) {
lms.setCourse(couId.get(item.getId()));
}
lms.setTitle(item.getTitle());
lms.setDescription(item.getDescription());
lms.setChattime(item.getChatTime());
TestDataCreatorMoodle.chatLms.add(lms);
}
}
private void generateAssignmentLMS()
{
for (final AssignmentMining item : this.assignmentList)
{
final AssignmentLMS lms = new AssignmentLMS();
lms.setId(item.getId());
lms.setName(item.getTitle());
lms.setTimeavailable(item.getTimeOpen());
lms.setTimedue(item.getTimeClose());
lms.setTimemodified(item.getTimeModified());
lms.setDescription("description");
if (this.couAssMap.get(item.getId()) != null) {
lms.setCourse(this.couAssMap.get(item.getId()).getId());
}
final GradeItemsLMS lms2 = new GradeItemsLMS();
lms2.setIteminstance(item.getId());
lms2.setItemmodule("assignment");
lms2.setGrademax(item.getMaxGrade());
lms2.setId(TestDataCreatorMoodle.gradeItemsLms.size());
TestDataCreatorMoodle.gradeItemsLms.add(lms2);
TestDataCreatorMoodle.assignmentLms.add(lms);
}
}
@SuppressWarnings("unchecked")
public void getDataFromDB()
{
final IDBHandler dbHandler = ServerConfiguration.getInstance().getMiningDbHandler();
// accessing DB by creating a session and a transaction using HibernateUtil
final Session session = dbHandler.getMiningSession();
session.clear();
final Query assQuery = session.createQuery("from AssignmentMining x order by x.id asc");
this.assignmentList = (ArrayList<AssignmentMining>) assQuery.list();
final Query assLogQuery = session.createQuery("from AssignmentLogMining x order by x.id asc");
this.assignmentLogList = (ArrayList<AssignmentLogMining>) assLogQuery.list();
final Query chaQuery = session.createQuery("from ChatMining x order by x.id asc");
this.chatList = (ArrayList<ChatMining>) chaQuery.list();
final Query chaLogQuery = session.createQuery("from ChatLogMining x order by x.id asc");
this.chatLogList = (ArrayList<ChatLogMining>) chaLogQuery.list();
final Query couQuery = session.createQuery("from CourseMining x order by x.id asc");
this.courseList = (ArrayList<CourseMining>) couQuery.list();
final Query couLogQuery = session.createQuery("from CourseLogMining x order by x.id asc");
this.courseLogList = (ArrayList<CourseLogMining>) couLogQuery.list();
final Query couAssQuery = session.createQuery("from CourseAssignmentMining x order by x.id asc");
this.courseAssignmentList = (ArrayList<CourseAssignmentMining>) couAssQuery.list();
final Query couForumQuery = session.createQuery("from CourseForumMining x order by x.id asc");
this.courseForumList = (ArrayList<CourseForumMining>) couForumQuery.list();
final Query couGroupQuery = session.createQuery("from CourseGroupMining x order by x.id asc");
this.courseGroupList = (ArrayList<CourseGroupMining>) couGroupQuery.list();
final Query couQuizQuery = session.createQuery("from CourseQuizMining x order by x.id asc");
this.courseQuizList = (ArrayList<CourseQuizMining>) couQuizQuery.list();
final Query couResQuery = session.createQuery("from CourseResourceMining x order by x.id asc");
this.courseResourceList = (ArrayList<CourseResourceMining>) couResQuery.list();
final Query couScormQuery = session.createQuery("from CourseScormMining x order by x.id asc");
this.courseScormList = (ArrayList<CourseScormMining>) couScormQuery.list();
final Query couUserQuery = session.createQuery("from CourseUserMining x order by x.id asc");
this.courseUserList = (ArrayList<CourseUserMining>) couUserQuery.list();
final Query couWikiQuery = session.createQuery("from CourseWikiMining x order by x.id asc");
this.courseWikiList = (ArrayList<CourseWikiMining>) couWikiQuery.list();
final Query degQuery = session.createQuery("from DegreeMining x order by x.id asc");
this.degreeList = (ArrayList<LevelMining>) degQuery.list();
final Query degCouQuery = session.createQuery("from DegreeCourseMining x order by x.id asc");
this.degreeCourseList = (ArrayList<LevelCourseMining>) degCouQuery.list();
final Query depQuery = session.createQuery("from DepartmentMining x order by x.id asc");
this.departmentList = (ArrayList<LevelMining>) depQuery.list();
final Query depDegQuery = session.createQuery("from DepartmentDegreeMining x order by x.id asc");
this.departmentDegreeList = (ArrayList<LevelAssociationMining>) depDegQuery.list();
final Query forQuery = session.createQuery("from ForumMining x order by x.id asc");
this.forumList = (ArrayList<ForumMining>) forQuery.list();
final Query forLogQuery = session.createQuery("from ForumLogMining x order by x.id asc");
this.forumLogList = (ArrayList<ForumLogMining>) forLogQuery.list();
final Query groupQuery = session.createQuery("from GroupMining x order by x.id asc");
this.groupList = (ArrayList<GroupMining>) groupQuery.list();
final Query groupUserQuery = session.createQuery("from GroupUserMining x order by x.id asc");
this.groupUserList = (ArrayList<GroupUserMining>) groupUserQuery.list();
final Query queQuery = session.createQuery("from QuestionMining x order by x.id asc");
this.questionList = (ArrayList<QuestionMining>) queQuery.list();
final Query queLogQuery = session.createQuery("from QuestionLogMining x order by x.id asc");
this.questionLogList = (ArrayList<QuestionLogMining>) queLogQuery.list();
final Query quiLogQuery = session.createQuery("from QuizLogMining x order by x.id asc");
this.quizLogList = (ArrayList<QuizLogMining>) quiLogQuery.list();
final Query quiQuery = session.createQuery("from QuizMining x order by x.id asc");
this.quizList = (ArrayList<QuizMining>) quiQuery.list();
final Query quiQuestionQuery = session.createQuery("from QuizQuestionMining x order by x.id asc");
this.quizQuestionList = (ArrayList<QuizQuestionMining>) quiQuestionQuery.list();
final Query quiUserQuery = session.createQuery("from QuizUserMining x order by x.id asc");
this.quizUserList = (ArrayList<QuizUserMining>) quiUserQuery.list();
final Query resQuery = session.createQuery("from ResourceMining x order by x.id asc");
this.resourceList = (ArrayList<ResourceMining>) resQuery.list();
final Query resLogQuery = session.createQuery("from ResourceLogMining x order by x.id asc");
this.resourceLogList = (ArrayList<ResourceLogMining>) resLogQuery.list();
final Query roleQuery = session.createQuery("from RoleMining x order by x.id asc");
this.roleList = (ArrayList<RoleMining>) roleQuery.list();
final Query scormQuery = session.createQuery("from ScormMining x order by x.id asc");
this.scormList = (ArrayList<ScormMining>) scormQuery.list();
final Query scormLogQuery = session.createQuery("from ScormLogMining x order by x.id asc");
this.scormLogList = (ArrayList<ScormLogMining>) scormLogQuery.list();
final Query userQuery = session.createQuery("from UserMining x order by x.id asc");
this.userList = (ArrayList<UserMining>) userQuery.list();
final Query wikQuery = session.createQuery("from WikiMining x order by x.id asc");
this.wikiList = (ArrayList<WikiMining>) wikQuery.list();
final Query wikLogQuery = session.createQuery("from WikiLogMining x order by x.id asc");
this.wikiLogList = (ArrayList<WikiLogMining>) wikLogQuery.list();
this.couAssMap = new HashMap<Long, CourseMining>();
this.couForMap = new HashMap<Long, CourseMining>();
this.couGroMap = new HashMap<Long, CourseMining>();
this.couQuiMap = new HashMap<Long, CourseMining>();
this.couResMap = new HashMap<Long, CourseMining>();
this.couScoMap = new HashMap<Long, CourseMining>();
this.couUseMap = new HashMap<Long, CourseMining>();
this.couWikMap = new HashMap<Long, CourseMining>();
this.degCouMap = new HashMap<Long, LevelMining>();
this.depDegMap = new HashMap<Long, LevelMining>();
for (final CourseAssignmentMining ca : this.courseAssignmentList) {
this.couAssMap.put(ca.getAssignment().getId(), ca.getCourse());
}
for (final CourseGroupMining ca : this.courseGroupList) {
this.couGroMap.put(ca.getGroup().getId(), ca.getCourse());
}
for (final CourseQuizMining ca : this.courseQuizList) {
this.couQuiMap.put(ca.getQuiz().getId(), ca.getCourse());
}
for (final CourseUserMining ca : this.courseUserList) {
this.couUseMap.put(ca.getUser().getId(), ca.getCourse());
}
for (final CourseForumMining ca : this.courseForumList) {
this.couForMap.put(ca.getForum().getId(), ca.getCourse());
}
for (final CourseResourceMining cr : this.courseResourceList) {
this.couResMap.put(cr.getResource().getId(), cr.getCourse());
}
for (final CourseWikiMining cw : this.courseWikiList) {
this.couWikMap.put(cw.getWiki().getId(), cw.getCourse());
}
for (final CourseScormMining cs : this.courseScormList) {
this.couScoMap.put(cs.getScorm().getId(), cs.getCourse());
}
for (final LevelCourseMining dc : this.degreeCourseList) {
this.degCouMap.put(dc.getCourse().getId(), dc.getLevel());
}
for (final LevelAssociationMining dd : this.departmentDegreeList) {
this.depDegMap.put(dd.getLower().getId(), dd.getUpper());
}
session.clear();
session.close();
}
private void generateGroupLMS()
{
for (final GroupMining item : this.groupList)
{
final GroupsLMS lms = new GroupsLMS();
lms.setId(item.getId());
lms.setCourseid(this.couGroMap.get(item.getId()).getId());
lms.setTimecreated(item.getTimeCreated());
lms.setTimemodified(item.getTimeModified());
TestDataCreatorMoodle.groupLms.add(lms);
}
}
private void generateGroupMembersLMS()
{
for (final GroupUserMining item : this.groupUserList)
{
final GroupsMembersLMS lms = new GroupsMembersLMS();
lms.setId(item.getId());
lms.setGroupid(item.getGroup().getId());
lms.setUserid(item.getUser().getId());
lms.setTimeadded(item.getTimestamp());
TestDataCreatorMoodle.groupMembersLms.add(lms);
}
}
private void generateQuizLMS()
{
final HashMap<Long, Long> qQMap = new HashMap<Long, Long>();
for (final Iterator<CourseQuizMining> iter = this.courseQuizList.iterator(); iter.hasNext();)
{
final CourseQuizMining item = iter.next();
qQMap.put(item.getQuiz().getId(), item.getCourse().getId());
}
for (final QuizMining item : this.quizList)
{
final QuizLMS lms = new QuizLMS();
final GradeItemsLMS lms2 = new GradeItemsLMS();
lms.setId(item.getId());
lms.setCourse(qQMap.get(lms.getId()));
lms.setName(item.getTitle());
lms.setTimeopen(item.getTimeOpen());
lms.setTimeclose(item.getTimeClose());
lms.setTimecreated(item.getTimeCreated());
lms.setTimemodified(item.getTimeModified());
lms2.setId(TestDataCreatorMoodle.gradeItemsLms.size() + 1);
lms2.setGrademax(item.getMaxGrade());
lms2.setIteminstance(item.getId());
lms2.setItemmodule("quiz");
TestDataCreatorMoodle.gradeItemsLms.add(lms2);
TestDataCreatorMoodle.quizLms.add(lms);
}
}
private void generateQuestionLMS()
{
for (final QuestionMining item : this.questionList)
{
final QuestionLMS lms = new QuestionLMS();
lms.setId(item.getId());
lms.setName(item.getTitle());
lms.setQuestiontext(item.getText());
lms.setQtype(item.getType());
lms.setTimecreated(item.getTimeCreated());
lms.setTimemodified(item.getTimeModified());
TestDataCreatorMoodle.questionLms.add(lms);
}
}
private void generateQuizQuestionInstancesLMS()
{
for (final QuizQuestionMining item : this.quizQuestionList)
{
final QuizQuestionInstancesLMS lms = new QuizQuestionInstancesLMS();
lms.setId(item.getId());
lms.setQuestion(item.getQuestion().getId());
lms.setQuiz(item.getQuiz().getId());
TestDataCreatorMoodle.quizQuestionInstancesLms.add(lms);
}
}
private void generateGradeGradesLMS()
{
for (final QuizUserMining item : this.quizUserList)
{
final GradeGradesLMS lms = new GradeGradesLMS();
lms.setId(item.getId());
lms.setRawgrade(item.getRawGrade());
lms.setFinalgrade(item.getFinalGrade());
lms.setUserid(item.getUser().getId());
lms.setTimemodified(item.getTimeModified());
lms.setItemid(TestDataCreatorMoodle.gradeItemsLms.size() + 1);
final GradeItemsLMS lms2 = new GradeItemsLMS();
lms2.setCourseid(item.getCourse().getId());
lms2.setIteminstance(item.getQuiz().getId());
lms2.setId(lms.getItemid());
TestDataCreatorMoodle.gradeItemsLms.add(lms2);
TestDataCreatorMoodle.gradeGradesLms.add(lms);
}
}
private void generateQuestionStatesLMS()
{
for (final QuestionLogMining item : this.questionLogList)
{
final QuestionStatesLMS lms = new QuestionStatesLMS();
lms.setId(item.getId());
lms.setAnswer(item.getAnswers());
lms.setQuestion(item.getQuestion().getId());
lms.setPenalty(item.getPenalty());
lms.setTimestamp(item.getTimestamp());
if (item.getAction().equals("OPEN")) {
lms.setEvent((short) 0);
} else if (item.getAction().equals("NAVIGATE")) {
lms.setEvent((short) 1);
} else if (item.getAction().equals("SAVE")) {
lms.setEvent((short) 2);
} else if (item.getAction().equals("GRADE")) {
lms.setEvent((short) 3);
} else if (item.getAction().equals("DUPLICATE")) {
lms.setEvent((short) 4);
} else if (item.getAction().equals("VALIDATE")) {
lms.setEvent((short) 5);
} else if (item.getAction().equals("CLOSEANDGRADE")) {
lms.setEvent((short) 6);
} else if (item.getAction().equals("SUBMIT")) {
lms.setEvent((short) 7);
} else if (item.getAction().equals("CLOSE")) {
lms.setEvent((short) 8);
} else if (item.getAction().equals("MANUALGRADE")) {
lms.setEvent((short) 9);
}
TestDataCreatorMoodle.questionStatesLms.add(lms);
}
}
public void writeSourceDB()
{
final List<Collection<?>> all = new ArrayList<Collection<?>>();
this.generateUserLMS();
this.generateAssignmentLMS();
this.generateResourceLMS();
this.generateForumLMS();
this.generateCourseLMS();
this.generateGroupLMS();
this.generateRoleLMS();
this.generateScormLMS();
this.generateWikiLMS();
this.generateGroupMembersLMS();
this.generateQuizLMS();
this.generateQuestionLMS();
this.generateQuizQuestionInstancesLMS();
this.generateGradeGradesLMS();
this.generateQuestionStatesLMS();
this.generateLogLMS();
this.generateCourseLogs();
this.generateContextLMS();
this.generateChatLogLMS();
all.add(TestDataCreatorMoodle.userLms);
all.add(TestDataCreatorMoodle.quizLms);
all.add(TestDataCreatorMoodle.quizQuestionInstancesLms);
all.add(TestDataCreatorMoodle.questionLms);
all.add(TestDataCreatorMoodle.assignmentLms);
all.add(TestDataCreatorMoodle.chatLms);
all.add(TestDataCreatorMoodle.groupMembersLms);
all.add(TestDataCreatorMoodle.groupLms);
all.add(TestDataCreatorMoodle.resourceLms);
all.add(TestDataCreatorMoodle.roleLms);
all.add(TestDataCreatorMoodle.forumLms);
all.add(TestDataCreatorMoodle.courseLms);
all.add(TestDataCreatorMoodle.scormLms);
all.add(TestDataCreatorMoodle.wikiLms);
all.add(TestDataCreatorMoodle.chatLogLms);
all.add(TestDataCreatorMoodle.logLms);
all.add(TestDataCreatorMoodle.forumPostsLms);
all.add(TestDataCreatorMoodle.forumDiscussionsLms);
all.add(TestDataCreatorMoodle.contextLms);
all.add(TestDataCreatorMoodle.courseCategoriesLms);
all.add(TestDataCreatorMoodle.roleAssignmentsLms);
all.add(TestDataCreatorMoodle.gradeItemsLms);
all.add(TestDataCreatorMoodle.gradeGradesLms);
all.add(TestDataCreatorMoodle.questionStatesLms);
all.add(TestDataCreatorMoodle.quizGradesLms);
all.add(TestDataCreatorMoodle.assignmentSubmissionLms);
final IDBHandler dbHandler = new HibernateDBHandler();
final Session session = dbHandler.getMiningSession();
dbHandler.saveCollectionToDB(session, all);
dbHandler.closeSession(session);
}
}