Package

Source Code of get_tags

import java.io.IOException;
import java.text.CollationKey;
import java.text.Collator;
import java.util.Iterator;
import java.util.TreeMap;
import java.util.TreeSet;

import net.yacy.cora.protocol.RequestHeader;
import de.anomic.data.UserDB;
import de.anomic.data.ymark.YMarkEntry;
import de.anomic.data.ymark.YMarkTables;
import de.anomic.data.ymark.YMarkTag;
import de.anomic.data.ymark.YMarkUtil;
import de.anomic.search.Switchboard;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;

public class get_tags {
 
  final static String TAG = "tag";
  final static String TOP = "top";
  final static String SORT = "sort";
  final static String SIZE = "size";
  final static String ALPHA = "alpha";
 
 
  private static Switchboard sb = null;
  private static serverObjects prop = null;
 
  public static serverObjects respond(final RequestHeader header, final serverObjects post, final serverSwitch env) {
        sb = (Switchboard) env;
        prop = new serverObjects();
       
        final UserDB.Entry user = sb.userDB.getUser(header);
        final boolean isAdmin = (sb.verifyAuthentication(header, true));
        final boolean isAuthUser = user!= null && user.hasRight(UserDB.AccessRight.BOOKMARK_RIGHT);
       
        if(isAdmin || isAuthUser) {
          final String bmk_user = (isAuthUser ? user.getUserName() : YMarkTables.USER_ADMIN);
            Integer top = Integer.MAX_VALUE;
            Boolean sortAlpha = true;
            Iterator<YMarkTag> tit = null;
            TreeSet<YMarkTag> tags = null;
            int count = 0;
            YMarkTag t;

          if (post != null && post.containsKey(TAG) && !post.get(TAG).isEmpty()) {
            final String[] tagArray = YMarkUtil.cleanTagsString(post.get(TAG)).split(YMarkUtil.TAGS_SEPARATOR);
            try {
          tags = new TreeSet<YMarkTag>(sb.tables.bookmarks.getTags(sb.tables.bookmarks.getBookmarksByTag(bmk_user, tagArray)).values());
        } catch (IOException e) {
          return prop;
        }
          } else {
            try {
          tags = new TreeSet<YMarkTag>(sb.tables.bookmarks.getTags(bmk_user).values());
        } catch (IOException e) {
          return prop;
        }
          }

            if (post != null && post.containsKey(TOP)) {
              top = post.getInt(TOP, Integer.MAX_VALUE);
            }
           
            if (post != null && post.containsKey(SORT)) {
                if (SIZE.equals(post.get(SORT))) {
                  sortAlpha = false;
                }
            }
                       
            if(sortAlpha) {
                final TreeMap<CollationKey, YMarkTag> sort = new TreeMap<CollationKey, YMarkTag>();
          final Collator collator = Collator.getInstance();
          collator.setStrength(Collator.SECONDARY);
                tit = tags.iterator();
              while(tit.hasNext() && count < top) {
                t = tit.next();
                sort.put(collator.getCollationKey(t.name()), t);
                count++;
              }
              tit = sort.values().iterator();
            } else {
              tit = tags.iterator();
            }

            count = 0;
            while (tit.hasNext() && count < top) {
                t = tit.next();
                if(!t.name().equals(YMarkEntry.BOOKMARK.TAGS.deflt())) {
                    prop.putXML("tags_" + count + "_name", t.name());
                    prop.put("tags_" + count + "_count", t.size());
                    count++;
                }
            }

            prop.put("tags", count);
        }
        return prop;
  }
}
TOP

Related Classes of get_tags

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.