content: // Licensed to the Apache Software Foundation (ASF) under one
  // or more contributor license agreements.  See the NOTICE file
  // distributed with this work for additional information
  // regarding copyright ownership.  The ASF licenses this file
  // to you under the Apache License, Version 2.0 (the
  // "License"); you may not use this file except in compliance
  // with the License.  You may obtain a copy of the License at
  //
  //   http://www.apache.org/licenses/LICENSE-2.0
  //
  // Unless required by applicable law or agreed to in writing,
  // software distributed under the License is distributed on an
  // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  // KIND, either express or implied.  See the License for the
  // specific language governing permissions and limitations
  // under the License.
  package com.cloud.api.query.vo;
  
  import javax.persistence.Column;
  import javax.persistence.Entity;
  import javax.persistence.EnumType;
  import javax.persistence.Enumerated;
  import javax.persistence.Id;
  import javax.persistence.Table;
  
  import com.cloud.network.security.SecurityGroup;
  import com.cloud.network.security.SecurityRule.SecurityRuleType;
  import com.cloud.server.ResourceTag.ResourceObjectType;
  import com.cloud.user.Account;
  
  @Entity
  @Table(name = "security_group_view")
  public class SecurityGroupJoinVO extends BaseViewVO implements ControlledViewEntity {
  
      @Id
      @Column(name = "id", updatable = false, nullable = false)
      private long id;
  
      @Column(name = "name")
      private String name;
  
      @Column(name = "description")
      private String description;
  
      @Column(name = "uuid")
      private String uuid;
  
      @Column(name = "account_id")
      private long accountId;
  
      @Column(name = "account_uuid")
      private String accountUuid;
  
      @Column(name = "account_name")
      private String accountName = null;
  
      @Column(name = "account_type")
      @Enumerated(value = EnumType.ORDINAL)
      private Account.Type accountType;
  
      @Column(name = "domain_id")
      private long domainId;
  
      @Column(name = "domain_uuid")
      private String domainUuid;
  
      @Column(name = "domain_name")
      private String domainName = null;
  
      @Column(name = "domain_path")
      private String domainPath = null;
  
      @Column(name = "project_id")
      private long projectId;
  
      @Column(name = "project_uuid")
      private String projectUuid;
  
      @Column(name = "project_name")
      private String projectName;
  
      @Column(name = "job_id")
      private Long jobId;
  
      @Column(name = "job_uuid")
      private String jobUuid;
  
      @Column(name = "job_status")
      private int jobStatus;
  
      @Column(name = "rule_id")
      private Long ruleId;
  
      @Column(name = "rule_uuid")
      private String ruleUuid;
  
      @Column(name = "rule_start_port")
      private int ruleStartPort;
  
      @Column(name = "rule_end_port")
      private int ruleEndPort;
  
      @Column(name = "rule_protocol")
      private String ruleProtocol;
  
      @Column(name = "rule_type")
      private String ruleType;
  
      @Column(name = "rule_allowed_network_id")
      private Long ruleAllowedNetworkId = null;
  
      @Column(name = "rule_allowed_ip_cidr")
      private String ruleAllowedSourceIpCidr = null;
  
      @Column(name = "tag_id")
      private long tagId;
  
      @Column(name = "tag_uuid")
      private String tagUuid;
  
      @Column(name = "tag_key")
      private String tagKey;
  
      @Column(name = "tag_value")
      private String tagValue;
  
      @Column(name = "tag_domain_id")
      private long tagDomainId;
  
      @Column(name = "tag_account_id")
      private long tagAccountId;
  
      @Column(name = "tag_resource_id")
      private long tagResourceId;
  
      @Column(name = "tag_resource_uuid")
      private String tagResourceUuid;
  
      @Column(name = "tag_resource_type")
      @Enumerated(value = EnumType.STRING)
      private ResourceObjectType tagResourceType;
  
      @Column(name = "tag_customer")
      private String tagCustomer;
  
      public SecurityGroupJoinVO() {
      }
  
      @Override
      public long getId() {
          return id;
      }
  
      @Override
      public String getUuid() {
          return uuid;
      }
  
      public String getName() {
          return name;
      }
  
      @Override
      public long getAccountId() {
          return accountId;
      }
  
      @Override
      public String getAccountUuid() {
          return accountUuid;
      }
  
      @Override
      public String getAccountName() {
          return accountName;
      }
  
      @Override
      public Account.Type getAccountType() {
          return accountType;
      }
  
      @Override
      public long getDomainId() {
          return domainId;
      }
  
      @Override
      public String getDomainUuid() {
          return domainUuid;
      }
  
      @Override
      public String getDomainName() {
          return domainName;
      }
  
      @Override
      public String getDomainPath() {
          return domainPath;
      }
  
      public long getProjectId() {
          return projectId;
      }
  
      @Override
      public String getProjectUuid() {
          return projectUuid;
      }
  
      @Override
      public String getProjectName() {
          return projectName;
      }
  
      public Long getJobId() {
          return jobId;
      }
  
      public String getJobUuid() {
          return jobUuid;
      }
  
      public int getJobStatus() {
          return jobStatus;
      }
  
      public String getDescription() {
          return description;
      }
  
      public Long getRuleId() {
          return ruleId;
      }
  
      public String getRuleUuid() {
          return ruleUuid;
      }
  
      public int getRuleStartPort() {
          return ruleStartPort;
      }
  
      public int getRuleEndPort() {
          return ruleEndPort;
      }
  
      public String getRuleProtocol() {
          return ruleProtocol;
      }
  
      public SecurityRuleType getRuleType() {
          if ("ingress".equalsIgnoreCase(ruleType)) {
              return SecurityRuleType.IngressRule;
          } else {
              return SecurityRuleType.EgressRule;
          }
      }
  
      public Long getRuleAllowedNetworkId() {
          return ruleAllowedNetworkId;
      }
  
      public String getRuleAllowedSourceIpCidr() {
          return ruleAllowedSourceIpCidr;
      }
  
      public long getTagId() {
          return tagId;
      }
  
      public String getTagUuid() {
          return tagUuid;
      }
  
      public String getTagKey() {
          return tagKey;
      }
  
      public String getTagValue() {
          return tagValue;
      }
  
      public long getTagDomainId() {
          return tagDomainId;
      }
  
      public long getTagAccountId() {
          return tagAccountId;
      }
  
      public long getTagResourceId() {
          return tagResourceId;
      }
  
      public String getTagResourceUuid() {
          return tagResourceUuid;
      }
  
      public ResourceObjectType getTagResourceType() {
          return tagResourceType;
      }
  
      public String getTagCustomer() {
          return tagCustomer;
      }
  
      @Override
      public Class<?> getEntityType() {
          return SecurityGroup.class;
      }
  }
  