View Javadoc
1 /* 2 * Copyright (c) 2003 3 * Information Desire GmbH 4 * All rights reserved. 5 */ 6 package com.infodesire.infobit.external.impl; 7 8 import com.infodesire.infobit.data.Infobit; 9 import com.infodesire.infobit.data.Version; 10 11 import org.apache.commons.logging.Log; 12 import org.apache.commons.logging.LogFactory; 13 14 import java.util.ArrayList; 15 import java.util.Collection; 16 import java.util.Date; 17 import java.util.HashSet; 18 import java.util.Iterator; 19 import java.util.List; 20 import java.util.Set; 21 22 /*** 23 * This class represents generic content in the dependency graph of content and 24 * nodes. 25 * 26 * @author peter2 27 * @created 1. September 2003 28 * @version $Revision: 1.1 $ 29 */ 30 abstract class ContentNode extends BufferNode { 31 32 private final static Log _log = LogFactory.getLog(ContentNode.class); 33 34 /*** 35 * Buffer node representation of the infobit this versions provides content 36 * for 37 */ 38 protected InfobitNode _infobitNode; 39 40 /*** 41 * The infobit which this version provides content to 42 */ 43 protected Infobit _infobit; 44 45 /*** 46 * The name of the version 47 */ 48 protected String _name; 49 50 /*** 51 * The creation date of the content version. 52 */ 53 protected Date _date; 54 55 /*** 56 * The creator of the version 57 */ 58 protected String _author; 59 60 /*** 61 * All keywords attached to the content, if applicable. Set of <code>String</code> 62 * . 63 */ 64 protected Set _keywords = new HashSet(); 65 66 67 /*** 68 * Restricts creation access. 69 */ 70 protected ContentNode() { 71 } 72 73 74 /*** 75 * Conveniency method to get a version by name. As precondition, The 76 * requested version is required to exist. 77 * 78 * @return The version of {@link _infobit} identified by {@link _name} 79 */ 80 protected Version resolveVersion() { 81 Version version = null; 82 83 for (Iterator i = _infobit.getVersions().iterator(); 84 version == null && i.hasNext(); ) { 85 Version v = (Version) i.next(); 86 87 if (v.getName().equals(_name)) { 88 version = v; 89 } 90 } 91 92 if (version == null) { 93 String m = "Failed precondition: missing version " + _name; 94 _log.fatal(m); 95 throw new RuntimeException(m); 96 } 97 98 return version; 99 } 100 101 102 /*** 103 * Gets the name of the content version. 104 * 105 * @return The Name value 106 */ 107 String getName() { 108 return _name; 109 } 110 111 112 /*** 113 * Returns the infobit node this version node depends on. 114 * 115 * @return The Dependencies value 116 */ 117 Collection getDependencies() { 118 if (_infobitNode == null) { 119 throw new IllegalStateException("Infobit dependency not set."); 120 } 121 122 List dep = new ArrayList(); 123 dep.add(_infobitNode); 124 125 return dep; 126 } 127 128 129 /*** 130 * Defines the name of the content version. For use on initialization only. 131 * 132 * @param name The new Name value 133 */ 134 void setName(String name) { 135 _name = name; 136 } 137 138 139 /*** 140 * Defines the creation date. 141 * 142 * @param date The new Date value 143 */ 144 void setDate(Date date) { 145 _date = date; 146 } 147 148 149 /*** 150 * Defines the author. 151 * 152 * @param author The new Author value 153 */ 154 void setAuthor(String author) { 155 _author = author; 156 } 157 158 159 /*** 160 * Sets the buffer node representation of the infobit this version provides 161 * content to. 162 * 163 * @param node The new InfobitNode value 164 */ 165 void setInfobitNode(InfobitNode node) { 166 _infobitNode = node; 167 } 168 169 170 /*** 171 * Resolves the common dependency on the infobit to which content is 172 * provided. 173 * 174 * @param dependency Description of Parameter 175 * @param value Description of Parameter 176 */ 177 void resolveDependency(BufferNode dependency, Object value) { 178 final String tag = getClass().getName() + ": resolveDependency: "; 179 _log.trace(tag + "enter"); 180 181 if (value == null) { 182 throw new NullPointerException("resolved value"); 183 } 184 185 if (dependency == _infobitNode) { 186 _infobit = (Infobit) value; 187 } 188 else { 189 String m = "Assertion failed: expected infobit dependency"; 190 _log.fatal(m); 191 throw new RuntimeException(m); 192 } 193 194 _log.trace(tag + "exit"); 195 } 196 197 198 /*** 199 * Adds a keyword on the version. Keywords are persisted in the order they 200 * have been added. 201 * 202 * @param keyword The next keyword applicable to the content 203 */ 204 void addKeyword(String keyword) { 205 if (!_keywords.contains(keyword)) { 206 _keywords.add(keyword); 207 } 208 } 209 }

This page was automatically generated by Maven