/org.itbelts.domain/src/main/java/org/itbelts/dao/mongolab/CourseDAOImpl.java
Java | 78 lines | 44 code | 18 blank | 16 comment | 4 complexity | 2d50d6f3fdbee7a34ac39fbf90901fe8 MD5 | raw file
- package org.itbelts.dao.mongolab;
- import java.lang.reflect.Type;
- import java.net.URL;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.itbelts.dao.ICourseDAO;
- import org.itbelts.dao.ITopicDAO;
- import org.itbelts.domain.Course;
- import org.itbelts.domain.Topic;
- import com.google.gson.reflect.TypeToken;
- /**
- * MongoDB implementation for the ICourseDAO. <br>
- * <br>
- * <u><i>Version History</i></u>
- *
- * <pre>
- * v2013.10.0 20-okt.-2013 - DKBR813 - initial release
- *
- * </pre>
- *
- * @version v2013.10.0 20-okt.-2013
- * @author <a href=\"mailto:koenbruyndonckx@gmail.com\"> Koen Bruyndonckx </a>
- */
- public class CourseDAOImpl extends AbstractMongoLabDAO implements ICourseDAO {
- private ITopicDAO myTopicDAO = new TopicDAOImpl();
- private static final String PATH = "collections/courses";
- @Override
- public List<Course> getCourses() {
- URL url = buildUrl( PATH, "f={\"_id\":1,\"topicId\":1,\"name\":1}" );
- Type theListType = new TypeToken<List<Course>>() {}.getType();
- return readFrom( url, theListType );
- }
- @Override
- public List<Course> getCoursesForCommunity( String aCommunityId ) {
-
- // First get a complete list of all courses (we will filter out the ones we do not need later)
- List<Course> theFullList = getCourses();
-
- // Build a small Map of topic-ids for all topics belonging to the given community
- Map<String,Boolean> theTopicMap = new HashMap<String,Boolean>();
-
- List<Topic> theTopics = myTopicDAO.getTopicsForCommunity( aCommunityId );
-
- for ( Topic t : theTopics ) {
- theTopicMap.put( t.get_id(), Boolean.TRUE );
- }
-
- // Then remove all courses that have a topic id that is not in the Map
- for ( int i = theFullList.size() -1 ; i >= 0 ; i-- ) {
- String theTopicId = theFullList.get( i ).getTopicId();
- if ( theTopicMap.get( theTopicId ) == null ) {
- theFullList.remove( i );
- }
- }
-
- return theFullList;
- }
-
- @Override
- public Course getCourse( String aCourseId ) {
- URL url = buildUrl( PATH, "q={\"_id\":\"" + aCourseId + "\"}" );
- Type theListType = new TypeToken<List<Course>>(){}.getType();
-
- List<Course> theList = readFrom( url, theListType );
-
- return theList.get( 0 );
- }
- }