001    /**
002     * Copyright (c) 2000-2013 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portlet.usersadmin.lar;
016    
017    import com.liferay.portal.kernel.dao.orm.ActionableDynamicQuery;
018    import com.liferay.portal.kernel.lar.BasePortletDataHandler;
019    import com.liferay.portal.kernel.lar.DataLevel;
020    import com.liferay.portal.kernel.lar.PortletDataContext;
021    import com.liferay.portal.kernel.lar.PortletDataHandlerBoolean;
022    import com.liferay.portal.kernel.lar.StagedModelDataHandlerUtil;
023    import com.liferay.portal.kernel.lar.StagedModelType;
024    import com.liferay.portal.kernel.xml.Element;
025    import com.liferay.portal.model.Organization;
026    import com.liferay.portal.model.OrganizationConstants;
027    import com.liferay.portal.service.OrganizationLocalServiceUtil;
028    import com.liferay.portal.service.persistence.OrganizationExportActionableDynamicQuery;
029    
030    import java.util.List;
031    
032    import javax.portlet.PortletPreferences;
033    
034    /**
035     * @author Michael C. Han
036     * @author David Gonzalez
037     */
038    public class UsersAdminPortletDataHandler extends BasePortletDataHandler {
039    
040            public static final String NAMESPACE = "users_admin";
041    
042            public UsersAdminPortletDataHandler() {
043                    setDataLevel(DataLevel.PORTAL);
044                    setDeletionSystemEventStagedModelTypes(
045                            new StagedModelType(Organization.class));
046                    setExportControls(
047                            new PortletDataHandlerBoolean(
048                                    NAMESPACE, "organizations", true, true, null,
049                                    Organization.class.getName()));
050                    setSupportsDataStrategyCopyAsNew(false);
051            }
052    
053            @Override
054            protected PortletPreferences doDeleteData(
055                            PortletDataContext portletDataContext, String portletId,
056                            PortletPreferences portletPreferences)
057                    throws Exception {
058    
059                    List<Organization> organizations =
060                            OrganizationLocalServiceUtil.getOrganizations(
061                                    portletDataContext.getCompanyId(),
062                                    OrganizationConstants.ANY_PARENT_ORGANIZATION_ID);
063    
064                    for (Organization organization : organizations) {
065                            OrganizationLocalServiceUtil.deleteOrganization(organization);
066                    }
067    
068                    return portletPreferences;
069            }
070    
071            @Override
072            protected String doExportData(
073                            final PortletDataContext portletDataContext, String portletId,
074                            PortletPreferences portletPreferences)
075                    throws Exception {
076    
077                    portletDataContext.addPortalPermissions();
078    
079                    Element rootElement = addExportDataRootElement(portletDataContext);
080    
081                    rootElement.addAttribute(
082                            "group-id", String.valueOf(portletDataContext.getScopeGroupId()));
083    
084                    ActionableDynamicQuery actionableDynamicQuery =
085                            new OrganizationExportActionableDynamicQuery(portletDataContext);
086    
087                    actionableDynamicQuery.performActions();
088    
089                    return getExportDataRootElementString(rootElement);
090            }
091    
092            @Override
093            protected PortletPreferences doImportData(
094                            PortletDataContext portletDataContext, String portletId,
095                            PortletPreferences portletPreferences, String data)
096                    throws Exception {
097    
098                    portletDataContext.importPortalPermissions();
099    
100                    Element organizationsElement =
101                            portletDataContext.getImportDataGroupElement(Organization.class);
102    
103                    List<Element> organizationElements = organizationsElement.elements();
104    
105                    for (Element organizationElement : organizationElements) {
106                            StagedModelDataHandlerUtil.importStagedModel(
107                                    portletDataContext, organizationElement);
108                    }
109    
110                    return null;
111            }
112    
113            @Override
114            protected void doPrepareManifestSummary(
115                            PortletDataContext portletDataContext,
116                            PortletPreferences portletPreferences)
117                    throws Exception {
118    
119                    ActionableDynamicQuery actionableDynamicQuery =
120                            new OrganizationExportActionableDynamicQuery(portletDataContext);
121    
122                    actionableDynamicQuery.performCount();
123            }
124    
125    }