Domain model change
[portal.git] / portal-BE / src / main / java / org / onap / portal / domain / db / DomainVo.java
diff --git a/portal-BE/src/main/java/org/onap/portal/domain/db/DomainVo.java b/portal-BE/src/main/java/org/onap/portal/domain/db/DomainVo.java
new file mode 100644 (file)
index 0000000..477d915
--- /dev/null
@@ -0,0 +1,178 @@
+/*
+ * ============LICENSE_START==========================================
+ * ONAP Portal
+ * ===================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ===================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ===================================================================
+ *
+ * Unless otherwise specified, all software contained herein is licensed
+ * under the Apache License, Version 2.0 (the "License");
+ * you may not use this software 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.
+ *
+ * Unless otherwise specified, all documentation contained herein is licensed
+ * under the Creative Commons License, Attribution 4.0 Intl. (the "License");
+ * you may not use this documentation except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *             https://creativecommons.org/licenses/by/4.0/
+ *
+ * Unless required by applicable law or agreed to in writing, documentation
+ * 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.
+ *
+ * ============LICENSE_END============================================
+ *
+ *
+ */
+
+package org.onap.portal.domain.db;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Set;
+import javax.persistence.CascadeType;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Index;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
+import javax.persistence.SequenceGenerator;
+import javax.persistence.Table;
+import javax.validation.constraints.Digits;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import org.onap.portal.domain.db.fn.FnUser;
+import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
+
+@Table(name = "domain")
+@Getter
+@Setter
+@Entity
+@NoArgsConstructor
+@AllArgsConstructor
+@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
+public class DomainVo implements Serializable, Cloneable, Comparable {
+
+  private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(DomainVo.class);
+  private static final long serialVersionUID = 1L;
+
+  @Id
+  @GeneratedValue(strategy = GenerationType.AUTO)
+  @Column(name = "id", length = 11, nullable = false, columnDefinition = "bigint AUTO_INCREMENT")
+  @Digits(integer = 11, fraction = 0)
+  private Long id;
+  private LocalDateTime created;
+  private LocalDateTime modified;
+  private Long rowNum;
+  private Serializable auditUserId;
+
+  @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+  @JoinColumn(name = "created_id", columnDefinition = "bigint")
+  private DomainVo createdId;
+  @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
+  @JoinColumn(name = "modified_id", columnDefinition = "bigint")
+  private DomainVo modifiedId;
+
+  @OneToMany(
+      targetEntity = DomainVo.class,
+      mappedBy = "createdId",
+      cascade = CascadeType.MERGE,
+      fetch = FetchType.LAZY
+  )
+  private Set<DomainVo> fnUsersCreatedId;
+  @OneToMany(
+      targetEntity = DomainVo.class,
+      mappedBy = "modifiedId",
+      cascade = CascadeType.MERGE,
+      fetch = FetchType.LAZY
+  )
+  private Set<DomainVo> fnUsersModifiedId;
+
+  public DomainVo(Long id) {
+    this.id = id;
+  }
+
+  @Override
+  public int compareTo(Object obj) {
+    Long c1 = this.getId();
+    Long c2 = ((org.onap.portalsdk.core.domain.support.DomainVo) obj).getId();
+    return c1 != null && c2 != null ? c1.compareTo(c2) : 1;
+  }
+
+  public Object copy(boolean isIdNull) {
+    ByteArrayOutputStream baos = null;
+    ByteArrayInputStream bais = null;
+    ObjectOutputStream oos = null;
+    ObjectInputStream ois = null;
+    DomainVo newVo = null;
+
+    try {
+      baos = new ByteArrayOutputStream();
+      oos = new ObjectOutputStream(baos);
+      oos.writeObject(this);
+      bais = new ByteArrayInputStream(baos.toByteArray());
+      ois = new ObjectInputStream(bais);
+      newVo = (DomainVo) ois.readObject();
+      if (isIdNull) {
+        newVo.setId(null);
+      }
+    } catch (Exception var8) {
+      logger.error("exception occured", var8);
+    }
+
+    return newVo;
+  }
+
+  public Object clone() throws CloneNotSupportedException {
+    return super.clone();
+  }
+
+  public boolean equals(Object other) {
+    if (this == other) {
+      return true;
+    } else if (other == null) {
+      return false;
+    } else if (!(other instanceof DomainVo)) {
+      return false;
+    } else {
+      DomainVo castOther = (DomainVo) other;
+      return this.getId().equals(castOther.getId())
+          && this.getCreated().equals(castOther.getCreated())
+          && this.getModified().equals(castOther.getModified());
+    }
+  }
+
+  public DomainVo(DomainVo domainVo) {
+    this.id = domainVo.id;
+    this.created = domainVo.created;
+    this.modified = domainVo.modified;
+    this.rowNum = domainVo.rowNum;
+    this.auditUserId = domainVo.auditUserId;
+  }
+}