Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright (c) 2010-2012 Oracle and/or its affiliates. All rights reserved.
   *
   * The contents of this file are subject to the terms of either the GNU
   * General Public License Version 2 only ("GPL") or the Common Development
   * and Distribution License("CDDL") (collectively, the "License").  You
   * may not use this file except in compliance with the License.  You can
  * obtain a copy of the License at
  * http://glassfish.java.net/public/CDDL+GPL_1_1.html
  * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
  * file and include the License file at packager/legal/LICENSE.txt.
  *
  * GPL Classpath Exception:
  * Oracle designates this particular file as subject to the "Classpath"
  * exception as provided by Oracle in the GPL Version 2 section of the License
  * file that accompanied this code.
  *
  * Modifications:
  * If applicable, add the following below the License Header, with the fields
  * enclosed by brackets [] replaced by your own identifying information:
  * "Portions Copyright [year] [name of copyright owner]"
  *
  * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
  * Version 2] license."  If you don't indicate a single choice of license, a
  * recipient has the option to distribute your version of this file under
  * either the CDDL, the GPL Version 2 or to extend the choice of license to
  * its licensees as provided above.  However, if you add GPL Version 2 code
  * and therefore, elected the GPL Version 2 license, then the option applies
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
 
 package com.sun.jersey.core.header;
 
 import java.util.Date;
 import java.util.Map;
 
A content disposition header.

Author(s):
Paul.Sandoz@Sun.Com
imran@smartitengineering.com
 
 public class ContentDisposition {
     private String type;
 
     private Map<StringStringparameters;
 
     private String fileName;
 
     private Date creationDate;
 
     private Date modificationDate;
 
     private Date readDate;
 
     private long size;
 
     protected ContentDisposition(String typeString fileName,
             Date creationDateDate modificationDateDate readDate,
             long size) {
         this. = type;
         this. = fileName;
         this. = creationDate;
         this. = modificationDate;
         this. = readDate;
         this. = size;
     }
 
     public ContentDisposition(String headerthrows ParseException {
         this(headerfalse);
     }
 
     public ContentDisposition(String headerboolean fileNameFixthrows ParseException {
         this(HttpHeaderReader.newInstance(header), fileNameFix);
     }
 
     public ContentDisposition(HttpHeaderReader readerthrows ParseException {
         this(readerfalse);
     }
 
     public ContentDisposition(HttpHeaderReader readerboolean fileNameFixthrows ParseException {
         reader.hasNext();
 
          = reader.nextToken();
 
         if (reader.hasNext()) {
             = HttpHeaderReader.readParameters(readerfileNameFix);
        }
         =  == null ? Collections.<StringString>emptyMap()
                : Collections.unmodifiableMap();
        createParameters();
    }

    
Get the type.

Returns:
the type
    public String getType() {
        return ;
    }

    
Get the parameters.

Returns:
the parameters
    public Map<StringStringgetParameters() {
        return ;
    }

    
Get the filename parameter.

Returns:
the size
    public String getFileName() {
        return ;
    }

    
Get the creation-date parameter.

Returns:
the creationDate
    public Date getCreationDate() {
        return ;
    }

    
Get the modification-date parameter.

Returns:
the modificationDate
    public Date getModificationDate() {
        return ;
    }

    
Get the read-date parameter.

Returns:
the readDate
    public Date getReadDate() {
        return ;
    }

    
Get the size parameter.

Returns:
the size
    public long getSize() {
        return ;
    }

    
Convert the disposition to a "Content-Disposition" header value.

Returns:
the "Content-Disposition" value.
    @Override
    public String toString() {
        return toStringBuffer().toString();
    }
    protected StringBuilder toStringBuffer() {
        StringBuilder sb = new StringBuilder();
        sb.append();
        addStringParameter(sb"filename");
        addDateParameter(sb"creation-date");
        addDateParameter(sb"modification-date");
        addDateParameter(sb"read-date");
        addLongParameter(sb"size");
        return sb;
    }
    protected void addStringParameter(StringBuilder sbString nameString p) {
        if (p != null)
            sb.append("; ").append(name).append("=\"").append(p).append("\"");
    }
    protected void addDateParameter(StringBuilder sbString nameDate p) {
        if (p != null)
            sb.append("; ").append(name).append("=\"").append(HttpDateFormat.getPreferedDateFormat().format(p)).append("\"");
    }
    protected void addLongParameter(StringBuilder sbString nameLong p) {
        if (p != -1)
            sb.append("; ").append(name).append('=').append(Long.toString(p));
    }
    private void createParameters() throws ParseException {
         = .get("filename");
         = createDate("creation-date");
         = createDate("modification-date");
         = createDate("read-date");
         = createLong("size");
    }
    private Date createDate(String namethrows ParseException {
        String value = .get(name);
        if (value == null)
            return null;
        return HttpDateFormat.getPreferedDateFormat().parse(value);
    }
    private long createLong(String namethrows ParseException {
        String value = .get(name);
        if (value == null)
            return -1;
        try {
            return Long.valueOf(value);
        } catch (NumberFormatException e) {
            throw new ParseException("Error parsing size parameter of value, " + value, 0);
        }
    }

    
Start building content disposition.

Parameters:
type the disposition typr.
Returns:
the content disposition builder.
    public static ContentDispositionBuilder type(String type) {
        return new ContentDispositionBuilder(type);
    }

    
Builder to build content disposition.

Parameters:
<T> the builder type.
<V> the content disposition type.
    public static class ContentDispositionBuilder<T extends ContentDispositionBuilder, V extends ContentDisposition> {
        protected String type;
        protected String fileName;
        protected Date creationDate;
        protected Date modificationDate;
        protected Date readDate;
        protected long size = -1;
        ContentDispositionBuilder(String type) {
            this. = type;
        }

        
Add the "file-name" parameter.

Parameters:
fileName the "file-name" parameter. If null the value is removed
Returns:
this builder.
        public T fileName(String fileName) {
            this. = fileName;
            return (T)this;
        }

        
Add the "creation-date" parameter.

Parameters:
creationDate the "creation-date" parameter. If null the value is removed
Returns:
this builder.
        public T creationDate(Date creationDate) {
            this. = creationDate;
            return (T)this;
        }

        
Add the "modification-date" parameter.

Parameters:
modificationDate the "modification-date" parameter. If null the value is removed
Returns:
this builder.
        public T modificationDate(Date modificationDate) {
            this. = modificationDate;
            return (T)this;
        }

        
Add the "read-date" parameter.

Parameters:
readDate the "read-date" parameter. If null the value is removed
Returns:
this builder.
        public T readDate(Date readDate) {
            this. = readDate;
            return (T)this;
        }

        
Add the "size" parameter.

Parameters:
size the "size" parameter. If -1 the value is removed.
Returns:
this builder.
        public T size(long size) {
            this. = size;
            return (T)this;
        }

        
Build the content disposition.

Returns:
the content disposition.
        public V build() {
            return (V)cd;
        }
    }
New to GrepCode? Check out our FAQ X