Package cli_fmw.delegate.directory.complex

Source Code of cli_fmw.delegate.directory.complex.DirectoryTextTemplateTree

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package cli_fmw.delegate.directory.complex;

import framework.beans.directory.writer.tree.DirectoryTemplateTreeBean;
import framework.beans.directory.writer.tree.DirectoryTemplateTreeRemote;
import cli_fmw.delegate.directory.*;
import cli_fmw.delegate.directory.simple.DirectorySimpleItem;
import cli_fmw.utils.SelectorEditableExceptional;
import framework.beans.directory.writer.tree.TextTemplateTreeDetails;
import cli_fmw.main.ClipsException;
import cli_fmw.utils.MessageBox;
import framework.beans.directory.DirectoryItemDetails;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
* Дерево шаблонов
* @author petr
*/
public class DirectoryTextTemplateTree extends
        DirectoryRecursive<DirectoryTemplateTreeRemote, DirectoryTextTemplateTreeItem> {

    private Map<DirectorySimpleItem, List<DirectoryTextTemplateTreeItem>> cache =
            new HashMap<DirectorySimpleItem, List<DirectoryTextTemplateTreeItem>>();
   
    public DirectoryTextTemplateTree() throws ClipsException {
        super(DirectoryTemplateTreeBean.class.getSimpleName());
    }

    @Override
    public String getDirectoryTitle() {
        return "Дерево шаблонов";
    }

    @Override
    protected DirectoryTextTemplateTreeItem createFromLoadedDetails(DirectoryItemDetails details) {
        try {
            TextTemplateTreeDetails d = (TextTemplateTreeDetails) details;
            return new DirectoryTextTemplateTreeItem(d);
        } catch (ClipsException ex) {
            MessageBox.showException(ex);
            return null;
        }
    }      
   
    /**
     * Кеширует и возвращает список дерева шаблонов, принадлежащих данной группе
     * @param type
     * @return
     * @throws ClipsException
     */
    public List<DirectoryTextTemplateTreeItem> getItems(DirectorySimpleItem type)
            throws ClipsException {
        List<DirectoryTextTemplateTreeItem> res = cache.get(type);
        if(res == null) {
            res = new ArrayList<DirectoryTextTemplateTreeItem>();
            SelectorEditableExceptional<DirectoryTextTemplateTreeItem> sel = getItems();
            for(int i=0; i<sel.size(); i++) {
                DirectoryTextTemplateTreeItem item = sel.get(i);
                if(item.inType(type)) {
                    res.add(item);
                }
            }
            cache.put(type, res);
        }
        return res;
    }

    @Override
    protected void removeFromExtraCache(DirectoryTextTemplateTreeItem item) {
        if(item instanceof DirectoryTextTemplateTreeItem) {
            DirectoryTextTemplateTreeItem tree = item;
            Iterator<DirectorySimpleItem> keys = cache.keySet().iterator();
            while(keys.hasNext()) {
                DirectorySimpleItem key = keys.next();
                if(tree.inType(key)) {
                    cache.get(key).remove(tree);
                }
            }
        }       
    }
   
    @Override
    protected void addToExtraCache(DirectoryTextTemplateTreeItem item) {
        if(item instanceof DirectoryTextTemplateTreeItem) {
            DirectoryTextTemplateTreeItem tree = item;
            Iterator<DirectorySimpleItem> keys = cache.keySet().iterator();
            while(keys.hasNext()) {
                DirectorySimpleItem key = keys.next();
                if(tree.inType(key)) {
                    keys.remove();
                }
            }
        }     
    }
   
   
}
TOP

Related Classes of cli_fmw.delegate.directory.complex.DirectoryTextTemplateTree

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.