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.portlet.journal.service.impl;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.kernel.log.Log;
019    import com.liferay.portal.kernel.log.LogFactoryUtil;
020    import com.liferay.portlet.journal.DuplicateArticleImageIdException;
021    import com.liferay.portlet.journal.model.JournalArticleImage;
022    import com.liferay.portlet.journal.service.base.JournalArticleImageLocalServiceBaseImpl;
023    
024    import java.util.List;
025    
026    /**
027     * @author Brian Wing Shun Chan
028     */
029    public class JournalArticleImageLocalServiceImpl
030            extends JournalArticleImageLocalServiceBaseImpl {
031    
032            @Override
033            public void addArticleImageId(
034                            long articleImageId, long groupId, String articleId, double version,
035                            String elInstanceId, String elName, String languageId)
036                    throws PortalException {
037    
038                    if (articleImageId <= 0) {
039                            return;
040                    }
041    
042                    JournalArticleImage articleImage =
043                            journalArticleImagePersistence.fetchByG_A_V_E_E_L(
044                                    groupId, articleId, version, elInstanceId, elName, languageId);
045    
046                    if (articleImage == null) {
047                            articleImage = journalArticleImagePersistence.create(
048                                    articleImageId);
049    
050                            articleImage.setGroupId(groupId);
051                            articleImage.setArticleId(articleId);
052                            articleImage.setVersion(version);
053                            articleImage.setElInstanceId(elInstanceId);
054                            articleImage.setElName(elName);
055                            articleImage.setLanguageId(languageId);
056                            articleImage.setTempImage(false);
057    
058                            journalArticleImagePersistence.update(articleImage);
059                    }
060                    else if (articleImage.getArticleImageId() != articleImageId) {
061                            throw new DuplicateArticleImageIdException(
062                                    "{articleImageId=" + articleImageId + "}");
063                    }
064            }
065    
066            @Override
067            public void deleteArticleImage(JournalArticleImage articleImage) {
068                    try {
069                            imageLocalService.deleteImage(articleImage.getArticleImageId());
070                    }
071                    catch (PortalException pe) {
072                            if (_log.isWarnEnabled()) {
073                                    _log.warn(
074                                            "Unable to delete image " +
075                                                    articleImage.getArticleImageId(),
076                                            pe);
077                            }
078                    }
079    
080                    journalArticleImagePersistence.remove(articleImage);
081            }
082    
083            @Override
084            public void deleteArticleImage(long articleImageId) {
085                    JournalArticleImage articleImage =
086                            journalArticleImagePersistence.fetchByPrimaryKey(articleImageId);
087    
088                    if (articleImage != null) {
089                            deleteArticleImage(articleImage);
090                    }
091            }
092    
093            @Override
094            public void deleteArticleImage(
095                    long groupId, String articleId, double version, String elInstanceId,
096                    String elName, String languageId) {
097    
098                    JournalArticleImage articleImage =
099                            journalArticleImagePersistence.fetchByG_A_V_E_E_L(
100                                    groupId, articleId, version, elInstanceId, elName, languageId);
101    
102                    if (articleImage != null) {
103                            deleteArticleImage(articleImage);
104                    }
105            }
106    
107            @Override
108            public void deleteImages(long groupId, String articleId, double version) {
109                    for (JournalArticleImage articleImage :
110                                    journalArticleImagePersistence.findByG_A_V(
111                                            groupId, articleId, version)) {
112    
113                            deleteArticleImage(articleImage);
114                    }
115            }
116    
117            @Override
118            public JournalArticleImage getArticleImage(long articleImageId)
119                    throws PortalException {
120    
121                    return journalArticleImagePersistence.findByPrimaryKey(articleImageId);
122            }
123    
124            @Override
125            public long getArticleImageId(
126                    long groupId, String articleId, double version, String elInstanceId,
127                    String elName, String languageId) {
128    
129                    return getArticleImageId(
130                            groupId, articleId, version, elInstanceId, elName, languageId,
131                            false);
132            }
133    
134            @Override
135            public long getArticleImageId(
136                    long groupId, String articleId, double version, String elInstanceId,
137                    String elName, String languageId, boolean tempImage) {
138    
139                    JournalArticleImage articleImage =
140                            journalArticleImagePersistence.fetchByG_A_V_E_E_L(
141                                    groupId, articleId, version, elInstanceId, elName, languageId);
142    
143                    if (articleImage == null) {
144                            long articleImageId = counterLocalService.increment();
145    
146                            articleImage = journalArticleImagePersistence.create(
147                                    articleImageId);
148    
149                            articleImage.setGroupId(groupId);
150                            articleImage.setArticleId(articleId);
151                            articleImage.setVersion(version);
152                            articleImage.setElInstanceId(elInstanceId);
153                            articleImage.setElName(elName);
154                            articleImage.setLanguageId(languageId);
155                            articleImage.setTempImage(tempImage);
156    
157                            journalArticleImagePersistence.update(articleImage);
158                    }
159    
160                    return articleImage.getArticleImageId();
161            }
162    
163            @Override
164            public List<JournalArticleImage> getArticleImages(long groupId) {
165                    return journalArticleImagePersistence.findByGroupId(groupId);
166            }
167    
168            @Override
169            public List<JournalArticleImage> getArticleImages(
170                    long groupId, String articleId, double version) {
171    
172                    return journalArticleImagePersistence.findByG_A_V(
173                            groupId, articleId, version);
174            }
175    
176            @Override
177            public int getArticleImagesCount(long groupId) {
178                    return journalArticleImagePersistence.countByGroupId(groupId);
179            }
180    
181            private static final Log _log = LogFactoryUtil.getLog(
182                    JournalArticleImageLocalServiceImpl.class);
183    
184    }