001/*
002 *  Copyright 2013 Anyware Services
003 *
004 *  Licensed under the Apache License, Version 2.0 (the "License");
005 *  you may not use this file except in compliance with the License.
006 *  You may obtain a copy of the License at
007 *
008 *      http://www.apache.org/licenses/LICENSE-2.0
009 *
010 *  Unless required by applicable law or agreed to in writing, software
011 *  distributed under the License is distributed on an "AS IS" BASIS,
012 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *  See the License for the specific language governing permissions and
014 *  limitations under the License.
015 */
016package org.ametys.plugins.cart;
017
018import java.util.Collections;
019import java.util.Date;
020import java.util.List;
021
022import org.ametys.core.user.UserIdentity;
023import org.ametys.plugins.explorer.resources.Resource;
024import org.ametys.runtime.i18n.I18nizableText;
025
026/**
027 * Implementation of a {@link CartElement} wrapping a {@link Resource}
028 *
029 */
030public class ResourceElement implements CartElement
031{
032    private Resource _resource;
033    
034    /**
035     * Constructor
036     * @param resource The resource
037     */
038    public ResourceElement (Resource resource)
039    {
040        _resource = resource;
041    }
042    
043    @Override
044    public String getId()
045    {
046        return _resource.getId();
047    }
048    
049    @Override
050    public I18nizableText getTitle()
051    {
052        return new I18nizableText(_resource.getName());
053    }
054
055    @Override
056    public I18nizableText getDescription()
057    {
058        return new I18nizableText(_resource.getName());
059    }
060    
061    @Override
062    public List<I18nizableText> getGroups()
063    {
064        return Collections.singletonList(new I18nizableText("plugin.cart", "PLUGINS_CART_UITOOL_CART_RESOURCES_GROUP"));
065    }
066    
067    @Override
068    public Date getLastModified()
069    {
070        return _resource.getLastModified();
071    }
072
073    @Override
074    public UserIdentity getLastContributor()
075    {
076        return _resource.getLastContributor();
077    }
078    
079    @Override
080    public String getType()
081    {
082        return "resource";
083    }
084    
085    @Override
086    public String getGlyphIcon()
087    {
088        int index = _resource.getName().lastIndexOf(".");
089        String extension = _resource.getName().substring(index + 1);
090        
091        switch (extension) 
092        {
093            case "css":
094                return "ametysicon-css5";
095            case "cvs":
096                return "ametysicon-file-extension-csv";
097            case "doc":
098                return "ametysicon-file-extension-doc";
099            case "docx":
100                return "ametysicon-file-extension-docx";
101            case "html":
102            case "htm":
103            case "xhtml":
104                return "ametysicon-file-extension-html";
105            case "png":
106            case "jpg":
107            case "jpeg":
108            case "bmp":
109            case "gif":
110                return "ametysicon-image2";
111            case "pdf":
112                return "ametysicon-pdf17";
113            case "ppt":
114                return "ametysicon-ppt";
115            case "pptx":
116                return "ametysicon-pptx";
117            case "txt":
118                return "ametysicon-txt";
119            case "avi":
120            case "mov":
121            case "swf":
122            case "wmv":
123            case "flv":
124            case "mpeg":
125            case "mpg":
126                return "ametysicon-movie16";
127            case "xml":
128                return "ametysicon-xml6";
129            case "xls":
130                return "ametysicon-xls1";
131            case "xlsx":
132                return "ametysicon-xlsx";
133            case "zip":
134                return "ametysicon-zip6";
135            case "rar":
136            case "odp":
137                return "ametysicon-odp2";
138            case "odt":
139                return "ametysicon-odt5";
140            case "jar":
141                return "ametysicon-jar3";
142            case "pps":
143                return "ametysicon-pps2";
144            case "psd":
145                return "ametysicon-psd3";
146            case "tar":
147            case "tgz":
148                return "ametysicon-tar1";
149            case "mp3":
150            case "mod":
151            case "mid":
152                return "ametysicon-music168";
153            default:
154                return "ametysicon-question-mark1";
155        }
156    }
157    
158    @Override
159    public String getSmallIcon()
160    {
161        return null;
162    }
163
164    @Override
165    public String getMediumIcon()
166    {
167        return null;
168    }
169
170    /**
171     * Get the resource
172     * @return The resource
173     */
174    public Resource getResource()
175    {
176        return _resource;
177    }
178}