pgentity.GiftTemplate.java Source code

Java tutorial

Introduction

Here is the source code for pgentity.GiftTemplate.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package pgentity;

import db.DBContext;
import java.util.HashMap;
import java.util.Map;
import org.json.simple.JSONValue;
import pgentity.pool.EntityFactory;
import pgentity.pool.EntityPool;
import share.PGError;
import db.PGKeys;
import share.PGMacro;
import db.RedisKey;
import share.PGException;

/**
 *
 * @author KieuAnh
 */
@EntityFactory(factorier = "loadTemplate")
public class GiftTemplate implements PGEntity {
    private final String templID;
    private final RedisKey redisKey;

    private String giftData;
    private int giftExpire;

    private GiftTemplate(String templID) {
        this.templID = templID;
        this.redisKey = PGKeys.GAMEMESSAGES.getChild(templID);
    }

    public static GiftTemplate getTemplate(String templID) {
        return EntityPool.inst().get(GiftTemplate.class, templID);
    }

    public static GiftTemplate newTemplate(String templID, Map<String, Object> giftData, int giftExpire,
            int templExpire) {
        PGException.Assert(!isExist(templID), PGError.UNDEFINED, "Gift template are already existed");

        GiftTemplate giftTemplate = new GiftTemplate(templID);
        giftTemplate.setGiftData(JSONValue.toJSONString(giftData));
        giftTemplate.setGiftExpire(giftExpire);
        giftTemplate.saveToDB();
        giftTemplate.expireKey(templExpire);

        EntityPool.inst().put(giftTemplate, GiftTemplate.class, templID);

        return giftTemplate;
    }

    private static GiftTemplate loadTemplate(String templID) {
        PGException.Assert(isExist(templID), PGError.INVALID_GIFT_DATA, "Gift data are invalid or expired");

        GiftTemplate giftTemplate = new GiftTemplate(templID);
        giftTemplate.updateFromDB();

        return giftTemplate;
    }

    public static boolean isExist(String templID) {
        return DBContext.Redis().exists(PGKeys.GAMEMESSAGES.getChild(templID));
    }

    @Override
    public void updateFromDB() {
        Map<String, String> data = DBContext.Redis().hgetall(redisKey);

        this.giftData = data.get(PGMacro.GIFT_TEMPLATE_DATA);
        this.giftExpire = Integer.parseInt(data.get(PGMacro.GIFT_EXPIRED_TIME));
    }

    @Override
    public void saveToDB() {
        Map<String, String> data = new HashMap(2);
        data.put(PGMacro.GIFT_TEMPLATE_DATA, this.giftData);
        data.put(PGMacro.GIFT_EXPIRED_TIME, String.valueOf(this.giftExpire));

        DBContext.Redis().hset(redisKey, data);
    }

    private void expireKey(int expire) {
        DBContext.Redis().expire(redisKey, expire);
    }

    public String getTemplID() {
        return templID;
    }

    public String getGiftData() {
        return giftData;
    }

    public void setGiftData(String giftData) {
        this.giftData = giftData;
    }

    public int getGiftExpire() {
        return giftExpire;
    }

    public void setGiftExpire(int giftExpire) {
        this.giftExpire = giftExpire;
    }
}