All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.ibm.sbt.playground.assets.Node Maven / Gradle / Ivy

There is a newer version: 1.1.12.20161007-1200
Show newest version
/*
 * Copyright IBM Corp. 2012
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); 
 * you may not use this file except in compliance with the License. 
 * You may obtain a copy of the License at:
 * 
 * http://www.apache.org/licenses/LICENSE-2.0 
 * 
 * Unless required by applicable law or agreed to in writing, software 
 * distributed under the License is distributed on an "AS IS" BASIS, 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 
 * implied. See the License for the specific language governing 
 * permissions and limitations under the License.
 */
package com.ibm.sbt.playground.assets;

import com.ibm.commons.util.StringUtil;


/**
 * Definition of a node.
 */
public abstract class Node {
	
	public static final char SEPARATOR = '_';
	public static final char SEPARATOR_SLASH = '/';
	
	private CategoryNode parent;
	private String category;
	private String name;
	private String path;
	private String tooltip;
	private String unid;
	private String jspUrl;

	public Node(CategoryNode parent, String name, String category, String unid, String jspUrl) {
		this.parent = parent;
		this.name = name;
		this.category = category;
		this.unid = unid;
		this.jspUrl = jspUrl;
	}
	public Node(CategoryNode parent, String name) {
		this.parent = parent;
		this.name = name;
		// Create the category and the unid
		this.category = createName(new StringBuilder(),parent,'/').toString();
		this.unid = encodeUnid(createName(new StringBuilder(),this,SEPARATOR).toString());
		this.jspUrl = SEPARATOR_SLASH+createJspUrl(new StringBuilder(),this,SEPARATOR_SLASH).toString();
	}

	public String getPath() {
		if(path==null) {
			if(parent!=null) {
				path = parent.getPath()+'/'+getName();
			} else {
				path = getName();
			}
		}
		return path;
	}
			
	protected StringBuilder createJspUrl(StringBuilder b, Node n, char sep) {
		if(n!=null) {
			if(n.getParent()!=null) {
				createJspUrl(b, n.getParent(),sep);
				if(b.length()>0) {
					b.append(sep);
				}
			}
			b.append(n.getName());
		}
		return b;
	}
	
	protected StringBuilder createName(StringBuilder b, Node n, char sep) {
		if(n!=null) {
			if(n.getParent()!=null) {
				createName(b, n.getParent(),sep);
				if(b.length()>0) {
					b.append(sep);
				}
			}
			b.append(n.getName());
		}
		return b;
	}
	
	public CategoryNode getParent() {
		return parent;
	}

	public int getLevel() {
		if(parent!=null) {
			return parent.getLevel()+1;
		}
		return 0;
	}
	
	public String getCategory() {
		return category;
	}

	public String getName() {
		return name;
	}

	public String getUnid() {
		return unid;
	}

	public String getTooltip() {
		return tooltip;
	}

	public void setTooltip(String tooltip) {
		this.tooltip = tooltip;
	}
	
	public String getJspUrl() {
		return jspUrl;
	}
	
	public boolean isCategory() {
		return this instanceof CategoryNode;
	}
	
	public boolean isAsset() {
		return this instanceof AssetNode;
	}
	
	public static String encodeSnippet(String category, String name) {
		if(StringUtil.isNotEmpty(category)) {
			return encodeUnid(category+SEPARATOR+name);
		}
		return encodeUnid(name);
	}
	public static String encodeUnid(String s) {
		if(StringUtil.isNotEmpty(s)) {
			StringBuilder b = new StringBuilder();
			for(int i=0; i




© 2015 - 2024 Weber Informatics LLC | Privacy Policy