package com.grid.data;

import com.qualys.agms.grid.cache.loader.CacheName;
import com.qualys.agms.grid.data.key.DefaultDataAffinityKey;
import org.apache.ignite.cache.query.annotations.QuerySqlField;

public class AssetGroupData implements UpdatableData<DefaultDataAffinityKey> {


  boolean updated;
  @QuerySqlField(orderedGroups = {@QuerySqlField.Group(name = "asset_group_idx1", order = 0)})
  private long assetGroupId;
  @QuerySqlField
  private String businessDivision;
  @QuerySqlField
  private String businessFunction;
  @QuerySqlField
  private long businessImpact;
  @QuerySqlField
  private String businessLocation;
  @QuerySqlField
  private String comments;
  @QuerySqlField
  private float cvssDamagePotential = -1;
  @QuerySqlField
  private float cvssEnvAr = -1;
  @QuerySqlField
  private float cvssEnvCr = -1;
  @QuerySqlField
  private float cvssEnvIr = -1;
  @QuerySqlField
  private float cvssTargetDistribution = -1;
  @QuerySqlField
  private long defaultScannerAppliance;
  @QuerySqlField
  private String name;
  @QuerySqlField
  private long networkId;
  @QuerySqlField(orderedGroups = {@QuerySqlField.Group(name = "asset_group_idx1", order = 2)})
  private int partitionId;
  @QuerySqlField(orderedGroups = {@QuerySqlField.Group(name = "asset_group_idx1", order = 3)})
  private long subscriptionId;
  @QuerySqlField(orderedGroups = {@QuerySqlField.Group(name = "asset_group_idx1", order = 4)})
  private long unitId;
  @QuerySqlField
  private long createdDate;
  @QuerySqlField
  private long updatedDate;
  @QuerySqlField(orderedGroups = {@QuerySqlField.Group(name = "asset_group_idx1", order = 5)})
  private long userId;

  @QuerySqlField
  private long modifiedBy;
  
  
  @Override
  public DefaultDataAffinityKey getKey() {
    return new DefaultDataAffinityKey(this.assetGroupId, this.subscriptionId);
  }

  public long getAssetGroupId() {
    return assetGroupId;
  }

  public void setAssetGroupId(long assetGroupId) {
    this.assetGroupId = assetGroupId;
  }

  public String getBusinessDivision() {
    return businessDivision;
  }

  public void setBusinessDivision(String businessDivision) {
    this.businessDivision = businessDivision;
  }

  public String getBusinessFunction() {
    return businessFunction;
  }

  public void setBusinessFunction(String businessFunction) {
    this.businessFunction = businessFunction;
  }

  public long getBusinessImpact() {
    return businessImpact;
  }

  public void setBusinessImpact(long businessImpact) {
    this.businessImpact = businessImpact;
  }

  public String getBusinessLocation() {
    return businessLocation;
  }

  public void setBusinessLocation(String businessLocation) {
    this.businessLocation = businessLocation;
  }

  public String getComments() {
    return comments;
  }

  public void setComments(String comments) {
    this.comments = comments;
  }

  public float getCvssDamagePotential() {
    return cvssDamagePotential;
  }

  public void setCvssDamagePotential(float cvssDamagePotential) {
    this.cvssDamagePotential = cvssDamagePotential;
  }

  public float getCvssEnvAr() {
    return cvssEnvAr;
  }

  public void setCvssEnvAr(float cvssEnvAr) {
    this.cvssEnvAr = cvssEnvAr;
  }

  public float getCvssEnvCr() {
    return cvssEnvCr;
  }

  public void setCvssEnvCr(float cvssEnvCr) {
    this.cvssEnvCr = cvssEnvCr;
  }

  public float getCvssEnvIr() {
    return cvssEnvIr;
  }

  public void setCvssEnvIr(float cvssEnvIr) {
    this.cvssEnvIr = cvssEnvIr;
  }

  public float getCvssTargetDistribution() {
    return cvssTargetDistribution;
  }

  public void setCvssTargetDistribution(float cvssTargetDistribution) {
    this.cvssTargetDistribution = cvssTargetDistribution;
  }

  public long getDefaultScannerAppliance() {
    return defaultScannerAppliance;
  }

  public void setDefaultScannerAppliance(long defaultScannerAppliance) {
    this.defaultScannerAppliance = defaultScannerAppliance;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public long getNetworkId() {
    return networkId;
  }

  public void setNetworkId(long networkId) {
    this.networkId = networkId;
  }

  public int getPartitionId() {
    return partitionId;
  }

  public void setPartitionId(int partitionId) {
    this.partitionId = partitionId;
  }

  public long getSubscriptionId() {
    return subscriptionId;
  }

  public void setSubscriptionId(long subscriptionId) {
    this.subscriptionId = subscriptionId;
  }

  public long getUnitId() {
    return unitId;
  }

  public void setUnitId(long unitId) {
    this.unitId = unitId;
  }

  public long getCreatedDate() {
    return createdDate;
  }

  public void setCreatedDate(long createdDate) {
    this.createdDate = createdDate;
  }

  public long getUpdatedDate() {
    return updatedDate;
  }

  public void setUpdatedDate(long updatedDate) {
    this.updatedDate = updatedDate;
  }

  public long getUserId() {
    return userId;
  }

  public void setUserId(long userId) {
    this.userId = userId;
  }


  @Override
  public String getCacheName() {
    return CacheName.ASSET_GROUP_CACHE.name();
  }

  /**
   * @return true if the data/entry is newly created. false if it is existing data/entry is updated
   */
  @Override
  public boolean isUpdated() {
    return updated;
  }

  public void setUpdated(boolean updated) {
    this.updated = updated;
  }

  public long getModifiedBy() {
    return modifiedBy;
  }

  public void setModifiedBy(long modifiedBy) {
    this.modifiedBy = modifiedBy;
  }

}
