//TODO: checking credit.
//boolean reachable = checkCredit(viewer, resource);
level++;
NodeContainer nc = new NodeContainer();
//** selected link/filtering **
Set<List<String>> newPathsToUri = pathsToUri;
if(pathsToUri!=null)
{
//check if node is on one of the paths in pathsToUri - if yes cut off this path
for(List<String> path:pathsToUri)
{
if(!path.isEmpty())
if(path.get(0).equals(resource.getStringURI()))
{
onPath = true;
break;
}
}
//if the current node is on some path - rewrite the list, and remove current node from it.
if(onPath)
{
newPathsToUri = new HashSet<List<String>>();
for(List<String> path:pathsToUri)
{
if(!path.isEmpty())
if(path.get(0).equals(resource.getStringURI()))
{
path.remove(0);
}
if(!path.isEmpty())
{
newPathsToUri.add(path);
}
}
}
}
//need to think some more wise way to tell when script should stop go deeper
if(level>=maxAbsoluteLevel&&hasContent&&!onPath) {
isDyn = true;
}
nc.setDyn(isDyn);
//set dynamic load
//nc.setDyn(false);
if (resource instanceof SiocPostResource) {
SiocPostResource spr = SiocPostResource.getInstance(resource.getStringURI());
owner = spr.getMaker();
isOwner = viewer.equals(owner);
nc.setType("siocPost");
BookmarkNode bn = new BookmarkNode();
bn.setId(spr.getStringURI());
if(spr.getTitle()!=null&&!"".equals(spr.getTitle().trim()))
bn.setLabel("Post:"+spr.getTitle());
else
bn.setLabel("Post:"+spr.getStringURI());
//check if this bookmark is selected this directory
if(resource.getStringURI().equals(selectedUri))
{
bn.setSelected(true);
}
else bn.setSelected(false);
bn.setLevel(level);
bn.setOwn(parentIsOwner);
bn.setStandalone(standalone);
nc.setContent(bn);
}
else if (resource instanceof SiocForumResource) {
SiocForumResource sfr = SiocForumResource.getInstance(resource.getStringURI());
hasContent = sfr.hasContent();
nc.setType("siocForum");
DirectoryNode dn = new DirectoryNode();
dn.setId(sfr.getStringURI());
dn.setLevel(level);
if(sfr.getName()!=null&&!"".equals(sfr.getName()))
dn.setLabel("Forum: "+sfr.getName());
else if(sfr.getTitle()!=null&&!"".equals(sfr.getTitle()))
dn.setLabel("Forum: "+sfr.getTitle());
else dn.setLabel("Forum: "+sfr.getStringURI());
dn.setOwn(isOwner);
//TODO - get owner from this tags
//dn.setOwnerMbox((owner != null) ? (owner.getMbox().toString()) : "");
//dn.setOwnerName((owner != null) ? (owner.getName()) : "");
dn.setOwnerMbox("");
dn.setOwnerName("");
dn.setRemovable(!hasContent);
dn.setLinkedIn(parentIsOwner&!isOwner);
//check if user select this directory - we can get id or whole uri.
if(selectedUri!=null&&!"".equals(selectedUri.trim())&&selectedUri.length()>=40)
{
if(resource.getStringURI().equals(selectedUri)||
resource.getStringURI().endsWith(selectedUri.substring(selectedUri.length()-40,selectedUri.length())))
{
dn.setSelected(true);
dn.setOpened(false);
}
else dn.setSelected(false);
}
dn.setStandalone(standalone);
nc.setContent(dn);
}
else if (resource instanceof SiocSiteResource) {
SiocSiteResource ssr = SiocSiteResource.getInstance(resource.getStringURI());
hasContent = ssr.hasContent();
nc.setType("siocSite");
DirectoryNode dn = new DirectoryNode();
dn.setId(resource.getResource().toString());
dn.setLevel(level);
dn.setLabel("Site: "+ssr.getTitle());
dn.setOwn(isOwner);
//TODO - get owner from this tags
//dn.setOwnerMbox((owner != null) ? (owner.getMbox().toString()) : "");
//dn.setOwnerName((owner != null) ? (owner.getName()) : "");
dn.setOwnerMbox("");
dn.setOwnerName("");
dn.setRemovable(!hasContent);
dn.setLinkedIn(parentIsOwner&!isOwner);
//check if user select this directory - we can get id or whole uri.
if(selectedUri!=null&&!"".equals(selectedUri.trim())&&selectedUri.length()>=40)
{
if(resource.getStringURI().equals(selectedUri)||
resource.getStringURI().endsWith(selectedUri.substring(selectedUri.length()-40,selectedUri.length())))
{
dn.setSelected(true);
dn.setOpened(false);
}
else dn.setSelected(false);
}
dn.setStandalone(standalone);
nc.setContent(dn);
}
//add created nodes to the buffer
nc.toJSON(buffer);
//proceed the content of this resource
if (hasContent&&!isDyn) {
//parentIsOwner = isOwner;