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