org.deepamehta.plugins.moodle
Class MoodleServiceClient

Show UML class diagram
java.lang.Object
  extended by de.deepamehta.core.osgi.PluginActivator
      extended by org.deepamehta.plugins.moodle.MoodleServiceClient
All Implemented Interfaces:
de.deepamehta.core.osgi.PluginContext, de.deepamehta.core.service.event.AllPluginsActiveListener, de.deepamehta.core.service.EventListener, de.deepamehta.plugins.accesscontrol.event.PostLoginUserListener, org.osgi.framework.BundleActivator

public class MoodleServiceClient
extends de.deepamehta.core.osgi.PluginActivator
implements de.deepamehta.plugins.accesscontrol.event.PostLoginUserListener, de.deepamehta.core.service.event.AllPluginsActiveListener

A webservice-client enabling collaborative mapping on course-materials (and more) for any moodle (2.4+) course. A very simple plugin to connect users of DeepaMehta 4 with a moodle installation.

Version:
1.2.1-SNAPSHOT
Author:
Malte Reißig ()

Field Summary
private  de.deepamehta.plugins.accesscontrol.service.AccessControlService aclService
           
private  String AGGREGATION_TYPE_URI
           
private  String CHILD_ROLE_TYPE_URI
           
private  String CHILD_URI
           
private  String CLIENT_OPTION_ENDPOINT_URL_URI
           
private  String CLIENT_OPTION_JAVA_KEY_STORE_PASS
           
private  String CLIENT_OPTION_JAVA_KEY_STORE_PATH
           
private  String CLIENT_OPTION_USE_HTTPS
           
private  String COMPOSITION_TYPE_URI
           
private  String DEFAULT_ROLE_TYPE_URI
           
static String ISIS_COURSE_URI_PREFIX
           
static String ISIS_ITEM_URI_PREFIX
           
static String ISIS_SECTION_URI_PREFIX
           
private static Logger log
           
static String MOODLE_COURSE_NAME_URI
           
static String MOODLE_COURSE_SHORT_NAME_URI
           
static String MOODLE_COURSE_URI
           
static String MOODLE_ITEM_AUTHOR_URI
           
static String MOODLE_ITEM_CREATED_URI
           
static String MOODLE_ITEM_DESC_URI
           
static String MOODLE_ITEM_HREF_URI
           
static String MOODLE_ITEM_ICON_URI
           
static String MOODLE_ITEM_LICENSE_URI
           
static String MOODLE_ITEM_MEDIA_TYPE_URI
           
static String MOODLE_ITEM_MODIFIED_URI
           
static String MOODLE_ITEM_NAME_URI
           
static String MOODLE_ITEM_REMOTE_URL_URI
           
static String MOODLE_ITEM_SIZE_URI
           
static String MOODLE_ITEM_TYPE_URI
           
static String MOODLE_ITEM_URI
           
static String MOODLE_PARTICIPANT_EDGE
           
static String MOODLE_SECTION_NAME_URI
           
static String MOODLE_SECTION_ORDINAL_NR
           
static String MOODLE_SECTION_SUMMARY_URI
           
static String MOODLE_SECTION_URI
           
private  String MOODLE_SECURITY_KEY_URI
           
private  String MOODLE_SERVICE_FORMAT
           
private  String MOODLE_SERVICE_NAME
           
private  String MOODLE_USER_ID_URI
           
private  String PARENT_ROLE_TYPE_URI
           
private  String PARENT_URI
           
static String PLUGIN_URI_TAGGING_NOTES
           
private  String REVIEW_SCORE_URI
           
private  String TAG_URI
           
private  String USER_ACCOUNT_TYPE_URI
           
private  String USER_NAME_TYPE_URI
           
private  String USERNAME_OF_SETTINGS_ADMINISTRATOR
           
static String WS_MOODLE_NAME
           
static String WS_MOODLE_URI
           
 
Fields inherited from class de.deepamehta.core.osgi.PluginActivator
bundle, dms
 
Constructor Summary
MoodleServiceClient()
           
 
Method Summary
 void allPluginsActive()
           
private  de.deepamehta.core.Association assignDefaultAuthorship(de.deepamehta.core.Topic item)
           
private  void assignToMoodleWorkspace(de.deepamehta.core.Topic topic)
           
private  boolean associationExists(String edge_type, de.deepamehta.core.Topic item, de.deepamehta.core.Topic user)
           
private  String callMoodle(String key, String functionName, String params)
           
private  de.deepamehta.core.Topic checkAuthorization()
           
private  void createAggregatingCourseEdge(de.deepamehta.core.Topic courseTopic, de.deepamehta.core.Topic sectionTopic)
           
private  void createAggregatingSectionEdge(de.deepamehta.core.Topic sectionTopic, de.deepamehta.core.Topic itemTopic)
           
private  de.deepamehta.core.Topic createMoodleCourseTopic(org.codehaus.jettison.json.JSONObject object)
           
private  de.deepamehta.core.Topic createMoodleItemTopic(org.codehaus.jettison.json.JSONObject object, List<de.deepamehta.core.Topic> hashtags)
           
private  de.deepamehta.core.Topic createMoodleSectionTopic(org.codehaus.jettison.json.JSONObject object, int nr)
           
private  void createParticipantEdge(de.deepamehta.core.Topic courseTopic, de.deepamehta.core.Topic userAccount)
           
private  String createYoutubeEmbedUrl(String fileUrl)
           
private  de.deepamehta.core.Topic fetchAndSetMoodleUserId(de.deepamehta.core.Topic userAccount)
          Fetches and relates the internal moodle-user-id to our currently logged-in user-account.
private  de.deepamehta.core.Topic getCourseContentsWithoutAuth(long topicId, String token, List<de.deepamehta.core.Topic> hashtags)
           
private  de.deepamehta.core.Topic getJavaKeyStorePass()
           
private  de.deepamehta.core.Topic getJavaKeyStorePath()
           
private  de.deepamehta.core.service.ResultList<de.deepamehta.core.RelatedTopic> getMoodleCoursesByUser(de.deepamehta.core.Topic user)
           
private  de.deepamehta.core.Topic getMoodleCoursesWithoutAuth(de.deepamehta.core.Topic userAccount, long moodleUserId, String token)
           
private  de.deepamehta.core.Topic getMoodleCourseTopic(long courseId)
           
private  de.deepamehta.core.Topic getMoodleEndpointUrl()
           
private  de.deepamehta.core.Topic getMoodleItemTopic(long itemId)
           
private  de.deepamehta.core.Topic getMoodleSectionTopic(long sectionId)
           
 String getMoodleSecurityKey()
           
private  String getMoodleSecurityKeyWithoutAuthCheck(de.deepamehta.core.Topic userAccount)
           
private  long getMoodleUserId(de.deepamehta.core.Topic userAccount)
           
private  de.deepamehta.core.Topic getUserAccountTopic(String username)
           
private  boolean hasAggregatingCourseParentEdge(de.deepamehta.core.Topic child, de.deepamehta.core.Topic parent)
           
private  boolean hasAggregatingSectionParentEdge(de.deepamehta.core.Topic child, de.deepamehta.core.Topic parent)
           
private  boolean hasAnyWorkspace(de.deepamehta.core.Topic topic)
           
private  boolean hasParticipantEdge(de.deepamehta.core.Topic course, de.deepamehta.core.Topic user)
           
 void init()
           
private  boolean isHTTPSConfigured()
           
private  de.deepamehta.core.model.CompositeValueModel parseGenericsToItemModel(org.codehaus.jettison.json.JSONObject object)
           
private  de.deepamehta.core.model.CompositeValueModel parseResourceToItemModel(de.deepamehta.core.model.CompositeValueModel model, org.codehaus.jettison.json.JSONObject resource)
           
private  de.deepamehta.core.model.CompositeValueModel parseTimestampsToItemModel(de.deepamehta.core.model.CompositeValueModel model, org.codehaus.jettison.json.JSONObject item)
           
 void postLoginUser(String username)
           
 void serviceArrived(de.deepamehta.core.service.PluginService service)
           
 void serviceGone(de.deepamehta.core.service.PluginService service)
           
private  de.deepamehta.core.DeepaMehtaObject setDefaultMoodleAdminACLEntries(de.deepamehta.core.DeepaMehtaObject item)
           
private  de.deepamehta.core.DeepaMehtaObject setDefaultMoodleGroupACLEntries(de.deepamehta.core.DeepaMehtaObject item)
           
 String setMoodleSecurityKey(int id, String input)
          Relates the moodle-security-key to our currently logged-in user-account.
private  boolean setMoodleUserId(de.deepamehta.core.Topic userAccount, long moodleUserId)
           
 String startMoodleSynchronization(String username)
           
private  void startSynchronizationThreadFor(de.deepamehta.core.Topic user)
           
private  de.deepamehta.core.Topic updateMoodleCourseTopic(de.deepamehta.core.Topic course, org.codehaus.jettison.json.JSONObject object)
           
private  de.deepamehta.core.Topic updateMoodleItemTopic(de.deepamehta.core.Topic item, de.deepamehta.core.Topic courseTopic, org.codehaus.jettison.json.JSONObject object)
           
private  de.deepamehta.core.Topic updateMoodleSectionTopic(de.deepamehta.core.Topic section, org.codehaus.jettison.json.JSONObject object)
           
 
Methods inherited from class de.deepamehta.core.osgi.PluginActivator
getBundleContext, getUri, postInstall, publishDirectory, setCoreService, shutdown, start, stop, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

log

private static Logger log

aclService

private de.deepamehta.plugins.accesscontrol.service.AccessControlService aclService

WS_MOODLE_NAME

public static final String WS_MOODLE_NAME
See Also:
Constant Field Values

WS_MOODLE_URI

public static final String WS_MOODLE_URI
See Also:
Constant Field Values

MOODLE_PARTICIPANT_EDGE

public static final String MOODLE_PARTICIPANT_EDGE
See Also:
Constant Field Values

MOODLE_COURSE_URI

public static final String MOODLE_COURSE_URI
See Also:
Constant Field Values

MOODLE_COURSE_NAME_URI

public static final String MOODLE_COURSE_NAME_URI
See Also:
Constant Field Values

MOODLE_COURSE_SHORT_NAME_URI

public static final String MOODLE_COURSE_SHORT_NAME_URI
See Also:
Constant Field Values

MOODLE_SECTION_URI

public static final String MOODLE_SECTION_URI
See Also:
Constant Field Values

MOODLE_SECTION_NAME_URI

public static final String MOODLE_SECTION_NAME_URI
See Also:
Constant Field Values

MOODLE_SECTION_SUMMARY_URI

public static final String MOODLE_SECTION_SUMMARY_URI
See Also:
Constant Field Values

MOODLE_SECTION_ORDINAL_NR

public static final String MOODLE_SECTION_ORDINAL_NR
See Also:
Constant Field Values

MOODLE_ITEM_URI

public static final String MOODLE_ITEM_URI
See Also:
Constant Field Values

MOODLE_ITEM_NAME_URI

public static final String MOODLE_ITEM_NAME_URI
See Also:
Constant Field Values

MOODLE_ITEM_ICON_URI

public static final String MOODLE_ITEM_ICON_URI
See Also:
Constant Field Values

MOODLE_ITEM_REMOTE_URL_URI

public static final String MOODLE_ITEM_REMOTE_URL_URI
See Also:
Constant Field Values

MOODLE_ITEM_MEDIA_TYPE_URI

public static final String MOODLE_ITEM_MEDIA_TYPE_URI
See Also:
Constant Field Values

MOODLE_ITEM_DESC_URI

public static final String MOODLE_ITEM_DESC_URI
See Also:
Constant Field Values

MOODLE_ITEM_HREF_URI

public static final String MOODLE_ITEM_HREF_URI
See Also:
Constant Field Values

MOODLE_ITEM_TYPE_URI

public static final String MOODLE_ITEM_TYPE_URI
See Also:
Constant Field Values

MOODLE_ITEM_MODIFIED_URI

public static final String MOODLE_ITEM_MODIFIED_URI
See Also:
Constant Field Values

MOODLE_ITEM_CREATED_URI

public static final String MOODLE_ITEM_CREATED_URI
See Also:
Constant Field Values

MOODLE_ITEM_AUTHOR_URI

public static final String MOODLE_ITEM_AUTHOR_URI
See Also:
Constant Field Values

MOODLE_ITEM_LICENSE_URI

public static final String MOODLE_ITEM_LICENSE_URI
See Also:
Constant Field Values

MOODLE_ITEM_SIZE_URI

public static final String MOODLE_ITEM_SIZE_URI
See Also:
Constant Field Values

PLUGIN_URI_TAGGING_NOTES

public static final String PLUGIN_URI_TAGGING_NOTES
See Also:
Constant Field Values

ISIS_COURSE_URI_PREFIX

public static final String ISIS_COURSE_URI_PREFIX
See Also:
Constant Field Values

ISIS_SECTION_URI_PREFIX

public static final String ISIS_SECTION_URI_PREFIX
See Also:
Constant Field Values

ISIS_ITEM_URI_PREFIX

public static final String ISIS_ITEM_URI_PREFIX
See Also:
Constant Field Values

CLIENT_OPTION_ENDPOINT_URL_URI

private final String CLIENT_OPTION_ENDPOINT_URL_URI
See Also:
Constant Field Values

CLIENT_OPTION_USE_HTTPS

private final String CLIENT_OPTION_USE_HTTPS
See Also:
Constant Field Values

CLIENT_OPTION_JAVA_KEY_STORE_PATH

private final String CLIENT_OPTION_JAVA_KEY_STORE_PATH
See Also:
Constant Field Values

CLIENT_OPTION_JAVA_KEY_STORE_PASS

private final String CLIENT_OPTION_JAVA_KEY_STORE_PASS
See Also:
Constant Field Values

USERNAME_OF_SETTINGS_ADMINISTRATOR

private final String USERNAME_OF_SETTINGS_ADMINISTRATOR
See Also:
Constant Field Values

MOODLE_SECURITY_KEY_URI

private final String MOODLE_SECURITY_KEY_URI
See Also:
Constant Field Values

MOODLE_USER_ID_URI

private final String MOODLE_USER_ID_URI
See Also:
Constant Field Values

MOODLE_SERVICE_NAME

private final String MOODLE_SERVICE_NAME
See Also:
Constant Field Values

MOODLE_SERVICE_FORMAT

private final String MOODLE_SERVICE_FORMAT
See Also:
Constant Field Values

DEFAULT_ROLE_TYPE_URI

private final String DEFAULT_ROLE_TYPE_URI
See Also:
Constant Field Values

CHILD_ROLE_TYPE_URI

private final String CHILD_ROLE_TYPE_URI
See Also:
Constant Field Values

PARENT_ROLE_TYPE_URI

private final String PARENT_ROLE_TYPE_URI
See Also:
Constant Field Values

AGGREGATION_TYPE_URI

private final String AGGREGATION_TYPE_URI
See Also:
Constant Field Values

COMPOSITION_TYPE_URI

private final String COMPOSITION_TYPE_URI
See Also:
Constant Field Values

USER_ACCOUNT_TYPE_URI

private final String USER_ACCOUNT_TYPE_URI
See Also:
Constant Field Values

USER_NAME_TYPE_URI

private final String USER_NAME_TYPE_URI
See Also:
Constant Field Values

CHILD_URI

private final String CHILD_URI
See Also:
Constant Field Values

PARENT_URI

private final String PARENT_URI
See Also:
Constant Field Values

TAG_URI

private final String TAG_URI
See Also:
Constant Field Values

REVIEW_SCORE_URI

private final String REVIEW_SCORE_URI
See Also:
Constant Field Values
Constructor Detail

MoodleServiceClient

public MoodleServiceClient()
Method Detail

init

public void init()
Specified by:
init in interface de.deepamehta.core.osgi.PluginContext
Overrides:
init in class de.deepamehta.core.osgi.PluginActivator

serviceArrived

public void serviceArrived(de.deepamehta.core.service.PluginService service)
Specified by:
serviceArrived in interface de.deepamehta.core.osgi.PluginContext
Overrides:
serviceArrived in class de.deepamehta.core.osgi.PluginActivator

serviceGone

public void serviceGone(de.deepamehta.core.service.PluginService service)
Specified by:
serviceGone in interface de.deepamehta.core.osgi.PluginContext
Overrides:
serviceGone in class de.deepamehta.core.osgi.PluginActivator

postLoginUser

public void postLoginUser(String username)
Specified by:
postLoginUser in interface de.deepamehta.plugins.accesscontrol.event.PostLoginUserListener

allPluginsActive

public void allPluginsActive()
Specified by:
allPluginsActive in interface de.deepamehta.core.service.event.AllPluginsActiveListener

setMoodleSecurityKey

public String setMoodleSecurityKey(int id,
                                   String input)
Relates the moodle-security-key to our currently logged-in user-account.


getMoodleSecurityKey

public String getMoodleSecurityKey()

startMoodleSynchronization

public String startMoodleSynchronization(String username)

checkAuthorization

private de.deepamehta.core.Topic checkAuthorization()

setMoodleUserId

private boolean setMoodleUserId(de.deepamehta.core.Topic userAccount,
                                long moodleUserId)

startSynchronizationThreadFor

private void startSynchronizationThreadFor(de.deepamehta.core.Topic user)

fetchAndSetMoodleUserId

private de.deepamehta.core.Topic fetchAndSetMoodleUserId(de.deepamehta.core.Topic userAccount)
                                                  throws javax.ws.rs.WebApplicationException
Fetches and relates the internal moodle-user-id to our currently logged-in user-account.

Throws:
javax.ws.rs.WebApplicationException

getMoodleCoursesWithoutAuth

private de.deepamehta.core.Topic getMoodleCoursesWithoutAuth(de.deepamehta.core.Topic userAccount,
                                                             long moodleUserId,
                                                             String token)

getCourseContentsWithoutAuth

private de.deepamehta.core.Topic getCourseContentsWithoutAuth(long topicId,
                                                              String token,
                                                              List<de.deepamehta.core.Topic> hashtags)

callMoodle

private String callMoodle(String key,
                          String functionName,
                          String params)
                   throws MoodleConnectionException
Throws:
MoodleConnectionException

createParticipantEdge

private void createParticipantEdge(de.deepamehta.core.Topic courseTopic,
                                   de.deepamehta.core.Topic userAccount)

createAggregatingCourseEdge

private void createAggregatingCourseEdge(de.deepamehta.core.Topic courseTopic,
                                         de.deepamehta.core.Topic sectionTopic)

createAggregatingSectionEdge

private void createAggregatingSectionEdge(de.deepamehta.core.Topic sectionTopic,
                                          de.deepamehta.core.Topic itemTopic)

createMoodleCourseTopic

private de.deepamehta.core.Topic createMoodleCourseTopic(org.codehaus.jettison.json.JSONObject object)

updateMoodleCourseTopic

private de.deepamehta.core.Topic updateMoodleCourseTopic(de.deepamehta.core.Topic course,
                                                         org.codehaus.jettison.json.JSONObject object)

createMoodleSectionTopic

private de.deepamehta.core.Topic createMoodleSectionTopic(org.codehaus.jettison.json.JSONObject object,
                                                          int nr)

updateMoodleSectionTopic

private de.deepamehta.core.Topic updateMoodleSectionTopic(de.deepamehta.core.Topic section,
                                                          org.codehaus.jettison.json.JSONObject object)

createMoodleItemTopic

private de.deepamehta.core.Topic createMoodleItemTopic(org.codehaus.jettison.json.JSONObject object,
                                                       List<de.deepamehta.core.Topic> hashtags)

updateMoodleItemTopic

private de.deepamehta.core.Topic updateMoodleItemTopic(de.deepamehta.core.Topic item,
                                                       de.deepamehta.core.Topic courseTopic,
                                                       org.codehaus.jettison.json.JSONObject object)

parseGenericsToItemModel

private de.deepamehta.core.model.CompositeValueModel parseGenericsToItemModel(org.codehaus.jettison.json.JSONObject object)
                                                                       throws org.codehaus.jettison.json.JSONException
Throws:
org.codehaus.jettison.json.JSONException

parseResourceToItemModel

private de.deepamehta.core.model.CompositeValueModel parseResourceToItemModel(de.deepamehta.core.model.CompositeValueModel model,
                                                                              org.codehaus.jettison.json.JSONObject resource)
                                                                       throws org.codehaus.jettison.json.JSONException
Throws:
org.codehaus.jettison.json.JSONException

parseTimestampsToItemModel

private de.deepamehta.core.model.CompositeValueModel parseTimestampsToItemModel(de.deepamehta.core.model.CompositeValueModel model,
                                                                                org.codehaus.jettison.json.JSONObject item)
                                                                         throws org.codehaus.jettison.json.JSONException
Throws:
org.codehaus.jettison.json.JSONException

createYoutubeEmbedUrl

private String createYoutubeEmbedUrl(String fileUrl)

getUserAccountTopic

private de.deepamehta.core.Topic getUserAccountTopic(String username)

getMoodleUserId

private long getMoodleUserId(de.deepamehta.core.Topic userAccount)

getMoodleEndpointUrl

private de.deepamehta.core.Topic getMoodleEndpointUrl()

getJavaKeyStorePath

private de.deepamehta.core.Topic getJavaKeyStorePath()

getJavaKeyStorePass

private de.deepamehta.core.Topic getJavaKeyStorePass()

isHTTPSConfigured

private boolean isHTTPSConfigured()

getMoodleCoursesByUser

private de.deepamehta.core.service.ResultList<de.deepamehta.core.RelatedTopic> getMoodleCoursesByUser(de.deepamehta.core.Topic user)

getMoodleSecurityKeyWithoutAuthCheck

private String getMoodleSecurityKeyWithoutAuthCheck(de.deepamehta.core.Topic userAccount)

hasParticipantEdge

private boolean hasParticipantEdge(de.deepamehta.core.Topic course,
                                   de.deepamehta.core.Topic user)

hasAggregatingCourseParentEdge

private boolean hasAggregatingCourseParentEdge(de.deepamehta.core.Topic child,
                                               de.deepamehta.core.Topic parent)

hasAggregatingSectionParentEdge

private boolean hasAggregatingSectionParentEdge(de.deepamehta.core.Topic child,
                                                de.deepamehta.core.Topic parent)

getMoodleCourseTopic

private de.deepamehta.core.Topic getMoodleCourseTopic(long courseId)

getMoodleSectionTopic

private de.deepamehta.core.Topic getMoodleSectionTopic(long sectionId)

getMoodleItemTopic

private de.deepamehta.core.Topic getMoodleItemTopic(long itemId)

setDefaultMoodleGroupACLEntries

private de.deepamehta.core.DeepaMehtaObject setDefaultMoodleGroupACLEntries(de.deepamehta.core.DeepaMehtaObject item)

setDefaultMoodleAdminACLEntries

private de.deepamehta.core.DeepaMehtaObject setDefaultMoodleAdminACLEntries(de.deepamehta.core.DeepaMehtaObject item)

assignToMoodleWorkspace

private void assignToMoodleWorkspace(de.deepamehta.core.Topic topic)

hasAnyWorkspace

private boolean hasAnyWorkspace(de.deepamehta.core.Topic topic)

assignDefaultAuthorship

private de.deepamehta.core.Association assignDefaultAuthorship(de.deepamehta.core.Topic item)

associationExists

private boolean associationExists(String edge_type,
                                  de.deepamehta.core.Topic item,
                                  de.deepamehta.core.Topic user)


Copyright © 2014. All Rights Reserved.