 
					
				
		
04-14-2008 01:44 PM
 
					
				
		
04-15-2008 01:47 AM
 
					
				
		
04-15-2008 10:44 AM
 
					
				
		
04-16-2008 04:27 PM
package org.alfrescox.web.bean;
import java.util.Collection;
import java.util.List;
import java.util.Vector;
import javax.faces.context.FacesContext;
import org.alfresco.model.ContentModel;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.web.app.Application;
import org.alfresco.web.bean.DocumentDetailsBean;
import org.alfresco.web.bean.repository.Repository;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
 * Backing bean providing access to the details of a document
 *
 * @author swick
 */
public class DocumentDetailsBeanExt extends DocumentDetailsBean
{
   protected Log logger = LogFactory.getLog(getClass());
   static final String MSG_HAS_FOLLOWING_CATEGORIES = "has_following_categories";
   static final String MSG_NO_CATEGORIES_APPLIED = "no_categories_applied";
   /**
    * Returns a list of objects representing the categories applied to the
    * current document
    *
    * @return List of categories
    */
   public String getCategoriesOverviewHTML()
   {
      String html = null;
      if (isCategorised())
      {
         // we know for now that the general classifiable aspect only will be
         // applied so we can retrive the categories property direclty
         Collection<NodeRef> categories = (Collection<NodeRef>)this.nodeService.getProperty(getDocument().getNodeRef(), ContentModel.PROP_CATEGORIES);
         if (categories == null || categories.size() == 0)
         {
            html = Application.getMessage(FacesContext.getCurrentInstance(), MSG_NO_CATEGORIES_APPLIED);
         }
         else
         {
            StringBuilder builder = new StringBuilder(Application.getMessage(FacesContext.getCurrentInstance(),
                  MSG_HAS_FOLLOWING_CATEGORIES));
            builder.append("<ul>");
            for (NodeRef ref : categories)
            {
               if (this.nodeService.exists(ref))
               {
                  builder.append("<li>");
                  builder.append(getFullPath(ref));
                  builder.append("</li>");
               }
            }
            builder.append("</ul>");
            html = builder.toString();
         }
      }
      return html;
   }
   public String getFullPath(NodeRef ref)
   {
      if(logger.isDebugEnabled())
         logger.debug("getFullPath for "+ref);
      StringBuffer buffer = new StringBuffer(Repository.getNameForNode(nodeService, ref));
      List<ChildAssociationRef> parents = null;
      NodeRef parent = ref;
      while(parent!=null && (parents = nodeService.getParentAssocs(parent))!=null)
      {
         parent=null;
         // there shouldn't be more than one ChildAssociationRef
         for(ChildAssociationRef car : parents)
         {
            if(logger.isDebugEnabled())
               logger.debug("getFullPath - considering child association reference: "+car);
            String parentName = Repository.getNameForNode(nodeService, car.getParentRef());
            if(parentName.equalsIgnoreCase("general"))
               break; // break for loop.  parent is still null, which will break the while loop as well.
            parent = car.getParentRef(); // store parent for next loop
            buffer.insert(0,"/");
            buffer.insert(0,parentName);
         }
      }
      
      if(logger.isDebugEnabled())
         logger.debug("getFullPath returning path: "+buffer.toString());
      
      return buffer.toString();
   }
}
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
   <managed-bean>
      <description>
         Backing bean used by the document details dialog
      </description>
      <managed-bean-name>DocumentDetailsBean</managed-bean-name>
      <managed-bean-class>org.alfrescox.web.bean.DocumentDetailsBeanExt</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
      <managed-property>
         <property-name>browseBean</property-name>
         <value>#{BrowseBean}</value>
      </managed-property>
      <managed-property>
         <property-name>nodeService</property-name>
         <value>#{NodeService}</value>
      </managed-property>
      <managed-property>
         <property-name>lockService</property-name>
         <value>#{LockService}</value>
      </managed-property>
      <managed-property>
         <property-name>versionService</property-name>
         <value>#{VersionService}</value>
      </managed-property>
      <managed-property>
         <property-name>copyService</property-name>
         <value>#{CopyService}</value>
      </managed-property>
      <managed-property>
         <property-name>ownableService</property-name>
         <value>#{OwnableService}</value>
      </managed-property>
      <managed-property>
         <property-name>checkOutCheckInService</property-name>
         <value>#{CheckoutCheckinService}</value>
      </managed-property>
      <managed-property>
         <property-name>navigator</property-name>
         <value>#{NavigationBean}</value>
      </managed-property>
     <managed-property>
         <property-name>multilingualContentService</property-name>
         <value>#{MultilingualContentService}</value>
      </managed-property>
      <managed-property>
         <property-name>contentFilterLanguagesService</property-name>
         <value>#{ContentFilterLanguagesService}</value>
      </managed-property>
      <managed-property>
         <property-name>editionService</property-name>
         <value>#{EditionService}</value>
      </managed-property>
      <managed-property>
         <property-name>permissionService</property-name>
         <value>#{PermissionService}</value>
      </managed-property>
   </managed-bean>
</faces-config>
<?xml version="1.0"?>
<project name="Custom JSP Build File" default="package-extension" basedir=".">
   
   <property name="project.dir" value="."/>
   <property name="source.dir" value="${project.dir}/source"/>
   <property name="build.dir" value="${project.dir}/build"/>
   <property name="classes.dir" value="${build.dir}/classes"/>
   <property name="tomcat.home" value="C:\\Program Files\\Apache\\apache-tomcat-5.5.25"/>
   <property name="alfresco-lib.dir" value="${tomcat.home}/webapps/alfresco/WEB-INF/lib"/>
   <property name="web.dir" value="${project.dir}/web" />
   <property name="package.file.jar" value="${build.dir}/custom-jsp.jar"/>
   <property name="package.file.zip" value="${build.dir}/custom-jsp.zip"/>
   
   <target name="compile">
      <mkdir dir="${build.dir}" />  
      <mkdir dir="${classes.dir}" />  
      <javac srcdir="${source.dir}" destdir="${classes.dir}">
           <classpath>
      <fileset dir="${alfresco-lib.dir}">
         <include name="**/*.jar"/>
      </fileset>
      <fileset dir="${tomcat.home}/common/lib">
         <include name="**/*.jar"/>
      </fileset>
      </classpath>
      </javac>
   </target>
   
   <target name="package-jar" depends="compile">
      <delete file="${package.file.jar}" />  
      <jar destfile="${package.file.jar}">
         <fileset dir="${source.dir}" excludes="*.java"/>
         <fileset dir="${classes.dir}"/>
      </jar>
   </target>
   
   <target name="package-extension" depends="package-jar">
      <delete file="${package.file.zip}" />
      <zip destfile="${package.file.zip}">
         <zipfileset file="${package.file.jar}" prefix="WEB-INF/lib" />
         <zipfileset dir="${web.dir}" />
      </zip>
   </target>
   
   <target name="integrate-extension" depends="package-extension">
      <available file="alfresco.war" type="file" property="alfresco.war.present" />
      <fail unless="alfresco.war.present"
            message="Could not find alfresco.war, please copy it to ${basedir}" />
      <zip destfile="alfresco.war" update="true">
         <zipfileset file="${package.file.jar}" prefix="WEB-INF/lib" />
         <zipfileset dir="${web.dir}" />
      </zip>
   </target>
</project>
 
					
				
				
			
		
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.