Advertisement
Guest User

Untitled

a guest
Jan 18th, 2020
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.83 KB | None | 0 0
  1. public class JLBackend extends AbstractBackend {
  2.  
  3.     private static final String BASE_REDIS = "JetAuction:";
  4.     private static final String FILTER_SETTINGS = BASE_REDIS + "FilterSettings:";
  5.  
  6.     private static final String FILTER_FIELD = "filter";
  7.  
  8.     private static final String LOT_SELLER_COLUMN = "seller";
  9.     private static final String LOT_BUYER_COLUMN = "buyer";
  10.     private static final String LOT_ITEM_STACK_COLUMN = "item_stack";
  11.     private static final String LOT_COST_COLUMN = "cost";
  12.     private static final String LOT_STATE_COLUMN = "state";
  13.     private static final String LOT_TIMESTAMP_COLUMN = "timestamp";
  14.  
  15.     private RedisProvider redisProvider;
  16.     private MongoDBProvider mongoDBProvider;
  17.  
  18.     private MongoCollection<Document> lotCollection;
  19.  
  20.     public JLBackend(JetAuctionPlugin plugin) {
  21.         super(plugin);
  22.     }
  23.  
  24.     @Override
  25.     public void init() throws Exception {
  26.         this.redisProvider = DatabaseProvider.getInstance().getRedisProvider(); //Для хранения настроек фильтрации
  27.         this.mongoDBProvider = DatabaseProvider.getInstance().getMongoDBProvider();
  28.  
  29.         this.lotCollection = mongoDBProvider.getDatabase().getCollection("auction_lots");
  30. //        this.lotCollection.createIndex(Indexes.text("player"));
  31. //        try {
  32. //            this.lotCollection.createIndex(Indexes.descending("_id"));
  33. //        } catch (MongoCommandException ex) {
  34. //            this.lotCollection.createIndex(Indexes.ascending("_id"));
  35. //        }
  36. //        this.lotCollection.createIndex(Indexes.ascending("createdAt"),
  37. //                new IndexOptions().expireAfter(30L, TimeUnit.DAYS));
  38.     }
  39.  
  40.     @Override
  41.     public void shutdown() throws Exception {
  42.         this.lotCollection = null;
  43.         this.redisProvider = null;
  44.         this.mongoDBProvider = null;
  45.     }
  46.  
  47.     @Override
  48.     public void removeLot(String playerName, AuctionLot lot) {
  49.         if(lot != null) {
  50.             lotCollection.deleteOne(getLotBson(lot));
  51.         }
  52.     }
  53.  
  54.     @Override
  55.     public void placeLot(String playerName, AuctionLot lot) {
  56.         if(lot != null) {
  57.             lotCollection.insertOne(getLotBson(lot));
  58.         }
  59.     }
  60.  
  61.     @Override
  62.     public void setFilter(String playerName, Filter filter) {
  63.         redisProvider.withJedis(jedis -> {
  64.             if(filter != null) {
  65.                 String key = FILTER_SETTINGS + playerName.toLowerCase();
  66.                 jedis.hset(key, FILTER_FIELD, String.valueOf(filter.ordinal()));
  67.             }
  68.         });
  69.     }
  70.  
  71.     @Override
  72.     public List<AuctionLot> getActiveLots() {
  73.         List<AuctionLot> list = new ArrayList<>();
  74.         lotCollection.find(new Document().append(LOT_STATE_COLUMN, LotState.ACTIVE.ordinal())).forEach((Consumer<? super Document>) document -> list.add(getLotFromBson(document)));
  75.         return list;
  76.     }
  77.  
  78.     private AuctionLot getLotFromBson(Document document) {
  79.         AuctionLot auctionLot = new AuctionLot(document.getString(LOT_SELLER_COLUMN), ItemStack.deserialize((Map<String, Object>) document.get(LOT_ITEM_STACK_COLUMN)),
  80.                 document.getInteger(LOT_COST_COLUMN), document.getLong(LOT_TIMESTAMP_COLUMN));
  81.         auctionLot.setBuyer(document.getString(LOT_BUYER_COLUMN));
  82.         auctionLot.setLotState(LotState.values()[document.getInteger(LOT_STATE_COLUMN)]);
  83.         return auctionLot;
  84.     }
  85.  
  86.     private Document getLotBson(AuctionLot lot) {
  87.         return new Document()
  88.                 .append(LOT_SELLER_COLUMN, lot.getSeller())
  89.                 .append(LOT_BUYER_COLUMN, lot.getBuyer())
  90.                 .append(LOT_COST_COLUMN, lot.getCost())
  91.                 .append(LOT_ITEM_STACK_COLUMN, lot.getItemStack().serialize())
  92.                 .append(LOT_STATE_COLUMN, lot.getLotState().ordinal())
  93.                 .append(LOT_TIMESTAMP_COLUMN, lot.getTimestamp());
  94.     }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement