@Override
  protected PortletPreferences doImportData(
      PortletDataContext portletDataContext,
      String portletId,
      PortletPreferences portletPreferences,
      String data)
      throws Exception {

    portletDataContext.importPortletPermissions(DDLPermission.RESOURCE_NAME);

    if (portletDataContext.getBooleanParameter(NAMESPACE, "data-definitions")) {

      Element ddmStructuresElement =
          portletDataContext.getImportDataGroupElement(DDMStructure.class);

      List<Element> ddmStructureElements = ddmStructuresElement.elements();

      for (Element ddmStructureElement : ddmStructureElements) {
        StagedModelDataHandlerUtil.importStagedModel(portletDataContext, ddmStructureElement);
      }

      Element ddmTemplatesElement = portletDataContext.getImportDataGroupElement(DDMTemplate.class);

      List<Element> ddmTemplateElements = ddmTemplatesElement.elements();

      for (Element ddmTemplateElement : ddmTemplateElements) {
        StagedModelDataHandlerUtil.importStagedModel(portletDataContext, ddmTemplateElement);
      }
    }

    if (portletDataContext.getBooleanParameter(NAMESPACE, "record-sets")) {
      Element recordSetsElement = portletDataContext.getImportDataGroupElement(DDLRecordSet.class);

      List<Element> recordSetElements = recordSetsElement.elements();

      for (Element recordSetElement : recordSetElements) {
        StagedModelDataHandlerUtil.importStagedModel(portletDataContext, recordSetElement);
      }
    }

    if (portletDataContext.getBooleanParameter(NAMESPACE, "records")) {
      Element recordsElement = portletDataContext.getImportDataGroupElement(DDLRecord.class);

      List<Element> recordElements = recordsElement.elements();

      for (Element recordElement : recordElements) {
        StagedModelDataHandlerUtil.importStagedModel(portletDataContext, recordElement);
      }
    }

    return portletPreferences;
  }
  @Override
  protected PortletPreferences doImportData(
      PortletDataContext portletDataContext,
      String portletId,
      PortletPreferences portletPreferences,
      String data)
      throws Exception {

    portletDataContext.importPortletPermissions(MBPermission.RESOURCE_NAME);

    if (portletDataContext.getBooleanParameter(NAMESPACE, "messages")) {
      Element categoriesElement = portletDataContext.getImportDataGroupElement(MBCategory.class);

      List<Element> categoryElements = categoriesElement.elements();

      for (Element categoryElement : categoryElements) {
        StagedModelDataHandlerUtil.importStagedModel(portletDataContext, categoryElement);
      }

      Element messagesElement = portletDataContext.getImportDataGroupElement(MBMessage.class);

      List<Element> messageElements = messagesElement.elements();

      for (Element messageElement : messageElements) {
        StagedModelDataHandlerUtil.importStagedModel(portletDataContext, messageElement);
      }
    }

    if (portletDataContext.getBooleanParameter(NAMESPACE, "thread-flags")) {
      Element threadFlagsElement = portletDataContext.getImportDataGroupElement(MBThreadFlag.class);

      List<Element> threadFlagElements = threadFlagsElement.elements();

      for (Element threadFlagElement : threadFlagElements) {
        StagedModelDataHandlerUtil.importStagedModel(portletDataContext, threadFlagElement);
      }
    }

    if (portletDataContext.getBooleanParameter(NAMESPACE, "user-bans")) {
      Element userBansElement = portletDataContext.getImportDataGroupElement(MBBan.class);

      List<Element> userBanElements = userBansElement.elements();

      for (Element userBanElement : userBanElements) {
        StagedModelDataHandlerUtil.importStagedModel(portletDataContext, userBanElement);
      }
    }

    return null;
  }
  protected void importAssetLinks(PortletDataContext portletDataContext) throws Exception {

    String xml =
        portletDataContext.getZipEntryAsString(
            ExportImportPathUtil.getSourceRootPath(portletDataContext) + "/links.xml");

    if (xml == null) {
      return;
    }

    Element importDataRootElement = portletDataContext.getImportDataRootElement();

    try {
      Document document = SAXReaderUtil.read(xml);

      Element rootElement = document.getRootElement();

      portletDataContext.setImportDataRootElement(rootElement);

      Element linksElement = portletDataContext.getImportDataGroupElement(StagedAssetLink.class);

      List<Element> linkElements = linksElement.elements();

      for (Element linkElement : linkElements) {
        StagedModelDataHandlerUtil.importStagedModel(portletDataContext, linkElement);
      }
    } finally {
      portletDataContext.setImportDataRootElement(importDataRootElement);
    }
  }