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