KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > xquark > xquery > typing > PrimeList


1 /*
2  * This file belongs to the XQuark distribution.
3  * Copyright (C) 2003 XQuark Group.
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307.
18  * You can also get it at http://www.gnu.org/licenses/lgpl.html
19  *
20  * For more information on this software, see http://www.xquark.org.
21  */

22
23 package org.xquark.xquery.typing;
24
25 import java.util.ArrayList JavaDoc;
26 import java.util.List JavaDoc;
27
28 public class PrimeList extends ArrayList JavaDoc {
29
30     public PrimeList() {
31         super();
32     }
33     
34     public void add(QType qtype) {
35         if (qtype == null)
36             return;
37         List JavaDoc list = qtype.getList();
38         if (list != null) {
39             addAll(list);
40             return;
41         }
42         byte occ = qtype.getOccurence();
43         boolean toBeAdded = true;
44         for (int i=0;i<size();i++) {
45             QType qtypei = (QType) get(i);
46             if (!qtypei.equals(qtype))
47                 continue;
48             byte occi = qtypei.getOccurence();
49             if (occi == QType.OCC_0_N || occi == occ || occ == QType.OCC_1_1)
50                 return;
51             if (occ == QType.OCC_0_N || occi == QType.OCC_1_1) {
52                 set(i,qtype);
53                 return;
54             }
55             set(i,qtype.changeOccurence(QType.OCC_0_N));
56             return;
57         }
58         if (toBeAdded)
59             add((Object JavaDoc)qtype);
60     }
61     
62     public void addAll(List JavaDoc list) {
63         if (list == null || list.isEmpty())
64             return;
65         for (int i=0;i<list.size();i++) {
66             add((QType)list.get(i));
67         }
68     }
69
70 }
71
Popular Tags