001    /**
002     * Copyright (c) 2000-present 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.passwordpoliciesadmin.lar;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.kernel.lar.BaseStagedModelDataHandler;
019    import com.liferay.portal.kernel.lar.ExportImportPathUtil;
020    import com.liferay.portal.kernel.lar.PortletDataContext;
021    import com.liferay.portal.kernel.xml.Element;
022    import com.liferay.portal.model.Group;
023    import com.liferay.portal.model.PasswordPolicy;
024    import com.liferay.portal.service.GroupLocalServiceUtil;
025    import com.liferay.portal.service.PasswordPolicyLocalServiceUtil;
026    import com.liferay.portal.service.ServiceContext;
027    
028    /**
029     * @author Daniela Zapata Riesco
030     */
031    public class PasswordPolicyStagedModelDataHandler
032            extends BaseStagedModelDataHandler<PasswordPolicy> {
033    
034            public static final String[] CLASS_NAMES = {PasswordPolicy.class.getName()};
035    
036            @Override
037            public void deleteStagedModel(
038                            String uuid, long groupId, String className, String extraData)
039                    throws PortalException {
040    
041                    Group group = GroupLocalServiceUtil.getGroup(groupId);
042    
043                    PasswordPolicy passwordPolicy = fetchStagedModelByUuidAndCompanyId(
044                            uuid, group.getCompanyId());
045    
046                    if (passwordPolicy != null) {
047                            PasswordPolicyLocalServiceUtil.deletePasswordPolicy(passwordPolicy);
048                    }
049            }
050    
051            @Override
052            public PasswordPolicy fetchStagedModelByUuidAndCompanyId(
053                    String uuid, long companyId) {
054    
055                    return PasswordPolicyLocalServiceUtil.
056                            fetchPasswordPolicyByUuidAndCompanyId(uuid, companyId);
057            }
058    
059            @Override
060            public String[] getClassNames() {
061                    return CLASS_NAMES;
062            }
063    
064            @Override
065            protected void doExportStagedModel(
066                            PortletDataContext portletDataContext,
067                            PasswordPolicy passwordPolicy)
068                    throws Exception {
069    
070                    Element passwordPolicyElement = portletDataContext.getExportDataElement(
071                            passwordPolicy);
072    
073                    portletDataContext.addClassedModel(
074                            passwordPolicyElement,
075                            ExportImportPathUtil.getModelPath(passwordPolicy), passwordPolicy);
076            }
077    
078            @Override
079            protected void doImportStagedModel(
080                            PortletDataContext portletDataContext,
081                            PasswordPolicy passwordPolicy)
082                    throws Exception {
083    
084                    long userId = portletDataContext.getUserId(
085                            passwordPolicy.getUserUuid());
086    
087                    ServiceContext serviceContext = portletDataContext.createServiceContext(
088                            passwordPolicy);
089    
090                    PasswordPolicy existingPasswordPolicy =
091                            fetchStagedModelByUuidAndCompanyId(
092                                    passwordPolicy.getUuid(), portletDataContext.getCompanyId());
093    
094                    if (existingPasswordPolicy == null) {
095                            existingPasswordPolicy =
096                                    PasswordPolicyLocalServiceUtil.fetchPasswordPolicy(
097                                            portletDataContext.getCompanyId(),
098                                            passwordPolicy.getName());
099                    }
100    
101                    PasswordPolicy importedPasswordPolicy = null;
102    
103                    if (existingPasswordPolicy == null) {
104                            serviceContext.setUuid(passwordPolicy.getUuid());
105    
106                            importedPasswordPolicy =
107                                    PasswordPolicyLocalServiceUtil.addPasswordPolicy(
108                                            userId, passwordPolicy.isDefaultPolicy(),
109                                            passwordPolicy.getName(), passwordPolicy.getDescription(),
110                                            passwordPolicy.getChangeable(),
111                                            passwordPolicy.isChangeRequired(),
112                                            passwordPolicy.getMinAge(), passwordPolicy.getCheckSyntax(),
113                                            passwordPolicy.isAllowDictionaryWords(),
114                                            passwordPolicy.getMinAlphanumeric(),
115                                            passwordPolicy.getMinLength(),
116                                            passwordPolicy.getMinLowerCase(),
117                                            passwordPolicy.getMinNumbers(),
118                                            passwordPolicy.getMinSymbols(),
119                                            passwordPolicy.getMinUpperCase(), passwordPolicy.getRegex(),
120                                            passwordPolicy.isHistory(),
121                                            passwordPolicy.getHistoryCount(),
122                                            passwordPolicy.isExpireable(), passwordPolicy.getMaxAge(),
123                                            passwordPolicy.getWarningTime(),
124                                            passwordPolicy.getGraceLimit(), passwordPolicy.isLockout(),
125                                            passwordPolicy.getMaxFailure(),
126                                            passwordPolicy.getLockoutDuration(),
127                                            passwordPolicy.getResetFailureCount(),
128                                            passwordPolicy.getResetTicketMaxAge(), serviceContext);
129                    }
130                    else {
131                            importedPasswordPolicy =
132                                    PasswordPolicyLocalServiceUtil.updatePasswordPolicy(
133                                            existingPasswordPolicy.getPasswordPolicyId(),
134                                            passwordPolicy.getName(), passwordPolicy.getDescription(),
135                                            passwordPolicy.isChangeable(),
136                                            passwordPolicy.isChangeRequired(),
137                                            passwordPolicy.getMinAge(), passwordPolicy.isCheckSyntax(),
138                                            passwordPolicy.isAllowDictionaryWords(),
139                                            passwordPolicy.getMinAlphanumeric(),
140                                            passwordPolicy.getMinLength(),
141                                            passwordPolicy.getMinLowerCase(),
142                                            passwordPolicy.getMinNumbers(),
143                                            passwordPolicy.getMinSymbols(),
144                                            passwordPolicy.getMinUpperCase(), passwordPolicy.getRegex(),
145                                            passwordPolicy.isHistory(),
146                                            passwordPolicy.getHistoryCount(),
147                                            passwordPolicy.isExpireable(), passwordPolicy.getMaxAge(),
148                                            passwordPolicy.getWarningTime(),
149                                            passwordPolicy.getGraceLimit(), passwordPolicy.isLockout(),
150                                            passwordPolicy.getMaxFailure(),
151                                            passwordPolicy.getLockoutDuration(),
152                                            passwordPolicy.getResetFailureCount(),
153                                            passwordPolicy.getResetTicketMaxAge(), serviceContext);
154                    }
155    
156                    portletDataContext.importClassedModel(
157                            passwordPolicy, importedPasswordPolicy);
158            }
159    
160    }