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.portlet.journal.model;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.kernel.exception.SystemException;
019    import com.liferay.portal.kernel.log.Log;
020    import com.liferay.portal.kernel.log.LogFactoryUtil;
021    import com.liferay.portal.kernel.util.FileUtil;
022    import com.liferay.portal.kernel.util.StringBundler;
023    import com.liferay.portal.kernel.util.Validator;
024    import com.liferay.portal.model.Image;
025    import com.liferay.portal.service.ImageLocalServiceUtil;
026    import com.liferay.portal.service.ServiceContext;
027    import com.liferay.portal.util.PortalUtil;
028    import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
029    import com.liferay.portlet.dynamicdatamapping.model.DDMTemplate;
030    import com.liferay.portlet.dynamicdatamapping.service.DDMStructureLocalServiceUtil;
031    import com.liferay.portlet.expando.model.ExpandoBridge;
032    
033    import java.io.File;
034    import java.io.Serializable;
035    
036    import java.util.Date;
037    import java.util.HashMap;
038    import java.util.Locale;
039    import java.util.Map;
040    
041    /**
042     * @author Marcellus Tavares
043     */
044    public class JournalTemplateAdapter implements JournalTemplate {
045    
046            public JournalTemplateAdapter(DDMTemplate ddmTemplate) {
047                    _ddmTemplate = ddmTemplate;
048            }
049    
050            @Override
051            public Object clone() {
052                    JournalTemplateAdapter journalTemplateAdapter =
053                            new JournalTemplateAdapter();
054    
055                    journalTemplateAdapter.setUuid(getUuid());
056                    journalTemplateAdapter.setId(getId());
057                    journalTemplateAdapter.setGroupId(getGroupId());
058                    journalTemplateAdapter.setCompanyId(getCompanyId());
059                    journalTemplateAdapter.setUserId(getUserId());
060                    journalTemplateAdapter.setUserName(getUserName());
061                    journalTemplateAdapter.setCreateDate(getCreateDate());
062                    journalTemplateAdapter.setModifiedDate(getModifiedDate());
063                    journalTemplateAdapter.setTemplateId(getTemplateId());
064                    journalTemplateAdapter.setStructureId(getStructureId());
065                    journalTemplateAdapter.setName(getName());
066                    journalTemplateAdapter.setDescription(getDescription());
067                    journalTemplateAdapter.setXsl(getXsl());
068                    journalTemplateAdapter.setLangType(getLangType());
069                    journalTemplateAdapter.setCacheable(getCacheable());
070                    journalTemplateAdapter.setSmallImage(getSmallImage());
071                    journalTemplateAdapter.setSmallImageId(getSmallImageId());
072                    journalTemplateAdapter.setSmallImageURL(getSmallImageURL());
073    
074                    return journalTemplateAdapter;
075            }
076    
077            @Override
078            public int compareTo(JournalTemplate journalTemplate) {
079                    String templateId = getTemplateId();
080    
081                    int value = templateId.compareTo(journalTemplate.getTemplateId());
082    
083                    if (value != 0) {
084                            return value;
085                    }
086    
087                    return 0;
088            }
089    
090            @Override
091            public boolean equals(Object obj) {
092                    if (this == obj) {
093                            return true;
094                    }
095    
096                    if (!(obj instanceof JournalTemplate)) {
097                            return false;
098                    }
099    
100                    JournalTemplate journalTemplate = (JournalTemplate)obj;
101    
102                    if (Validator.equals(getId(), journalTemplate.getId())) {
103                            return true;
104                    }
105    
106                    return false;
107            }
108    
109            @Override
110            public boolean getCacheable() {
111                    return _ddmTemplate.getCacheable();
112            }
113    
114            @Override
115            public long getCompanyId() {
116                    return _ddmTemplate.getCompanyId();
117            }
118    
119            @Override
120            public Date getCreateDate() {
121                    return _ddmTemplate.getCreateDate();
122            }
123    
124            @Override
125            public String getDescription() {
126                    return _ddmTemplate.getDescription();
127            }
128    
129            @Override
130            public String getDescription(Locale locale) {
131                    return _ddmTemplate.getDescription(locale);
132            }
133    
134            @Override
135            public String getDescription(Locale locale, boolean useDefault) {
136                    return _ddmTemplate.getDescription(locale, useDefault);
137            }
138    
139            @Override
140            public String getDescription(String languageId) {
141                    return _ddmTemplate.getDescription(languageId);
142            }
143    
144            @Override
145            public String getDescription(String languageId, boolean useDefault) {
146                    return _ddmTemplate.getDescription(languageId, useDefault);
147            }
148    
149            @Override
150            public Map<Locale, String> getDescriptionMap() {
151                    return _ddmTemplate.getDescriptionMap();
152            }
153    
154            @Override
155            public ExpandoBridge getExpandoBridge() {
156                    return _ddmTemplate.getExpandoBridge();
157            }
158    
159            @Override
160            public long getGroupId() {
161                    return _ddmTemplate.getGroupId();
162            }
163    
164            @Override
165            public long getId() {
166                    return _ddmTemplate.getTemplateId();
167            }
168    
169            @Override
170            public String getLangType() {
171                    return _ddmTemplate.getLanguage();
172            }
173    
174            @Override
175            public Map<String, Object> getModelAttributes() {
176                    Map<String, Object> attributes = new HashMap<String, Object>();
177    
178                    attributes.put("uuid", getUuid());
179                    attributes.put("id", getId());
180                    attributes.put("groupId", getGroupId());
181                    attributes.put("companyId", getCompanyId());
182                    attributes.put("userId", getUserId());
183                    attributes.put("userName", getUserName());
184                    attributes.put("createDate", getCreateDate());
185                    attributes.put("modifiedDate", getModifiedDate());
186                    attributes.put("templateId", getTemplateId());
187                    attributes.put("structureId", getStructureId());
188                    attributes.put("name", getName());
189                    attributes.put("description", getDescription());
190                    attributes.put("xsl", getXsl());
191                    attributes.put("langType", getLangType());
192                    attributes.put("cacheable", getCacheable());
193                    attributes.put("smallImage", getSmallImage());
194                    attributes.put("smallImageId", getSmallImageId());
195                    attributes.put("smallImageURL", getSmallImageURL());
196    
197                    return attributes;
198            }
199    
200            @Override
201            public Class<?> getModelClass() {
202                    return JournalTemplate.class;
203            }
204    
205            @Override
206            public String getModelClassName() {
207                    return JournalTemplate.class.getName();
208            }
209    
210            @Override
211            public Date getModifiedDate() {
212                    return _ddmTemplate.getModifiedDate();
213            }
214    
215            @Override
216            public String getName() {
217                    return _ddmTemplate.getName();
218            }
219    
220            @Override
221            public String getName(Locale locale) {
222                    return _ddmTemplate.getName(locale);
223            }
224    
225            @Override
226            public String getName(Locale locale, boolean useDefault) {
227                    return _ddmTemplate.getName(locale, useDefault);
228            }
229    
230            @Override
231            public String getName(String languageId) {
232                    return _ddmTemplate.getName(languageId);
233            }
234    
235            @Override
236            public String getName(String languageId, boolean useDefault) {
237                    return _ddmTemplate.getName(languageId, useDefault);
238            }
239    
240            @Override
241            public Map<Locale, String> getNameMap() {
242                    return _ddmTemplate.getNameMap();
243            }
244    
245            @Override
246            public long getPrimaryKey() {
247                    return _ddmTemplate.getPrimaryKey();
248            }
249    
250            @Override
251            public Serializable getPrimaryKeyObj() {
252                    return _ddmTemplate.getPrimaryKeyObj();
253            }
254    
255            @Override
256            public boolean getSmallImage() {
257                    return _ddmTemplate.getSmallImage();
258            }
259    
260            @Override
261            public File getSmallImageFile() throws PortalException, SystemException {
262                    if (_smallImageFile == null) {
263                            Image smallImage = fetchSmallImage();
264    
265                            if (smallImage != null) {
266                                    _smallImageFile = getSmallImageFile(smallImage.getTextObj());
267                            }
268                    }
269    
270                    return _smallImageFile;
271            }
272    
273            @Override
274            public long getSmallImageId() {
275                    return _ddmTemplate.getSmallImageId();
276            }
277    
278            @Override
279            public String getSmallImageType() throws PortalException, SystemException {
280                    if (_smallImageType == null) {
281                            Image smallImage = fetchSmallImage();
282    
283                            if (smallImage != null) {
284                                    _smallImageType = smallImage.getType();
285                            }
286                    }
287    
288                    return _smallImageType;
289            }
290    
291            @Override
292            public String getSmallImageURL() {
293                    return _ddmTemplate.getSmallImageURL();
294            }
295    
296            @Override
297            public String getStructureId() {
298                    if (_ddmTemplate.getClassPK() == 0) {
299                            return null;
300                    }
301    
302                    try {
303                            DDMStructure ddmStructure =
304                                    DDMStructureLocalServiceUtil.getStructure(
305                                            _ddmTemplate.getClassPK());
306    
307                            return ddmStructure.getStructureKey();
308                    }
309                    catch (Exception e) {
310                            _log.error(e, e);
311                    }
312    
313                    return null;
314            }
315    
316            @Override
317            public String getTemplateId() {
318                    return _ddmTemplate.getTemplateKey();
319            }
320    
321            @Override
322            public long getUserId() {
323                    return _ddmTemplate.getUserId();
324            }
325    
326            @Override
327            public String getUserName() {
328                    return _ddmTemplate.getUserName();
329            }
330    
331            @Override
332            public String getUserUuid() throws SystemException {
333                    return _ddmTemplate.getUserUuid();
334            }
335    
336            @Override
337            public String getUuid() {
338                    return _ddmTemplate.getUuid();
339            }
340    
341            @Override
342            public String getXsl() {
343                    return _ddmTemplate.getScript();
344            }
345    
346            @Override
347            public int hashCode() {
348                    return (int)getPrimaryKey();
349            }
350    
351            @Override
352            public boolean isCacheable() {
353                    return _ddmTemplate.isCacheable();
354            }
355    
356            @Override
357            public boolean isNew() {
358                    return _ddmTemplate.isNew();
359            }
360    
361            @Override
362            public boolean isSmallImage() {
363                    return _ddmTemplate.isSmallImage();
364            }
365    
366            @Override
367            public void setCacheable(boolean cacheable) {
368                    _ddmTemplate.setCacheable(cacheable);
369            }
370    
371            @Override
372            public void setCompanyId(long companyId) {
373                    _ddmTemplate.setCompanyId(companyId);
374            }
375    
376            @Override
377            public void setCreateDate(Date createDate) {
378                    _ddmTemplate.setCreateDate(createDate);
379            }
380    
381            @Override
382            public void setDescription(String description) {
383                    _ddmTemplate.setDescription(description);
384            }
385    
386            @Override
387            public void setDescription(String description, Locale locale) {
388                    _ddmTemplate.setDescription(description, locale);
389            }
390    
391            @Override
392            public void setDescription(
393                    String description, Locale locale, Locale defaultLocale) {
394    
395                    _ddmTemplate.setDescription(description, locale, defaultLocale);
396            }
397    
398            @Override
399            public void setDescriptionMap(Map<Locale, String> descriptionMap) {
400                    _ddmTemplate.setDescriptionMap(descriptionMap);
401            }
402    
403            @Override
404            public void setDescriptionMap(
405                    Map<Locale, String> descriptionMap, Locale defaultLocale) {
406    
407                    _ddmTemplate.setDescriptionMap(descriptionMap, defaultLocale);
408            }
409    
410            @Override
411            public void setExpandoBridgeAttributes(ExpandoBridge expandoBridge) {
412                    _ddmTemplate.setExpandoBridgeAttributes(expandoBridge);
413            }
414    
415            @Override
416            public void setExpandoBridgeAttributes(JournalTemplate journalTemplate) {
417                    ExpandoBridge expandoBridge = getExpandoBridge();
418    
419                    ExpandoBridge journalTemplateExpandoBridge =
420                            journalTemplate.getExpandoBridge();
421    
422                    expandoBridge.setAttributes(
423                            journalTemplateExpandoBridge.getAttributes());
424            }
425    
426            @Override
427            public void setExpandoBridgeAttributes(ServiceContext serviceContext) {
428                    _ddmTemplate.setExpandoBridgeAttributes(serviceContext);
429            }
430    
431            @Override
432            public void setGroupId(long groupId) {
433                    _ddmTemplate.setGroupId(groupId);
434            }
435    
436            @Override
437            public void setId(long id) {
438                    _ddmTemplate.setTemplateId(id);
439            }
440    
441            @Override
442            public void setLangType(String langType) {
443                    _ddmTemplate.setLanguage(langType);
444            }
445    
446            @Override
447            public void setModelAttributes(Map<String, Object> attributes) {
448                    String uuid = (String)attributes.get("uuid");
449    
450                    if (uuid != null) {
451                            setUuid(uuid);
452                    }
453    
454                    Long id = (Long)attributes.get("id");
455    
456                    if (id != null) {
457                            setId(id);
458                    }
459    
460                    Long groupId = (Long)attributes.get("groupId");
461    
462                    if (groupId != null) {
463                            setGroupId(groupId);
464                    }
465    
466                    Long companyId = (Long)attributes.get("companyId");
467    
468                    if (companyId != null) {
469                            setCompanyId(companyId);
470                    }
471    
472                    Long userId = (Long)attributes.get("userId");
473    
474                    if (userId != null) {
475                            setUserId(userId);
476                    }
477    
478                    String userName = (String)attributes.get("userName");
479    
480                    if (userName != null) {
481                            setUserName(userName);
482                    }
483    
484                    Date createDate = (Date)attributes.get("createDate");
485    
486                    if (createDate != null) {
487                            setCreateDate(createDate);
488                    }
489    
490                    Date modifiedDate = (Date)attributes.get("modifiedDate");
491    
492                    if (modifiedDate != null) {
493                            setModifiedDate(modifiedDate);
494                    }
495    
496                    String templateId = (String)attributes.get("templateId");
497    
498                    if (templateId != null) {
499                            setTemplateId(templateId);
500                    }
501    
502                    String structureId = (String)attributes.get("structureId");
503    
504                    if (structureId != null) {
505                            setStructureId(structureId);
506                    }
507    
508                    String name = (String)attributes.get("name");
509    
510                    if (name != null) {
511                            setName(name);
512                    }
513    
514                    String description = (String)attributes.get("description");
515    
516                    if (description != null) {
517                            setDescription(description);
518                    }
519    
520                    String xsl = (String)attributes.get("xsl");
521    
522                    if (xsl != null) {
523                            setXsl(xsl);
524                    }
525    
526                    String langType = (String)attributes.get("langType");
527    
528                    if (langType != null) {
529                            setLangType(langType);
530                    }
531    
532                    Boolean cacheable = (Boolean)attributes.get("cacheable");
533    
534                    if (cacheable != null) {
535                            setCacheable(cacheable);
536                    }
537    
538                    Boolean smallImage = (Boolean)attributes.get("smallImage");
539    
540                    if (smallImage != null) {
541                            setSmallImage(smallImage);
542                    }
543    
544                    Long smallImageId = (Long)attributes.get("smallImageId");
545    
546                    if (smallImageId != null) {
547                            setSmallImageId(smallImageId);
548                    }
549    
550                    String smallImageURL = (String)attributes.get("smallImageURL");
551    
552                    if (smallImageURL != null) {
553                            setSmallImageURL(smallImageURL);
554                    }
555            }
556    
557            @Override
558            public void setModifiedDate(Date modifiedDate) {
559                    _ddmTemplate.setModifiedDate(modifiedDate);
560            }
561    
562            @Override
563            public void setName(String name) {
564                    _ddmTemplate.setName(name);
565            }
566    
567            @Override
568            public void setName(String name, Locale locale) {
569                    _ddmTemplate.setName(name, locale);
570            }
571    
572            @Override
573            public void setName(String name, Locale locale, Locale defaultLocale) {
574                    _ddmTemplate.setName(name, locale, defaultLocale);
575            }
576    
577            @Override
578            public void setNameMap(Map<Locale, String> nameMap) {
579                    _ddmTemplate.setNameMap(nameMap);
580            }
581    
582            @Override
583            public void setNameMap(Map<Locale, String> nameMap, Locale defaultLocale) {
584                    _ddmTemplate.setNameMap(nameMap, defaultLocale);
585            }
586    
587            @Override
588            public void setNew(boolean n) {
589                    _ddmTemplate.setNew(n);
590            }
591    
592            @Override
593            public void setPrimaryKey(long primaryKey) {
594                    _ddmTemplate.setPrimaryKey(primaryKey);
595            }
596    
597            @Override
598            public void setPrimaryKeyObj(Serializable primaryKeyObj) {
599                    _ddmTemplate.setPrimaryKeyObj(primaryKeyObj);
600            }
601    
602            @Override
603            public void setSmallImage(boolean smallImage) {
604                    _ddmTemplate.setSmallImage(smallImage);
605            }
606    
607            @Override
608            public void setSmallImageId(long smallImageId) {
609                    _ddmTemplate.setSmallImageId(smallImageId);
610            }
611    
612            @Override
613            public void setSmallImageType(String smallImageType) {
614                    _smallImageType = smallImageType;
615            }
616    
617            @Override
618            public void setSmallImageURL(String smallImageURL) {
619                    _ddmTemplate.setSmallImageURL(smallImageURL);
620            }
621    
622            @Override
623            public void setStructureId(String structureId) {
624                    if (Validator.isNull(structureId)) {
625                            _ddmTemplate.setClassPK(0);
626    
627                            return;
628                    }
629    
630                    try {
631                            DDMStructure ddmStructure =
632                                    DDMStructureLocalServiceUtil.getStructure(
633                                            getGroupId(),
634                                            PortalUtil.getClassNameId(JournalArticle.class),
635                                            structureId, true);
636    
637                            _ddmTemplate.setClassPK(ddmStructure.getPrimaryKey());
638                    }
639                    catch (Exception e) {
640                            _log.error(e, e);
641                    }
642            }
643    
644            @Override
645            public void setTemplateId(String templateId) {
646                    _ddmTemplate.setTemplateKey(templateId);
647            }
648    
649            @Override
650            public void setUserId(long userId) {
651                    _ddmTemplate.setUserId(userId);
652            }
653    
654            @Override
655            public void setUserName(String userName) {
656                    _ddmTemplate.setUserName(userName);
657            }
658    
659            @Override
660            public void setUserUuid(String userUuid) {
661                    _ddmTemplate.setUserUuid(userUuid);
662            }
663    
664            @Override
665            public void setUuid(String uuid) {
666                    _ddmTemplate.setUuid(uuid);
667            }
668    
669            @Override
670            public void setXsl(String xsl) {
671                    _ddmTemplate.setScript(xsl);
672            }
673    
674            @Override
675            public String toString() {
676                    StringBundler sb = new StringBundler(37);
677    
678                    sb.append("{uuid=");
679                    sb.append(getUuid());
680                    sb.append(", id=");
681                    sb.append(getId());
682                    sb.append(", groupId=");
683                    sb.append(getGroupId());
684                    sb.append(", companyId=");
685                    sb.append(getCompanyId());
686                    sb.append(", userId=");
687                    sb.append(getUserId());
688                    sb.append(", userName=");
689                    sb.append(getUserName());
690                    sb.append(", createDate=");
691                    sb.append(getCreateDate());
692                    sb.append(", modifiedDate=");
693                    sb.append(getModifiedDate());
694                    sb.append(", templateId=");
695                    sb.append(getTemplateId());
696                    sb.append(", structureId=");
697                    sb.append(getStructureId());
698                    sb.append(", name=");
699                    sb.append(getName());
700                    sb.append(", description=");
701                    sb.append(getDescription());
702                    sb.append(", xsl=");
703                    sb.append(getXsl());
704                    sb.append(", langType=");
705                    sb.append(getLangType());
706                    sb.append(", cacheable=");
707                    sb.append(getCacheable());
708                    sb.append(", smallImage=");
709                    sb.append(getSmallImage());
710                    sb.append(", smallImageId=");
711                    sb.append(getSmallImageId());
712                    sb.append(", smallImageURL=");
713                    sb.append(getSmallImageURL());
714                    sb.append("}");
715    
716                    return sb.toString();
717            }
718    
719            protected Image fetchSmallImage() throws PortalException, SystemException {
720                    if (isSmallImage()) {
721                            return ImageLocalServiceUtil.getImage(getSmallImageId());
722                    }
723    
724                    return null;
725            }
726    
727            protected File getSmallImageFile(byte[] bytes) {
728                    try {
729                            return FileUtil.createTempFile(bytes);
730                    }
731                    catch (Exception e) {
732                            _log.error(e, e);
733                    }
734    
735                    return null;
736            }
737    
738            private JournalTemplateAdapter() {
739            }
740    
741            private static Log _log = LogFactoryUtil.getLog(
742                    JournalTemplateAdapter.class);
743    
744            private DDMTemplate _ddmTemplate;
745            private File _smallImageFile;
746            private String _smallImageType;
747    
748    }