2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END============================================
20 * ===================================================================
24 package org.onap.clamp.loop.log;
26 import com.google.gson.annotations.Expose;
28 import java.io.Serializable;
29 import java.time.Instant;
30 import java.time.temporal.ChronoUnit;
32 import javax.persistence.Column;
33 import javax.persistence.Entity;
34 import javax.persistence.EnumType;
35 import javax.persistence.Enumerated;
36 import javax.persistence.FetchType;
37 import javax.persistence.GeneratedValue;
38 import javax.persistence.GenerationType;
39 import javax.persistence.Id;
40 import javax.persistence.JoinColumn;
41 import javax.persistence.ManyToOne;
42 import javax.persistence.Table;
44 import org.onap.clamp.loop.Loop;
47 * This class holds the logs created by the Clamp Backend. The Instant is always
48 * rounded to the nearest second as the nano seconds can't be stored in the
49 * database. The logs can be therefore exposed to the UI or the client doing
50 * some GET Loop on the backend.
54 @Table(name = "loop_logs")
55 public class LoopLog implements Serializable, Comparable<LoopLog> {
57 * The serial version ID.
59 private static final long serialVersionUID = 1988276670074437631L;
63 @GeneratedValue(strategy = GenerationType.AUTO)
67 @Column(name = "log_type", nullable = false)
68 @Enumerated(EnumType.STRING)
69 private LogType logType;
72 @Column(name = "log_component", nullable = false)
73 private String logComponent;
76 @Column(name = "message", columnDefinition = "MEDIUMTEXT", nullable = false)
77 private String message;
79 @ManyToOne(fetch = FetchType.LAZY)
80 @JoinColumn(name = "loop_id", nullable = false)
84 @Column(name = "log_instant", nullable = false)
85 private Instant logInstant = Instant.now().truncatedTo(ChronoUnit.SECONDS);
91 * Constructor For LoopLog taking message and logtype, logComponent and loop
94 * @param message The message as string
95 * @param logType Type like INFO, WARN, DEBUG
96 * @param logComponent A String with DCAE, POLICY, CLAMP ,etc...
97 * @param loop The loop object that this log is about
99 public LoopLog(String message, LogType logType, String logComponent, Loop loop) {
100 this.message = message;
101 this.logType = logType;
103 this.logComponent = logComponent;
106 public Long getId() {
110 public void setId(Long id) {
114 public LogType getLogType() {
118 public void setLogType(LogType logType) {
119 this.logType = logType;
122 public String getMessage() {
126 public void setMessage(String message) {
127 this.message = message;
130 public Loop getLoop() {
134 public void setLoop(Loop loop) {
138 public Instant getLogInstant() {
142 public void setLogInstant(Instant logInstant) {
143 this.logInstant = logInstant.truncatedTo(ChronoUnit.SECONDS);
146 public String getLogComponent() {
150 public void setLogComponent(String logComponent) {
151 this.logComponent = logComponent;
155 public int hashCode() {
156 final int prime = 31;
158 result = prime * result + ((id == null) ? 0 : id.hashCode());
163 public boolean equals(Object obj) {
170 if (getClass() != obj.getClass()) {
173 LoopLog other = (LoopLog) obj;
175 if (other.id != null) {
178 } else if (!id.equals(other.id)) {
185 public int compareTo(LoopLog arg0) {
186 // Reverse it, so that by default we have the latest
187 if (getId() == null) {
190 if (arg0.getId() == null) {
193 return arg0.getId().compareTo(this.getId());