public List<Node> getPublicDialogList() {
		List<Claim> claimList = claimDao.getClaimList();
		List<Claim> counterclaimList = null;
		List<Claim> subclaimList = null;
		List<Evidence> evidenceList = null;
		List<Evidence> counterevidenceList = null;
		List<BipolarQuestion> bipolarQuestionList = null;
		List<BipolarQuestion> responseToBipolarList = null;
		List<Challenge> challengeList = null;
		Node node = null;
		Claim claim = null, counterclaim = null, subclaim = null;
		Evidence evidence = null, counterevidence = null;
		BipolarQuestion bipolarQuestion = null, responseToBipolar = null;
		Challenge challenge = null;
		nodeList.clear();
		// Get claims
		for (int i = 0; i < claimList.size(); i++) {
			claim = claimList.get(i);
			node = new Node(claim.getId(), null, claim.getType(),
					claim.getTitle(), claim.getTeamType());
			nodeList.add(node);
			
			// Get counterclaims
			counterclaimList = claimDao.getPublicClaimList(claim.getId(), "counterclaim");
			for (int j = 0; j < counterclaimList.size(); j++) {
				counterclaim = counterclaimList.get(j);
				node = new Node(counterclaim.getId(), counterclaim.getParentClaimId(),
						counterclaim.getType(), counterclaim.getTitle(), counterclaim.getTeamType());
				nodeList.add(node);
				
				// Get counterevidence
				counterevidenceList = evidenceDao.getPublicEvidenceList(counterclaim.getId(), "counterevidence");
				for (int k = 0; k < counterevidenceList.size(); k++) {
					counterevidence = counterevidenceList.get(k);
					node = new Node(counterevidence.getId(), counterevidence.getParentClaimId(),
							counterevidence.getType(), counterevidence.getTitle(), counterevidence.getTeamType());
					nodeList.add(node);
				}
			}
			
			// Get Sub Claim
			subclaimList = claimDao.getPublicClaimList(claim.getId(), "subclaim");
			for (int j = 0; j < subclaimList.size(); j++) {
				subclaim = subclaimList.get(j);
				node = new Node(subclaim.getId(), subclaim.getParentClaimId(),
						subclaim.getType(), subclaim.getTitle(), subclaim.getTeamType());
				nodeList.add(node);
			}
			
			// Get evidence
			evidenceList = evidenceDao.getPublicEvidenceList(claim.getId(), "evidence");
			for (int j = 0; j < evidenceList.size(); j++) {
				evidence = evidenceList.get(j);
				node = new Node(evidence.getId(), evidence.getParentClaimId(),
						evidence.getType(), evidence.getTitle(), evidence.getTeamType());
				nodeList.add(node);
			}
			
			// Get counterEvidence
			counterevidenceList = evidenceDao.getPublicEvidenceList(claim.getId(), "counterevidence");
			for (int j = 0; j < counterevidenceList.size(); j++) {
				counterevidence = counterevidenceList.get(j);
				node = new Node(counterevidence.getId(), counterevidence.getParentClaimId(),
						counterevidence.getType(), counterevidence.getTitle(), counterevidence.getTeamType());
				nodeList.add(node);
			}
			
			// Get Bi-polar Question
			bipolarQuestionList = bipolarQuestionDao.getPublicBipolarList(claim.getId(), "bipolarQuestion");
			for (int j = 0; j < bipolarQuestionList.size(); j++) {
				bipolarQuestion = bipolarQuestionList.get(j);
				node = new Node(bipolarQuestion.getId(), bipolarQuestion.getParentId(),
						bipolarQuestion.getType(), bipolarQuestion.getTitle(), bipolarQuestion.getTeamType());
				nodeList.add(node);
				// Get response to Bi-polar Question
				responseToBipolarList = bipolarQuestionDao.getPublicBipolarList(bipolarQuestion.getId(), "responseToBipolar");
				for (int k = 0; k < responseToBipolarList.size(); k++) {
					responseToBipolar = responseToBipolarList.get(k);
					node = new Node(responseToBipolar.getId(), responseToBipolar.getParentId(),
							responseToBipolar.getType(), responseToBipolar.getTitle(), responseToBipolar.getTeamType());
					nodeList.add(node);
				}
			}
			
			// Get Challenge
			challengeList = challengeDao.getPublicChallengeList(claim.getId());
			for (int j = 0; j < challengeList.size(); j++) {
				challenge = challengeList.get(j);
				node = new Node(challenge.getId(), challenge.getParentId(),
						challenge.getType(), challenge.getTitle(), challenge.getTeamType());
				nodeList.add(node);
			}
		}
		return nodeList;
	}