Update of 
/var/cvs/contributions/CMSContainer_Modules/glossary/src/java/com/finalist/cmsc/module/glossary
In directory 
james.mmbase.org:/tmp/cvs-serv1696/glossary/src/java/com/finalist/cmsc/module/glossary

Modified Files:
        Glossary.java GlossaryFactory.java 
Added Files:
        GlossaryEventListener.java 
Log Message:
CMSC-1304 Glossary needed some improvements


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Modules/glossary/src/java/com/finalist/cmsc/module/glossary
See also: http://www.mmbase.org/jira/browse/CMSC-1304


GlossaryEventListener.java is new



Index: Glossary.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/glossary/src/java/com/finalist/cmsc/module/glossary/Glossary.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- Glossary.java       12 Apr 2008 14:26:33 -0000      1.8
+++ Glossary.java       20 Feb 2009 14:22:57 -0000      1.9
@@ -1,35 +1,40 @@
 package com.finalist.cmsc.module.glossary;
 
-import java.util.*;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 public class Glossary {
-   public static final String LINKPATTERN = "<a href=\"#\" title=\"%s\" 
id=\"_glossary_%s\" onclick=\"return false;\">%s</a>";
+   public static final String LINKPATTERN = "<span class=\"glossaryWord\" 
title=\"%s\" id=\"_glossary_%s\">%s</span>";
    public static final String GLOSSARY = "glossary";
-   private final Map<String, String> TERMS = new HashMap<String, String>();
+   private final Map<String, String> terms = new HashMap<String, String>();
    private static Glossary glossary = null;
 
+   public void addTerm(String term, String description) {
+      terms.put(term, description);
+   }
 
-   void addTerm(String term, String description) {
-      TERMS.put(term, description);
+   public void removeTerm(String term) {
+      terms.remove(term);
    }
 
 
    public String mark(String material) {
-      Set<String> keyWords = TERMS.keySet();
+      Set<String> keyWords = terms.keySet();
 
       for (String word : keyWords) {
 
-         Pattern pattern = Pattern.compile(String.format("\\b%s\\b", word));
+         Pattern pattern = Pattern.compile(String.format("\\b[%s%s]%s\\b", 
word.substring(0,1).toLowerCase(), word.substring(0, 1).toUpperCase(), 
word.substring(1)));
          Matcher matcher = pattern.matcher(material);
 
          while (matcher.find()) {
             int start = matcher.start();
             int end = matcher.end();
-
+            String found = material.substring(start, end);
             if (!isInFormatedFragment(material, word, start)) {
-               String highlight = String.format(LINKPATTERN, TERMS.get(word), 
word, word);
+               String highlight = String.format(LINKPATTERN, terms.get(word), 
found, found);
                material = (new StringBuilder()).append(material.substring(0, 
start)).append(highlight).append(
                      material.substring(end, material.length())).toString();
                break;
@@ -65,7 +70,6 @@
 
 
    public Map<String, String> getTerms() {
-      return TERMS;
+      return terms;
    }
-
 }


Index: GlossaryFactory.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer_Modules/glossary/src/java/com/finalist/cmsc/module/glossary/GlossaryFactory.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- GlossaryFactory.java        12 Apr 2008 14:26:33 -0000      1.6
+++ GlossaryFactory.java        20 Feb 2009 14:22:57 -0000      1.7
@@ -5,6 +5,7 @@
 import org.mmbase.bridge.Node;
 import org.mmbase.bridge.NodeList;
 import org.mmbase.bridge.NodeManager;
+import org.mmbase.module.core.MMBase;
 
 import java.util.Iterator;
 
@@ -14,9 +15,12 @@
 public class GlossaryFactory {
 
 
+   @SuppressWarnings("unchecked")
    public static Glossary getGlossary() {
       Glossary glossary = Glossary.instance();
 
+      MMBase.getMMBase().addNodeRelatedEventsListener("glossary", new 
GlossaryEventListener(glossary));
+
       if (glossary.getTerms().size() > 0)
          return glossary;
 
@@ -25,7 +29,7 @@
       NodeManager manager = cloud.getNodeManager("glossary");
       NodeList list = manager.createQuery().getList();
 
-      Iterator<Node> nodeListIterator = list.iterator();
+      Iterator<Node> nodeListIterator = (Iterator<Node>)list.iterator();
 
       while (nodeListIterator.hasNext()) {
          Node node = nodeListIterator.next();
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to