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.List; 011 012 import net.sf.tacos.services.CategoryInfo; 013 014 import org.apache.commons.lang.builder.EqualsBuilder; 015 import org.apache.commons.lang.builder.HashCodeBuilder; 016 import org.apache.commons.lang.builder.ToStringBuilder; 017 import org.apache.commons.lang.builder.ToStringStyle; 018 019 /** 020 * This class describes a site map category containing page names. 021 * 022 * @author Gabriel Handford 023 */ 024 public class CategoryInfoImpl implements CategoryInfo { 025 026 private String name; 027 private List pageNames; 028 private String image; 029 private String inactiveImage; 030 031 /** 032 * Construct named category with list of pages. 033 * @param name The category name 034 * @param pageNames List of the page names in this category 035 */ 036 public CategoryInfoImpl(String name, List pageNames) { 037 this.name = name; 038 this.pageNames = pageNames; 039 } 040 041 /** 042 * Construct named category with list of pages, active and inactive image. 043 * @param name The category name 044 * @param pageNames List of the page names in this category 045 */ 046 public CategoryInfoImpl(String name, List pageNames, 047 String image, String inactiveImage) { 048 this.name = name; 049 this.pageNames = pageNames; 050 this.image = image; 051 this.inactiveImage = inactiveImage; 052 } 053 054 /** 055 * Get category name. 056 * @return name The category name 057 */ 058 public String getName() { 059 return name; 060 } 061 062 /** 063 * Get the default page. 064 * @return The default page, or the first page, or null. 065 */ 066 public String getDefaultPage() { 067 if (pageNames.size() > 0) 068 return (String)pageNames.get(0); 069 else 070 return null; 071 } 072 073 /** 074 * Get list of pages in category. 075 * @return pageNames The page names in this category 076 */ 077 public List getPageNames() { 078 return pageNames; 079 } 080 081 /** 082 * Returns active image for category. 083 * @return 084 */ 085 public String getImage() 086 { 087 return image; 088 } 089 090 /** 091 * Returns the inactive image for category. 092 * @return 093 */ 094 public String getInactiveImage() 095 { 096 return inactiveImage; 097 } 098 099 /** 100 * @see java.lang.Object#toString() 101 */ 102 public String toString() { 103 return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE) 104 .append("name", this.name).append("pageNames", this.pageNames) 105 .toString(); 106 } 107 108 /** 109 * @see java.lang.Object#equals(Object) 110 */ 111 public boolean equals(Object object) { 112 if (object == this) { 113 return true; 114 } 115 if (!(object instanceof CategoryInfo)) { 116 return false; 117 } 118 CategoryInfo rhs = (CategoryInfo) object; 119 return new EqualsBuilder().append(this.name, rhs.getName()) 120 .isEquals(); 121 } 122 123 /** 124 * @see java.lang.Object#hashCode() 125 */ 126 public int hashCode() { 127 return new HashCodeBuilder(1471056309, 288593091).append(this.name) 128 .toHashCode(); 129 } 130 }