01: /*
02: * Copyright 2001 Sun Microsystems, Inc. All rights reserved.
03: * PROPRIETARY/CONFIDENTIAL. Use of this product is subject to license terms.
04: */
05: package com.sun.portal.rewriter.rom;
06:
07: import com.sun.portal.rewriter.engines.LanguageConstants;
08: import com.sun.portal.rewriter.util.Constants;
09: import com.sun.portal.rewriter.util.StringHelper;
10: import com.sun.portal.rewriter.util.collections.ListMap;
11:
12: import java.util.List;
13:
14: /**
15: * @version 1.0 12/15/2001
16: * @author Raja Nagendra Kumar, Nagendra.Raja@sun.com
17: */
18: public abstract class RecursiveRuleCollection extends RuleCollection {
19: private final ListMap listMap = new ListMap();
20: private String mimeType = Constants.EMPTY_STRING;
21: private int size;
22:
23: protected RecursiveRuleCollection(final String aTagName,
24: final RuleCollection[] aCollection)
25: throws InvalidXMLException {
26: super (aTagName);
27: if (aCollection != null) {
28: for (int i = 0; i < aCollection.length; i++) {
29: addRuleCollection(aCollection[i]);
30: }
31: }
32: }//constructor
33:
34: public String getMIMEType() {
35: return mimeType;
36: }//getMIMEType()
37:
38: protected void setMIMEType(final String aMIMEType) {
39: mimeType = StringHelper.normalize(aMIMEType);
40: }//setType()
41:
42: protected RuleCollection getRuleCollection(final String aTagName) {
43: return (RuleCollection) listMap.get(aTagName);
44: }//getRuleCollection()
45:
46: protected RuleCollection addRuleCollection(
47: final RuleCollection aRuleCollection) {
48: if (aRuleCollection == null) {
49: return aRuleCollection;
50: }
51:
52: if (aRuleCollection.size() > 0) {
53: size++;
54: }
55:
56: return (RuleCollection) listMap.put(aRuleCollection
57: .getCollectionID(), aRuleCollection);
58: }//addRuleCollection()
59:
60: public int size() {
61: return size;
62: }//size()
63:
64: //Template Method
65: public final String toXML() {
66: final StringBuffer sb = new StringBuffer();
67: writeCustomAttributes(sb);
68: if (size() == 0 && sb.length() == 0) {
69: return "";
70: }
71:
72: sb.setLength(0);
73: sb.append(LanguageConstants.TAG_BEGIN)
74: .append(getCollectionID());
75: writeCustomAttributes(sb);
76: sb.append(">").append(Constants.NEW_LINE);
77:
78: List lList = listMap.keyList();
79: for (int i = 0; i < lList.size(); i++) {
80: Rule lValue = (Rule) listMap.get(lList.get(i));
81:
82: if (lValue == null) //incase it does not find any just ignore
83: {
84: continue;
85: }
86: sb.append(lValue.toXML());
87: }//for loop
88:
89: sb.append("</").append(getCollectionID()).append(">").append(
90: Constants.NEW_LINE);
91: return sb.toString();
92: }//toXML()
93:
94: protected StringBuffer writeCustomAttributes(
95: StringBuffer aStringBuff) {
96: return aStringBuff;
97: }//writeCustomAttributes()
98: }//class RecursiveRuleCollection
|