com.unica.publicapi.plan.api
Class Handle

java.lang.Object
  extended by com.unica.publicapi.plan.api.Handle
Direct Known Subclasses:
ApprovalHandle, AssetFolderHandle, AssetHandle, AssetLibraryHandle, AttachmentHandle, FinancialAccountHandle, InvoiceHandle, InvoiceLineItemHandle, MarketingObjectHandle, PlanTeamHandle, PlanUserHandle, ProjectGridHandle, ProjectHandle, ProjectLineItemHandle, ProjectRequestHandle, WorkflowTaskHandle

public class Handle
extends java.lang.Object

Handle is a special kind of URL object that refers to a particular object in a particular Plan instance.

Handles generally include the component type, internal data identifier, an instance base URL, etc. Handles used or generated by the API may be externalized to a full URL that can be used to navigate to a view of the component in the Plan GUI, be cut-and-pasted, sent in emails, used in another procedure as a parameter, etc.

Handles are only valid for a particular Plan service instance—or clustered instance—but are guaranteed valid for the life time of the deployed service. This means that handles can be saved in a file for later reference, but that they can’t be used to access components on another Plan instance (even if on the same machine). A mechanism is provided for mapping different base URLs to the current instance to accommodate relocating a instance to another machine (e.g., the original machine is dead).

Finally, handles are client-independent. For example, a trigger may pass a handle to a procedure, which uses it as a parameter to a SOAP call to a 3rd-party system, which turns around and issues a SOAP request back to Plan to invoke a procedure that updates an attribute.

Examples:

 Project:
   "http://mymachine:7001/plan/affiniumplan.jsp?cat=projecttabs&projectid=1234"
 Marketing Object
   "http://mymachine:7001/plan/affiniumplan.jsp?cat=componenttabs&componentid=creatives&componentinstid=1234"
 Workflow task:
    "http://mymachine:7001/plan/affiniumplan.jsp?cat=projectworkflow&projectid=1234&taskid=5678"
 Project grid:
    "http://mymachine:7001/plan/affiniumplan.jsp?cat=projecttabs&projectid=1234&gridid=grid"
 Project grid row:
    "http://mymachine:7001/plan/affiniumplan.jsp?cat=projecttabs&projectid=1234&gridid=grid&gridrowid=101"
 Marketing Object grid
   "http://mymachine:7001/plan/affiniumplan.jsp?cat=componenttabs&componentid=creatives&componentinstid=1234&gridid=grid"
 Marketing Object grid row
   "http://mymachine:7001/plan/affiniumplan.jsp?cat=componenttabs&componentid=creatives&componentinstid=1234&gridid=grid&gridrowid=101"
 Approval Object
   "http://mymachine:7001/plan/affiniumplan.jsp?cat=approvaldetail&approvalid=101"
 User Object:
   http://mymachine:7001/plan/affiniumplan.jsp?cat=adminuserpermissions&func=edit&userId=101
 Team Object:
   http://mychane:7001/plan/affiniumplan.jsp?cat=teamdetails&func=edit&teamid=100001
 Attachment Object:
   http://mychane:7001/plan/affiniumplan.jsp?cat=attachmentview&attachid=101&parentObjectId=101&parentObjectType=project
 AssetLibrary Object:
   http://localhost:7001/plan/affiniumplan.jsp?cat=library&id=101
 Asset Object:
   http://localhost:7001/plan/affiniumplan.jsp?cat=asset&assetMode=VIEW_ASSET&assetid=101
 Asset Folder Object:
   http://localhost:7001/plan/affiniumplan.jsp?cat=folder&id=101
 Financial Account Object:
   http://localhost:7001/plan/affiniumplan.jsp?cat=accountdetails&accountid=101
 Invoice Object:
   http://localhost:7001/plan/affiniumplan.jsp?cat=invoicedetails&invoiceid=134
 Invoice line item object:
   http://localhost:7001/plan/affiniumplan.jsp?cat=invoicedetails&invoiceid=134&line_item_id=101
 Project Line Item Object:
         http://localhost:7001/plan/affiniumplan.jsp?cat=projecttabs&projectid=1234&projectlineitemid=123&projectlineitemisversionfinal=false 
 

Author:
Jim Flowers TODO: allow null baseURL => defaults to current base a.k.a. notifications TODO: check baseURL: must be http/https, must have host; port is optional

Field Summary
private  java.net.URL _baseURL
           
private  int _componentId
          ComponentId property
private  ComponentTypeEnum _componentTypeEnum
          ComponentTypeEnum property.
private  java.lang.String[] _extensions
           
protected static java.lang.String APPROVAL_CATEGORY
           
protected static java.lang.String APPROVAL_ID
           
protected static java.lang.String APPROVAL_QUERY
           
protected static java.lang.String ASSET_CATEGORY
           
protected static java.lang.String ASSET_FOLDER_CATEGORY
           
protected static java.lang.String ASSET_FOLDER_ID
           
protected static java.lang.String ASSET_FOLDER_QUERY
           
protected static java.lang.String ASSET_ID
           
protected static java.lang.String ASSET_LIBRARY_CATEGORY
           
protected static java.lang.String ASSET_LIBRARY_ID
           
protected static java.lang.String ASSET_LIBRARY_QUERY
           
protected static java.lang.String ASSET_MODE
           
protected static java.lang.String ASSET_MODE_VALUE
           
protected static java.lang.String ASSET_QUERY
           
protected static java.lang.String ATTACHMENT_CATEGORY
           
protected static java.lang.String ATTACHMENT_ID
           
protected static java.lang.String ATTACHMENT_PARENT_OBJECT_ID
           
protected static java.lang.String ATTACHMENT_PARENT_OBJECT_TYPE
           
protected static java.lang.String ATTACHMENT_QUERY
           
protected static java.lang.String FINANCIAL_ACCOUNT_CATEGORY
           
protected static java.lang.String FINANCIAL_ACCOUNT_ID
           
protected static java.lang.String FINANCIAL_ACCOUNT_QUERY
           
protected static java.lang.String GRID_ID
           
protected static java.lang.String GRID_ROW_ID
           
protected static java.lang.String INVOICE_CATEGORY
           
protected static java.lang.String INVOICE_ID
           
protected static java.lang.String INVOICE_LINE_ITEM_ID
           
protected static java.lang.String INVOICE_LINE_ITEM_QUERY
           
protected static java.lang.String INVOICE_QUERY
           
protected static java.lang.String MO_CATEGORY
           
protected static java.lang.String MO_GRID_QUERY
           
protected static java.lang.String MO_GRID_ROW_QUERY
           
protected static java.lang.String MO_ID
           
protected static java.lang.String MO_QUERY
           
protected static java.lang.String MO_TYPE
           
protected static java.lang.String PLAN_JSP
           
protected static java.lang.String PROJECT_CATEGORY
           
protected static java.lang.String PROJECT_GRID_QUERY
           
protected static java.lang.String PROJECT_GRID_ROW_QUERY
           
protected static java.lang.String PROJECT_ID
           
protected static java.lang.String PROJECT_LINE_ITEM_ID
           
protected static java.lang.String PROJECT_LINE_ITEM_IS_VERSION_FINAL
           
protected static java.lang.String PROJECT_LINE_ITEM_QUERY
           
protected static java.lang.String PROJECT_QUERY
           
protected static java.lang.String TASK_CATEGORY
           
protected static java.lang.String TASK_ID
           
protected static java.lang.String TASK_QUERY
           
protected static java.lang.String TEAM_CATEGORY
           
protected static java.lang.String TEAM_FUNC
           
protected static java.lang.String TEAM_ID
           
protected static java.lang.String TEAM_QUERY
           
protected static java.lang.String USER_CATEGORY
           
protected static java.lang.String USER_FUNC
           
protected static java.lang.String USER_ID
           
protected static java.lang.String USER_QUERY
           
 
Constructor Summary
protected Handle(java.net.URL baseURL, ComponentTypeEnum componentTypeEnum, int componentId)
           
protected Handle(java.net.URL baseURL, ComponentTypeEnum componentTypeEnum, int componentId, java.lang.String[] extensions)
           
 
Method Summary
 boolean equals(java.lang.Object object)
           
private static int extractComponentId(ComponentTypeEnum componentTypeEnum, java.lang.String query)
           
private static ComponentTypeEnum extractComponentTypeEnum(java.lang.String query)
           
 java.net.URL getBaseURL()
           
 int getComponentId()
           
 ComponentTypeEnum getComponentTypeEnum()
           
 java.lang.String[] getExtensions()
           
private static java.lang.String getQueryInfo(java.lang.String query, java.lang.String key)
           
 java.net.URL getURL()
           
 int hashCode()
           
static Handle makeHandle(java.lang.String urlSpec)
          Factory method to make a handle from the specified URL specification.
static Handle makeHandle(java.net.URL url)
           
static Handle makeHandleForTrigger(java.lang.String planURL, java.lang.String parentTypeName, int parentId, java.lang.String contextTypeName, int contextId, java.lang.String gridId)
          EXPERIMENTAL!!! Factory method to make a handle from the specified Object type and id
 java.lang.String toExternalForm()
           
 java.lang.String toString()
           
private static int validateComponentId(int id)
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

PLAN_JSP

protected static final java.lang.String PLAN_JSP
See Also:
Constant Field Values

PROJECT_CATEGORY

protected static final java.lang.String PROJECT_CATEGORY
See Also:
Constant Field Values

PROJECT_ID

protected static final java.lang.String PROJECT_ID
See Also:
Constant Field Values

PROJECT_QUERY

protected static final java.lang.String PROJECT_QUERY
See Also:
Constant Field Values

PROJECT_LINE_ITEM_ID

protected static final java.lang.String PROJECT_LINE_ITEM_ID
See Also:
Constant Field Values

PROJECT_LINE_ITEM_IS_VERSION_FINAL

protected static final java.lang.String PROJECT_LINE_ITEM_IS_VERSION_FINAL
See Also:
Constant Field Values

PROJECT_LINE_ITEM_QUERY

protected static final java.lang.String PROJECT_LINE_ITEM_QUERY
See Also:
Constant Field Values

TASK_CATEGORY

protected static final java.lang.String TASK_CATEGORY
See Also:
Constant Field Values

TASK_ID

protected static final java.lang.String TASK_ID
See Also:
Constant Field Values

TASK_QUERY

protected static final java.lang.String TASK_QUERY
See Also:
Constant Field Values

MO_CATEGORY

protected static final java.lang.String MO_CATEGORY
See Also:
Constant Field Values

MO_TYPE

protected static final java.lang.String MO_TYPE
See Also:
Constant Field Values

MO_ID

protected static final java.lang.String MO_ID
See Also:
Constant Field Values

MO_QUERY

protected static final java.lang.String MO_QUERY
See Also:
Constant Field Values

GRID_ID

protected static final java.lang.String GRID_ID
See Also:
Constant Field Values

GRID_ROW_ID

protected static final java.lang.String GRID_ROW_ID
See Also:
Constant Field Values

PROJECT_GRID_QUERY

protected static final java.lang.String PROJECT_GRID_QUERY
See Also:
Constant Field Values

PROJECT_GRID_ROW_QUERY

protected static final java.lang.String PROJECT_GRID_ROW_QUERY
See Also:
Constant Field Values

MO_GRID_QUERY

protected static final java.lang.String MO_GRID_QUERY
See Also:
Constant Field Values

MO_GRID_ROW_QUERY

protected static final java.lang.String MO_GRID_ROW_QUERY
See Also:
Constant Field Values

USER_CATEGORY

protected static final java.lang.String USER_CATEGORY
See Also:
Constant Field Values

USER_ID

protected static final java.lang.String USER_ID
See Also:
Constant Field Values

USER_FUNC

protected static final java.lang.String USER_FUNC
See Also:
Constant Field Values

USER_QUERY

protected static final java.lang.String USER_QUERY
See Also:
Constant Field Values

TEAM_CATEGORY

protected static final java.lang.String TEAM_CATEGORY
See Also:
Constant Field Values

TEAM_ID

protected static final java.lang.String TEAM_ID
See Also:
Constant Field Values

TEAM_FUNC

protected static final java.lang.String TEAM_FUNC
See Also:
Constant Field Values

TEAM_QUERY

protected static final java.lang.String TEAM_QUERY
See Also:
Constant Field Values

APPROVAL_CATEGORY

protected static final java.lang.String APPROVAL_CATEGORY
See Also:
Constant Field Values

APPROVAL_ID

protected static final java.lang.String APPROVAL_ID
See Also:
Constant Field Values

APPROVAL_QUERY

protected static final java.lang.String APPROVAL_QUERY
See Also:
Constant Field Values

ATTACHMENT_CATEGORY

protected static final java.lang.String ATTACHMENT_CATEGORY
See Also:
Constant Field Values

ATTACHMENT_ID

protected static final java.lang.String ATTACHMENT_ID
See Also:
Constant Field Values

ATTACHMENT_PARENT_OBJECT_ID

protected static final java.lang.String ATTACHMENT_PARENT_OBJECT_ID
See Also:
Constant Field Values

ATTACHMENT_PARENT_OBJECT_TYPE

protected static final java.lang.String ATTACHMENT_PARENT_OBJECT_TYPE
See Also:
Constant Field Values

ATTACHMENT_QUERY

protected static final java.lang.String ATTACHMENT_QUERY
See Also:
Constant Field Values

ASSET_LIBRARY_CATEGORY

protected static final java.lang.String ASSET_LIBRARY_CATEGORY
See Also:
Constant Field Values

ASSET_LIBRARY_ID

protected static final java.lang.String ASSET_LIBRARY_ID
See Also:
Constant Field Values

ASSET_LIBRARY_QUERY

protected static final java.lang.String ASSET_LIBRARY_QUERY
See Also:
Constant Field Values

ASSET_CATEGORY

protected static final java.lang.String ASSET_CATEGORY
See Also:
Constant Field Values

ASSET_MODE

protected static final java.lang.String ASSET_MODE
See Also:
Constant Field Values

ASSET_ID

protected static final java.lang.String ASSET_ID
See Also:
Constant Field Values

ASSET_MODE_VALUE

protected static final java.lang.String ASSET_MODE_VALUE
See Also:
Constant Field Values

ASSET_QUERY

protected static final java.lang.String ASSET_QUERY
See Also:
Constant Field Values

ASSET_FOLDER_CATEGORY

protected static final java.lang.String ASSET_FOLDER_CATEGORY
See Also:
Constant Field Values

ASSET_FOLDER_ID

protected static final java.lang.String ASSET_FOLDER_ID
See Also:
Constant Field Values

ASSET_FOLDER_QUERY

protected static final java.lang.String ASSET_FOLDER_QUERY
See Also:
Constant Field Values

FINANCIAL_ACCOUNT_CATEGORY

protected static final java.lang.String FINANCIAL_ACCOUNT_CATEGORY
See Also:
Constant Field Values

FINANCIAL_ACCOUNT_ID

protected static final java.lang.String FINANCIAL_ACCOUNT_ID
See Also:
Constant Field Values

FINANCIAL_ACCOUNT_QUERY

protected static final java.lang.String FINANCIAL_ACCOUNT_QUERY
See Also:
Constant Field Values

INVOICE_CATEGORY

protected static final java.lang.String INVOICE_CATEGORY
See Also:
Constant Field Values

INVOICE_ID

protected static final java.lang.String INVOICE_ID
See Also:
Constant Field Values

INVOICE_QUERY

protected static final java.lang.String INVOICE_QUERY
See Also:
Constant Field Values

INVOICE_LINE_ITEM_ID

protected static final java.lang.String INVOICE_LINE_ITEM_ID
See Also:
Constant Field Values

INVOICE_LINE_ITEM_QUERY

protected static final java.lang.String INVOICE_LINE_ITEM_QUERY
See Also:
Constant Field Values

_baseURL

private java.net.URL _baseURL

_componentTypeEnum

private ComponentTypeEnum _componentTypeEnum
ComponentTypeEnum property.

Defines the type of component the handle refers to, e.g., a project or a marketing object.


_componentId

private int _componentId
ComponentId property

Integer identifier for the component (usually a database id)


_extensions

private java.lang.String[] _extensions
Constructor Detail

Handle

protected Handle(java.net.URL baseURL,
                 ComponentTypeEnum componentTypeEnum,
                 int componentId)

Handle

protected Handle(java.net.URL baseURL,
                 ComponentTypeEnum componentTypeEnum,
                 int componentId,
                 java.lang.String[] extensions)
Method Detail

makeHandle

public static Handle makeHandle(java.lang.String urlSpec)
Factory method to make a handle from the specified URL specification.

This method will parse the spec and create the appropriate derived class, e.g.,

 http://mymachine:7001/plan/affiniumplan.jsp?cat=projecttabs&projectid=1234
 

will result in a ProjectHandle being created and returned.

Parameters:
urlSpec - URL specification to parse
Returns:
created handle
Throws:
java.lang.IllegalArgumentException - if the URL specification is invalid, or one or more required parts are left out or incorrect.
See Also:
ProjectHandle, ProjectGridHandle, ProjectGridRowHandle, WorkflowTaskHandle, MarketingObjectHandle, MarketingObjectGridHandle, MarketingObjectGridRowHandle

makeHandleForTrigger

public static Handle makeHandleForTrigger(java.lang.String planURL,
                                          java.lang.String parentTypeName,
                                          int parentId,
                                          java.lang.String contextTypeName,
                                          int contextId,
                                          java.lang.String gridId)
EXPERIMENTAL!!! Factory method to make a handle from the specified Object type and id

This method will create the appropriate derived class, using the base plan URL as well as the provided ComponentTypeEnum and objectId. This method is used internally by ExecutionContext to return a handle to a procedure

Parameters:
planURL - TODO
parentTypeName - TODO
parentId - Specific object id to create a Handle from
contextTypeName - TODO
contextId - TODO
gridId - TODO
Returns:
created handle
Throws:
java.lang.IllegalArgumentException - if the URL specification is invalid, or one or more required parts are left out or incorrect.
See Also:
ProjectHandle, ProjectGridHandle, ProjectGridRowHandle, WorkflowTaskHandle, MarketingObjectHandle, MarketingObjectGridHandle, MarketingObjectGridRowHandle

getQueryInfo

private static java.lang.String getQueryInfo(java.lang.String query,
                                             java.lang.String key)

makeHandle

public static Handle makeHandle(java.net.URL url)

extractComponentTypeEnum

private static ComponentTypeEnum extractComponentTypeEnum(java.lang.String query)

validateComponentId

private static int validateComponentId(int id)

extractComponentId

private static int extractComponentId(ComponentTypeEnum componentTypeEnum,
                                      java.lang.String query)

getBaseURL

public java.net.URL getBaseURL()

getComponentTypeEnum

public ComponentTypeEnum getComponentTypeEnum()

getComponentId

public int getComponentId()

getExtensions

public java.lang.String[] getExtensions()

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

equals

public boolean equals(java.lang.Object object)
Overrides:
equals in class java.lang.Object

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

toExternalForm

public java.lang.String toExternalForm()

getURL

public java.net.URL getURL()