1 10 package org.mmbase.module.builders; 11 12 import java.util.*; 13 14 import org.mmbase.module.core.*; 15 import org.mmbase.util.logging.*; 16 17 23 public class VersionCacheNode extends Object { 24 25 private static Logger log = Logging.getLoggerInstance(VersionCacheNode.class.getName()); 26 private MMObjectNode versionnode; 27 private Vector whens = new Vector(); 28 private MMBase mmb; 29 30 public VersionCacheNode(MMBase mmb) { 31 this.mmb = mmb; 32 } 33 34 public void handleChanged(String buildername,int number) { 35 38 boolean dirty = false; 39 for (Enumeration e = whens.elements(); e.hasMoreElements();) { 40 VersionCacheWhenNode whennode = (VersionCacheWhenNode)e.nextElement(); 41 Vector types = whennode.getTypes(); 42 43 if (types.contains(buildername)) { 45 if (log.isDebugEnabled()) log.debug("types="+types.toString()); 47 if (types.size() == 1) { 48 dirty = true; 49 } else { 50 Vector nodes = whennode.getNodes(); 52 53 Vector fields = new Vector(); 54 fields.addElement(buildername + ".number"); 55 Vector ordervec = new Vector(); 56 Vector dirvec = new Vector(); 57 58 Vector vec = mmb.getClusterBuilder().searchMultiLevelVector(nodes,fields,"YES",types,buildername+".number=="+number,ordervec,dirvec); 59 if (log.isDebugEnabled()) log.debug("VEC=" + vec); 60 if (vec != null && vec.size() > 0) { 61 dirty = true; 62 } 63 } 64 } 65 } 66 67 if (dirty) { 68 int version = versionnode.getIntValue("version"); 70 versionnode.setValue("version",version + 1); 71 versionnode.commit(); 72 if (log.isDebugEnabled()) log.debug("Changed = "+(version+1)); 73 } 74 } 75 76 public void setVersionNode(MMObjectNode versionnode) { 77 this.versionnode = versionnode; 78 } 79 80 public void addWhen(VersionCacheWhenNode when) { 81 whens.addElement(when); 82 } 83 84 } 85 | Popular Tags |