001    /**
002     * Copyright (c) 2000-2012 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.plugin;
016    
017    import com.liferay.portal.kernel.plugin.License;
018    import com.liferay.portal.kernel.plugin.PluginPackage;
019    import com.liferay.portal.kernel.plugin.RemotePluginPackageRepository;
020    import com.liferay.portal.kernel.plugin.Screenshot;
021    import com.liferay.portal.kernel.util.GetterUtil;
022    import com.liferay.portal.kernel.util.StringBundler;
023    import com.liferay.portal.kernel.util.StringPool;
024    import com.liferay.portal.kernel.util.Validator;
025    
026    import java.io.Serializable;
027    
028    import java.util.ArrayList;
029    import java.util.Date;
030    import java.util.List;
031    import java.util.Properties;
032    
033    import org.apache.commons.lang.builder.EqualsBuilder;
034    import org.apache.commons.lang.builder.HashCodeBuilder;
035    
036    /**
037     * @author Jorge Ferrer
038     */
039    public class PluginPackageImpl
040            implements Comparable<PluginPackage>, PluginPackage, Serializable {
041    
042            public static final String STATUS_ALL = "all";
043    
044            public static final String STATUS_INSTALLATION_IN_PROCESS =
045                    "installationInProcess";
046    
047            public static final String STATUS_NEWER_VERSION_INSTALLED =
048                    "newerVersionInstalled";
049    
050            public static final String STATUS_NOT_INSTALLED = "notInstalled";
051    
052            public static final String STATUS_NOT_INSTALLED_OR_OLDER_VERSION_INSTALLED =
053                    "notInstalledOrOlderVersionInstalled";
054    
055            public static final String STATUS_OLDER_VERSION_INSTALLED =
056                    "olderVersionInstalled";
057    
058            public static final String STATUS_SAME_VERSION_INSTALLED =
059                    "sameVersionInstalled";
060    
061            public PluginPackageImpl(String moduleId) {
062                    _moduleId = ModuleId.getInstance(moduleId);
063            }
064    
065            public int compareTo(PluginPackage pluginPackage) {
066                    return getName().compareTo(pluginPackage.getName());
067            }
068    
069            @Override
070            public boolean equals(Object obj) {
071                    if (!(obj instanceof PluginPackage)) {
072                            return false;
073                    }
074    
075                    PluginPackage pluginPackage = (PluginPackage)obj;
076    
077                    EqualsBuilder equalsBuilder = new EqualsBuilder();
078    
079                    equalsBuilder.append(getModuleId(), pluginPackage.getModuleId());
080                    equalsBuilder.append(
081                            getRepositoryURL(), pluginPackage.getRepositoryURL());
082    
083                    return equalsBuilder.isEquals();
084            }
085    
086            public String getArtifactId() {
087                    return _moduleId.getArtifactId();
088            }
089    
090            public String getArtifactURL() {
091                    return getRepositoryURL() + _moduleId.getArtifactPath();
092            }
093    
094            public String getAuthor() {
095                    return _author;
096            }
097    
098            public String getChangeLog() {
099                    return _changeLog;
100            }
101    
102            public String getContext() {
103                    return _context;
104            }
105    
106            public Properties getDeploymentSettings() {
107                    return _deploymentSettings;
108            }
109    
110            public String getDownloadURL() {
111                    String useDownloadURL = getRepository().getSettings().getProperty(
112                            RemotePluginPackageRepository.SETTING_USE_DOWNLOAD_URL);
113    
114                    if (!GetterUtil.getBoolean(useDownloadURL, true)) {
115                            return getArtifactURL();
116                    }
117    
118                    if (Validator.isNotNull(_downloadURL)) {
119                            return _downloadURL;
120                    }
121    
122                    return getArtifactURL();
123            }
124    
125            public String getGroupId() {
126                    return _moduleId.getGroupId();
127            }
128    
129            public List<License> getLicenses() {
130                    return _licenses;
131            }
132    
133            public List<String> getLiferayVersions() {
134                    return _liferayVersions;
135            }
136    
137            public String getLongDescription() {
138                    return _longDescription;
139            }
140    
141            public Date getModifiedDate() {
142                    return _modifiedDate;
143            }
144    
145            public String getModuleId() {
146                    return _moduleId.toString();
147            }
148    
149            public String getName() {
150                    return _name;
151            }
152    
153            public String getPackageId() {
154                    return _moduleId.getPackageId();
155            }
156    
157            public String getPageURL() {
158                    return _pageURL;
159            }
160    
161            public String getRecommendedDeploymentContext() {
162                    String context = _recommendedDeploymentContext;
163    
164                    if (Validator.isNull(context)) {
165                            context = _moduleId.getArtifactId();
166                    }
167    
168                    return context;
169            }
170    
171            public RemotePluginPackageRepository getRepository() {
172                    return _repository;
173            }
174    
175            public String getRepositoryURL() {
176                    if (_repository != null) {
177                            return _repository.getRepositoryURL();
178                    }
179                    else {
180                            return RemotePluginPackageRepository.LOCAL_URL;
181                    }
182            }
183    
184            public List<Screenshot> getScreenshots() {
185                    return _screenshots;
186            }
187    
188            public String getShortDescription() {
189                    return _shortDescription;
190            }
191    
192            public List<String> getTags() {
193                    return _tags;
194            }
195    
196            public List<String> getTypes() {
197                    return _types;
198            }
199    
200            public String getVersion() {
201                    return _moduleId.getVersion();
202            }
203    
204            @Override
205            public int hashCode() {
206                    HashCodeBuilder hashCodeBuilder = new HashCodeBuilder();
207    
208                    hashCodeBuilder.append(getModuleId());
209                    hashCodeBuilder.append(getRepositoryURL());
210    
211                    return hashCodeBuilder.hashCode();
212            }
213    
214            public boolean isLaterVersionThan(PluginPackage pluginPackage) {
215                    return _moduleId.isLaterVersionThan(pluginPackage.getVersion());
216            }
217    
218            public boolean isPreviousVersionThan(PluginPackage pluginPackage) {
219                    return _moduleId.isPreviousVersionThan(pluginPackage.getVersion());
220            }
221    
222            public boolean isSameVersionAs(PluginPackage pluginPackage) {
223                    return _moduleId.isSameVersionAs(pluginPackage.getVersion());
224            }
225    
226            public void setAuthor(String author) {
227                    _author = author;
228            }
229    
230            public void setChangeLog(String changeLog) {
231                    _changeLog = changeLog;
232            }
233    
234            public void setContext(String context) {
235                    _context = context;
236            }
237    
238            public void setDeploymentSettings(Properties deploymentSettings) {
239                    _deploymentSettings = deploymentSettings;
240            }
241    
242            public void setDownloadURL(String downloadURL) {
243                    _downloadURL = downloadURL;
244            }
245    
246            public void setLicenses(List<License> licenses) {
247                    _licenses = licenses;
248            }
249    
250            public void setLiferayVersions(List<String> liferayVersions) {
251                    _liferayVersions = liferayVersions;
252            }
253    
254            public void setLongDescription(String longDescription) {
255                    _longDescription = longDescription;
256            }
257    
258            public void setModifiedDate(Date modifiedDate) {
259                    _modifiedDate = modifiedDate;
260            }
261    
262            public void setName(String name) {
263                    _name = name;
264            }
265    
266            public void setPageURL(String pageURL) {
267                    _pageURL = pageURL;
268            }
269    
270            public void setRecommendedDeploymentContext(
271                    String recommendedDeploymentContext) {
272    
273                    _recommendedDeploymentContext = recommendedDeploymentContext;
274            }
275    
276            public void setRepository(RemotePluginPackageRepository repository) {
277                    _repository = repository;
278            }
279    
280            public void setScreenshots(List<Screenshot> screenshots) {
281                    _screenshots = screenshots;
282            }
283    
284            public void setShortDescription(String shortDescription) {
285                    _shortDescription = shortDescription;
286            }
287    
288            public void setTags(List<String> tags) {
289                    _tags = tags;
290            }
291    
292            public void setTypes(List<String> types) {
293                    _types = types;
294            }
295    
296            @Override
297            public String toString() {
298                    StringBundler sb = new StringBundler(4);
299    
300                    sb.append(StringPool.SLASH);
301                    sb.append(_context);
302                    sb.append(StringPool.COLON);
303                    sb.append(_moduleId);
304    
305                    return sb.toString();
306            }
307    
308            private String _author;
309            private String _changeLog = StringPool.BLANK;
310            private String _context;
311            private Properties _deploymentSettings;
312            private String _downloadURL;
313            private List<License> _licenses = new ArrayList<License>();
314            private List<String> _liferayVersions = new ArrayList<String>();
315            private String _longDescription = StringPool.BLANK;
316            private Date _modifiedDate;
317            private ModuleId _moduleId;
318            private String _name;
319            private String _pageURL;
320            private String _recommendedDeploymentContext;
321            private RemotePluginPackageRepository _repository;
322            private List<Screenshot> _screenshots = new ArrayList<Screenshot>();
323            private String _shortDescription = StringPool.BLANK;
324            private List<String> _tags = new ArrayList<String>();
325            private List<String> _types = new ArrayList<String>();
326    
327    }