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