Package nexj.core.util.XMLUtil

Examples of nexj.core.util.XMLUtil.ElementHandler


    */
   protected void loadObject(Element objectElement, String sObjectName, final SQLObject sqlObject)
   {
      sqlObject.setName(sObjectName);

      XMLUtil.withFirstChildElement(objectElement, "Create", false, new ElementHandler()
      {
         public void handleElement(Element scriptElement)
         {
            SQLScript script = new SQLScript();

            loadSQLScript(scriptElement, script);
            sqlObject.setCreateScript(script);
         }
      });

      XMLUtil.withFirstChildElement(objectElement, "Drop", false, new ElementHandler()
      {
         public void handleElement(Element scriptElement)
         {
            SQLScript script = new SQLScript();

View Full Code Here


            {
               table.addPointcutPattern(sPattern, bInclusive);
            }
         });

      XMLUtil.withFirstChildElement(tableElement, "Columns", false, new ElementHandler()
      {
         public void handleElement(Element columnsElement)
         {
            XMLUtil.forEachChildElement(columnsElement, "Column",
               getHelper().new ElementHandler("column")
            {
               public void handleElement(Element columnElement, String sColumnName)
               {
                  XMLMetadataHelper.validateName(sColumnName);
                 
                  Column column = new Column(sColumnName, table);

                  loadColumn(columnElement, column);
                  table.addColumn(column);
               }
            });
         }
      });

      XMLUtil.withFirstChildElement(tableElement, "Indexes", false, new ElementHandler()
      {
         public void handleElement(Element indexesElement)
         {
            XMLUtil.forEachChildElement(indexesElement, "Index",
               getHelper().new ElementHandler("index")
            {
               public void handleElement(Element indexElement, String sIndexName)
               {
                  XMLMetadataHelper.validateName(sIndexName, XMLMetadataHelper.NAME_DOT);

                  final Index index = new Index(table);

                  loadIndex(indexElement, sIndexName, index);

                  m_indexFixupList.add(new ContextFixup(getHelper())
                  {
                     public void fixup()
                     {
                        table.addIndex(index);
                     }
                  });
               }
            });
         }
      });

      XMLUtil.withFirstChildElement(tableElement, "View", false, new ElementHandler()
      {
         public void handleElement(Element viewElement)
         {
            final SQLScript script = new SQLScript();
View Full Code Here

            }
         });
      }

      XMLUtil.forEachChildElement(indexElement, "IndexColumn",
         getHelper().new ElementHandler("column")
      {
         public void handleElement(Element element, final String sName)
         {
            final boolean bAscending = XMLUtil.getBooleanAttr(element, "ascending", true);
View Full Code Here

      try
      {
         relationalMapping.setMetaclass(metaclass);
         relationalMapping.setDataSource(dataSource);

         XMLUtil.withFirstChildElement(persistenceMappingElement, "RelationalMapping", true, new ElementHandler()
         {
            public void handleElement(Element relationalMappingElement)
            {
               String sPrimaryTable = XMLUtil.getStringAttr(relationalMappingElement, "primaryTable");
              
               relationalMapping.setPrimaryTable((sPrimaryTable == null) ? null : m_schema.getTable(sPrimaryTable));

               final String sKeyGeneratorName = XMLUtil.getStringAttr(relationalMappingElement, "keyGenerator");

               if (sKeyGeneratorName != null)
               {
                  if (sKeyGeneratorName.equals("identity"))
                  {
                     relationalMapping.setKeyGenerator(RelationalMapping.KEY_GEN_IDENTITY);
                  }
                  else
                  {
                     m_loader.addComponentFixup(new ContextFixup(getHelper())
                     {
                        public void fixup()
                        {
                           relationalMapping.setKeyGenerator(
                              relationalMapping.getMetaclass().getMetadata()
                              .getComponent(sKeyGeneratorName));
                        }
                     });
                  }
               }

               XMLUtil.withFirstChildElement(relationalMappingElement, "AttributeMappings", false, new ElementHandler()
               {
                  public void handleElement(Element attributeMappingsElement)
                  {
                     XMLUtil.forEachChildElement(attributeMappingsElement, "AttributeMapping",
                        getHelper().new ElementHandler("attribute")
                     {
                        public void handleElement(Element attributeMappingElement, String sAttributeName)
                        {
                           final Attribute attribute = metaclass.getAttribute(sAttributeName);
                           final String sTableName = XMLUtil.getStringAttr(attributeMappingElement, "table");
                           final String sColumnName = XMLUtil.getStringAttr(attributeMappingElement, "column");
                           final String sSourceKeyName = XMLUtil.getStringAttr(attributeMappingElement, "sourceKey");
                           final String sDestinationKeyName = XMLUtil.getStringAttr(attributeMappingElement, "destinationKey");
                           AttributeMapping mapping;
                          
                           m_persistenceMappingElement = null;
                           XMLUtil.withFirstChildElement(attributeMappingElement,
                              "PersistenceMapping", false, m_persistenceMappingElementHandler);

                           if (attribute.getType().isPrimitive())
                           {
                              if (sColumnName == null || sSourceKeyName != null ||
                                 sDestinationKeyName != null || m_persistenceMappingElement != null)
                              {
                                 throw new MetadataException("err.meta.primitiveRelationalMapping",
                                    new Object[]{attribute.getName(), metaclass.getName()});
                              }
                             
                              if (attribute.isCollection())
                              {
                                 throw new MetadataException("err.meta.unsupportedRelationalMapping",
                                    new Object[]{attribute.getName(), metaclass.getName()});
                              }

                              RelationalPrimitiveMapping primitiveMapping = new RelationalPrimitiveMapping();
                              Table table = (sTableName == null) ? relationalMapping.getPrimaryTable() : m_schema.getTable(sTableName);

                              if (table == null)
                              {
                                 throw new MetadataException("err.meta.unspecifiedRelationalMappingTable",
                                    new Object[]{attribute.getName(), metaclass.getName()});
                              }

                              primitiveMapping.setColumn(table.getColumn(sColumnName));
                              primitiveMapping.setAttribute(attribute);
                              mapping = primitiveMapping;
                           }
                           else
                           {
                              if (sTableName != null || sColumnName != null ||
                                 m_persistenceMappingElement != null &&
                                 (sSourceKeyName != null || sDestinationKeyName != null))
                              {
                                 throw new MetadataException("err.meta.classRelationalMapping",
                                    new Object[]{attribute.getName(), metaclass.getName()});
                              }
                             
                              final RelationalClassMapping classMapping = new RelationalClassMapping();
                             
                              classMapping.setAttribute(attribute);

                              if (m_persistenceMappingElement != null)
                              {
                                 if (attribute.isCollection())
                                 {
                                    throw new MetadataException("err.meta.unsupportedRelationalMapping",
                                       new Object[]{attribute.getName(), metaclass.getName()});
                                 }

                                 classMapping.setSourceKey(relationalMapping.getPrimaryTable().getPrimaryKey());
                                 classMapping.setMapping(m_loader.loadPersistenceMapping(m_persistenceMappingElement, (Metaclass)attribute.getType()));
                              }
                              else
                              {
                                 if (sSourceKeyName != null)
                                 {
                                    classMapping.setSourceKey(m_schema.getIndex(sSourceKeyName));
                                 }
                                 else
                                 {
                                    Table primaryTable = relationalMapping.getPrimaryTable();

                                    if (primaryTable != null)
                                    {
                                       classMapping.setSourceKey(primaryTable.getPrimaryKey());
                                    }
                                 }

                                 m_loader.addPersistenceMappingFixup(new ContextFixup(getHelper())
                                 {
                                    public void fixup()
                                    {
                                       Metaclass type = (Metaclass)attribute.getType();
                                       PersistenceMapping mapping = type.getPersistenceMapping();

                                       if (mapping == null)
                                       {
                                          throw new MetadataException("err.meta.missingAssocPersistenceMapping",
                                             new Object[]{attribute.getName(), metaclass.getName(), type.getName()});
                                       }

                                       classMapping.setDestinationKey(mapping.addForeignKey(sDestinationKeyName, classMapping));
                                    }
                                 });
                              }

                              mapping = classMapping;
                           }

                           relationalMapping.addAttributeMapping(mapping);
                        }
                     });
                  }
               });

               XMLUtil.withFirstChildElement(relationalMappingElement, "Hook", false, new ElementHandler()
               {
                  public void handleElement(Element componentElement)
                  {
                     final Component hook = new Component("<PersistenceHook:" + metaclass.getName() + ">");
View Full Code Here

         db.setLongspaceName(XMLUtil.getStringAttr(element, "longspace", db.getLongspaceName()));
         db.setTablespaceName(XMLUtil.getStringAttr(element, "tablespace",db.getTablespaceName()));

         loadFragment(element, defaultFragment, false);

         XMLUtil.withFirstChildElement(element, "Fragments", false, new ElementHandler()
         {
            public void handleElement(Element fragmentsElement)
            {
               XMLUtil.forEachChildElement(fragmentsElement, "Fragment", getHelper().new ElementHandler("fragment")
               {
                  protected void handleElement(Element fragmentElement, String sName)
                  {
                     RelationalDatabaseFragment fragment = (RelationalDatabaseFragment)defaultFragment.clone(false);

                     fragment.setName(sName);
                     db.addFragment(fragment);
                     loadFragment(fragmentElement, fragment, true);
                  }
               });
            }
         });
      }

      db.setDefaultProperties(loader.getContainer()); // done after loading config from XML Element

      DataSourceAdapter adapter = source.getAdapter();

      if (adapter == null)
      {
         return; // no RDBMS mapping defined for "optional" DataSource, hence no component required
      }

      final Component component =
         new Component(source.getName(), adapter.getClassObject(), Component.CONTEXT);

      component.setMetadata(loader.getMetadata());

      if (element != null)
      {
         XMLUtil.withFirstChildElement(element, "SQLHook", false, new ElementHandler()
         {
            public void handleElement(Element componentElement)
            {
               Component hook = new Component("<SQLHook:" + source.getName() + ">");
View Full Code Here

      m_helper = helper;
      m_schema = (RelationalSchema)dataSource.getSchema();
      upgrade.setDataSource(dataSource);

      XMLUtil.forEachChildElement(upgradeElement, null, helper.new ElementHandler("step")
      {
         private int m_nOrdinal;

         protected void handleElement(Element stepElement, final String sExecOrdinal)
         {
            String sElement = stepElement.getNodeName();

            if (sElement.equals("CreateTable"))
            {
               final CreateTableStep create = new CreateTableStep();

               create.setType(parseTableType(XMLUtil.getStringAttr(stepElement, "type"), create.getType()));
               create.setName(XMLMetadataHelper.getNameAttr(stepElement, "name", XMLMetadataHelper.NAME_DOT));
               create.setAlias(XMLUtil.getStringAttr(stepElement, "alias"));
               create.setTablespaceName(XMLUtil.getStringAttr(stepElement, "tablespace"));
               create.setIndexspaceName(XMLUtil.getStringAttr(stepElement, "indexspace"));
               create.setLongspaceName(XMLUtil.getStringAttr(stepElement, "longspace"));

               XMLMetadataLoader.parsePatterns(XMLUtil.getStringAttr(stepElement, "aspects"),
                  new XMLMetadataLoader.PatternHandler()
                  {
                     public void handlePattern(final String sName, final boolean bInclusive)
                     {
                        create.addAspectOverride(sName, bInclusive);
                     }
                  });

               XMLMetadataLoader.parsePatterns(XMLUtil.getStringAttr(stepElement, "pointcuts"),
                  new XMLMetadataLoader.PatternHandler()
                  {
                     public void handlePattern(final String sPattern, final boolean bInclusive)
                     {
                        create.addPointcutPattern(sPattern, bInclusive);
                     }
                  });

               XMLUtil.withFirstChildElement(stepElement, "Columns", false, new ElementHandler()
               {
                  public void handleElement(Element columnsElement)
                  {
                     XMLUtil.forEachChildElement(columnsElement, "Column",
                        getHelper().new ElementHandler("column")
                     {
                        public void handleElement(Element columnElement, String sColumnName)
                        {
                           ColumnOutline outline = new ColumnOutline();

                           loadColumnOutline(columnElement, outline, true);
                           create.addColumnOutline(outline);
                        }
                     });
                  }
               });
              
               XMLUtil.withFirstChildElement(stepElement, "Indexes", false, new ElementHandler()
               {
                  public void handleElement(Element indexesElement)
                  {
                     XMLUtil.forEachChildElement(indexesElement, "Index",
                        getHelper().new ElementHandler("index")
                     {
                        public void handleElement(Element indexElement, String sIndexName)
                        {
                           IndexOutline outline = new IndexOutline();

                           loadIndexOutline(indexElement, outline);
                           create.addIndexOutline(outline);
                        }
                     });
                  }
               });

               XMLUtil.withFirstChildElement(stepElement, "View", false, new ElementHandler()
               {
                  public void handleElement(Element viewElement)
                  {
                     final SQLScript script = new SQLScript();
View Full Code Here

               outline.addAspectOverride(sName, bInclusive);
            }
         });

      XMLUtil.forEachChildElement(element, "IndexColumn",
         getHelper().new ElementHandler("column")
      {
         public void handleElement(Element element, String sName)
         {
            outline.addColumn(sName, XMLUtil.getBooleanAttr(element, "ascending", true));
         }
View Full Code Here

    * @param element The DOM element containing the script elements.
    * @param holder The destination script holder.
    */
   protected void loadSQLScripts(Element element, final SQLScriptHolder holder)
   {
      XMLUtil.forEachChildElement(element, null, m_helper.new ElementHandler("script")
      {
         private int m_nOrdinal;

         protected void handleElement(Element scriptElement, String sSQLOrdinal)
         {
View Full Code Here

    * @param scriptElement The DOM element.
    * @param script The script metadata object.
    */
   protected void loadSQLScript(Element scriptElement, final SQLScript script)
   {
      XMLUtil.forEachChildElement(scriptElement, "SQL", m_helper.new ElementHandler("sql")
      {
         private int m_nOrdinal;

         protected void handleElement(Element sqlElement, String sOrdinal)
         {
View Full Code Here

      assertEquals("@b", // temporary ID not in tobj
                   XMLUtil.findChildElement(result, XML.BASE_PREFIX + "oid")
                      .getTextContent());

      final List/*<Element>*/ list = new ArrayList();
      ElementHandler listFiller = new ElementHandler()
      {
         public void handleElement(Element element)
         {
            list.add(element);
         }
View Full Code Here

TOP

Related Classes of nexj.core.util.XMLUtil.ElementHandler

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.