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