KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > bridge > jsp > taglib > containers > ListRelationsContainerTag


1 /*
2
3 This software is OSI Certified Open Source Software.
4 OSI Certified is a certification mark of the Open Source Initiative.
5
6 The license (Mozilla version 1.0) can be read at the MMBase site.
7 See http://www.MMBase.org/license
8
9 */

10 package org.mmbase.bridge.jsp.taglib.containers;
11
12 import java.util.*;
13 import javax.servlet.jsp.JspTagException JavaDoc;
14
15 import org.mmbase.bridge.*;
16 import org.mmbase.bridge.jsp.taglib.NodeReferrerTag;
17 import org.mmbase.bridge.jsp.taglib.util.Attribute;
18 import org.mmbase.bridge.util.Queries;
19 import org.mmbase.cache.CachePolicy;
20 import org.mmbase.storage.search.*;
21
22 import org.mmbase.util.logging.Logger;
23 import org.mmbase.util.logging.Logging;
24
25
26 /**
27  *
28  * @author Michiel Meeuwissen
29  * @since MMBase-1.7
30  * @version $Id: ListRelationsContainerTag.java,v 1.14 2006/06/22 13:17:46 johannes Exp $
31  */

32 public class ListRelationsContainerTag extends NodeReferrerTag implements NodeQueryContainer {
33
34     private static final Logger log = Logging.getLoggerInstance(ListRelationsContainerTag.class);
35     private NodeQuery query = null;
36     private NodeQuery relatedQuery = null;
37     private Attribute cachePolicy = Attribute.NULL;
38     private Attribute type = Attribute.NULL;
39     private Attribute role = Attribute.NULL;
40     private Attribute searchDir = Attribute.NULL;
41
42     public void setCachepolicy(String JavaDoc t) throws JspTagException JavaDoc {
43         cachePolicy = getAttribute(t);
44     }
45
46     /**
47      * @param t a nodeManager
48      */

49     public void setType(String JavaDoc t) throws JspTagException JavaDoc {
50         type = getAttribute(t);
51     }
52     /**
53      * @param r a role
54      */

55     public void setRole(String JavaDoc r) throws JspTagException JavaDoc {
56         role = getAttribute(r);
57     }
58
59     public void setSearchdir(String JavaDoc s) throws JspTagException JavaDoc {
60         searchDir = getAttribute(s);
61     }
62
63
64     public Query getQuery() {
65         return getNodeQuery();
66     }
67     public NodeQuery getNodeQuery() {
68         if (query.isUsed()) query = (NodeQuery) query.clone();
69         return query;
70     }
71
72     public Node getRelatedFromNode() throws JspTagException JavaDoc {
73         return getNode();
74     }
75
76     public NodeQuery getRelatedQuery() {
77         NodeQuery r = (NodeQuery) relatedQuery.clone();
78         // copy constraint and sort-orders of the query.
79
List querySteps = query.getSteps();
80         List rSteps = r.getSteps();
81         for (int i = 0 ; i < querySteps.size(); i++) {
82             Step queryStep = (Step) querySteps.get(i);
83             Step rStep = (Step) rSteps.get(i);
84             Queries.copyConstraint(query.getConstraint(), queryStep, r, rStep);
85             Queries.copySortOrders(query.getSortOrders(), queryStep, r, rStep);
86         }
87
88         return r;
89     }
90
91
92     public int doStartTag() throws JspTagException JavaDoc {
93         Cloud cloud = getCloudVar();
94         NodeManager nm = null;
95         if (type != Attribute.NULL) {
96             nm = getCloudVar().getNodeManager(type.getString(this));
97         }
98         Node relatedFromNode = getNode();
99         query = Queries.createRelationNodesQuery(relatedFromNode, nm, (String JavaDoc) role.getValue(this), (String JavaDoc) searchDir.getValue(this));
100         relatedQuery = Queries.createRelatedNodesQuery(relatedFromNode, nm, (String JavaDoc) role.getValue(this), (String JavaDoc) searchDir.getValue(this));
101
102         if (cachePolicy != Attribute.NULL) {
103             query.setCachePolicy(CachePolicy.getPolicy(cachePolicy.getValue(this)));
104             relatedQuery.setCachePolicy(CachePolicy.getPolicy(cachePolicy.getValue(this)));
105         }
106         return EVAL_BODY;
107     }
108
109     public int doAfterBody() throws JspTagException JavaDoc {
110         if(EVAL_BODY == EVAL_BODY_BUFFERED) {
111             try {
112                 if (bodyContent != null) {
113                     bodyContent.writeOut(bodyContent.getEnclosingWriter());
114                 }
115             } catch (java.io.IOException JavaDoc ioe){
116                 throw new JspTagException JavaDoc(ioe.toString());
117             }
118         }
119         return SKIP_BODY;
120     }
121     public int doEndTag() throws JspTagException JavaDoc {
122         query = null;
123         relatedQuery = null;
124         return super.doEndTag();
125     }
126
127     public Object JavaDoc getCurrent() {
128         return null;
129     }
130
131 }
132
Popular Tags