Author: szimano Date: 2006-05-19 18:05:43 -0400 (Fri, 19 May 2006) New Revision: 4330 Added: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagmeSet.java labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/TagMeTagger.java Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/maven.xml labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/public/TagMe.html Log: tagme + shotoku Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/maven.xml =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/maven.xml 2006-05-19 19:18:58 UTC (rev 4329) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/maven.xml 2006-05-19 22:05:43 UTC (rev 4330) @@ -28,8 +28,8 @@ </goal> <goal name="deploy"> - <!--<ant:copy file="target/tagme-servlet.war" toDir="${local.deploy.dir}" />--> - <ant:copy file="target/tagme-servlet.war" toDir="/home/tomek/jboss/park_rozrywki/server/default/deploy" /> + <ant:copy file="target/tagme-servlet.war" toDir="${local.deploy.dir}" /> + <!--<ant:copy file="target/tagme-servlet.war" toDir="/home/tomek/jboss/park_rozrywki/server/default/deploy" />--> </goal> <goal name="clean"> Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java 2006-05-19 19:18:58 UTC (rev 4329) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/TagMeServlet.java 2006-05-19 22:05:43 UTC (rev 4330) @@ -25,6 +25,7 @@ import java.util.Vector; import org.jboss.labs.tagme.gwt.client.TaggingService; +import org.jboss.labs.tagme.services.TagMeTagger; import org.jboss.logging.Logger; import com.google.gwt.user.server.rpc.RemoteServiceServlet; @@ -37,20 +38,49 @@ */ private static final long serialVersionUID = 1L; - public Vector getTags(String path) { - Vector vect = new Vector(); + public Vector getTags(String path, String clas) { + Vector vect = null; - vect.add("piwo"); vect.add("wodka"); vect.add("kefir"); + /*vect.add("piwo"); vect.add("wodka"); vect.add("kefir"); vect.add("słoń"); vect.add("kulfon"); vect.add("kret"); - vect.add("polska"); vect.add("europa"); vect.add("świat"); + vect.add("polska"); vect.add("europa"); vect.add("świat");*/ - Collections.sort(vect); + try { + TagMeTagger tagger = (TagMeTagger)Class.forName(clas).newInstance(); + + vect = tagger.getTags(path); + + Collections.sort(vect); + } catch (InstantiationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ClassNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } return vect; } - public void addTag(String user, String path, String tag) { - + public void addTag(String user, String path, String clas, String tag) { + try { + TagMeTagger tagger = (TagMeTagger)Class.forName(clas).newInstance(); + + tagger.addTag(user, path, tag); + log.info("Tag added: User: "+user+" Path: "+path+" Tag: "+tag); + } catch (InstantiationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ClassNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } } Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java 2006-05-19 19:18:58 UTC (rev 4329) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java 2006-05-19 22:05:43 UTC (rev 4330) @@ -39,6 +39,18 @@ public class TagMe implements EntryPoint { + private static final String TAG_PREFFIX = "tagMeSet"; + + private static final String DIV_PREFFIX = "tagMeDiv"; + + private static final String PATH_PREFIX = "tagMePath"; + + private static final String USER_PREFIX = "tagMeUser"; + + private static final String CLASS_PREFIX = "tagMeClass"; + + private Vector sets = new Vector(); + /** * Native method in JScript to access gwt:properties (couldn't find anything * in the mans for it) You add this on the page with <meta @@ -49,9 +61,22 @@ * @return value of property */ public static native String getProperty(String name) /*-{ - return parent.__gwt_getMetaProperty(name); + return parent.__gwt_getMetaProperty(name); }-*/; + public static native String getPropertiesUnsplited() /*-{ + var __gwt_all = ''; + + for (var tag in parent.__gwt_metaProps) { + __gwt_all += tag + ';'; + } + return __gwt_all; + }-*/; + + public String[] getPropertyNames() { + return getPropertiesUnsplited().split(";"); + } + /* * (non-Javadoc) * @@ -59,86 +84,43 @@ */ public void onModuleLoad() { // this is executed on the script start + String[] propNames = getPropertyNames(); - RootPanel.get().add(new Button("ClickMe", new ClickListener() { + // find correct props describing where tagme buttons should be placed + for (int i = 0; i < propNames.length; i++) { + //Window.alert(propNames[i]); + if (propNames[i] != null && propNames[i].startsWith(TAG_PREFFIX)) { + //Window.alert("found: "+propNames[i]); + String suff = getProperty(propNames[i]); - public void onClick(Widget sender) { + String div = getProperty(DIV_PREFFIX + suff); + String path = getProperty(PATH_PREFIX + suff); + String user = getProperty(USER_PREFIX + suff); + String clas = getProperty(CLASS_PREFIX + suff); - Window.alert("props: " + getProperty("tomek") + " oraz " - + getProperty("adam")); - VerticalPanel panel = new VerticalPanel(); - - final FlexTable table = new FlexTable(); - - panel.add(table); - - final Vector textBoxes = new Vector(); - - for (int i = 0; i < 3; i++) { - TextBox box = new TextBox(); - textBoxes.add(box); - panel.add(box); + //Window.alert("Added: "+propNames[i]+" div: "+div+" path: "+path+" user: "+user); + if (div != null && path != null && user != null && clas != null) { + TagmeSet set = new TagmeSet(div, path, user, clas); + sets.add(set); } + else { + Window.alert("Wrong set: "+suff+" div= "+div+" path= "+path+" user= "+user+" class= "+clas); + } + } + } - TaggingServiceAsync tagging = (TaggingServiceAsync) GWT - .create(TaggingService.class); + for (int i = 0; i < sets.size(); i++) { + TagmeSet set = (TagmeSet) sets.get(i); + String path = set.getPath(); + String user = set.getUser(); + String clas = set.getClas(); + RootPanel.get(set.getDiv()).add(getButton(path, user, clas)); + } + } - ServiceDefTarget endpoint = (ServiceDefTarget) tagging; - endpoint.setServiceEntryPoint("/tagme-servlet/tag/"); + private Button getButton(String path, String user, String clas) { - AsyncCallback callback = new AsyncCallback() { - public void onSuccess(Object result) { - Vector vect = (Vector) result; - - int cols = (int) Math.sqrt(vect.size()); - - for (int i = 0; i < vect.size(); i++) { - table.setText(i / cols, i % cols, (String) vect - .get(i)); - } - } - - public void onFailure(Throwable caught) { - Window.alert("Error ! " + caught.getMessage()); - } - }; - - // call AJAX methos, after that callback is going to be executed - tagging.getTags("path", callback); - - panel.add(new Button("Save", new ClickListener() { - - public void onClick(Widget sender) { - TaggingServiceAsync tagging = (TaggingServiceAsync) GWT - .create(TaggingService.class); - - ServiceDefTarget endpoint = (ServiceDefTarget) tagging; - endpoint.setServiceEntryPoint("/tagme-servlet/tag/"); - - AsyncCallback callback = new AsyncCallback() { - public void onSuccess(Object result) { - Window.alert(result.toString()); - } - - public void onFailure(Throwable caught) { - Window.alert("Error ! " + caught.getMessage()); - } - }; - - tagging.getTags(((TextBox) textBoxes.get(0)).getText(), - callback); - } - - })); - - PopupPanel popUp = new PopupPanel(true); - - popUp.add(panel); - - popUp.show(); - } - - })); + return new Button("ClickMe", new TagMeShowPopupListener(path, user, clas)); } } Added: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java 2006-05-19 19:18:58 UTC (rev 4329) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeClickListener.java 2006-05-19 22:05:43 UTC (rev 4330) @@ -0,0 +1,72 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.labs.tagme.gwt.client; + +import java.util.Vector; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.rpc.ServiceDefTarget; +import com.google.gwt.user.client.ui.ClickListener; +import com.google.gwt.user.client.ui.TextBox; +import com.google.gwt.user.client.ui.Widget; + +public class TagMeClickListener implements ClickListener { + private String path; + + private String user; + + private Vector textBoxes; + + private String clas; + + public TagMeClickListener(String path, String user, String clas, Vector textBoxes) { + this.path = path; + this.user = user; + this.textBoxes = textBoxes; + this.clas = clas; + } + + public void onClick(Widget sender) { + TaggingServiceAsync tagging = (TaggingServiceAsync) GWT + .create(TaggingService.class); + + ServiceDefTarget endpoint = (ServiceDefTarget) tagging; + endpoint.setServiceEntryPoint("/tagme-servlet/tag/"); + + AsyncCallback callback = new AsyncCallback() { + public void onSuccess(Object result) { + Window.alert(result.toString()); + } + + public void onFailure(Throwable caught) { + Window.alert("Error ! " + caught.getMessage()); + } + }; + + tagging.addTag(user, path, clas, ((TextBox) textBoxes.get(0)).getText(), + callback); + + } + +} Added: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java 2006-05-19 19:18:58 UTC (rev 4329) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java 2006-05-19 22:05:43 UTC (rev 4330) @@ -0,0 +1,104 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.labs.tagme.gwt.client; + +import java.util.Vector; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.user.client.Window; +import com.google.gwt.user.client.rpc.AsyncCallback; +import com.google.gwt.user.client.rpc.ServiceDefTarget; +import com.google.gwt.user.client.ui.Button; +import com.google.gwt.user.client.ui.ClickListener; +import com.google.gwt.user.client.ui.FlexTable; +import com.google.gwt.user.client.ui.PopupPanel; +import com.google.gwt.user.client.ui.TextBox; +import com.google.gwt.user.client.ui.VerticalPanel; +import com.google.gwt.user.client.ui.Widget; + +public class TagMeShowPopupListener implements ClickListener { + + private String path; + + private String user; + + private String clas; + + public TagMeShowPopupListener(String path, String user, String clas) { + this.path = path; + this.user = user; + this.clas = clas; + } + + public void onClick(Widget sender) { + VerticalPanel panel = new VerticalPanel(); + + final FlexTable table = new FlexTable(); + + panel.add(table); + + Vector textBoxes = new Vector(); + + for (int i = 0; i < 3; i++) { + TextBox box = new TextBox(); + textBoxes.add(box); + panel.add(box); + } + + TaggingServiceAsync tagging = (TaggingServiceAsync) GWT + .create(TaggingService.class); + + ServiceDefTarget endpoint = (ServiceDefTarget) tagging; + endpoint.setServiceEntryPoint("/tagme-servlet/tag/"); + + AsyncCallback callback = new AsyncCallback() { + public void onSuccess(Object result) { + Vector vect = (Vector) result; + + int cols = (int) Math.sqrt(vect.size()); + + for (int i = 0; i < vect.size(); i++) { + table.setText(i / cols, i % cols, (String) vect.get(i)); + } + } + + public void onFailure(Throwable caught) { + Window.alert("Error ! " + caught.getMessage()); + } + }; + + // call AJAX methos, after that callback is going to be executed + tagging.getTags(path, clas, callback); + + panel.add(new Button("Save", new TagMeClickListener(path, user, clas, + textBoxes))); + + PopupPanel popUp = new PopupPanel(true); + + popUp.add(panel); + + popUp.setPopupPosition(10,10); + + popUp.show(); + } + +} Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java 2006-05-19 19:18:58 UTC (rev 4329) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingService.java 2006-05-19 22:05:43 UTC (rev 4330) @@ -39,14 +39,7 @@ * Path to get tags * @return collection of tags */ - public Vector getTags(String path); + public Vector getTags(String path, String clas); - /** - * Adds tag (not implemented yet) - * - * @param user - * @param path - * @param tag - */ - public void addTag(String user, String path, String tag); + public void addTag(String user, String path, String clas, String tag); } Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java 2006-05-19 19:18:58 UTC (rev 4329) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TaggingServiceAsync.java 2006-05-19 22:05:43 UTC (rev 4330) @@ -31,8 +31,8 @@ * */ public interface TaggingServiceAsync { - public void getTags(String path, AsyncCallback callback); + public void getTags(String path, String clas, AsyncCallback callback); - public void addTag(String user, String path, String tag, + public void addTag(String user, String path, String clas, String tag, AsyncCallback callback); } Added: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagmeSet.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagmeSet.java 2006-05-19 19:18:58 UTC (rev 4329) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagmeSet.java 2006-05-19 22:05:43 UTC (rev 4330) @@ -0,0 +1,54 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.labs.tagme.gwt.client; + +public class TagmeSet { + + private String div; + private String path; + private String user; + private String clas; + + public TagmeSet(String div, String path, String user, String clas) { + this.div = div; + this.path = path; + this.user = user; + this.clas = clas; + } + + public String getPath() { + return path; + } + + public String getDiv() { + return div; + } + + public String getUser() { + return user; + } + + public String getClas() { + return clas; + } + +} Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/public/TagMe.html =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/public/TagMe.html 2006-05-19 19:18:58 UTC (rev 4329) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/public/TagMe.html 2006-05-19 22:05:43 UTC (rev 4330) @@ -1,19 +1,38 @@ <html> - <head> + <head> + <meta name='gwt:property' content='tagMeSetTomek=tomek'> + <meta name='gwt:property' content='tagMeDivtomek=tomek'> + <meta name='gwt:property' content='tagMePathtomek=/tagme/tomek'> + <meta name='gwt:property' content='tagMeUsertomek=kulfon'> + <meta name='gwt:property' content='tagMeClasstomek=org.jboss.labs.tagme.services.ShotokuTaggingService'> + + <meta name='gwt:property' content='tagMeSetAdam=adam'> + <meta name='gwt:property' content='tagMeDivadam=adam'> + <meta name='gwt:property' content='tagMePathadam=/tagme/adam'> + <meta name='gwt:property' content='tagMeUseradam=monika'> + <meta name='gwt:property' content='tagMeClassadam=org.jboss.labs.tagme.services.ShotokuTaggingService'> + + <meta name='gwt:property' content='tomek=ziomek'> + <meta name='gwt:module' content='org.jboss.labs.tagme.gwt.TagMe'> - <meta name='gwt:property' content='tomek=ziomek'> + <title>Hello</title> </head> <body bgcolor="white"> - <meta name='gwt:property' content='adam=siadam'> - <script language="javascript" src="/tagme-servlet/www/org.jboss.labs.tagme.gwt.TagMe/gwt.js"></script> + <script language="javascript" src="/tagme-servlet/www/org.jboss.labs.tagme.gwt.TagMe/gwt.js"></script> Pod tym <br /> - <div id="TopMenu"> + <div id="tomek"> </div> <br /> ale nad tym + + + <div id="adam"> + + </div> + </body> </html> Added: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java 2006-05-19 19:18:58 UTC (rev 4329) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/ShotokuTaggingService.java 2006-05-19 22:05:43 UTC (rev 4330) @@ -0,0 +1,104 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.labs.tagme.services; + +import java.util.Iterator; +import java.util.Map; +import java.util.Vector; + +import org.jboss.logging.Logger; +import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.Node; +import org.jboss.shotoku.exceptions.RepositoryException; +import org.jboss.shotoku.exceptions.ResourceDoesNotExist; +import org.jboss.shotoku.exceptions.SaveException; + +public class ShotokuTaggingService implements TagMeTagger { + + private static final String SHOTOKU_TAG = "tag"; + + private static final Logger log = Logger.getLogger(ShotokuTaggingService.class); + + public Vector getTags(String path) { + log.info("Getting tags for: "+path); + ContentManager manager = ContentManager.getContentManager(); + + Vector<String> tags = new Vector<String>(); + + Node node; + try { + node = manager.getNode(path); + + Map<String, String> map = node.getProperties(); + + for (String key : map.keySet()) { + log.info(key); + if (key.startsWith(SHOTOKU_TAG)) { + tags.add(map.get(key)); + } + } + } catch (RepositoryException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ResourceDoesNotExist e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + return tags; + } + + public void addTag(String user, String path, String tag) { + log.info("Adding tag: "+tag+" for node: "+path); + ContentManager manager = ContentManager.getContentManager(); + + Node node; + + try { + node = manager.getNode(path); + + if (!getTags(path).contains(tag)) { + int i = 0; + while (node.getProperty(SHOTOKU_TAG + ":" + user + ":" + i) != null) { + i++; + } + + node.setProperty(SHOTOKU_TAG + ":" + user + ":" + i, tag); + + try { + node.save("Saving tag: "+tag+" by: "+user); + } catch (SaveException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + } catch (RepositoryException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ResourceDoesNotExist e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + +} Added: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/TagMeTagger.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/TagMeTagger.java 2006-05-19 19:18:58 UTC (rev 4329) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/services/TagMeTagger.java 2006-05-19 22:05:43 UTC (rev 4330) @@ -0,0 +1,31 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.labs.tagme.services; + +import java.util.Vector; + +public interface TagMeTagger { + public Vector getTags(String path); + + + public void addTag(String user, String path, String tag); +} |