Subversion Repositories SmartDukaan

Rev

Rev 1061 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/**
 * 
 */
package in.shop2020.metamodel.core;

import java.util.ArrayList;
import java.util.List;

/**
 * Type of BulletDataObject, when data is composition of more than one 
 * atomic facts (multiple PrimitiveDataObjects). 
 * e.g. Size - Length, Width and Height
 * 
 * @author naveen
 *
 */
public class CompositeDataObject extends BulletDataObject {
        
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        
        /**
         * List of atomic parts
         */
        private List<PrimitiveDataObject> primitiveDataObjects;
        
        /**
         * 
         */
        public CompositeDataObject() {
        }

        /**
         * @param primitiveDataObject 
         */
        public void addPrimitiveDataObject(
                        PrimitiveDataObject primitiveDataObject) {
                if(this.primitiveDataObjects == null) {
                        this.primitiveDataObjects = new ArrayList<PrimitiveDataObject>();
                }
                
                this.primitiveDataObjects.add(primitiveDataObject);
        }
        
        /**
         * @param primitiveDataObjects the primitiveDataObjects to set
         */
        public void setPrimitiveDataObjects(
                        List<PrimitiveDataObject> primitiveDataObjects) {
                this.primitiveDataObjects = primitiveDataObjects;
        }

        /**
         * @return the primitiveDataObjects
         */
        public List<PrimitiveDataObject> getPrimitiveDataObjects() {
                return primitiveDataObjects;
        }

        /**
         * True if respective PrimitiveDataObjects match
         */
        public boolean equals(Object obj) {
                if(this.primitiveDataObjects != null && 
                                obj instanceof CompositeDataObject) {
                        
                        List<PrimitiveDataObject> pDOs = 
                                ((CompositeDataObject)obj).getPrimitiveDataObjects();
                        
                        if(pDOs != null && pDOs.size() == this.primitiveDataObjects.size()){
                                for(int i=0;i<this.primitiveDataObjects.size();i++) {
                                        if(!this.primitiveDataObjects.get(i).equals(pDOs.get(i))) {
                                                return false;
                                        }
                                }
                                
                                return true;
                        }
                }
                
                return false;
        }
        
        /* (non-Javadoc)
         * @see java.lang.Object#toString()
         */
        @Override
        public String toString() {
                return "CompositeDataObject [primitiveDataObjects="
                                + primitiveDataObjects + "]";
        }

}