public void createChange()

in rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java [87:154]


    public void createChange(ChangeSummary changeSummary, DataObject changedObject) {

        if (changeSummary.isCreated(changedObject)) {
            if (this.logger.isDebugEnabled()) {
                this.logger.debug("Change is a create");
            }
            if (!changeSummary.isDeleted(changedObject)) {
                ChangeFactory factory = getRegistry().getFactory(changedObject.getType());
                String propagatedID = (String) generatedKeys.get(changedObject.getType().getName());
                changes.addInsert(factory.createInsertOperation(changedObject, propagatedID));
            }
        } else if (changeSummary.isDeleted(changedObject)) {
            ChangeFactory factory = getRegistry().getFactory(changedObject.getType());
            if (this.logger.isDebugEnabled()) {
                this.logger.debug("Change is a delete");
            }
            changes.addDelete(factory.createDeleteOperation(changedObject));
        } else {
            if (this.logger.isDebugEnabled()) {
                this.logger.debug("Change is a modify");
            }
            List attrList = changeSummary.getOldValues(changedObject);
            if (hasAttributeChange(attrList)) {
                ChangeFactory factory = getRegistry().getFactory(changedObject.getType());
                if (this.logger.isDebugEnabled()) {
                    this.logger.debug("Attribute Change for " + changedObject.getType().getName());
                }
                String propagatedID = (String) generatedKeys.get(changedObject.getType().getName());
                ChangeOperation op = factory.createUpdateOperation(changedObject, propagatedID);
                if (op != null) {
                	changes.addUpdate(op);
                } else {
                	if(this.logger.isDebugEnabled()) {
                		this.logger.debug("Update Operation is NULL");
                	}
                }

            } else {
                List values = changeSummary.getOldValues(changedObject);
                Iterator i = values.iterator();
                while (i.hasNext()) {
                    ChangeSummary.Setting setting = (ChangeSummary.Setting) i.next();
                    if (!setting.getProperty().getType().isDataType()) {
                        if (this.logger.isDebugEnabled()) {
                            this.logger.debug("Reference change for " + changedObject.getType().getName());
                        }
                        Property ref = setting.getProperty();
                        if (this.logger.isDebugEnabled()) {
                            this.logger.debug(ref.getName());
                        }
                        if (hasState(ref, changedObject)) {
                            ChangeFactory factory = getRegistry().getFactory(changedObject.getType());
                            ChangeOperation op = factory.createUpdateOperation(changedObject);
                            if (op != null) {
                            	changes.addUpdate(op);
                            } else {
                            	if(this.logger.isDebugEnabled()) {
                            		this.logger.debug("Update Operation is NULL");
                            	}                            	
                            }

                        }
                    }
                }
            }
        }

    }