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            }
072    
073            @Override
074            protected void doImportStagedModel(
075                            PortletDataContext portletDataContext,
076                            PasswordPolicy passwordPolicy)
077                    throws Exception {
078    
079                    long userId = portletDataContext.getUserId(
080                            passwordPolicy.getUserUuid());
081    
082                    ServiceContext serviceContext = portletDataContext.createServiceContext(
083                            passwordPolicy);
084    
085                    PasswordPolicy existingPasswordPolicy =
086                            PasswordPolicyLocalServiceUtil.
087                                    fetchPasswordPolicyByUuidAndCompanyId(
088                                            passwordPolicy.getUuid(),
089                                            portletDataContext.getCompanyId());
090    
091                    if (existingPasswordPolicy == null) {
092                            existingPasswordPolicy =
093                                    PasswordPolicyLocalServiceUtil.fetchPasswordPolicy(
094                                            portletDataContext.getCompanyId(),
095                                            passwordPolicy.getName());
096                    }
097    
098                    PasswordPolicy importedPasswordPolicy = null;
099    
100                    if (existingPasswordPolicy == null) {
101                            serviceContext.setUuid(passwordPolicy.getUuid());
102    
103                            importedPasswordPolicy =
104                                    PasswordPolicyLocalServiceUtil.addPasswordPolicy(
105                                            userId, passwordPolicy.isDefaultPolicy(),
106                                            passwordPolicy.getName(), passwordPolicy.getDescription(),
107                                            passwordPolicy.getChangeable(),
108                                            passwordPolicy.isChangeRequired(),
109                                            passwordPolicy.getMinAge(), passwordPolicy.getCheckSyntax(),
110                                            passwordPolicy.isAllowDictionaryWords(),
111                                            passwordPolicy.getMinAlphanumeric(),
112                                            passwordPolicy.getMinLength(),
113                                            passwordPolicy.getMinLowerCase(),
114                                            passwordPolicy.getMinNumbers(),
115                                            passwordPolicy.getMinSymbols(),
116                                            passwordPolicy.getMinUpperCase(), passwordPolicy.getRegex(),
117                                            passwordPolicy.isHistory(),
118                                            passwordPolicy.getHistoryCount(),
119                                            passwordPolicy.isExpireable(), passwordPolicy.getMaxAge(),
120                                            passwordPolicy.getWarningTime(),
121                                            passwordPolicy.getGraceLimit(), passwordPolicy.isLockout(),
122                                            passwordPolicy.getMaxFailure(),
123                                            passwordPolicy.getLockoutDuration(),
124                                            passwordPolicy.getResetFailureCount(),
125                                            passwordPolicy.getResetTicketMaxAge(), serviceContext);
126                    }
127                    else {
128                            importedPasswordPolicy =
129                                    PasswordPolicyLocalServiceUtil.updatePasswordPolicy(
130                                            existingPasswordPolicy.getPasswordPolicyId(),
131                                            passwordPolicy.getName(), passwordPolicy.getDescription(),
132                                            passwordPolicy.isChangeable(),
133                                            passwordPolicy.isChangeRequired(),
134                                            passwordPolicy.getMinAge(), passwordPolicy.isCheckSyntax(),
135                                            passwordPolicy.isAllowDictionaryWords(),
136                                            passwordPolicy.getMinAlphanumeric(),
137                                            passwordPolicy.getMinLength(),
138                                            passwordPolicy.getMinLowerCase(),
139                                            passwordPolicy.getMinNumbers(),
140                                            passwordPolicy.getMinSymbols(),
141                                            passwordPolicy.getMinUpperCase(), passwordPolicy.getRegex(),
142                                            passwordPolicy.isHistory(),
143                                            passwordPolicy.getHistoryCount(),
144                                            passwordPolicy.isExpireable(), passwordPolicy.getMaxAge(),
145                                            passwordPolicy.getWarningTime(),
146                                            passwordPolicy.getGraceLimit(), passwordPolicy.isLockout(),
147                                            passwordPolicy.getMaxFailure(),
148                                            passwordPolicy.getLockoutDuration(),
149                                            passwordPolicy.getResetFailureCount(),
150                                            passwordPolicy.getResetTicketMaxAge(), serviceContext);
151                    }
152    
153                    portletDataContext.importClassedModel(
154                            passwordPolicy, importedPasswordPolicy);
155            }
156    
157    }