/** * 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 org.apache.falcon; import org.apache.commons.lang3.StringUtils; import org.apache.falcon.entity.v0.SchemaHelper; import org.apache.falcon.resource.EntitySummaryResult; import org.apache.falcon.resource.FeedInstanceResult; import org.apache.falcon.resource.FeedLookupResult; import org.apache.falcon.resource.InstanceDependencyResult; import org.apache.falcon.resource.InstancesResult; import org.apache.falcon.resource.InstancesSummaryResult; import org.apache.falcon.resource.SchedulableEntityInstanceResult; import org.apache.falcon.resource.TriageResult; import java.util.Date; import java.util.Formatter; import java.util.Map; /** * Helpers for response object to string conversion. */ public final class ResponseHelper { private ResponseHelper() { } public static String getString(EntitySummaryResult result) { StringBuilder sb = new StringBuilder(); String toAppend; sb.append("Consolidated Status: ").append(result.getStatus()) .append("\n"); sb.append("\nEntity Summary Result :\n"); if (result.getEntitySummaries() != null) { for (EntitySummaryResult.EntitySummary entitySummary : result.getEntitySummaries()) { toAppend = entitySummary.toString(); sb.append(toAppend).append("\n"); } } sb.append("\nAdditional Information:\n"); sb.append("Response: ").append(result.getMessage()); sb.append("Request Id: ").append(result.getRequestId()); return sb.toString(); } public static String getString(InstancesResult result, String runid) { StringBuilder sb = new StringBuilder(); String toAppend; sb.append("Consolidated Status: ").append(result.getStatus()) .append("\n"); sb.append("\nInstances:\n"); sb.append("Instance\t\tCluster\t\tSourceCluster\t\tStatus\t\tRunID\t\t\tLog\n"); sb.append("-----------------------------------------------------------------------------------------------\n"); if (result.getInstances() != null) { for (InstancesResult.Instance instance : result.getInstances()) { toAppend = (instance.getInstance() != null) ? instance.getInstance() : "-"; sb.append(toAppend).append("\t"); toAppend = instance.getCluster() != null ? instance.getCluster() : "-"; sb.append(toAppend).append("\t"); toAppend = instance.getSourceCluster() != null ? instance .getSourceCluster() : "-"; sb.append(toAppend).append("\t"); toAppend = (instance.getStatus() != null ? instance.getStatus() .toString() : "-"); sb.append(toAppend).append("\t"); toAppend = (runid != null ? runid : "latest"); sb.append(toAppend).append("\t"); toAppend = instance.getLogFile() != null ? instance.getLogFile() : "-"; sb.append(toAppend).append("\n"); if (instance.actions != null) { sb.append("actions:\n"); for (InstancesResult.InstanceAction action : instance.actions) { sb.append(" ").append(action.getAction()) .append("\t"); sb.append(action.getStatus()).append("\t") .append(action.getLogFile()).append("\n"); } } } } sb.append("\nAdditional Information:\n"); sb.append("Response: ").append(result.getMessage()); sb.append("Request Id: ").append(result.getRequestId()); return sb.toString(); } public static String getString(FeedInstanceResult result) { StringBuilder sb = new StringBuilder(); String toAppend; sb.append("Consolidated Status: ").append(result.getStatus()) .append("\n"); sb.append("\nInstances:\n"); Formatter formatter = new Formatter(sb); formatter.format("%-16s%-20s%-16s%-16s%-20s%-16s", "Cluster", "Instance", "Status", "Size", "CreationTime", "Details"); sb.append("\n"); sb.append("-----------------------------------------------------------------------------------------------\n"); if (result.getInstances() != null) { for (FeedInstanceResult.Instance instance : result.getInstances()) { formatter.format("%-16s", instance.getCluster() != null ? instance.getCluster() : "-"); formatter.format("%-20s", instance.getInstance() != null ? instance.getInstance() : "-"); formatter.format("%-16s", instance.getStatus() != null ? instance.getStatus() : "-"); formatter.format("%-16s", instance.getSize() != -1 ? instance.getSizeH() : "-"); formatter.format("%-20s", instance.getCreationTime() != 0 ? SchemaHelper.formatDateUTC(new Date(instance.getCreationTime())) : "-"); formatter.format("%-16s", StringUtils.isEmpty(instance.getUri()) ? "-" : instance.getUri()); sb.append("\n"); } } sb.append("\nAdditional Information:\n"); sb.append("Response: ").append(result.getMessage()); sb.append("Request Id: ").append(result.getRequestId()); return sb.toString(); } public static String getString(InstancesResult result) { StringBuilder sb = new StringBuilder(); String toAppend; sb.append("Consolidated Status: ").append(result.getStatus()) .append("\n"); sb.append("\nInstances:\n"); sb.append("Instance\t\tCluster\t\tSourceCluster\t\tStatus\t\tStart\t\tEnd\t\tDetails\t\t\t\t\tLog\n"); sb.append("-----------------------------------------------------------------------------------------------\n"); if (result.getInstances() != null) { for (InstancesResult.Instance instance : result.getInstances()) { toAppend = instance.getInstance() != null ? instance.getInstance() : "-"; sb.append(toAppend).append("\t"); toAppend = instance.getCluster() != null ? instance.getCluster() : "-"; sb.append(toAppend).append("\t"); toAppend = instance.getSourceCluster() != null ? instance .getSourceCluster() : "-"; sb.append(toAppend).append("\t"); toAppend = (instance.getStatus() != null ? instance.getStatus() .toString() : "-"); sb.append(toAppend).append("\t"); toAppend = instance.getStartTime() != null ? SchemaHelper.formatDateUTC(instance.getStartTime()) : "-"; sb.append(toAppend).append("\t"); toAppend = instance.getEndTime() != null ? SchemaHelper.formatDateUTC(instance.getEndTime()) : "-"; sb.append(toAppend).append("\t"); toAppend = (!StringUtils.isEmpty(instance.getDetails())) ? instance.getDetails() : "-"; sb.append(toAppend).append("\t"); toAppend = instance.getLogFile() != null ? instance.getLogFile() : "-"; sb.append(toAppend).append("\n"); if (instance.getWfParams() != null) { InstancesResult.KeyValuePair[] props = instance.getWfParams(); sb.append("Workflow params").append("\n"); for (InstancesResult.KeyValuePair entry : props) { sb.append(entry.getKey()).append("=") .append(entry.getValue()).append("\n"); } sb.append("\n"); } if (instance.actions != null) { sb.append("actions:\n"); for (InstancesResult.InstanceAction action : instance.actions) { sb.append(" ").append(action.getAction()).append("\t"); sb.append(action.getStatus()).append("\t") .append(action.getLogFile()).append("\n"); } } } } sb.append("\nAdditional Information:\n"); sb.append("Response: ").append(result.getMessage()); sb.append("Request Id: ").append(result.getRequestId()); return sb.toString(); } public static String getString(InstancesSummaryResult result) { StringBuilder sb = new StringBuilder(); String toAppend; sb.append("Consolidated Status: ").append(result.getStatus()) .append("\n"); sb.append("\nInstances Summary:\n"); if (result.getInstancesSummary() != null) { for (InstancesSummaryResult.InstanceSummary summary : result .getInstancesSummary()) { toAppend = summary.getCluster() != null ? summary.getCluster() : "-"; sb.append("Cluster: ").append(toAppend).append("\n"); sb.append("Status\t\tCount\n"); sb.append("-------------------------\n"); for (Map.Entry<String, Long> entry : summary.getSummaryMap() .entrySet()) { sb.append(entry.getKey()).append("\t\t") .append(entry.getValue()).append("\n"); } } } sb.append("\nAdditional Information:\n"); sb.append("Response: ").append(result.getMessage()); sb.append("Request Id: ").append(result.getRequestId()); return sb.toString(); } public static String getString(TriageResult triageResult) { StringBuilder sb = new StringBuilder(); sb.append(triageResult.toString()); sb.append("\nAdditional Information:\n"); sb.append("Response: ").append(triageResult.getMessage()); sb.append("Request Id: ").append(triageResult.getRequestId()); return sb.toString(); } public static String getString(FeedLookupResult feedLookupResult) { StringBuilder sb = new StringBuilder(); String results = feedLookupResult.toString(); if (StringUtils.isEmpty(results)) { sb.append("No matching feeds found!"); } else { sb.append(results); } sb.append("\n\nResponse: ").append(feedLookupResult.getMessage()); sb.append("\nRequest Id: ").append(feedLookupResult.getRequestId()); return sb.toString(); } public static String getString(InstanceDependencyResult dependencyResult) { StringBuilder sb = new StringBuilder(); String results = dependencyResult.toString(); if (StringUtils.isEmpty(results)) { sb.append("No dependencies found!"); } else { sb.append(results); } sb.append("\n\nResponse: ").append(dependencyResult.getMessage()); sb.append("\nRequest Id: ").append(dependencyResult.getRequestId()); return sb.toString(); } public static String getString(SchedulableEntityInstanceResult instances) { StringBuilder sb = new StringBuilder(); String results = instances.toString(); if (StringUtils.isEmpty(results)) { sb.append("No sla miss found!"); } else { sb.append(results); } sb.append("\n\nResponse: ").append(instances.getMessage()); sb.append("\nRequest Id: ").append(instances.getRequestId()); return sb.toString(); } }