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}