Change CLC logic for updated OPHist DB entries.
[policy/xacml-pdp.git] / applications / common / src / main / java / org / onap / policy / pdp / xacml / application / common / operationshistory / GetOperationOutcomePip.java
index fb018b0..60e26a2 100644 (file)
@@ -28,13 +28,13 @@ import com.att.research.xacml.std.pip.StdPIPResponse;
 import com.google.common.base.Strings;
 import java.util.Arrays;
 import java.util.Collection;
+
 import javax.persistence.NoResultException;
 import org.onap.policy.pdp.xacml.application.common.ToscaDictionary;
 import org.onap.policy.pdp.xacml.application.common.std.StdOnapPip;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-
 public class GetOperationOutcomePip extends StdOnapPip {
     public static final String ISSUER_NAME = "get-operation-outcome";
     private static Logger logger = LoggerFactory.getLogger(GetOperationOutcomePip.class);
@@ -57,12 +57,13 @@ public class GetOperationOutcomePip extends StdOnapPip {
      * @return PIPResponse
      */
     @Override
-    public PIPResponse getAttributes(PIPRequest pipRequest, PIPFinder pipFinder) throws PIPException {
+    public PIPResponse getAttributes(PIPRequest pipRequest, PIPFinder pipFinder)
+        throws PIPException {
         if (this.shutdown) {
             throw new PIPException("Engine is shutdown");
         }
         logger.debug("getAttributes requesting attribute {} of type {} for issuer {}",
-                pipRequest.getAttributeId(), pipRequest.getDataTypeId(), pipRequest.getIssuer());
+            pipRequest.getAttributeId(), pipRequest.getDataTypeId(), pipRequest.getIssuer());
         //
         // Determine if the issuer is correct
         //
@@ -73,7 +74,7 @@ public class GetOperationOutcomePip extends StdOnapPip {
             //
             return StdPIPResponse.PIP_RESPONSE_EMPTY;
         }
-        if (! pipRequest.getIssuer().startsWith(ToscaDictionary.GUARD_ISSUER_PREFIX)) {
+        if (!pipRequest.getIssuer().startsWith(ToscaDictionary.GUARD_ISSUER_PREFIX)) {
             logger.error("Issuer does not start with guard");
             //
             // We only respond to ourself as the issuer
@@ -91,14 +92,11 @@ public class GetOperationOutcomePip extends StdOnapPip {
 
         logger.debug("Going to query DB about: clname={}, target={}", clname, target);
         String outcome = doDatabaseQuery(clname);
-        logger.debug("Query result is: {}", outcome);
+        logger.info("Query result is: {}", outcome);
 
         StdMutablePIPResponse pipResponse = new StdMutablePIPResponse();
-        this.addStringAttribute(pipResponse,
-                XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
-                ToscaDictionary.ID_RESOURCE_GUARD_OPERATIONOUTCOME,
-                outcome,
-                pipRequest);
+        this.addStringAttribute(pipResponse, XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE,
+            ToscaDictionary.ID_RESOURCE_GUARD_OPERATIONOUTCOME, outcome, pipRequest);
         return new StdPIPResponse(pipResponse);
     }
 
@@ -118,13 +116,17 @@ public class GetOperationOutcomePip extends StdOnapPip {
             //
             // We are expecting a single result
             //
-            return em.createQuery("select e.outcome from Dbao e"
-                                  + " where e.closedLoopName= ?1"
-                                  + " order by e.endtime desc",
-                                  String.class)
-                .setParameter(1, clname)
-                .setMaxResults(1)
-                .getSingleResult();
+            String result = em
+                .createQuery("select e.outcome from Dbao e" + " where e.closedLoopName= ?1"
+                    + " order by e.starttime desc", String.class)
+                .setParameter(1, clname).setMaxResults(1).getSingleResult();
+
+            // Check the value of result
+            if (result.equalsIgnoreCase("Started")) {
+                return ("In_Progress");
+            } else {
+                return ("Complete");
+            }
         } catch (NoResultException e) {
             logger.trace("No results", e);
         } catch (Exception e) {