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