/*! * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright (c) 2002-2016 Pentaho Corporation.. All rights reserved. */ package org.pentaho.platform.util.web; import java.util.HashMap; import java.util.Map; public class MimeHelper { public static String MIMETYPE_XACTION = "text/xaction+xml"; //$NON-NLS-1$ private static final Map<String, String> mimes = new HashMap<String, String>(); private static final Map<String, String> extensions = new HashMap<String, String>(); private static final Map<String, String> defaultCharset = new HashMap<String, String>(); static { MimeHelper.mimes.put( "application/rtf", ".rtf" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "application/msword", ".doc" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "application/pdf", ".pdf" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "application/vnd.ms-excel", ".xls" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "application/vnd.ms-powerpoint", ".ppt" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "application/vnd.ms-project", ".mpp" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "application/zip", ".zip" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "audio/mpeg", ".mp3" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "audio/x-wav", ".wav" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "image/bmp", ".bmp" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "image/gif", ".gif" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "image/jpeg", ".jpg" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "image/png", ".png" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "image/svg+xml", ".svg" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "image/tiff", ".tif" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "text/csv", ".csv" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "text/html", ".html" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "text/plain", ".txt" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "video/mpeg", ".mpg" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "video/x-msvideo", ".avi" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "text/xaction+xml", ".xaction" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "text/css", ".css" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "text/javascript", ".js" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "text/xml", ".xml" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "application/x-shockwave-flash", ".swf" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", ".xlsx" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.mimes.put( "mime-message/text/html", ".eml" ); MimeHelper.extensions.put( ".rtf", "application/rtf" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".doc", "application/msword" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".pdf", "application/pdf" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".xls", "application/vnd.ms-excel" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".ppt", "application/vnd.ms-powerpoint" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".mpp", "application/vnd.ms-project" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".zip", "application/zip" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".mp3", "audio/mpeg" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".wav", "audio/x-wav" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".bmp", "image/bmp" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".gif", "image/gif" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".jpe", "image/jpeg" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".jpeg", "image/jpeg" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".jpg", "image/jpeg" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".png", "image/png" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".svg", "image/svg+xml" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".tif", "image/tiff" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".tiff", "image/tiff" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".csv", "text/csv" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".htm", "text/html" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".html", "text/html" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".txt", "text/plain" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".mpe", "video/mpeg" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".mpeg", "video/mpeg" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".mpg", "video/mpeg" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".avi", "video/x-msvideo" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".xaction", "text/xaction+xml" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".css", "text/css" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".js", "text/javascript" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".xml", "text/xml" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".swf", "application/x-shockwave-flash" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".properties", "text/plain" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.extensions.put( ".eml", "mime-message/text/html" ); MimeHelper.defaultCharset.put( "text/html", "UTF-8" ); //$NON-NLS-1$ //$NON-NLS-2$ MimeHelper.defaultCharset.put( "text/plain", "UTF-8" ); //$NON-NLS-1$ //$NON-NLS-2$ } public static String getExtension( final String mimeType ) { return MimeHelper.mimes.get( mimeType ); } public static String getMimeTypeFromExtension( final String extension ) { return MimeHelper.extensions.get( extension.toLowerCase() ); } public static String getMimeTypeFromFileName( final String fileName ) { int index = fileName.lastIndexOf( '.' ); if ( index == -1 ) { return null; } return MimeHelper.extensions.get( fileName.substring( index ) ); } public static String getDefaultCharset( final String mimeType ) { return MimeHelper.defaultCharset.get( mimeType ); } }