private HashSet getAttributeProperties()

in rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java [130:166]


    private HashSet getAttributeProperties(DataObject obj, MappingWrapper config, TableWrapper tw) {
        HashSet fields = new HashSet();
        Iterator i = obj.getType().getProperties().iterator();
        while (i.hasNext()) {
            Property p = (Property) i.next();
            if (p.getType().isDataType()) {
                if (obj.isSet(p)) {
                    if (fields.add(p) == false) {
                        throw new RuntimeException("Foreign key properties should not be set when the corrsponding relationship has changed");
                    }
                }
            } else {
                if (obj.isSet(p)) {
                    Relationship relationship = config.getRelationshipByReference(p);
                    if ((p.getOpposite() != null && p.getOpposite().isMany()) 
                            || (hasState(tw, relationship, obj))) {
                        RelationshipWrapper r = new RelationshipWrapper(relationship);
                        Iterator keys = r.getForeignKeys().iterator();
                        while (keys.hasNext()) {
                            String key = (String) keys.next();
                            String keyProperty = config.getColumnPropertyName(tw.getTableName(), key);
                            Property keyProp = obj.getType().getProperty(keyProperty);
                            if ( keyProp == null ) 
                                throw new RuntimeException("Invalid foreign key column: " + key);
                            if (fields.add(keyProp) == false) {
                                throw new RuntimeException("Foreign key properties should not be set when the corresponding relationship has changed");
                            }
                        }
                    }

                }
            }
        }

        return fields;

    }