/** * Instantiate a new ImageExportOptions from a preserved state. * * @param node An XML context in which state was saved * @return The new ImageExportOptions * @throws XMLException If the given node has invalid content. */ public static ImageExportOptions read(XmlNode node) throws XMLException { node = node.getChild(ExportOptionsTag); final String typeName = node.getAttribute(TypeTag); final ImageType type = ImageType.getImageTypeByName(typeName); if (type == null) { throw new XMLException("Unrecognized image export type"); } final ImageExportOptions options = type.newExportOptions(); options.restore(node); if (node.hasAttribute(FileTag)) { options.m_exportFile = new File(node.getAttribute(FileTag)); } return options; }
/** * Checks this <code>ImageExportOptions</code> to another object for equality. * * @param o The other object to compare to. * @return Returns <code>true</code> only if the other object is also an <code>ImageExportOptions * </code> and they both are for the same {@link ImageType} and all of their options are * equal. */ public boolean equals(Object o) { if (o == null || !o.getClass().equals(getClass())) return false; final ImageExportOptions otherOpts = (ImageExportOptions) o; final File otherExportFile = otherOpts.getExportFile(); if (otherExportFile == null) { if (getExportFile() != null) return false; } else if (!otherExportFile.equals(getExportFile())) return false; if (!otherOpts.getImageType().equals(getImageType())) return false; final Map<String, ImageExportOption> om = otherOpts.m_exportOptions; if (om.size() != m_exportOptions.size()) return false; for (Map.Entry<String, ImageExportOption> me : om.entrySet()) { final ImageExportOption opt = m_exportOptions.get(me.getKey()); if (opt == null || !opt.equals(me.getValue())) return false; } return true; }