/* * SAND development/deployment environment * Copyright (C) 2004-2006 SAND Services Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.sandev.TaskHeap.structs; import java.util.Date; /** * A PlanComponent represents part of a Plan. It holds the base fields * common to both Tasks and Plans. PlanComponents may be queried, but * are not be modified directly. * * @sand.structmessage persist * @sand.verbforms update query collection */ public class PlanComponentStruct { /** * Each plan component requires a name so that humans can refer to it * by something other than its unique identifier. Names should be short, * but descriptive enough to identify the element within a report. * *
Originally the name was declared to be unique, to avoid creating * heaps with multiple tasks or plans with generic names like "test" or * "requirements". Generic naming is strongly discouraged because * duplicate names
However, there are times when having two tasks with the same * name may be reasonable, and having the application disallow this * generally can get in the way. So the unique constraint was * removed, even though experience has shown that unique naming * greatly increases manageability, especially over time. Good names * are strongly recommended. The few additional seconds spent coming * up with a good name will easily save minutes when working through * the heap as a whole. * * @sand.invalid "TASKHEAP_INVALID_NAME" * @sand.stringlength 60 128 * @sand.help * Each plan component requires a name so that humans can refer to it * by something other than its unique identifier. Names should be short, * but descriptive enough to identify the element within a report. */ protected String name; /** * The description of this plan component. Organizational plans * or milestones may have relatively short descriptions, while tasks * typically have fairly significant text describing the work to be * done. * * @sand.invalid "TASKHEAP_INVALID_DESCRIPTION" * @sand.stringlength 512 1048576 * @sand.help * The description of this plan component. Organizational plans * or milestones may have relatively short descriptions, while tasks * typically have fairly significant text describing the work to be * done. * *
To provide maximum display flexibility, the description field * is plain text (no HTML or word processor formatting). Only line * breaks are preserved. However the display will convert recognized * email addresses and URLs to display links, to allow for including * references to supporting documentation or email contacts.
*/ protected String description; /** * If a PlanComponent is part of a Plan, then this is a reference * to the plan that contains it. If the reference is null, then this * is a top level heap element. * * @sand.ref org.sandev.TaskHeap.structs.PlanStruct * @sand.help * If a PlanComponent is part of a Plan, then this is a reference * to the plan that contains it. If the reference is null, then this * is a top level heap element. */ protected long parent; /** * A component may be owned by a resource. This allows for work * responsibility to be assigned, and provides a contact link for * other heap users with interest in the given task or plan. * * @sand.ref org.sandev.TaskHeap.structs.ResourceStruct * @sand.flags dynamicselect * @sand.printname "resource" * @sand.help * A component may be owned by a resource. This allows for work * responsibility to be assigned, and provides a contact link for * other heap users with interest in the given task or plan. */ protected long resourceID; /** * An estimate of the number of hours necessary to complete this * plan component. All estimates are in hours. The conversion of time * estimates into calendar elapsed time is based on the hours per day * in the heap attributes. * *For a Task, the time estimate is simply the value entered. For * a Plan, this is the value calculated from the tasks it contains. * For an ExternalPlan, this is the value retrieved from the Plan * being referenced. All automatic processing is done on behalf of * the current user by the system, so any cascading changes are * recorded based on the user that triggered them.
* * @sand.range >= 0 * @sand.default 0 * @sand.metatype hours * @sand.printname "time estimate" * @sand.help * An estimate of the number of hours necessary to complete this * plan component. All estimates are in hours. The conversion of time * estimates into calendar elapsed time is based on the hours per day * in the heap attributes. * *For a Task, the time estimate is simply the value entered. For * a Plan, this is the value calculated from the tasks it contains. * For an ExternalPlan, this is the value retrieved from the Plan * being referenced. All automatic processing is done on behalf of * the current user by the system, so any cascading changes are * recorded based on the user that triggered them.
*/ protected long timeEstimate; /** * The date when this plan component must be completed. If the * estimated completion date goes beyond this date, then this * work item will be noted prominently in the heap display as * being overdue. * * @sand.default 1428458375000L * @sand.printname "due date" * @sand.help * The date when this plan component must be completed. If the * estimated completion date goes beyond this date, then this * work item will be noted prominently in the heap display as * being overdue. * *Note that this means that work items are flagged as overdue * as soon as they slip, not when their due date is exceeded. This * provides advanced warning that additional work prioritization * planning will be required in order to meet the deadline established * by the due date.
*/ protected Date dueDate; /** * Attached comments. * * @sand.flags stringpersist * @sand.stringlength 512 1048576 * @sand.help * Attached comments providing additional detail about status, links * to background material, etc. */ protected NoteStruct[] notes; }