ViewRiksdagenPoliticianInfluenceMetrics.java

package com.hack23.cia.model.internal.application.data.politician.impl;

import java.io.Serializable;
import java.math.BigDecimal;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * JPA entity for view_riksdagen_politician_influence_metrics database view.
 * 
 * Intelligence Purpose: Measures individual politician influence and network
 * position through connectivity analysis. Identifies key influencers, broker
 * roles, and cross-party bridge builders in the parliamentary network.
 * 
 * Created by: Liquibase v1.29 (Intelligence Operations)
 * Risk Rules Supported: P-20, P-21 (Network influence and broker role assessment)
 */
@Entity(name = "ViewRiksdagenPoliticianInfluenceMetrics")
@Table(name = "view_riksdagen_politician_influence_metrics")
public class ViewRiksdagenPoliticianInfluenceMetrics implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@Column(name = "person_id", nullable = false, length = 255)
	private String personId;

	@Column(name = "first_name", length = 255)
	private String firstName;

	@Column(name = "last_name", length = 255)
	private String lastName;

	@Column(name = "party", length = 50)
	private String party;

	@Column(name = "network_connections")
	private Long networkConnections;

	@Column(name = "cross_party_bridges")
	private Long crossPartyBridges;

	@Column(name = "normalized_centrality", precision = 10, scale = 6)
	private BigDecimal normalizedCentrality;

	@Column(name = "connectivity_level", length = 50)
	private String connectivityLevel;

	@Column(name = "broker_classification", length = 100)
	private String brokerClassification;

	@Column(name = "influence_score", precision = 10, scale = 4)
	private BigDecimal influenceScore;

	@Column(name = "influence_assessment", length = 255)
	private String influenceAssessment;

	/**
	 * Default constructor.
	 */
	public ViewRiksdagenPoliticianInfluenceMetrics() {
		super();
	}

	// Getters and Setters

	public String getPersonId() {
		return personId;
	}

	public void setPersonId(String personId) {
		this.personId = personId;
	}

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

	public String getLastName() {
		return lastName;
	}

	public void setLastName(String lastName) {
		this.lastName = lastName;
	}

	public String getParty() {
		return party;
	}

	public void setParty(String party) {
		this.party = party;
	}

	public Long getNetworkConnections() {
		return networkConnections;
	}

	public void setNetworkConnections(Long networkConnections) {
		this.networkConnections = networkConnections;
	}

	public Long getCrossPartyBridges() {
		return crossPartyBridges;
	}

	public void setCrossPartyBridges(Long crossPartyBridges) {
		this.crossPartyBridges = crossPartyBridges;
	}

	public BigDecimal getNormalizedCentrality() {
		return normalizedCentrality;
	}

	public void setNormalizedCentrality(BigDecimal normalizedCentrality) {
		this.normalizedCentrality = normalizedCentrality;
	}

	public String getConnectivityLevel() {
		return connectivityLevel;
	}

	public void setConnectivityLevel(String connectivityLevel) {
		this.connectivityLevel = connectivityLevel;
	}

	public String getBrokerClassification() {
		return brokerClassification;
	}

	public void setBrokerClassification(String brokerClassification) {
		this.brokerClassification = brokerClassification;
	}

	public BigDecimal getInfluenceScore() {
		return influenceScore;
	}

	public void setInfluenceScore(BigDecimal influenceScore) {
		this.influenceScore = influenceScore;
	}

	public String getInfluenceAssessment() {
		return influenceAssessment;
	}

	public void setInfluenceAssessment(String influenceAssessment) {
		this.influenceAssessment = influenceAssessment;
	}

	@Override
	public boolean equals(final Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null || getClass() != obj.getClass()) {
			return false;
		}
		final ViewRiksdagenPoliticianInfluenceMetrics other = (ViewRiksdagenPoliticianInfluenceMetrics) obj;
		return new EqualsBuilder()
				.append(personId, other.personId)
				.isEquals();
	}

	@Override
	public int hashCode() {
		return new HashCodeBuilder()
				.append(personId)
				.toHashCode();
	}

	@Override
	public String toString() {
		return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
				.append("personId", personId)
				.append("firstName", firstName)
				.append("lastName", lastName)
				.append("party", party)
				.append("influenceScore", influenceScore)
				.append("brokerClassification", brokerClassification)
				.toString();
	}
}