/* * JBoss, Home of Professional Open Source * Copyright 2005, JBoss Inc., and individual contributors as indicated * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.hibernate.console.node; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.List; import javax.swing.tree.TreeNode; import org.eclipse.osgi.util.NLS; import org.hibernate.console.ConsoleConfiguration; import org.hibernate.console.ImageConstants; import org.hibernate.console.execution.ExecutionContext; import org.hibernate.console.execution.ExecutionContextHolder; /** * @author MAX * */ public abstract class BaseNode implements TreeNode, ExecutionContextHolder { protected BaseNode parent; protected NodeFactory factory; protected List<BaseNode> children = new ArrayList<BaseNode>(); protected String name = "!"; //$NON-NLS-1$ String iconName = ImageConstants.UNKNOWNPROPERTY; abstract protected void checkChildren(); public ConsoleConfiguration getConsoleConfiguration() { return factory.getConsoleConfiguration(); } public ExecutionContext getExecutionContext() { return factory.getConsoleConfiguration().getExecutionContext(); } public String getIconName() { return iconName; } public BaseNode(NodeFactory f, BaseNode parent) { factory = f; this.parent = parent; } public TreeNode getChildAt(int childIndex) { checkChildren(); return children.get(childIndex); } public int getChildCount() { checkChildren(); return children.size(); } public TreeNode getParent() { return parent; } public int getIndex(TreeNode node) { checkChildren(); return children.indexOf(node); } public boolean getAllowsChildren() { return true; } public boolean isLeaf() { checkChildren(); return getChildCount()==0; } public Enumeration<BaseNode> children() { checkChildren(); return Collections.enumeration(children); } public abstract String getHQL(); public String getCriteria(){ final String criteria = ".createCriteria({0})"; //$NON-NLS-1$ final String sess = "session"; //$NON-NLS-1$ String enName = getName().substring(getName().lastIndexOf('.') + 1); String enCriteria = NLS.bind(criteria, enName + ".class"); //$NON-NLS-1$ return sess + enCriteria; } public String getName() { return name; } final public String toString() { return renderLabel(true); } protected static String getLabel(String name, boolean fullyQualifiedName) { if(!fullyQualifiedName && name!=null && name.length()>1 && name.indexOf('.')>=0) { return name.substring(name.lastIndexOf('.')+1); } else { return name; } } public String renderLabel(boolean fullyQualifiedNames) { return getLabel(getName(), fullyQualifiedNames); } /** clear/reset this node. Mainly get rid of children. **/ public void clear() { for (BaseNode element : children) { element.clear(); } } }