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