001package org.deepamehta.plugins.moodle.migrations; 002 003import de.deepamehta.core.RelatedTopic; 004import de.deepamehta.core.Topic; 005import de.deepamehta.core.model.SimpleValue; 006import de.deepamehta.core.service.Migration; 007import de.deepamehta.core.service.ResultList; 008import java.util.logging.Logger; 009import org.deepamehta.plugins.moodle.MoodleServiceClient; 010 011/** 012 * This migration removes the initially introduced Topic Types 013 * "Usage Report" and "Moodle Service URL" and changes the Workspace name to "Moodle". 014 */ 015public class Migration5 extends Migration { 016 017 private Logger logger = Logger.getLogger(getClass().getName()); 018 019 final String MOODLE_SERVICE_URL_TYPE = "org.deepamehta.moodle.web_service_url"; 020 final String USAGE_TYPE_URI = "org.deepamehta.moodle.usage_report"; 021 022 @Override 023 public void run() { 024 025 // 1) Delete all instance of usage reports 026 ResultList<RelatedTopic> usage_reports = dms.getTopics(USAGE_TYPE_URI, 0); 027 for (int i=0; i < usage_reports.getItems().size(); i++) { 028 RelatedTopic usage_report = usage_reports.getItems().get(i); 029 logger.info("Migration 5 deleting \"Moodle Usage Report\"-Topic " + usage_report.getId()); 030 dms.deleteTopic(usage_report.getId()); 031 } 032 // 2) Delete "Usage Report"-Type 033 dms.getTopicType(USAGE_TYPE_URI).delete(); 034 logger.info("Migration 5 deleted \"Moodle Usage Report\"-TopicType"); 035 // 036 // 3) Delete all instances of type to be deleted 037 ResultList<RelatedTopic> service_urls = dms.getTopics(MOODLE_SERVICE_URL_TYPE, 0); 038 for (int i=0; i < service_urls.getItems().size(); i++) { 039 RelatedTopic service_url = service_urls.getItems().get(i); 040 logger.info("Migration 5 deleting \"Moodle Web Service URL\"-Topic " + service_url.getId()); 041 dms.deleteTopic(service_url.getId()); 042 } 043 // 4) Delete "Moodle Service URL"-Type 044 dms.getTopicType(MOODLE_SERVICE_URL_TYPE).delete(); 045 // logger.info("Migration 5 deleted \"Moodle Web Service URL\"-TopicType"); 046 // 5) Fix Moodle WS-Name Topic 047 Topic moodle_ws = dms.getTopic("uri", new SimpleValue("org.deepamehta.workspaces.moodle")).loadChildTopics(); 048 moodle_ws.getChildTopics().set("dm4.workspaces.name", MoodleServiceClient.WS_MOODLE_NAME); 049 } 050 051}