Some bug fixes and Minor Chages.
[music.git] / src / main / java / org / onap / music / response / jsonobjects / JsonResponse.java
index d44f9fe..f0793dc 100644 (file)
  * ============LICENSE_END=============================================
  * ====================================================================
  */
-package org.onap.music.response.jsonobjects;
 
+package org.onap.music.response.jsonobjects;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+
+import org.onap.music.lockingservice.cassandra.MusicLockState.LockStatus;
+import org.onap.music.main.ResultType;
+
+
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
 @ApiModel(value = "JsonResponse", description = "General Response JSON")
 public class JsonResponse {
 
-    private Boolean status = false;
-    private String error = "";
-    private String version = "";
+    /* Status is required */
+    private ResultType status;
+    
+    /* Standard informational fields */
+    private String error;
+    private String message;
+    
+    /* versioning */
+    private String musicVersion;
+    private String musicBuild;
+    
+    /* Data Fields */
+    private Map<String, HashMap<String, Object>> dataResult;
+    
+    /* Locking fields */
+    private String lock;
+    private LockStatus lockStatus;
+    private List<String> lockHolders;
+    private String lockLease;
+    private boolean isLockHolders=false;
 
-    public JsonResponse(Boolean status, String error, String version) {
-        this.status = status;
-        this.error = error;
-        this.version = version;
-    }
 
-    public JsonResponse() {
-        this.status = false;
-        this.error = "";
-        this.version = "";
-    }
+    public boolean isLockHolders() {
+               return isLockHolders;
+       }
 
-    @ApiModelProperty(value = "Status value")
-    public Boolean getStatus() {
-        return status;
+       public JsonResponse setisLockHolders(boolean isLockHolders) {
+               this.isLockHolders = isLockHolders;
+               return this;
+       }
+
+       /**
+     * Create a JSONLock Response
+     * Use setters to provide more information as in
+     * JsonLockResponse(ResultType.SUCCESS).setMessage("We did it").setLock(mylockname)
+     * @param status
+     */
+    public JsonResponse(ResultType status) {
+        this.status = status;
     }
 
     /**
      * 
-     * @param statusIn
      * @return
      */
-    private String fixStatus(String statusIn) {
-        if (statusIn.equalsIgnoreCase("false")) {
-            return "FAILURE";
-        }
-        return "SUCCESS";
+    @ApiModelProperty(value = "Overall status of the response.",
+                    allowableValues = "Success,Failure")
+    public ResultType getStatus() {
+        return status;
     }
 
-    public void setStatus(Boolean status) {
+    /**
+     * 
+     * @param status
+     */
+    public JsonResponse setStatus(ResultType status) {
         this.status = status;
+        return this;
     }
 
+    /**
+     * 
+     * @return the error
+     */
     @ApiModelProperty(value = "Error value")
     public String getError() {
         return error;
     }
 
-    public void setError(String error) {
+    /**
+     * 
+     * @param error
+     */
+    public JsonResponse setError(String error) {
         this.error = error;
+        return this;
+    }
+    
+    /**
+     * 
+     * @return the message
+     */
+    @ApiModelProperty(value = "Message value")
+    public String getMessage() {
+        return message;
+    }
+
+    /**
+     * 
+     * @param message
+     */
+    public JsonResponse setMessage(String message) {
+        this.message = message;
+        return this;
+    }
+    
+    
+    /**
+     * .
+     * @return the music version
+     */
+    public String getMusicVersion() {
+        return this.musicVersion;
+    }
+    
+    /**
+     * .
+     * @param version of music
+     * @return
+     */
+    public JsonResponse setMusicVersion(String version) {
+        this.musicVersion = version;
+        return this;
+    }
+
+    /**
+     * .
+     * @return the music version
+     */
+    public String getMusicBuild() {
+        return this.musicBuild;
+    }
+    
+    /**
+     * .
+     * @param build of music
+     * @return
+     */
+    public JsonResponse setMusicBuild(String build) {
+        this.musicBuild = build;
+        return this;
+    }
+
+
+    public Map<String, HashMap<String, Object>> getDataResult() {
+        return this.dataResult;
+    }
+    
+    public JsonResponse setDataResult(Map<String, HashMap<String, Object>> map) {
+        this.dataResult = map;
+        return this;
+    }
+
+    /**
+     * 
+     * @return
+     */
+    public String getLock() {
+        return lock;
     }
 
-    @ApiModelProperty(value = "Version value")
-    public String getVersion() {
-        return version;
+    /**
+     * 
+     * @param lock
+     */
+    public JsonResponse setLock(String lock) {
+        this.lock = lock;
+        return this;
+    }
+    
+    /**
+     * 
+     * @return the lockStatus
+     */
+    @ApiModelProperty(value = "Status of the lock")
+    public LockStatus getLockStatus() {
+        return lockStatus;
     }
 
-    public void setVersion(String version) {
-        this.version = version;
+    /**
+     * 
+     * @param lockStatus
+     */
+    public JsonResponse setLockStatus(LockStatus lockStatus) {
+        this.lockStatus = lockStatus;
+        return this;
+    }
+
+    /**
+     * 
+     * 
+     * @return the lockHolder
+     */
+    @ApiModelProperty(value = "Holder of the Lock")
+    public List<String> getLockHolder() {
+        return lockHolders;
     }
 
+    /**
+     * 
+     * @param lockHolder
+     */
+    public JsonResponse setLockHolder(String lockHolder) {
+        this.lockHolders = new ArrayList<String>();
+        this.lockHolders.add(lockHolder);
+        return this;
+    }
+
+    public JsonResponse setLockHolder(List<String> lockHolders) {
+        this.lockHolders = lockHolders;
+        return this;
+    }
+
+
+    /**
+     * @return the lockLease
+     */
+    public String getLockLease() {
+        return lockLease;
+    }
+
+    /**
+     * @param lockLease the lockLease to set
+     */
+    public JsonResponse setLockLease(String lockLease) {
+        this.lockLease = lockLease;
+        return this;
+    }
+
+    /**
+     * Convert to Map
+     * 
+     * @return
+     */
     public Map<String, Object> toMap() {
-        Map<String, Object> newMap = new HashMap<>();
-        newMap.put("status", fixStatus(String.valueOf(status)));
-        newMap.put("error", error);
-        newMap.put("version", version);
-        return newMap;
+        Map<String, Object> fullMap = new HashMap<>();
+        fullMap.put("status", status);
+        if (error != null && !"".equals(error)) { 
+            fullMap.put("error", error); 
+        }
+        if (message != null) { 
+            fullMap.put("message", message); 
+        }
+        
+        if (musicVersion != null) {
+            fullMap.put("version", musicVersion);
+        }
+        
+        if (musicBuild != null) {
+            fullMap.put("build", musicBuild);
+        }
+    
+        if (dataResult != null) {
+            fullMap.put("result", dataResult);
+        }
+        
+        if (lock != null) {
+            Map<String, Object> lockMap = new HashMap<>();
+            if (lock != null) {
+                lockMap.put("lock", lock);
+            }
+            if (lockStatus != null) {
+                lockMap.put("lock-status", lockStatus);
+            }
+            if (lockHolders != null && !lockHolders.isEmpty()) {
+                if (lockHolders.size()==1 && !isLockHolders) {
+                    //for backwards compatability
+                    lockMap.put("lock-holder", lockHolders.get(0));
+                } else {
+                    lockMap.put("lock-holder", lockHolders);
+                }
+            }
+            if (lockLease != null) {
+                lockMap.put("lock-lease", lockLease);
+            }
+            fullMap.put("lock", lockMap);
+        }
+
+        return fullMap;
+    }
+
+    /**
+     * Convert to String
+     */
+    @Override
+    public String toString() {
+        return "JsonLockResponse [status=" + status + ", error=" + error + ", message=" + message
+                        + ", lock=" + lock + ", lockStatus=" + lockStatus + ", lockHolder="
+                        + lockHolders + "]";
     }
+
 }