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

io.mosip.authentication.common.service.entity.PolicyData Maven / Gradle / Ivy

package io.mosip.authentication.common.service.entity;

import java.io.IOException;
import java.time.LocalDateTime;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import org.hibernate.annotations.Type;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.afterburner.AfterburnerModule;

import io.mosip.authentication.core.util.CryptoUtil;
import lombok.AccessLevel;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import net.minidev.json.JSONObject;

@NoArgsConstructor
@Data
@Table(name = "policy_data", schema = "ida")
@Entity
public class PolicyData {

	@Id
	@NotNull
	@Column(name = "policy_id")
	private String policyId;

	@Lob
	@Type(type = "org.hibernate.type.BinaryType")
	@Basic(fetch = FetchType.LAZY)
	@Getter(AccessLevel.NONE)
	@Setter(AccessLevel.NONE)
	@Column(name = "policy_data")
	private byte[] policy;

	@NotNull
	@Column(name = "policy_name")
	private String policyName;

	@NotNull
	@Column(name = "policy_status")
	private String policyStatus;

	@NotNull
	@Column(name = "policy_description")
	private String policyDescription;

	@NotNull
	@Column(name = "policy_commence_on")
	private LocalDateTime policyCommenceOn;

	@NotNull
	@Column(name = "policy_expires_on")
	private LocalDateTime policyExpiresOn;

	@NotNull
	@Column(name = "cr_by")
	private String createdBy;

	@NotNull
	@Column(name = "cr_dtimes")
	private LocalDateTime crDTimes;

	@Column(name = "upd_by")
	private String updatedBy;

	@Column(name = "upd_dtimes")
	private LocalDateTime updDTimes;

	@Column(name = "is_deleted")
	private boolean isDeleted;

	@Column(name = "del_dtimes")
	private LocalDateTime delDTimes;

	private static final ObjectMapper OBJECT_MAPPER;
	
	static {
		OBJECT_MAPPER = new ObjectMapper();
		OBJECT_MAPPER.registerModule(new AfterburnerModule());
	}

	public JSONObject getPolicy() {
		
		try {
			return OBJECT_MAPPER.readValue(CryptoUtil.decodeBase64Url(new String(this.policy)), JSONObject.class);
		} catch (IOException e) {
			// This block will never be executed
			e.printStackTrace();
			return null;
		}
	}

	public void setPolicy(JSONObject policy) {
		this.policy = CryptoUtil.encodeBase64Url(policy.toJSONString().getBytes()).getBytes();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy