KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > james > imapserver > commands > ListArgument


1 /***********************************************************************
2  * Copyright (c) 2000-2004 The Apache Software Foundation. *
3  * All rights reserved. *
4  * ------------------------------------------------------------------- *
5  * Licensed under the Apache License, Version 2.0 (the "License"); you *
6  * may not use this file except in compliance with the License. You *
7  * may obtain a copy of the License at: *
8  * *
9  * http://www.apache.org/licenses/LICENSE-2.0 *
10  * *
11  * Unless required by applicable law or agreed to in writing, software *
12  * distributed under the License is distributed on an "AS IS" BASIS, *
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or *
14  * implied. See the License for the specific language governing *
15  * permissions and limitations under the License. *
16  ***********************************************************************/

17
18 package org.apache.james.imapserver.commands;
19
20 import java.util.StringTokenizer JavaDoc;
21 import java.util.ArrayList JavaDoc;
22 import java.util.List JavaDoc;
23
24 final class ListArgument implements ImapArgument
25 {
26     private String JavaDoc type;
27
28     public ListArgument( String JavaDoc type )
29     {
30         this.type = type;
31     }
32
33     public Object JavaDoc parse( StringTokenizer JavaDoc tokens ) throws Exception JavaDoc
34     {
35         // TODO: implement this properly.
36
String JavaDoc attr = tokens.nextToken();
37         List JavaDoc dataNames = new ArrayList JavaDoc();
38
39         if ( !attr.startsWith( "(" ) ) {
40             throw new Exception JavaDoc( "Missing '(': " );
41         }
42         else if ( attr.endsWith( ")" ) ) { //single attr in paranthesis
43
dataNames.add( attr.substring( 1, attr.length() - 1 ) );
44         }
45         else { // multiple attrs
46
dataNames.add( attr.substring( 1 ).trim() );
47             while ( tokens.hasMoreTokens() ) {
48                 attr = tokens.nextToken();
49                 if ( attr.endsWith( ")" ) ) {
50                     dataNames.add( attr.substring( 0, attr.length() - 1 ) );
51                 }
52                 else {
53                     dataNames.add( attr );
54                 }
55             }
56         }
57
58         return dataNames;
59     }
60
61     public String JavaDoc format()
62     {
63         return "( <" + this.type + ">+ )";
64     }
65 }
66
Popular Tags