package jadx.core.xmlgen; import jadx.core.codegen.CodeWriter; import jadx.core.utils.exceptions.JadxRuntimeException; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.InputStream; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; public class ResContainer implements Comparable<ResContainer> { private final String name; private final List<ResContainer> subFiles; @Nullable private CodeWriter content; @Nullable private BufferedImage image; private ResContainer(String name, List<ResContainer> subFiles) { this.name = name; this.subFiles = subFiles; } public static ResContainer singleFile(String name, CodeWriter content) { ResContainer resContainer = new ResContainer(name, Collections.<ResContainer>emptyList()); resContainer.content = content; return resContainer; } public static ResContainer singleImageFile(String name, InputStream content) { ResContainer resContainer = new ResContainer(name, Collections.<ResContainer>emptyList()); try { resContainer.image = ImageIO.read(content); } catch (Exception e) { throw new JadxRuntimeException("Image load error", e); } return resContainer; } public static ResContainer multiFile(String name) { return new ResContainer(name, new ArrayList<ResContainer>()); } public String getName() { return name; } public String getFileName() { return name.replace("/", File.separator); } @Nullable public CodeWriter getContent() { return content; } public void setContent(@Nullable CodeWriter content) { this.content = content; } @Nullable public BufferedImage getImage() { return image; } public List<ResContainer> getSubFiles() { return subFiles; } @Override public int compareTo(@NotNull ResContainer o) { return name.compareTo(o.name); } @Override public String toString() { return "Res{" + name + ", subFiles=" + subFiles + "}"; } }