Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class JLBackend extends AbstractBackend {
- private static final String BASE_REDIS = "JetAuction:";
- private static final String FILTER_SETTINGS = BASE_REDIS + "FilterSettings:";
- private static final String FILTER_FIELD = "filter";
- private static final String LOT_SELLER_COLUMN = "seller";
- private static final String LOT_BUYER_COLUMN = "buyer";
- private static final String LOT_ITEM_STACK_COLUMN = "item_stack";
- private static final String LOT_COST_COLUMN = "cost";
- private static final String LOT_STATE_COLUMN = "state";
- private static final String LOT_TIMESTAMP_COLUMN = "timestamp";
- private RedisProvider redisProvider;
- private MongoDBProvider mongoDBProvider;
- private MongoCollection<Document> lotCollection;
- public JLBackend(JetAuctionPlugin plugin) {
- super(plugin);
- }
- @Override
- public void init() throws Exception {
- this.redisProvider = DatabaseProvider.getInstance().getRedisProvider(); //Для хранения настроек фильтрации
- this.mongoDBProvider = DatabaseProvider.getInstance().getMongoDBProvider();
- this.lotCollection = mongoDBProvider.getDatabase().getCollection("auction_lots");
- // this.lotCollection.createIndex(Indexes.text("player"));
- // try {
- // this.lotCollection.createIndex(Indexes.descending("_id"));
- // } catch (MongoCommandException ex) {
- // this.lotCollection.createIndex(Indexes.ascending("_id"));
- // }
- // this.lotCollection.createIndex(Indexes.ascending("createdAt"),
- // new IndexOptions().expireAfter(30L, TimeUnit.DAYS));
- }
- @Override
- public void shutdown() throws Exception {
- this.lotCollection = null;
- this.redisProvider = null;
- this.mongoDBProvider = null;
- }
- @Override
- public void removeLot(String playerName, AuctionLot lot) {
- if(lot != null) {
- lotCollection.deleteOne(getLotBson(lot));
- }
- }
- @Override
- public void placeLot(String playerName, AuctionLot lot) {
- if(lot != null) {
- lotCollection.insertOne(getLotBson(lot));
- }
- }
- @Override
- public void setFilter(String playerName, Filter filter) {
- redisProvider.withJedis(jedis -> {
- if(filter != null) {
- String key = FILTER_SETTINGS + playerName.toLowerCase();
- jedis.hset(key, FILTER_FIELD, String.valueOf(filter.ordinal()));
- }
- });
- }
- @Override
- public List<AuctionLot> getActiveLots() {
- List<AuctionLot> list = new ArrayList<>();
- lotCollection.find(new Document().append(LOT_STATE_COLUMN, LotState.ACTIVE.ordinal())).forEach((Consumer<? super Document>) document -> list.add(getLotFromBson(document)));
- return list;
- }
- private AuctionLot getLotFromBson(Document document) {
- AuctionLot auctionLot = new AuctionLot(document.getString(LOT_SELLER_COLUMN), ItemStack.deserialize((Map<String, Object>) document.get(LOT_ITEM_STACK_COLUMN)),
- document.getInteger(LOT_COST_COLUMN), document.getLong(LOT_TIMESTAMP_COLUMN));
- auctionLot.setBuyer(document.getString(LOT_BUYER_COLUMN));
- auctionLot.setLotState(LotState.values()[document.getInteger(LOT_STATE_COLUMN)]);
- return auctionLot;
- }
- private Document getLotBson(AuctionLot lot) {
- return new Document()
- .append(LOT_SELLER_COLUMN, lot.getSeller())
- .append(LOT_BUYER_COLUMN, lot.getBuyer())
- .append(LOT_COST_COLUMN, lot.getCost())
- .append(LOT_ITEM_STACK_COLUMN, lot.getItemStack().serialize())
- .append(LOT_STATE_COLUMN, lot.getLotState().ordinal())
- .append(LOT_TIMESTAMP_COLUMN, lot.getTimestamp());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement