protected Element createElement(
     final ElementMetaData elementMetaData,
     final String fieldName,
     final ReportDocumentContext context)
     throws InstantiationException {
   final ElementType type = elementMetaData.create();
   final IndexElement visualElement = new IndexElement();
   visualElement.setAutoSort(Boolean.TRUE);
   visualElement
       .getRelationalGroup(0)
       .getHeader()
       .setAttribute(
           ReportDesignerParserModule.NAMESPACE,
           ReportDesignerParserModule.HIDE_IN_LAYOUT_GUI_ATTRIBUTE,
           Boolean.TRUE);
   visualElement
       .getRelationalGroup(0)
       .getFooter()
       .setAttribute(
           ReportDesignerParserModule.NAMESPACE,
           ReportDesignerParserModule.HIDE_IN_LAYOUT_GUI_ATTRIBUTE,
           Boolean.TRUE);
   visualElement
       .getDetailsFooter()
       .setAttribute(
           ReportDesignerParserModule.NAMESPACE,
           ReportDesignerParserModule.HIDE_IN_LAYOUT_GUI_ATTRIBUTE,
           Boolean.TRUE);
   visualElement
       .getDetailsHeader()
       .setAttribute(
           ReportDesignerParserModule.NAMESPACE,
           ReportDesignerParserModule.HIDE_IN_LAYOUT_GUI_ATTRIBUTE,
           Boolean.TRUE);
   visualElement
       .getNoDataBand()
       .setAttribute(
           ReportDesignerParserModule.NAMESPACE,
           ReportDesignerParserModule.HIDE_IN_LAYOUT_GUI_ATTRIBUTE,
           Boolean.TRUE);
   visualElement
       .getWatermark()
       .setAttribute(
           ReportDesignerParserModule.NAMESPACE,
           ReportDesignerParserModule.HIDE_IN_LAYOUT_GUI_ATTRIBUTE,
           Boolean.TRUE);
   type.configureDesignTimeDefaults(visualElement, Locale.getDefault());
   final ElementStyleSheet styleSheet = visualElement.getStyle();
   styleSheet.setStyleProperty(ElementStyleKeys.MIN_WIDTH, DEFAULT_WIDTH);
   styleSheet.setStyleProperty(ElementStyleKeys.MIN_HEIGHT, DEFAULT_HEIGHT);
   return visualElement;
 }
  protected Element createElement(
      final ElementMetaData elementMetaData,
      final String fieldName,
      final ReportDocumentContext context)
      throws InstantiationException {
    // Create a crosstab element
    final ElementType type = elementMetaData.create();
    final CrosstabElement visualElement = new CrosstabElement();
    visualElement.setElementType(type);
    visualElement.setRootGroup(new CrosstabGroup());

    // Hide all bands except for Details
    visualElement
        .getPageHeader()
        .setAttribute(
            ReportDesignerParserModule.NAMESPACE,
            ReportDesignerParserModule.HIDE_IN_LAYOUT_GUI_ATTRIBUTE,
            Boolean.TRUE);
    visualElement
        .getReportHeader()
        .setAttribute(
            ReportDesignerParserModule.NAMESPACE,
            ReportDesignerParserModule.HIDE_IN_LAYOUT_GUI_ATTRIBUTE,
            Boolean.TRUE);
    visualElement
        .getReportFooter()
        .setAttribute(
            ReportDesignerParserModule.NAMESPACE,
            ReportDesignerParserModule.HIDE_IN_LAYOUT_GUI_ATTRIBUTE,
            Boolean.TRUE);
    visualElement
        .getPageFooter()
        .setAttribute(
            ReportDesignerParserModule.NAMESPACE,
            ReportDesignerParserModule.HIDE_IN_LAYOUT_GUI_ATTRIBUTE,
            Boolean.TRUE);
    visualElement
        .getWatermark()
        .setAttribute(
            ReportDesignerParserModule.NAMESPACE,
            ReportDesignerParserModule.HIDE_IN_LAYOUT_GUI_ATTRIBUTE,
            Boolean.TRUE);

    type.configureDesignTimeDefaults(visualElement, Locale.getDefault());

    final ElementStyleSheet styleSheet = visualElement.getStyle();
    styleSheet.setStyleProperty(ElementStyleKeys.MIN_WIDTH, DEFAULT_WIDTH);
    styleSheet.setStyleProperty(ElementStyleKeys.MIN_HEIGHT, DEFAULT_HEIGHT);

    return visualElement;
  }
  public static boolean validateElementMetaData(ElementType elementType) {
    ElementMetaData metaData = elementType.getMetaData();
    if (metaData == null) {
      logger.warn("No Metadata defined");
      return false;
    }

    if (validateCanInstantiate(metaData)) {
      return false;
    }

    final String typeName = metaData.getName();
    logger.debug("Processing " + typeName);

    ArrayList<String> missingProperties = new ArrayList<String>();
    validateCoreMetaData(metaData, missingProperties);
    validateStyleMetaData(metaData, missingProperties);
    validateAttributeMetaData(metaData, missingProperties);

    flushSystemErr();

    for (String property : missingProperties) {
      System.out.println(property);
    }

    return missingProperties.isEmpty();
  }
  private ElementMetaData createMetaData(final String fieldName) {

    final ContextAwareDataSchemaModel model =
        editorContext.getRenderContext().getReportDataSchemaModel();
    final DataSchema dataSchema = model.getDataSchema();
    final DataAttributes attributes = dataSchema.getAttributes(fieldName);
    final DataAttributeContext dataAttributeContext = new DefaultDataAttributeContext();
    if (attributes == null) {
      return null;
    }
    final ElementType type = AutoGeneratorUtility.createFieldType(attributes, dataAttributeContext);
    if (type == null) {
      return null;
    }
    return type.getMetaData();
  }
 public void registerReader(
     final ElementType elementType, final Class<? extends ElementReadHandler> readHandler) {
   ElementMetaData metaData = elementType.getMetaData();
   register(metaData.getNamespace(), metaData.getName(), readHandler);
 }
 public void registerGenericWriter(final ElementType elementType) {
   registerGenericWriter(elementType.getMetaData().getName());
 }
 public void registerGenericReader(final ElementType elementType) {
   ElementMetaData metaData = elementType.getMetaData();
   register(metaData.getNamespace(), metaData.getName(), GenericElementReadHandler.class);
 }
 public void register(
     final ElementType elementType,
     final Class<? extends BundleElementWriteHandler> writeHandler) {
   ElementMetaData metaData = elementType.getMetaData();
   register(metaData.getName(), writeHandler);
 }