/**
* Copyright 2014 Comcast Cable Communications Management, LLC
*
* This file is part of CATS.
*
* CATS is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* CATS 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with CATS. If not, see <http://www.gnu.org/licenses/>.
*/
package com.comcast.cats.controller;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import org.primefaces.event.NodeCollapseEvent;
import org.primefaces.event.NodeExpandEvent;
import org.primefaces.event.NodeSelectEvent;
import org.primefaces.model.DefaultTreeNode;
import org.primefaces.model.TreeNode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.comcast.cats.info.VideoRecorderServiceConstants;
import com.comcast.cats.view.DirectoryParser;
import com.comcast.cats.view.DocumentBean;
/**
* Helper class to support video recorder browser UI.
*
* @author ssugun00c
*
*/
@ManagedBean
@RequestScoped
public class DocumentsController
{
private static final Logger LOGGER = LoggerFactory.getLogger( DocumentsController.class );
private TreeNode root;
private TreeNode selectedDocument;
public DocumentsController()
{
initRoot();
}
public TreeNode getRoot()
{
return root;
}
private void initRoot()
{
root = new DefaultTreeNode( "root", null );
String baseDirectory = System
.getProperty( VideoRecorderServiceConstants.SYSTEM_PROPERTY_CATS_PVR_FILE_SERVER_BASE_PATH );
String host = ( ( HttpServletRequest ) FacesContext.getCurrentInstance().getExternalContext().getRequest() )
.getServerName();
DocumentBean node = new DocumentBean();
node.setChilds( DirectoryParser.parse( baseDirectory, host ) );
for ( DocumentBean year : node.getChilds() )
{
TreeNode years = new DefaultTreeNode( year, root );
for ( DocumentBean month : year.getChilds() )
{
TreeNode months = new DefaultTreeNode( month, years );
for ( DocumentBean day : month.getChilds() )
{
TreeNode days = new DefaultTreeNode( day, months );
for ( DocumentBean mac : day.getChilds() )
{
TreeNode macs = new DefaultTreeNode( mac, days );
for ( DocumentBean file : mac.getChilds() )
{
new DefaultTreeNode( file, macs );
}
}
}
}
}
}
public void setRoot( TreeNode root )
{
this.root = root;
}
public TreeNode getSelectedDocument()
{
return selectedDocument;
}
public void setSelectedDocument( TreeNode selectedDocument )
{
this.selectedDocument = selectedDocument;
}
public void onNodeSelect( NodeSelectEvent event )
{
selectedDocument = event.getTreeNode();
LOGGER.info( "Selected:" + selectedDocument.getData() );
}
public void onNodeExpand( NodeExpandEvent event )
{
String node = event.getTreeNode().getData().toString();
LOGGER.info( "Expanded:" + node );
}
public void onNodeCollapse( NodeCollapseEvent event )
{
String node = event.getTreeNode().getData().toString();
LOGGER.info( "Collapsed:" + node );
}
public void deleteNode()
{
LOGGER.info( "[WEB][DOCUMENT-DELETE" );
DocumentBean documentBean = ( DocumentBean ) selectedDocument.getData();
LOGGER.info( documentBean.toString() );
}
}