All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jelastic.api.development.persistence.ApiToken Maven / Gradle / Ivy

The newest version!
package com.jelastic.api.development.persistence;

import com.jelastic.api.core.utils.DateUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import java.text.ParseException;

/**
 * @author Dima Hutsalo
 */
public class ApiToken implements Serializable {
    public static final String ID = "id";
    public static final String TOKEN = "key";
    public static final String API_LIST = "apiList";
    public static final String EXPIRES_AT = "expiresAt";
    public static final String DESCRIPTION = "description";
    private static final String TOKEN_TEMPLATE = "tokenTemplate";
    private static final String CREATED_ON = "createdOn";
    private static final String LAST_USED = "lastUsed";

    private Integer id;

    private String token;

    private User user;

    private Set permissions = new HashSet<>();

    private Date validTill;

    private Date expiresAt;

    private String description;

    private String tokenTemplate;

    private Date createdOn;

    private Date lastUsed;

    public ApiToken(String token, User user, Set permissions) {
        this.token = token;
        this.user = user;
        this.permissions = permissions;
    }

    public ApiToken() {
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public Set getPermissions() {
        return permissions;
    }

    public void setPermissions(Set permissions) {
        this.permissions = permissions;
    }

    public Date getValidTill() {
        return validTill;
    }

    public void setValidTill(Date validTill) {
        this.validTill = validTill;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Date getExpiresAt() {
        return expiresAt;
    }

    public void setExpiresAt(Date expiresAt) {
        this.expiresAt = expiresAt;
    }

    public String getTokenTemplate() {
        return tokenTemplate;
    }

    public void setTokenTemplate(String tokenTemplate) {
        this.tokenTemplate = tokenTemplate;
    }

    public Date getCreatedOn() {
        return createdOn;
    }

    public void setCreatedOn(Date createdOn) {
        this.createdOn = createdOn;
    }

    public Date getLastUsed() {
        return lastUsed;
    }

    public void setLastUsed(Date lastUsed) {
        this.lastUsed = lastUsed;
    }

    public JSONObject toJSON() {
        JSONObject json = new JSONObject();
        try {
            json.put(ID, this.getId());

            if (tokenTemplate != null) {
                json.put(TOKEN_TEMPLATE, tokenTemplate);
            }

            if (getPermissions() != null) {
                JSONArray permissionsJson = new JSONArray();
                for (ApiTokenPermission apiListItem : getPermissions()) {
                    permissionsJson.put(apiListItem);
                }
                json.put(API_LIST, permissionsJson);
            }

            if (expiresAt != null) {
                json.put(EXPIRES_AT, DateUtils.formatSqlDateTime(expiresAt));
            }

            if (description != null) {
                json.put(DESCRIPTION, description);
            }

            if (createdOn != null) {
                json.put(CREATED_ON, DateUtils.formatSqlDateTime(createdOn));
            }

            if (lastUsed != null) {
                json.put(LAST_USED, DateUtils.formatSqlDateTime(lastUsed));
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return json;
    }

    public ApiToken _fromJSON(JSONObject json) throws JSONException {
        if (json.has(ID)) {
            this.setId(json.getInt(ID));
        }
        if (json.has(TOKEN_TEMPLATE)) {
            this.setTokenTemplate(json.getString(TOKEN_TEMPLATE));
        }

        if (json.has(API_LIST)) {
            JSONArray permissionsJson = json.getJSONArray(API_LIST);

            for(int i = 0; i < permissionsJson.length(); i++){
                permissions.add(new ApiTokenPermission(permissionsJson.getString(i)));
            }
        }

        if (json.has(EXPIRES_AT)) {
            try {
                this.setExpiresAt(DateUtils.parseSqlDateTime(json.getString(EXPIRES_AT)));
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }

        if (json.has(DESCRIPTION)) {
            this.setDescription(json.getString(DESCRIPTION));
        }

        if (json.has(CREATED_ON)) {
            try {
                this.setCreatedOn(DateUtils.parseSqlDateTime(json.getString(CREATED_ON)));
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }

        if (json.has(LAST_USED)) {
            try {
                this.setLastUsed(DateUtils.parseSqlDateTime(json.getString(LAST_USED)));
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }

        return this;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy