/**
* Copyright (C) 2012 JBoss Inc
*
* Licensed 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.jboss.dashboard.ui.panel.export;
import org.jboss.dashboard.ui.taglib.formatter.FormatterException;
import org.jboss.dashboard.workspace.Workspace;
import org.jboss.dashboard.workspace.export.ExportSessionInfo;
import org.jboss.dashboard.workspace.export.structure.CreateResult;
import org.jboss.dashboard.ui.SessionManager;
import org.jboss.dashboard.workspace.Workspace;
import org.jboss.dashboard.ui.taglib.LinkToWorkspaceTag;
import org.jboss.dashboard.ui.taglib.LocalizeTag;
import org.jboss.dashboard.ui.resources.GraphicElement;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
*
*/
public class RenderImportResultFormatter extends RenderImportPreviewFormatter {
private static transient org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(RenderImportResultFormatter.class.getName());
/**
* Perform the required logic for this Formatter. Inside, the methods
* setAttribute and renderFragment are intended to be used to generate the
* output and set parameters for this output.
* Method getParameter is intended to retrieve input parameters by name.
* <p/>
* Exceptions are to be catched inside the method, and not to be thrown, normally,
* formatters could use a error fragment to be displayed when an error happens
* in displaying. But if the error is unexpected, it can be wrapped inside a
* FormatterException.
*
* @param request user request
* @param response response to the user
* @throws org.jboss.dashboard.ui.taglib.formatter.FormatterException
* in case of an unexpected exception.
*/
public void service(HttpServletRequest request, HttpServletResponse response) throws FormatterException {
ExportSessionInfo sessionInfo = ((ExportDriver) getDriver()).getSessionInfo();
CreateResult[] results = sessionInfo.getCreateResult();
if (results == null) {
renderFragment("fatalError");
} else if (results.length == 0) {
renderFragment("empty");
} else {
renderFragment("outputStart");
boolean anyErrors = false;
for (int i = 0; i < results.length; i++) {
CreateResult result = results[i];
if (result.hasErrors()) anyErrors = true;
}
for (int i = 0; i < results.length; i++) {
CreateResult result = results[i];
renderCreateResult(request, response, result, i, anyErrors);
}
renderFragment("outputEnd");
if (anyErrors)
renderFragment("aborted");
}
}
private void renderCreateResult(HttpServletRequest request, HttpServletResponse response, CreateResult result, int i, boolean anyErrors) {
List warnings = result.getWarnings();
List warningArguments = result.getWarningArguments();
Exception error = result.getException();
renderFragment("createResultStart");
if (result.hasErrors()) {
setAttribute("errorMessage", error.getMessage());
setAttribute("exception", error);
renderFragment("errors");
} else {
Object objectCreated = result.getObjectCreated();
setAttribute("createdElement", objectCreated);
if (objectCreated == null) {
renderFragment("abortedErrorMessageStart");
renderWarnings(warnings, warningArguments, i);
renderFragment("abortedEnd");
} else if (objectCreated instanceof Workspace) {
Workspace p = (Workspace) objectCreated;
setAttribute("name", LocalizeTag.getLocalizedValue(p.getTitle(), SessionManager.getLang(), true));
setAttribute("url", LinkToWorkspaceTag.getLink(request, response, p.getId()));
if (anyErrors) {
renderFragment("abortedSuccessMessageStart");
renderWarnings(warnings, warningArguments, i);
renderFragment("abortedEnd");
} else {
renderFragment("workspaceSuccess");
}
} else if (objectCreated instanceof GraphicElement) {
GraphicElement element = (GraphicElement) objectCreated;
setAttribute("name", LocalizeTag.getLocalizedValue(element.getDescription(), SessionManager.getLang(), true));
setAttribute("category", element.getCategoryName());
//renderFragment(anyErrors ? "abortedSuccessMessage" : "resourceSuccess");
if (anyErrors) {
renderFragment("abortedSuccessMessageStart");
renderWarnings(warnings, warningArguments, i);
renderFragment("abortedSuccessMessageEnd");
} else {
renderFragment("resourceSuccess");
}
}
//renderWarnings(warnings, warningArguments, i);
}
renderFragment("createResultEnd");
}
protected void renderWarnings(List warnings, List warningArguments, int index) {
if (warnings != null && !warnings.isEmpty()) {
setAttribute("uid", "warnings" + index);
renderFragment("warningOutputStart");
for (int j = 0; j < warnings.size(); j++) {
String warningKey = (String) warnings.get(j);
Object[] warningKeyArguments = (Object[]) warningArguments.get(j);
setAttribute("warning", warningKey);
setAttribute("arguments", warningKeyArguments);
renderFragment("warningOutput");
}
renderFragment("warningOutputEnd");
}
}
}