/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.storageos.coordinator.client.model; import java.util.Date; import com.emc.storageos.coordinator.exceptions.FatalCoordinatorException; import com.emc.storageos.model.dr.SiteErrorResponse; import com.emc.storageos.svcs.errorhandling.resources.InternalServerErrorException; import com.emc.storageos.svcs.errorhandling.resources.ServiceCode; /** * * This class is used to present latest standby site error * */ public class SiteError implements CoordinatorSerializable{ public static final String CONFIG_KIND = "siteError"; public static final String CONFIG_ID = "global"; private static final String ENCODING_SEPARATOR = "\0"; private long creationTime = 0; private ServiceCode serviceCode; private String errorMessage; private String operation; public SiteError() { } public SiteError(InternalServerErrorException exception, String operation) { this.serviceCode = exception.getServiceCode(); this.errorMessage = exception.getMessage(); this.creationTime = (new Date()).getTime(); this.operation = operation; } @Override public String encodeAsString() { StringBuilder builder = new StringBuilder(); builder.append(creationTime); builder.append(ENCODING_SEPARATOR); if (serviceCode != null) { builder.append(serviceCode.toString()); builder.append(ENCODING_SEPARATOR); builder.append(errorMessage); builder.append(ENCODING_SEPARATOR); builder.append(operation); } return builder.toString(); } @Override public SiteError decodeFromString(String infoStr) throws FatalCoordinatorException { final String[] strings = infoStr.split(ENCODING_SEPARATOR); SiteError siteError = new SiteError(); siteError.creationTime = Long.parseLong(strings[0]); if (strings.length > 1) { siteError.serviceCode = ServiceCode.valueOf(strings[1]); siteError.errorMessage = strings[2]; if (strings.length > 2) { siteError.operation = strings[3]; } } return siteError; } public long getCreationTime() { return creationTime; } public ServiceCode getServiceCode() { return serviceCode; } public String getErrorMessage() { return errorMessage; } public String getOperation() { return operation; } @Override public CoordinatorClassInfo getCoordinatorClassInfo() { return new CoordinatorClassInfo(CONFIG_ID, CONFIG_KIND, "siteError"); } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("SiteError [creationTime="); builder.append(creationTime); builder.append(", serviceCode="); builder.append(serviceCode); builder.append(", errorMessage="); builder.append(errorMessage); builder.append(", operation="); builder.append(operation); builder.append("]"); return builder.toString(); } public SiteErrorResponse toResponse() { SiteErrorResponse response = new SiteErrorResponse(); response.setCreationTime(this.creationTime); response.setServiceCode(this.serviceCode.ordinal()); response.setServiceCodeName(this.serviceCode.name()); response.setErrorMessage(this.errorMessage); response.setOperation(this.operation); return response; } public void cleanup() { this.creationTime = 0; this.serviceCode = null; this.errorMessage = null; this.operation = null; } }