Examples of InheritanceMetaData


Examples of org.datanucleus.metadata.InheritanceMetaData

                ClassMetaData cmd = newClassObject(pmd, attrs, false);
                pmd.addClass(cmd);

                // Set to use "subclass-table" since all subclasses inherit these fields
                InheritanceMetaData inhmd = new InheritanceMetaData();
                inhmd.setStrategy(InheritanceStrategy.SUBCLASS_TABLE);
                cmd.setInheritanceMetaData(inhmd);

                pushStack(cmd);
            }
            else if (localName.equals("query"))
            {
                // Processed in endElement()
            }
            else if (localName.equals("entity"))
            {
                // New entity for this package
                FileMetaData filemd = (FileMetaData)getStack();
                String className = getAttr(attrs, "class");
                String packageName = null;
                if (className.indexOf('.') > 0)
                {
                    // Fully-qualified so use package name from class
                    packageName = className.substring(0, className.lastIndexOf('.'));
                }
                PackageMetaData pmd = null;
                if (packageName != null)
                {
                    pmd = filemd.getPackage(packageName);
                }
                if (pmd == null)
                {
                    if (packageName != null)
                    {
                        // Class fully qualified so add its package
                        pmd = filemd.newPackageMetadata(packageName);
                    }
                    else if (defaultPackageName != null)
                    {
                        // Use default package for entity-mappings
                        pmd = filemd.getPackage(defaultPackageName);
                    }
                    else
                    {
                        // Add root package
                        pmd = filemd.newPackageMetadata("");
                    }
                }

                ClassMetaData cmd = newClassObject(pmd, attrs, false);
                pmd.addClass(cmd);

                pushStack(cmd);
            }
            else if (localName.equals("embeddable"))
            {
                // New embedded-only entity for this package
                FileMetaData filemd = (FileMetaData)getStack();
                String className = getAttr(attrs, "class");
                String packageName = null;
                if (className.indexOf('.') > 0)
                {
                    // Fully-qualified so use package name from class
                    packageName = className.substring(0, className.lastIndexOf('.'));
                }
                PackageMetaData pmd = null;
                if (packageName != null)
                {
                    pmd = filemd.getPackage(packageName);
                }
                if (pmd == null)
                {
                    if (packageName != null)
                    {
                        // Class fully qualified so add its package
                        pmd = filemd.newPackageMetadata(packageName);
                    }
                    else if (defaultPackageName != null)
                    {
                        // Use default package for entity-mappings
                        pmd = filemd.getPackage(defaultPackageName);
                    }
                    else
                    {
                        // Add root package
                        pmd = filemd.newPackageMetadata("");
                    }
                }

                ClassMetaData cmd = newClassObject(pmd, attrs, true);
                pmd.addClass(cmd);

                pushStack(cmd);
            }
            else if (localName.equals("attributes"))
            {
                // Nothing to do since is just a holder of other elements
            }
            else if (localName.equals("embeddable-attributes"))
            {
                // Nothing to do since is just a holder of other elements
            }
            else if (localName.equals("id-class"))
            {
                // Identity class
                ClassMetaData cmd = (ClassMetaData)getStack();
                cmd.setObjectIdClass(getAttr(attrs, "class"));
            }
            else if (localName.equals("inheritance"))
            {
                // Inheritance - only for root class
                ClassMetaData cmd = (ClassMetaData)getStack();
                String strategy = getAttr(attrs, "strategy");
                String strategyType = null;
                if (strategy.equalsIgnoreCase("JOINED"))
                {
                    strategyType = InheritanceStrategy.NEW_TABLE.toString();
                }
                else if (strategy.equalsIgnoreCase("TABLE_PER_CLASS"))
                {
                    strategyType = InheritanceStrategy.COMPLETE_TABLE.toString();
                }
                else
                {
                    // SINGLE_TABLE (default), so implies nothing needs setting since thats the default
                }
                InheritanceMetaData inhmd = new InheritanceMetaData();
                inhmd.setStrategy(strategyType);
                inhmd.setStrategyForTree(strategy.toUpperCase());
                cmd.setInheritanceMetaData(inhmd);
            }
            else if (localName.equals("table"))
            {
                // Table for this entity
                ClassMetaData cmd = (ClassMetaData)getStack();
                cmd.setCatalog(getAttr(attrs, "catalog"));
                cmd.setSchema(getAttr(attrs, "schema"));
                cmd.setTable(getAttr(attrs, "name"));
            }
            else if (localName.equals("secondary-table"))
            {
                // Join for this entity
                ClassMetaData cmd = (ClassMetaData)getStack();
                JoinMetaData joinmd = new JoinMetaData();
                joinmd.setTable(getAttr(attrs, "name"));
                joinmd.setCatalog(getAttr(attrs, "catalog"));
                joinmd.setSchema(getAttr(attrs, "schema"));
                cmd.addJoin(joinmd);
                pushStack(joinmd);
            }
            else if (localName.equals("primary-key-join-column"))
            {
                MetaData md = getStack();
                if (md instanceof ClassMetaData)
                {
                    // Join columns between PK of subclass table and PK of base class table
                    ClassMetaData cmd = (ClassMetaData)md;
                    ColumnMetaData colmd = new ColumnMetaData();
                    colmd.setName(getAttr(attrs, "name"));
                    colmd.setTarget(getAttr(attrs, "referenced-column-name"));
                    String columnDdl = getAttr(attrs, "column-definition");
                    if (columnDdl != null)
                    {
                        colmd.setColumnDdl(columnDdl);
                    }
                    InheritanceMetaData inhmd = cmd.getInheritanceMetaData();
                    if (inhmd == null)
                    {
                        inhmd = new InheritanceMetaData();
                        cmd.setInheritanceMetaData(inhmd);
                    }
                    JoinMetaData inhJoinmd = inhmd.getJoinMetaData();
                    if (inhJoinmd == null)
                    {
                        inhJoinmd = new JoinMetaData();
                    }
                    inhJoinmd.addColumn(colmd);
                }
                else if (md instanceof JoinMetaData)
                {
                    // Join columns between PK of secondary table and PK of primary table
                    JoinMetaData joinmd = (JoinMetaData)md;
                    ColumnMetaData colmd = new ColumnMetaData();
                    colmd.setName(getAttr(attrs, "name"));
                    colmd.setTarget(getAttr(attrs, "referenced-column-name"));
                    joinmd.addColumn(colmd);
                }
            }
            else if (localName.equals("id"))
            {
                // Identity field
                ClassMetaData cmd = (ClassMetaData)getStack();
                AbstractMemberMetaData mmd = newPKFieldObject(cmd, attrs);

                pushStack(mmd);
            }
            else if (localName.equals("embedded-id"))
            {
                // Embedded identity field
                ClassMetaData cmd = (ClassMetaData)getStack();
                AbstractMemberMetaData mmd = newPKFieldObject(cmd, attrs);

                pushStack(mmd);
            }
            else if (localName.equals("basic"))
            {
                // Basic field
                AbstractClassMetaData cmd = (AbstractClassMetaData)getStack();
                AbstractMemberMetaData mmd = newFieldObject(cmd, attrs);

                pushStack(mmd);
            }
            else if (localName.equals("lob"))
            {
                AbstractMemberMetaData fmd = (AbstractMemberMetaData)getStack();
                fmd.setStoreInLob(); // Just mark it as to be stored in a "lob" and let the MetaData sort it out
            }
            else if (localName.equals("enumerated"))
            {
                // Processed elsewhere
            }
            else if (localName.equals("temporal"))
            {
                // Processed elsewhere
            }
            else if (localName.equals("transient"))
            {
                // Transient field
                ClassMetaData cmd = (ClassMetaData)getStack();
                AbstractMemberMetaData mmd = newTransientFieldObject(cmd, getAttr(attrs, "name"));
                cmd.addMember(mmd);

                pushStack(mmd);
            }
            else if (localName.equals("one-to-many"))
            {
                // 1-N field
                ClassMetaData cmd = (ClassMetaData)getStack();
                AbstractMemberMetaData mmd = newFieldObject(cmd, attrs);
                String targetEntityName = getAttr(attrs, "target-entity");
                if (!StringUtils.isWhitespace(targetEntityName))
                {
                    mmd.setTargetClassName(targetEntityName);
                }
                mmd.setOrdered(); // Mark as ordered so we know we're using JPA
                String jpaLevel = mgr.getOMFContext().getPersistenceConfiguration().getStringProperty("datanucleus.jpa.level");
                if (mmd.getMappedBy() == null && mmd.getJoinMetaData() == null &&
                    jpaLevel.equalsIgnoreCase("JPA1"))
                {
                    // JPA1 : 1-N uni with no join specified (yet) so add one (see JPA1 spec [9.1.24])
                    mmd.setJoinMetaData(new JoinMetaData());
                }

                pushStack(mmd);
            }
            else if (localName.equals("one-to-one"))
            {
                // 1-1 field
                ClassMetaData cmd = (ClassMetaData)getStack();
                AbstractMemberMetaData mmd = newFieldObject(cmd, attrs);
                String targetEntityName = getAttr(attrs, "target-entity");
                if (!StringUtils.isWhitespace(targetEntityName))
                {
                    mmd.setTargetClassName(targetEntityName);
                }

                pushStack(mmd);
            }
            else if (localName.equals("many-to-one"))
            {
                // N-1 field
                ClassMetaData cmd = (ClassMetaData)getStack();
                AbstractMemberMetaData mmd = newFieldObject(cmd, attrs);
                String targetEntityName = getAttr(attrs, "target-entity");
                if (!StringUtils.isWhitespace(targetEntityName))
                {
                    mmd.setTargetClassName(targetEntityName);
                }

                pushStack(mmd);
            }
            else if (localName.equals("many-to-many"))
            {
                // M-N field
                ClassMetaData cmd = (ClassMetaData)getStack();
                AbstractMemberMetaData mmd = newFieldObject(cmd, attrs);
                String targetEntityName = getAttr(attrs, "target-entity");
                if (!StringUtils.isWhitespace(targetEntityName))
                {
                    mmd.setTargetClassName(targetEntityName);
                }
                mmd.setOrdered(); // Mark as ordered so we know we're using JPA
                if (mmd.getMappedBy() == null && mmd.getJoinMetaData() == null)
                {
                    // M-N and no join specified (yet) so add one
                    mmd.setJoinMetaData(new JoinMetaData());
                }

                pushStack(mmd);
            }
            else if (localName.equals("map-key"))
            {
                // Key of a Map (field/property of the value class)
                AbstractMemberMetaData fmd = (AbstractMemberMetaData)getStack();
                String mappedByFieldName = getAttr(attrs, "name");
                if (StringUtils.isWhitespace(mappedByFieldName))
                {
                    mappedByFieldName = "#PK"; // Special value understood by MapMetaData.populate()
                }
                KeyMetaData keymd = new KeyMetaData();
                keymd.setMappedBy(mappedByFieldName);
                fmd.setKeyMetaData(keymd);
            }
            else if (localName.equals("order-by"))
            {
                // Processed in endElement()
            }
            else if (localName.equals("order-column"))
            {
                AbstractMemberMetaData fmd = (AbstractMemberMetaData)getStack();
                String columnName = getAttr(attrs, "name");
                OrderMetaData ordermd = new OrderMetaData();
                ordermd.setColumnName(columnName);

                String orderingOrigin = getAttr(attrs, "base");
                if (orderingOrigin != null)
                {
                    try
                    {
                        int origin = new Integer(orderingOrigin).intValue();
                        ordermd.setOrderOrigin(origin);
                    }
                    catch (NumberFormatException nfe)
                    {
                    }
                }

                ColumnMetaData colmd = new ColumnMetaData();
                colmd.setName(getAttr(attrs, "name"));
                colmd.setAllowsNull(getAttr(attrs, "nullable"));
                colmd.setInsertable(getAttr(attrs, "insertable"));
                colmd.setUpdateable(getAttr(attrs, "updatable"));
                String columnDdl = getAttr(attrs, "column-definition");
                if (columnDdl != null)
                {
                    colmd.setColumnDdl(columnDdl);
                }
                ordermd.addColumn(colmd);
                fmd.setOrderMetaData(ordermd);
            }
            else if (localName.equals("cascade"))
            {
                // Do nothing
            }
            else if (localName.equals("cascade-type"))
            {
                // Handled in elements below
            }
            else if (localName.equals("cascade-all"))
            {
                AbstractMemberMetaData mmd = (AbstractMemberMetaData)getStack();
                mmd.setCascadePersist(true);
                mmd.setCascadeUpdate(true);
                mmd.setCascadeDelete(true);
                mmd.setCascadeRefresh(true);
            }
            else if (localName.equals("cascade-persist"))
            {
                MetaData md = getStack();
                if (md instanceof AbstractMemberMetaData)
                {
                    AbstractMemberMetaData mmd = (AbstractMemberMetaData)md;
                    mmd.setCascadePersist(true);
                }
                else if (md instanceof FileMetaData)
                {
                    // Specified at <persistence-unit-defaults>
                    defaultCascadePersist = true;
                }
            }
            else if (localName.equals("cascade-merge"))
            {
                AbstractMemberMetaData mmd = (AbstractMemberMetaData)getStack();
                mmd.setCascadeUpdate(true);
            }
            else if (localName.equals("cascade-remove"))
            {
                AbstractMemberMetaData mmd = (AbstractMemberMetaData)getStack();
                mmd.setCascadeDelete(true);
            }
            else if (localName.equals("cascade-refresh"))
            {
                AbstractMemberMetaData mmd = (AbstractMemberMetaData)getStack();
                mmd.setCascadeRefresh(true);
            }
            else if (localName.equals("version"))
            {
                if (getStack() instanceof ClassMetaData)
                {
                    // Version field
                    ClassMetaData cmd = (ClassMetaData)getStack();
                    AbstractMemberMetaData mmd = newFieldObject(cmd, attrs);

                    // Tag this field as the version field
                    VersionMetaData vermd = cmd.newVersionMetadata();
                    vermd.setStrategy(VersionStrategy.VERSION_NUMBER).setFieldName(mmd.getName());

                    pushStack(mmd);
                }
            }
            else if (localName.equals("discriminator-value"))
            {
                // Processed in endElement()
            }
            else if (localName.equals("discriminator-column"))
            {
                ClassMetaData cmd = (ClassMetaData)getStack();
                InheritanceMetaData inhmd = cmd.getInheritanceMetaData();
                if (inhmd == null)
                {
                    // Add an empty inheritance specification
                    inhmd = new InheritanceMetaData();
                    cmd.setInheritanceMetaData(inhmd);
                }
                DiscriminatorMetaData dismd = inhmd.getDiscriminatorMetaData();
                if (dismd == null)
                {
                    // User hasn't specified discriminator value so use "provider-specific function" (JPA 9.1.3.1) - what a joke spec
                    dismd = inhmd.newDiscriminatorMetadata();
                    dismd.setStrategy(DiscriminatorStrategy.VALUE_MAP);
                    dismd.setValue(cmd.getFullClassName()); // Default to class name as value unless set
                    dismd.setIndexed("true");
                }
                String jdbcType = null;
View Full Code Here

Examples of org.datanucleus.metadata.InheritanceMetaData

            {
                if (md instanceof ClassMetaData)
                {
                    // Add the discriminator value
                    ClassMetaData cmd = (ClassMetaData)md;
                    InheritanceMetaData inhmd = cmd.getInheritanceMetaData();
                    if (inhmd == null)
                    {
                        // Add an empty inheritance specification
                        inhmd = new InheritanceMetaData();
                        cmd.setInheritanceMetaData(inhmd);
                    }
                    String discrimValue = currentString;
                    DiscriminatorMetaData dismd = inhmd.getDiscriminatorMetaData();
                    if (dismd == null)
                    {
                        dismd = inhmd.newDiscriminatorMetadata();
                    }
                    dismd.setValue(discrimValue);
                    dismd.setStrategy(DiscriminatorStrategy.VALUE_MAP);
                }
            }
View Full Code Here

Examples of org.datanucleus.metadata.InheritanceMetaData

                        cmd.addListener(elmd);
                    }
                }

                // Inheritance
                InheritanceMetaData inhmd = null;
                if (inheritanceStrategy != null)
                {
                    // Strategy specified so create inheritance data
                    inhmd = cmd.newInheritanceMetadata().setStrategy(inheritanceStrategy);
                    inhmd.setStrategyForTree(inheritanceStrategyForTree);
                }
                else if (discriminatorValue != null || discriminatorColumnName != null ||
                        discriminatorColumnLength != null || discriminatorColumnType != null)
                {
                    // Discriminator specified so we need inheritance data
                    inhmd = cmd.newInheritanceMetadata().setStrategyForTree(inheritanceStrategyForTree);
                }

                if (discriminatorValue != null || discriminatorColumnName != null ||
                    discriminatorColumnLength != null || discriminatorColumnType != null)
                {
                    // Add discriminator information to the inheritance of this class
                    DiscriminatorMetaData dismd = inhmd.newDiscriminatorMetadata();
                    if (discriminatorValue != null)
                    {
                        // Value specified so assumed to be value-map
                        dismd.setColumnName(discriminatorColumnName);
                        dismd.setValue(discriminatorValue).setStrategy("value-map").setIndexed("false");
View Full Code Here

Examples of org.datanucleus.metadata.InheritanceMetaData

            }

            if (cmd != null)
            {
                // Class is persistable so process remaining annotations
                InheritanceMetaData inhmd = null;
                DiscriminatorMetaData dismd = null;
                IdentityMetaData idmd = null;
                PrimaryKeyMetaData pkmd = null;
                VersionMetaData vermd = null;
                JoinMetaData[] joins = null;
                QueryMetaData[] queries = null;
                FetchPlanMetaData[] fetchPlans = null;
                FetchGroupMetaData[] fetchGroups = null;
                SequenceMetaData seqmd = null;
                String cacheable = null;
                boolean embeddedOnly = false;
                ColumnMetaData[] unmappedColumns = null;
                HashSet<IndexMetaData> indices = null;
                HashSet<UniqueMetaData> uniqueKeys = null;
                HashSet<ForeignKeyMetaData> fks = null;
                HashSet<ExtensionMetaData> extensions = null;

                for (int i=0;i<annotations.length;i++)
                {
                    if (isSupportedAnnotation(annotations[i].getName()))
                    {
                        HashMap<String, Object> annotationValues = annotations[i].getNameValueMap();
                        String annName = annotations[i].getName();
                        if (annName.equals(JDOAnnotationUtils.EMBEDDED_ONLY))
                        {
                            embeddedOnly = true;
                        }
                        else if (annName.equals(JDOAnnotationUtils.VERSION))
                        {
                            VersionStrategy versionStrategy = (VersionStrategy)annotationValues.get("strategy");
                            String strategy = JDOAnnotationUtils.getVersionStrategyString(versionStrategy);
                            String indexed = (String)annotationValues.get("indexed");
                            String column = (String)annotationValues.get("column");
                            Column[] columns = (Column[])annotationValues.get("columns");
                            vermd = new VersionMetaData();
                            vermd.setStrategy(strategy);
                            vermd.setColumnName(column);
                            vermd.setIndexed(IndexedValue.getIndexedValue(indexed));
                            if (columns != null && columns.length > 0)
                            {
                                // Only use the first column
                                ColumnMetaData colmd =
                                    JDOAnnotationUtils.getColumnMetaDataForColumnAnnotation(columns[0]);
                                vermd.addColumn(colmd);
                            }
                            JDOAnnotationUtils.addExtensionsToMetaData(vermd, (Extension[])annotationValues.get("extensions"));
                        }
                        else if (annName.equals(JDOAnnotationUtils.DATASTORE_IDENTITY))
                        {
                            String strategy = JDOAnnotationUtils.getIdentityStrategyString(
                                (IdGeneratorStrategy)annotationValues.get("strategy"));
                            String customStrategy = (String)annotationValues.get("customStrategy");
                            if (!StringUtils.isWhitespace(customStrategy))
                            {
                                // User has provided an extension strategy
                                strategy = customStrategy;
                            }
                            String sequence = (String)annotationValues.get("sequence");
                            String column = (String)annotationValues.get("column");
                            Column[] columns = (Column[])annotationValues.get("columns");
                            idmd = new IdentityMetaData();
                            idmd.setColumnName(column);
                            idmd.setValueStrategy(IdentityStrategy.getIdentityStrategy(strategy));
                            idmd.setSequence(sequence);
                            if (columns != null && columns.length > 0)
                            {
                                // Only use the first column
                                ColumnMetaData colmd =
                                    JDOAnnotationUtils.getColumnMetaDataForColumnAnnotation(columns[0]);
                                idmd.addColumn(colmd);
                            }
                            JDOAnnotationUtils.addExtensionsToMetaData(idmd, (Extension[])annotationValues.get("extensions"));
                        }
                        else if (annName.equals(JDOAnnotationUtils.PRIMARY_KEY))
                        {
                            String pkName = (String)annotationValues.get("name");
                            String pkColumn = (String)annotationValues.get("column");
                            Column[] columns = (Column[])annotationValues.get("columns");
                            pkmd = new PrimaryKeyMetaData();
                            pkmd.setName(pkName);
                            pkmd.setColumnName(pkColumn);
                            if (columns != null && columns.length > 0)
                            {
                                for (int j=0;j<columns.length;j++)
                                {
                                    pkmd.addColumn(JDOAnnotationUtils.getColumnMetaDataForColumnAnnotation(columns[j]));
                                }
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.JOINS))
                        {
                            if (joins != null)
                            {
                                NucleusLogger.METADATA.warn(LOCALISER.msg("044210", cmd.getFullClassName()));
                            }
                            Join[] js = (Join[])annotationValues.get("value");
                            if (js != null && js.length > 0)
                            {
                                joins = new JoinMetaData[js.length];
                                for (int j=0;j<js.length;j++)
                                {
                                    joins[j] = new JoinMetaData();
                                    joins[j].setTable(js[j].table());
                                    joins[j].setColumnName(js[j].column());
                                    joins[j].setIndexed(IndexedValue.getIndexedValue(js[i].indexed()));
                                    joins[j].setOuter(js[j].outer());
                                    joins[j].setUnique(js[i].unique());
                                    joins[j].setDeleteAction(JDOAnnotationUtils.getForeignKeyActionString(js[j].deleteAction()));
                                }
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.JOIN))
                        {
                            if (joins != null)
                            {
                                NucleusLogger.METADATA.warn(LOCALISER.msg("044210", cmd.getFullClassName()));
                            }
                            joins = new JoinMetaData[1];
                            joins[0] = new JoinMetaData();
                            joins[0].setTable((String)annotationValues.get("table"));
                            joins[0].setColumnName((String)annotationValues.get("column"));
                            joins[0].setIndexed(IndexedValue.getIndexedValue((String)annotationValues.get("indexed")));
                            joins[0].setOuter((String)annotationValues.get("outer"));
                            joins[0].setUnique((String)annotationValues.get("unique"));
                            joins[0].setDeleteAction(((ForeignKeyAction)annotationValues.get("deleteAction")).toString());
                            JDOAnnotationUtils.addExtensionsToMetaData(joins[0], (Extension[])annotationValues.get("extensions"));
                        }
                        else if (annName.equals(JDOAnnotationUtils.INHERITANCE))
                        {
                            String strategy = JDOAnnotationUtils.getInheritanceStrategyString(
                                (InheritanceStrategy)annotationValues.get("strategy"));
                            String customStrategy = (String)annotationValues.get("customStrategy");
                            if (!StringUtils.isWhitespace(customStrategy))
                            {
                                // User has provided an extension strategy
                                strategy = customStrategy;
                            }
                            inhmd = new InheritanceMetaData();
                            inhmd.setStrategy(strategy);
                        }
                        else if (annName.equals(JDOAnnotationUtils.DISCRIMINATOR))
                        {
                            DiscriminatorStrategy discriminatorStrategy = (DiscriminatorStrategy)annotationValues.get("strategy");
                            String strategy = JDOAnnotationUtils.getDiscriminatorStrategyString(discriminatorStrategy);
                            String column = (String)annotationValues.get("column");
                            String indexed = (String)annotationValues.get("indexed");
                            String value = (String)annotationValues.get("value");
                            Column[] columns = (Column[])annotationValues.get("columns");
                            dismd = new DiscriminatorMetaData();
                            dismd.setColumnName(column);
                            dismd.setValue(value);
                            dismd.setStrategy(strategy);
                            dismd.setIndexed(indexed);
                            if (columns != null && columns.length > 0)
                            {
                                // Only use the first column
                                ColumnMetaData colmd =
                                    JDOAnnotationUtils.getColumnMetaDataForColumnAnnotation(columns[0]);
                                dismd.setColumnMetaData(colmd);
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.QUERIES))
                        {
                            if (queries != null)
                            {
                                NucleusLogger.METADATA.warn(LOCALISER.msg("044209", cmd.getFullClassName()));
                            }
                            Query[] qs = (Query[])annotationValues.get("value");
                            queries = new QueryMetaData[qs.length];
                            for (int j=0;j<queries.length;j++)
                            {
                                String lang = JDOAnnotationUtils.getQueryLanguageName(qs[j].language());
                                String resultClassName = (qs[j].resultClass() != null && qs[j].resultClass() != void.class ?
                                        qs[j].resultClass().getName() : null);
                                queries[j] = new QueryMetaData(qs[j].name());
                                queries[j].setScope(cls.getName());
                                queries[j].setLanguage(lang);
                                queries[j].setUnmodifiable(qs[j].unmodifiable());
                                queries[j].setResultClass(resultClassName);
                                queries[j].setUnique(qs[j].unique());
                                queries[j].setFetchPlanName(qs[j].fetchPlan());
                                queries[j].setQuery(qs[j].value());
                                JDOAnnotationUtils.addExtensionsToMetaData(queries[j], qs[j].extensions());
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.QUERY))
                        {
                            if (queries != null)
                            {
                                NucleusLogger.METADATA.warn(LOCALISER.msg("044209", cmd.getFullClassName()));
                            }
                            queries = new QueryMetaData[1];
                            String unmodifiable = "" + annotationValues.get("unmodifiable");
                            Class resultClassValue = (Class)annotationValues.get("resultClass");
                            String resultClassName =
                                (resultClassValue != null && resultClassValue != void.class ? resultClassValue.getName() : null);
                            String lang = JDOAnnotationUtils.getQueryLanguageName((String)annotationValues.get("language"));
                            queries[0] = new QueryMetaData((String)annotationValues.get("name"));
                            queries[0].setScope(cls.getName());
                            queries[0].setLanguage(lang);
                            queries[0].setUnmodifiable(unmodifiable);
                            queries[0].setResultClass(resultClassName);
                            queries[0].setUnique((String)annotationValues.get("unique"));
                            queries[0].setFetchPlanName((String)annotationValues.get("fetchPlan"));
                            queries[0].setQuery((String)annotationValues.get("value"));
                            JDOAnnotationUtils.addExtensionsToMetaData(queries[0], (Extension[])annotationValues.get("extensions"));
                        }
                        else if (annName.equals(JDOAnnotationUtils.FETCHPLANS))
                        {
                            if (fetchPlans != null)
                            {
                                NucleusLogger.METADATA.warn(LOCALISER.msg("044207", cmd.getFullClassName()));
                            }
                            FetchPlan[] plans = (FetchPlan[])annotationValues.get("value");
                            fetchPlans = new FetchPlanMetaData[plans.length];
                            for (int j=0;j<plans.length;j++)
                            {
                                fetchPlans[j] = new FetchPlanMetaData(plans[j].name());
                                fetchPlans[j].setMaxFetchDepth(plans[j].maxFetchDepth());
                                fetchPlans[j].setFetchSize(plans[j].fetchSize());
                                int numGroups = plans[j].fetchGroups().length;
                                for (int k=0;k<numGroups;k++)
                                {
                                    FetchGroupMetaData fgmd = new FetchGroupMetaData(plans[j].fetchGroups()[k]);
                                    fetchPlans[j].addFetchGroup(fgmd);
                                }
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.FETCHPLAN))
                        {
                            if (fetchPlans != null)
                            {
                                NucleusLogger.METADATA.warn(LOCALISER.msg("044207", cmd.getFullClassName()));
                            }
                            fetchPlans = new FetchPlanMetaData[1];
                            int maxFetchDepth = ((Integer)annotationValues.get("maxFetchDepth")).intValue();
                            int fetchSize = ((Integer)annotationValues.get("fetchSize")).intValue();
                            fetchPlans[0] = new FetchPlanMetaData((String)annotationValues.get("name"));
                            fetchPlans[0].setMaxFetchDepth(maxFetchDepth);
                            fetchPlans[0].setFetchSize(fetchSize);
                        }
                        else if (annName.equals(JDOAnnotationUtils.FETCHGROUPS))
                        {
                            if (fetchGroups != null)
                            {
                                NucleusLogger.METADATA.warn(LOCALISER.msg("044208", cmd.getFullClassName()));
                            }
                            FetchGroup[] groups = (FetchGroup[])annotationValues.get("value");
                            fetchGroups = new FetchGroupMetaData[groups.length];
                            for (int j=0;j<groups.length;j++)
                            {
                                fetchGroups[j] = new FetchGroupMetaData(groups[j].name());
                                fetchGroups[j].setPostLoad(groups[j].postLoad());
                                int numFields = groups[j].members().length;
                                for (int k=0;k<numFields;k++)
                                {
                                    FieldMetaData fmd = new FieldMetaData(fetchGroups[j],
                                        groups[j].members()[k].name());
                                    fmd.setRecursionDepth(groups[j].members()[k].recursionDepth());
                                    fetchGroups[j].addMember(fmd);
                                }
                                int numGroups = groups[j].fetchGroups().length;
                                for (int k=0;k<numGroups;k++)
                                {
                                    FetchGroupMetaData subgrp = new FetchGroupMetaData(groups[j].fetchGroups()[k]);
                                    fetchGroups[j].addFetchGroup(subgrp);
                                }
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.FETCHGROUP))
                        {
                            if (fetchGroups != null)
                            {
                                NucleusLogger.METADATA.warn(LOCALISER.msg("044208", cmd.getFullClassName()));
                            }
                            fetchGroups = new FetchGroupMetaData[1];
                            fetchGroups[0] = new FetchGroupMetaData((String)annotationValues.get("name"));
                            fetchGroups[0].setPostLoad((String)annotationValues.get("postLoad"));
                            Persistent[] fields = (Persistent[])annotationValues.get("members");
                            if (fields != null)
                            {
                                for (int j=0;j<fields.length;j++)
                                {
                                    FieldMetaData fmd = new FieldMetaData(fetchGroups[0],
                                        fields[j].name());
                                    fmd.setRecursionDepth(fields[j].recursionDepth());
                                    fetchGroups[0].addMember(fmd);
                                }
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.SEQUENCE))
                        {
                            String seqName = (String)annotationValues.get("name");
                            String seqStrategy = JDOAnnotationUtils.getSequenceStrategyString(
                                (SequenceStrategy)annotationValues.get("strategy"));
                            String seqSeq = (String)annotationValues.get("datastoreSequence");
                            Class seqFactory = (Class)annotationValues.get("factoryClass");
                            String seqFactoryClassName = null;
                            if (seqFactory != null && seqFactory != void.class)
                            {
                                seqFactoryClassName = seqFactory.getName();
                            }
                            seqmd = new SequenceMetaData(seqName, seqStrategy);
                            seqmd.setFactoryClass(seqFactoryClassName);
                            seqmd.setDatastoreSequence(seqSeq);
                            JDOAnnotationUtils.addExtensionsToMetaData(seqmd, (Extension[])annotationValues.get("extensions"));
                        }
                        else if (annName.equals(JDOAnnotationUtils.INDICES))
                        {
                            // Multiple Indices for the class
                            Index[] values = (Index[])annotationValues.get("value");
                            if (values != null && values.length > 0)
                            {
                                indices = new HashSet<IndexMetaData>(values.length);
                                for (int j=0;j<values.length;j++)
                                {
                                    IndexMetaData idxmd = JDOAnnotationUtils.getIndexMetaData(values[j].name(), values[j].table(),
                                        "" + values[j].unique(), values[j].members(), values[j].columns());
                                    if (idxmd.getNumberOfColumns() == 0 && idxmd.getNumberOfMembers() == 0)
                                    {
                                        NucleusLogger.METADATA.warn(LOCALISER.msg("044204", cls.getName()));
                                    }
                                    else
                                    {
                                        indices.add(idxmd);
                                    }
                                }
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.INDEX))
                        {
                            // Single Index for the class
                            String name = (String)annotationValues.get("name");
                            String table = (String)annotationValues.get("table");
                            String unique = (String)annotationValues.get("unique");
                            String[] members = (String[])annotationValues.get("members");
                            Column[] columns = (Column[])annotationValues.get("columns");

                            IndexMetaData idxmd = JDOAnnotationUtils.getIndexMetaData(name, table, unique, members, columns);
                            if (idxmd.getNumberOfColumns() == 0 && idxmd.getNumberOfMembers() == 0)
                            {
                                NucleusLogger.METADATA.warn(LOCALISER.msg("044204", cls.getName()));
                            }
                            else
                            {
                                indices = new HashSet<IndexMetaData>(1);
                                indices.add(idxmd);
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.UNIQUES))
                        {
                            // Multiple Unique Constraints for the class
                            Unique[] values = (Unique[])annotationValues.get("value");
                            if (values != null && values.length > 0)
                            {
                                uniqueKeys = new HashSet<UniqueMetaData>(values.length);
                                for (int j=0;j<values.length;j++)
                                {
                                    UniqueMetaData unimd = JDOAnnotationUtils.getUniqueMetaData(values[j].name(),
                                        values[j].table(), "" + values[j].deferred(), values[j].members(), values[j].columns());
                                    if (unimd.getNumberOfColumns() == 0 && unimd.getNumberOfMembers() == 0)
                                    {
                                        NucleusLogger.METADATA.warn(LOCALISER.msg("044205", cls.getName()));
                                    }
                                    else
                                    {
                                        uniqueKeys.add(unimd);
                                    }
                                }
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.UNIQUE))
                        {
                            // Single Unique constraint for the class
                            String name = (String)annotationValues.get("name");
                            String table = (String)annotationValues.get("table");
                            String deferred = (String)annotationValues.get("deferred");
                            String[] members = (String[])annotationValues.get("members");
                            Column[] columns = (Column[])annotationValues.get("columns");

                            UniqueMetaData unimd = JDOAnnotationUtils.getUniqueMetaData(name, table, deferred, members, columns);
                            if (unimd.getNumberOfColumns() == 0 && unimd.getNumberOfMembers() == 0)
                            {
                                NucleusLogger.METADATA.warn(LOCALISER.msg("044205", cls.getName()));
                            }
                            else
                            {
                                uniqueKeys = new HashSet<UniqueMetaData>(1);
                                uniqueKeys.add(unimd);
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.FOREIGNKEYS))
                        {
                            // Multiple FKs for the class
                            ForeignKey[] values = (ForeignKey[])annotationValues.get("value");
                            if (values != null && values.length > 0)
                            {
                                fks = new HashSet<ForeignKeyMetaData>(values.length);
                                for (int j=0;j<values.length;j++)
                                {
                                    String deleteAction = JDOAnnotationUtils.getForeignKeyActionString(values[j].deleteAction());
                                    String updateAction = JDOAnnotationUtils.getForeignKeyActionString(values[j].deleteAction());
                                    ForeignKeyMetaData fkmd = JDOAnnotationUtils.getFKMetaData(values[j].name(),
                                        values[j].table(), values[j].unique(), "" + values[j].deferred(),
                                        deleteAction, updateAction, values[j].members(), values[j].columns());
                                    if (fkmd.getNumberOfColumns() == 0 && fkmd.getNumberOfMembers() == 0)
                                    {
                                        NucleusLogger.METADATA.warn(LOCALISER.msg("044206", cls.getName()));
                                    }
                                    else
                                    {
                                        fks.add(fkmd);
                                    }
                                }
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.FOREIGNKEY))
                        {
                            // Single FK constraint for the class
                            String name = (String)annotationValues.get("name");
                            String table = (String)annotationValues.get("table");
                            String unique = (String)annotationValues.get("unique");
                            String deferred = (String)annotationValues.get("deferred");
                            String deleteAction = JDOAnnotationUtils.getForeignKeyActionString(
                                (ForeignKeyAction)annotationValues.get("deleteAction"));
                            String updateAction = JDOAnnotationUtils.getForeignKeyActionString(
                                (ForeignKeyAction)annotationValues.get("updateAction"));
                            String[] members = (String[])annotationValues.get("members");
                            Column[] columns = (Column[])annotationValues.get("columns");

                            ForeignKeyMetaData fkmd = JDOAnnotationUtils.getFKMetaData(name, table, unique, deferred,
                                deleteAction, updateAction, members, columns);
                            if (fkmd.getNumberOfColumns() == 0 && fkmd.getNumberOfMembers() == 0)
                            {
                                NucleusLogger.METADATA.warn(LOCALISER.msg("044206", cls.getName()));
                            }
                            else
                            {
                                fks = new HashSet<ForeignKeyMetaData>(1);
                                fks.add(fkmd);
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.COLUMNS))
                        {
                            // Unmapped column specification
                            Column[] cols = (Column[])annotationValues.get("value");
                            if (cols != null && cols.length > 0)
                            {
                                unmappedColumns = new ColumnMetaData[cols.length];
                                for (int j=0;j<cols.length;j++)
                                {
                                    unmappedColumns[j] =
                                        JDOAnnotationUtils.getColumnMetaDataForColumnAnnotation(cols[j]);
                                    JDOAnnotationUtils.addExtensionsToMetaData(unmappedColumns[j], cols[j].extensions());
                                }
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.CACHEABLE))
                        {
                            String cache = (String)annotationValues.get("value");
                            if (cache != null)
                            {
                                cacheable = cache;
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.EXTENSIONS))
                        {
                            Extension[] values = (Extension[])annotationValues.get("value");
                            if (values != null && values.length > 0)
                            {
                                extensions = new HashSet<ExtensionMetaData>(values.length);
                                for (int j=0;j<values.length;j++)
                                {
                                    ExtensionMetaData extmd = new ExtensionMetaData(values[j].vendorName(),
                                        values[j].key().toString(), values[j].value().toString());
                                    extensions.add(extmd);
                                }
                            }
                        }
                        else if (annName.equals(JDOAnnotationUtils.EXTENSION))
                        {
                            ExtensionMetaData extmd = new ExtensionMetaData((String)annotationValues.get("vendorName"),
                                (String)annotationValues.get("key"), (String)annotationValues.get("value"));
                            extensions = new HashSet<ExtensionMetaData>(1);
                            extensions.add(extmd);
                        }
                        else
                        {
                            if (!annName.equals(JDOAnnotationUtils.PERSISTENCE_CAPABLE) &&
                                !annName.equals(JDOAnnotationUtils.PERSISTENCE_AWARE))
                            {
                                NucleusLogger.METADATA.error(LOCALISER.msg("044203", cls.getName(),
                                    annotations[i].getName()));
                            }
                        }
                    }
                }

                // Either PersistenceCapable, PersistenceAware or PersistentInterface so build up the metadata
                NucleusLogger.METADATA.info(LOCALISER.msg("044200", cls.getName(), "JDO"));

                if (cmd instanceof ClassMetaData)
                {
                    pmd.addClass((ClassMetaData)cmd);
                }
                else if (cmd instanceof InterfaceMetaData)
                {
                    pmd.addInterface((InterfaceMetaData)cmd);
                }

                if (embeddedOnly)
                {
                    cmd.setEmbeddedOnly(true);
                }
                if (idmd != null)
                {
                    // Datastore identity
                    idmd.setParent(cmd);
                    cmd.setIdentityMetaData(idmd);
                }
                if (pkmd != null)
                {
                    // Primary Key
                    pkmd.setParent(cmd);
                    cmd.setPrimaryKeyMetaData(pkmd);
                }

                if (vermd != null)
                {
                    // Version
                    vermd.setParent(cmd);
                    cmd.setVersionMetaData(vermd);
                }

                if (inhmd != null)
                {
                    // Inheritance
                    if (dismd != null)
                    {
                        inhmd.setDiscriminatorMetaData(dismd);
                    }
                    inhmd.setParent(cmd);
                    cmd.setInheritanceMetaData(inhmd);
                }
                else if (dismd != null)
                {
                    inhmd = new InheritanceMetaData();
                    inhmd.setDiscriminatorMetaData(dismd);
                    cmd.setInheritanceMetaData(inhmd);
                }

                if (joins != null && joins.length > 0)
                {
View Full Code Here

Examples of org.eclipse.persistence.internal.jpa.metadata.inheritance.InheritanceMetadata

     */
    protected void processInheritance() {
        // Process the inheritance metadata first. Create one if one does not
        // exist.
        if (m_inheritance == null) {
            m_inheritance = new InheritanceMetadata(getAnnotation(Inheritance.class), getAccessibleObject());
        }
       
        m_inheritance.process(getDescriptor());
    }
View Full Code Here

Examples of org.eclipse.persistence.internal.jpa.metadata.inheritance.InheritanceMetadata

     * hierarchy.
     */
    protected void processInheritance() {
        // Process the inheritance metadata.
        if (m_inheritance == null) {
            new InheritanceMetadata(getAnnotation(Inheritance.class), getAccessibleObject()).process(getDescriptor());
        } else {
            m_inheritance.process(getDescriptor());
        }
                   
        // Process the discriminator column metadata.
View Full Code Here

Examples of org.eclipse.persistence.internal.jpa.metadata.inheritance.InheritanceMetadata

     */
    protected void processInheritance() {
        // Process the inheritance metadata first. Create one if one does not
        // exist.
        if (m_inheritance == null) {
            m_inheritance = new InheritanceMetadata(getAnnotation(Inheritance.class), getAccessibleObject());
        }
       
        m_inheritance.process(getDescriptor());
    }
View Full Code Here

Examples of org.eclipse.persistence.internal.jpa.metadata.inheritance.InheritanceMetadata

     */
    protected void processInheritance() {
        // Process the inheritance metadata first. Create one if one does not
        // exist.
        if (m_inheritance == null) {
            m_inheritance = new InheritanceMetadata(getAnnotation(JPA_INHERITANCE), this);
        }
       
        m_inheritance.process(getDescriptor());
    }
View Full Code Here

Examples of org.eclipse.persistence.internal.jpa.metadata.inheritance.InheritanceMetadata

     */
    protected void processInheritance() {
        // Process the inheritance metadata first. Create one if one does not
        // exist.
        if (m_inheritance == null) {
            m_inheritance = new InheritanceMetadata(getAnnotation(Inheritance.class), getAccessibleObject());
        }
       
        m_inheritance.process(getDescriptor());
    }
View Full Code Here

Examples of org.eclipse.persistence.internal.jpa.metadata.inheritance.InheritanceMetadata

     */
    protected void processInheritance() {
        // Process the inheritance metadata first. Create one if one does not
        // exist.
        if (m_inheritance == null) {
            m_inheritance = new InheritanceMetadata(getAnnotation(Inheritance.class), this);
        }
       
        m_inheritance.process(getDescriptor());
    }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.