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.portal.service.impl;
016    
017    import com.liferay.portal.ContactBirthdayException;
018    import com.liferay.portal.ContactClassNameException;
019    import com.liferay.portal.kernel.exception.PortalException;
020    import com.liferay.portal.kernel.search.Indexable;
021    import com.liferay.portal.kernel.search.IndexableType;
022    import com.liferay.portal.kernel.util.OrderByComparator;
023    import com.liferay.portal.kernel.util.Validator;
024    import com.liferay.portal.model.Contact;
025    import com.liferay.portal.model.User;
026    import com.liferay.portal.service.base.ContactLocalServiceBaseImpl;
027    import com.liferay.portal.util.PortalUtil;
028    
029    import java.util.Date;
030    import java.util.List;
031    
032    /**
033     * @author Brian Wing Shun Chan
034     */
035    public class ContactLocalServiceImpl extends ContactLocalServiceBaseImpl {
036    
037            @Indexable(type = IndexableType.REINDEX)
038            @Override
039            public Contact addContact(
040                            long userId, String className, long classPK, String emailAddress,
041                            String firstName, String middleName, String lastName, long prefixId,
042                            long suffixId, boolean male, int birthdayMonth, int birthdayDay,
043                            int birthdayYear, String smsSn, String aimSn, String facebookSn,
044                            String icqSn, String jabberSn, String mySpaceSn, String skypeSn,
045                            String twitterSn, String ymSn, String jobTitle)
046                    throws PortalException {
047    
048                    User user = userPersistence.findByPrimaryKey(userId);
049                    Date birthday = PortalUtil.getDate(
050                            birthdayMonth, birthdayDay, birthdayYear,
051                            ContactBirthdayException.class);
052    
053                    validate(className, classPK);
054    
055                    long contactId = counterLocalService.increment();
056    
057                    Contact contact = contactPersistence.create(contactId);
058    
059                    contact.setCompanyId(user.getCompanyId());
060                    contact.setUserId(user.getUserId());
061                    contact.setUserName(user.getFullName());
062                    contact.setClassName(className);
063                    contact.setClassPK(classPK);
064                    contact.setEmailAddress(emailAddress);
065                    contact.setFirstName(firstName);
066                    contact.setMiddleName(middleName);
067                    contact.setLastName(lastName);
068                    contact.setPrefixId(prefixId);
069                    contact.setSuffixId(suffixId);
070                    contact.setMale(male);
071                    contact.setBirthday(birthday);
072                    contact.setSmsSn(smsSn);
073                    contact.setAimSn(aimSn);
074                    contact.setFacebookSn(facebookSn);
075                    contact.setIcqSn(icqSn);
076                    contact.setJabberSn(jabberSn);
077                    contact.setMySpaceSn(mySpaceSn);
078                    contact.setSkypeSn(skypeSn);
079                    contact.setTwitterSn(twitterSn);
080                    contact.setYmSn(ymSn);
081                    contact.setJobTitle(jobTitle);
082    
083                    contactPersistence.update(contact);
084    
085                    return contact;
086            }
087    
088            @Indexable(type = IndexableType.DELETE)
089            @Override
090            public Contact deleteContact(Contact contact) {
091    
092                    // Contact
093    
094                    contactPersistence.remove(contact);
095    
096                    // Addresses
097    
098                    addressLocalService.deleteAddresses(
099                            contact.getCompanyId(), Contact.class.getName(),
100                            contact.getContactId());
101    
102                    // Email addresses
103    
104                    emailAddressLocalService.deleteEmailAddresses(
105                            contact.getCompanyId(), Contact.class.getName(),
106                            contact.getContactId());
107    
108                    // Phone
109    
110                    phoneLocalService.deletePhones(
111                            contact.getCompanyId(), Contact.class.getName(),
112                            contact.getContactId());
113    
114                    // Website
115    
116                    websiteLocalService.deleteWebsites(
117                            contact.getCompanyId(), Contact.class.getName(),
118                            contact.getContactId());
119    
120                    return contact;
121            }
122    
123            @Indexable(type = IndexableType.DELETE)
124            @Override
125            public Contact deleteContact(long contactId) {
126                    Contact contact = contactPersistence.fetchByPrimaryKey(contactId);
127    
128                    if (contact != null) {
129                            deleteContact(contact);
130                    }
131    
132                    return contact;
133            }
134    
135            @Override
136            public List<Contact> getContacts(
137                    long classNameId, long classPK, int start, int end,
138                    OrderByComparator<Contact> orderByComparator) {
139    
140                    return contactPersistence.findByC_C(
141                            classNameId, classPK, start, end, orderByComparator);
142            }
143    
144            @Override
145            public int getContactsCount(long classNameId, long classPK) {
146                    return contactPersistence.countByC_C(classNameId, classPK);
147            }
148    
149            @Indexable(type = IndexableType.REINDEX)
150            @Override
151            public Contact updateContact(
152                            long contactId, String emailAddress, String firstName,
153                            String middleName, String lastName, long prefixId, long suffixId,
154                            boolean male, int birthdayMonth, int birthdayDay, int birthdayYear,
155                            String smsSn, String aimSn, String facebookSn, String icqSn,
156                            String jabberSn, String mySpaceSn, String skypeSn, String twitterSn,
157                            String ymSn, String jobTitle)
158                    throws PortalException {
159    
160                    Date birthday = PortalUtil.getDate(
161                            birthdayMonth, birthdayDay, birthdayYear,
162                            ContactBirthdayException.class);
163    
164                    Contact contact = contactPersistence.findByPrimaryKey(contactId);
165    
166                    contact.setEmailAddress(emailAddress);
167                    contact.setFirstName(firstName);
168                    contact.setMiddleName(middleName);
169                    contact.setLastName(lastName);
170                    contact.setPrefixId(prefixId);
171                    contact.setSuffixId(suffixId);
172                    contact.setMale(male);
173                    contact.setBirthday(birthday);
174                    contact.setSmsSn(smsSn);
175                    contact.setAimSn(aimSn);
176                    contact.setFacebookSn(facebookSn);
177                    contact.setIcqSn(icqSn);
178                    contact.setJabberSn(jabberSn);
179                    contact.setMySpaceSn(mySpaceSn);
180                    contact.setSkypeSn(skypeSn);
181                    contact.setTwitterSn(twitterSn);
182                    contact.setYmSn(ymSn);
183                    contact.setJobTitle(jobTitle);
184    
185                    contactPersistence.update(contact);
186    
187                    return contact;
188            }
189    
190            protected void validate(String className, long classPK)
191                    throws PortalException {
192    
193                    if (Validator.isNull(className) ||
194                            className.equals(User.class.getName()) || (classPK <= 0)) {
195    
196                            throw new ContactClassNameException();
197                    }
198            }
199    
200    }