001    package org.mycore.services.imaging.JAI.imgOperation;
002    
003    import java.util.Collections;
004    import java.util.Comparator;
005    import java.util.LinkedList;
006    import java.util.List;
007    
008    import javax.media.jai.PlanarImage;
009    import javax.media.jai.RenderedOp;
010    
011    
012    public class MCRJAIOperationList implements MCRJAIImageOp {
013        private List<MCRJAIImageOp> opList = new LinkedList<MCRJAIImageOp>();
014        
015        public void addOp(MCRJAIImageOp op){
016            opList.add(op);
017        }
018        
019        public RenderedOp executeOp(PlanarImage image) {
020            Comparator<? super MCRJAIImageOp> compare = new Comparator<MCRJAIImageOp>(){
021    
022                public int compare(MCRJAIImageOp o1, MCRJAIImageOp o2) {
023                    return o1.getOrder() - o2.getOrder();
024                }
025            };
026            
027            Collections.sort(opList, compare);
028            for (MCRJAIImageOp op : opList) {
029                image = op.executeOp(image);
030            }
031            
032            return (RenderedOp) image;
033        }
034    
035        public int getOrder() {
036            return 0;
037        }
038    
039    }