Package org.eurekaj.plugins.leveldb.dao

Source Code of org.eurekaj.plugins.leveldb.dao.LevelDBTreeMenuDao

package org.eurekaj.plugins.leveldb.dao;

import static org.iq80.leveldb.impl.Iq80DBFactory.*;

import java.util.ArrayList;
import java.util.List;

import org.eurekaj.api.dao.TreeMenuDao;
import org.eurekaj.api.datatypes.Statistics;
import org.eurekaj.api.datatypes.basic.BasicStatistics;
import org.iq80.leveldb.DB;
import org.iq80.leveldb.DBIterator;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class LevelDBTreeMenuDao implements TreeMenuDao {
  private DB db;
  private Gson gson = new GsonBuilder().serializeSpecialFloatingPointValues().serializeNulls().create();
  private static final String statsBucketKey = "Statistics;";
 
  public LevelDBTreeMenuDao(DB db) {
    super();
    this.db = db;
  }

  @Override
  public List<Statistics> getTreeMenu(String accountName) {
    List<Statistics> statList = new ArrayList<>();
   
    DBIterator iterator = db.iterator();
    iterator.seek(bytes(statsBucketKey + accountName));
    while (iterator.hasNext() && asString(iterator.peekNext().getKey()).startsWith(statsBucketKey + accountName)) {
      BasicStatistics stat = gson.fromJson(asString(iterator.next().getValue()), BasicStatistics.class);
      statList.add(stat);
    }
   
    return statList;
  }

  @Override
  public Statistics getTreeMenu(String guiPath, String accountName) {
    BasicStatistics stat = gson.fromJson(asString(db.get(bytes(statsBucketKey + accountName + ";" + guiPath))), BasicStatistics.class);
    return stat;
  }

  @Override
  public void deleteTreeMenu(String guiPath, String accountName) {
    db.delete(bytes(statsBucketKey + accountName + ";" + guiPath));
  }

  @Override
  public void persistTreeMenu(Statistics statistics) {
    db.put(bytes(statsBucketKey + statistics.getAccountName() + ";" + statistics.getGuiPath()), bytes(gson.toJson(new BasicStatistics(statistics))));   
  }

}
TOP

Related Classes of org.eurekaj.plugins.leveldb.dao.LevelDBTreeMenuDao

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.