package org.plantuml.idea.rendering; import org.apache.commons.lang.builder.ToStringBuilder; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * @author Eugene Steinberg */ public class RenderResult { private RenderingType strategy; private final List<ImageItem> imageItems; private final int pages; private int rendered; private int updatedTitles; private int cached; public RenderResult(RenderingType strategy, int totalPages) { this.strategy = strategy; if (totalPages == 0) { this.imageItems = Collections.emptyList(); } else { this.imageItems = new ArrayList<ImageItem>(totalPages); } this.pages = totalPages; } public byte[] getFirstDiagramBytes() { for (ImageItem imageItem : imageItems) { if (PlantUmlNormalRenderer.TITLE_ONLY.equals(imageItem.getDescription())) { continue; } return imageItem.getImageBytes(); } return null; } public RenderingType getStrategy() { return strategy; } public List<ImageItem> getImageItems() { return imageItems; } public int getPages() { return pages; } public boolean hasError() { if (strategy == RenderingType.NORMAL) { for (ImageItem imageItem : imageItems) { if (imageItem.hasError()) return true; } } else { //PartialRenderingException hack return imageItems.size() == 1 && imageItems.get(0).hasError(); } return false; } @Override public String toString() { return new ToStringBuilder(this) .append("pages", pages) .append("rendered", rendered) .append("updatedTitles", updatedTitles) .append("cached", cached) .append("diagrams", imageItems) .toString(); } public void addRenderedImage(ImageItem imageItem) { imageItems.add(imageItem); rendered++; } public void addUpdatedTitle(ImageItem imageItem) { imageItems.add(imageItem); updatedTitles++; } public void addCachedImage(ImageItem imageItem) { imageItems.add(imageItem); cached++; } public ImageItem getImageItem(int i) { return imageItems.size() > i ? imageItems.get(i) : null; } public int getRendered() { return rendered; } public int getUpdatedTitles() { return updatedTitles; } public int getCached() { return cached; } @NotNull public ImageItem[] getImageItemsAsArray() { return getImageItems().toArray(new ImageItem[getImageItems().size()]); } }