001 /*
002 * Copyright 2010 the original author or authors.
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 */
016 package com.hs.mail.imap.message;
017
018 import javax.mail.FetchProfile;
019
020 /**
021 *
022 * @author Won Chul Doh
023 * @since Jan 29, 2010
024 *
025 */
026 public class BodyFetchItem extends FetchProfile.Item {
027
028 public static final int HEADER_FIELDS_NOT = 0;
029 public static final int HEADER_FIELDS = 1;
030 public static final int HEADER = 2;
031 /**
032 * Text body of the message, omitting the [RFC-2822] header
033 */
034 public static final int TEXT = 3;
035 /**
036 * [RFC-2045] header for the part
037 */
038 public static final int MIME = 4;
039 /**
040 * Entire message including the header
041 */
042 public static final int CONTENT = 5;
043
044 private String name;
045 private boolean peek; // BODY.PEEK when fetching contents?
046 private int sectionType = CONTENT;
047 private String[] headers;
048 private int[] path;
049 private long firstOctet = -1;
050 private long numberOfOctets = -1;
051
052 public BodyFetchItem(String name, boolean peek) {
053 super(name);
054 setName(name);
055 this.setPeek(peek);
056 }
057
058 public BodyFetchItem(String name, boolean peek, int sectionType) {
059 this(name, peek);
060 setSectionType(sectionType);
061 }
062
063 public String getName() {
064 return name;
065 }
066
067 public void setName(String name) {
068 this.name = name;
069 }
070
071 public void setPeek(boolean peek) {
072 this.peek = peek;
073 }
074
075 public boolean isPeek() {
076 return peek;
077 }
078
079 public void setSectionType(int sectionType) {
080 this.sectionType = sectionType;
081 }
082
083 public int getSectionType() {
084 return sectionType;
085 }
086
087 public void setHeaders(String[] headers) {
088 this.headers = headers;
089 }
090
091 public String[] getHeaders() {
092 return headers;
093 }
094
095 private void ensureSpaceForOneInPath() {
096 if (path == null) {
097 path = new int[1];
098 } else {
099 int length = path.length;
100 int[] newPath = new int[length + 1];
101 System.arraycopy(path, 0, newPath, 0, length);
102 path = newPath;
103 }
104 }
105
106 public void addPath(int part) {
107 ensureSpaceForOneInPath();
108 path[path.length - 1] = part;
109 }
110
111 public int[] getPath() {
112 return path;
113 }
114
115 public void setFirstOctet(long firstOctet) {
116 this.firstOctet = firstOctet;
117 }
118
119 public long getFirstOctet() {
120 return firstOctet;
121 }
122
123 public void setNumberOfOctets(long numberOfOctets) {
124 this.numberOfOctets = numberOfOctets;
125 }
126
127 public long getNumberOfOctets() {
128 return numberOfOctets;
129 }
130
131 }