private ORASSNode processEntity(ErdNode erNode) throws MainException{
		
		String tName = erNode.getTableName();
		logger.info("process entity " +  tName);
		ORASSNode node = createORASSNode(tName, erNode.getOriginalTableName());
		List<ColumnDetail> attrs = erNode.getAttributes();
		for(int j=0; j<attrs.size(); j++){
			node.addAttribute(attrs.get(j));
			//logger.info("add attribute " + attrs.get(j).getName() + " to " + tName);
		}
		processIsARel(erNode);
		processedNodes.add(tName);

		Vector<ErdNode> links = erdnodes.get(tName).getLinks();
		for(int i=0; i<links.size(); i++){
			ErdNode relatedNode = links.get(i);
			if(!processedNodes.contains(relatedNode.getTableName())){
				ErdNodeType nodeType = relatedNode.getErdNodeType();
				if(nodeType == ErdNodeType.ENTITY_TYPE || nodeType == ErdNodeType.WEAK_ENTITY_TYPE){
					//processSpecialLinks(erNode, node);
					ORASSNode child = processEntity(relatedNode);
					node.addChildren(child);
					logger.info("add child " + child.getName() + " to " + tName);
				} else { 
					// The related node is a parent of a weak entity
					processRelationship(relatedNode, node);
				}
			}
		}

		return node;
	}