1 10 11 package org.mmbase.applications.community.builders; 12 13 import java.util.*; 14 15 import org.mmbase.module.core.*; 16 import org.mmbase.util.*; 17 import org.mmbase.util.logging.*; 18 19 30 31 public class Community extends MMObjectBuilder { 32 33 34 public static final String STR_CHATBOX = "chatbox"; 35 36 public static final String STR_FORUM = "forum"; 37 38 private static final Logger log = Logging.getLoggerInstance(Community.class); 40 41 private Channel channelBuilder; 42 private MMObjectBuilder mapBuilder; 43 private boolean active = false; 45 46 49 public Community() { 50 } 51 52 public boolean init() { 53 boolean result = super.init(); 54 activate(); 55 return result; 56 } 57 58 62 public boolean activate() { 63 if (!active) { 64 mapBuilder = mmb.getMMObject("maps"); 65 channelBuilder = (Channel)mmb.getMMObject("channel"); 66 active = channelBuilder != null; 67 } 68 return active; 69 } 70 71 75 public void openAllCommunities() { 76 init(); 78 if (channelBuilder == null) { 79 log.error("No channel builder"); 80 return; 81 } 82 ClusterBuilder cluster=mmb.getClusterBuilder(); 83 84 Vector builders = new Vector(); 85 builders.add("community"); 86 builders.add("channel"); 87 88 Vector fields = new Vector(); 89 fields.add("community.number"); 90 fields.add("channel.number"); 91 Vector allchannels=cluster.searchMultiLevelVector(null,fields,"YES",builders, 92 "WHERE channel.open = "+Channel.OPEN+" OR channel.open = "+Channel.WANT_OPEN, 93 null,null); 94 if (allchannels!=null) { 95 for (Iterator channels=allchannels.iterator(); channels.hasNext(); ) { 96 MMObjectNode channel = (MMObjectNode)channels.next(); 97 log.info("open channel"+channel); 98 channelBuilder.open(channel.getNodeValue("channel"),channel.getNodeValue("community")); 99 } 100 } 101 } 102 103 108 public void openAllChannels(MMObjectNode community) { 109 if (channelBuilder == null) { 110 log.error("No channel builder"); 111 return; 112 } 113 Enumeration relatedChannels = mmb.getInsRel().getRelated(community.getNumber(), channelBuilder.getNumber()); 114 while (relatedChannels.hasMoreElements()) { 115 channelBuilder.open((MMObjectNode)relatedChannels.nextElement()); 116 } 117 } 118 119 124 public void closeAllChannels(MMObjectNode community) { 125 if (channelBuilder == null) { 126 log.error("No channel builder"); 127 return; 128 } 129 Enumeration relatedChannels = mmb.getInsRel().getRelated(community.getNumber(), channelBuilder.getNumber()); 130 while (relatedChannels.hasMoreElements()) { 131 channelBuilder.close((MMObjectNode)relatedChannels.nextElement()); 132 } 133 } 134 135 146 public String replace(PageInfo sp, StringTokenizer tok) { 147 if (!tok.hasMoreElements()) { 149 log.error("replace(): community number expected after $MOD-BUILDER-community-."); 150 return ""; 151 } 152 MMObjectNode community = getNode(tok.nextToken()); 153 154 if (tok.hasMoreElements()) { 155 String cmd = tok.nextToken(); 156 if (cmd.equals("OPEN")) openAllChannels(community); 157 if (cmd.equals("CLOSE")) closeAllChannels(community); 158 } 159 return ""; 160 } 161 162 174 public String getDefaultUrl(int src) { 175 if (mapBuilder==null) return null; 176 Enumeration e= mmb.getInsRel().getRelated(src, mapBuilder.getNumber()); 177 if (!e.hasMoreElements()) { 178 log.debug("GetDefaultURL Could not find related map for community node " + src); 179 return null; 180 } 181 MMObjectNode mapNode = (MMObjectNode)e.nextElement(); 182 String URL = mapBuilder.getDefaultUrl(mapNode.getNumber()); 183 if (URL!=null) { 184 URL += "+" + src; 185 } 186 return URL; 187 } 188 } 189 | Popular Tags |