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