Bug 147669 Allow editing of a report design that contains reference to non-existing ODA extension
I occasionally need to open BIRT report designs received from the customers which contains data sources that reference proprietary ODA data sources. As it is right now, such report designs would fail to open in BIRT(since I don't have the ODA extension), which displays the following error message: Unable to create this part due to an internal error. Reason for the failure: The extension with ID 'xxxx' is not found. Further editting of the design with BIRT report designer is not possible. I would then have to open the design in a text editor and remove the offending data source/data sets before I can open them in BIRT to look at the report structure. You can reproduce this with the attached report design. It will be desirable for BIRT to be able to open such a report design to allow the user to fix the data source/data set problems within the editor.
model/org.eclipse.birt.report.model/src/org/eclipse/birt/report/model/writer/ModuleWriter.java
import org.eclipse.birt.report.model.metadata.ExtensionElementDefn;
import org.eclipse.birt.report.model.metadata.MetaDataDictionary;
import org.eclipse.birt.report.model.metadata.PropertyDefn;
import org.eclipse.birt.report.model.metadata.PropertyType;
import org.eclipse.birt.report.model.metadata.StructPropertyDefn;
import org.eclipse.birt.report.model.metadata.StructureDefn;
import org.eclipse.birt.report.model.parser.DesignSchemaConstants;
import org.eclipse.birt.report.model.util.ContentIterator;
/**
 * Represents the module writer which writes an XML file following the BIRT
 * design schema. Uses a visitor pattern to traverse each element. BIRT elements
 * support inheritance in several forms. Because of this, the module writer
 * writes only those properties "local" to the element being written -- it does
 * not write inherited properties.
 * <p>
 * Because the XML schema was designed for to be understood by humans, the
 * schema is not a literal representation of the model. Instead, properties are
 * named and grouped in a way that is easiest to explain and understand. This
 * means that the writer has to do a bit more work to write the design, the the
 * extra work here is well worth the savings to the many customers who will read
 * the design format.
 * 
 */
public abstract class ModuleWriter extends ElementVisitor
{
	/**
	 * The low-level writer that emits XML syntax.
	 */
	/**
	 * The constant for default model name space.