001 /*******************************************************************************
002 * Copyright (c) 2005 Gabriel Handford.
003 * All rights reserved.
004 *
005 * Contributors:
006 * Gabriel Handford -
007 *******************************************************************************/
008 package net.sf.tacos.services.impl;
009
010 import java.util.ArrayList;
011 import java.util.Arrays;
012 import java.util.List;
013
014 import net.sf.tacos.services.PageInfo;
015
016 import org.apache.commons.lang.builder.ToStringBuilder;
017 import org.apache.commons.lang.builder.ToStringStyle;
018
019 /**
020 * This class describes a tapestry page.
021 *
022 * @author Gabriel Handford
023 */
024 public class PageInfoImpl implements PageInfo {
025
026 private String name;
027 private String path;
028 private String desc;
029 private String perm;
030 private PageInfo parent;
031 private List children;
032 private boolean isNavigable;
033
034 /**
035 * Create a tapestry page descriptor.
036 * @param name The page name.
037 * @param desc The page description.
038 * @param perm The page permission (access code needed to access the page).
039 * @param children List of chile pages.
040 * @param isNavigable Whether or not page should be included in the navigation.
041 */
042 public PageInfoImpl(String name, String desc,
043 String perm, List children, boolean isNavigable) {
044 this.name = name;
045 this.desc = desc;
046 this.perm = perm;
047 this.children = children;
048 this.isNavigable = isNavigable;
049 }
050
051 /**
052 * @return The description
053 */
054 public String getDesc() {
055 return desc;
056 }
057
058 /**
059 * @return The page name
060 */
061 public String getName() {
062 return name;
063 }
064
065 /**
066 * @return The permission access code
067 */
068 public String getPermission() {
069 return perm;
070 }
071
072 /**
073 * @return Returns the parent.
074 */
075 public PageInfo getParent() {
076 return parent;
077 }
078
079 /**
080 * Set the parent.
081 * @param parent The parent.
082 */
083 public void setParent(PageInfo parent) {
084 this.parent = parent;
085 }
086
087 /**
088 *
089 * {@inheritDoc}
090 */
091 public void addChild(PageInfo child)
092 {
093 children.add(child);
094 }
095
096 /**
097 * Check whether this page should be included in any page listings.
098 * @return True if this page should be included in any page listings, false otherwise
099 */
100 public boolean isNavigable() { return isNavigable; }
101
102 /**
103 * Get the children.
104 * @return children
105 */
106 public List getChildrenNames() {
107 if (children == null) return Arrays.asList(new Object[0]);
108 List list = new ArrayList(children.size());
109 for(int i = 0; i < children.size(); i++)
110 list.add(((PageInfo)children.get(i)).getName());
111 return list;
112 }
113
114 /**
115 * @see java.lang.Object#toString()
116 */
117 public String toString() {
118 return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
119 .append("name", this.name)
120 .append("desc", this.desc)
121 .append("perm", this.perm)
122 .append("parent", (this.parent != null ? parent.getName() : "none"))
123 .append("isNavigable", this.isNavigable)
124 .toString();
125 }
126 }