@startuml images/05_class.png
Title Cn Audit Data Class Structure


package org.dataone.cn.audit {
	
	package org.dataone.cn.audit.data{
            class AuditMessageProcessContext {
              -{static} Boolean activeNode
              -{static} Object pid
              -{static} Object serialVersion
              -{static} Object lastSystemMetadataModificationDate
              -{static} Object systemMetadata
              -{static} Object ActiveNodeId
              -{static} WorkflowState workflowState
              ==
            
              _setActiveNode
            
              ..
              _Synchronized Methods_
            
              +setPid()
              +setSerialVersion()
              +setLastSystemMetadataModificationDate()
              +setSystemMetadata()
              +activateNodeId()
              +setWorkflowStateSignal()
              ..
              
              __
              +isActiveNode()
              +getPid()
              +getSerialVersion()
              +getLastSystemMetadataModificationDate()
              +getSystemMetadata()
              +getActiveNodeId()
              +getActiveWorkflowSignal()
    
            }
            class AuditMessage {
              ..
               Serializable
              ..
                - WorkflowState signal;
                - NodeIdentifier nodeId;
                        - SystemMetadata systemMetadata;
                        - NodeReference originatingNode;
                        - NodeReference targetNode;
                        - Integer startPageNumber
              ==
            
              + getSignal()
            
              + getNodeId()
    
                      + getSystemMetadata()
    
                      + getOriginatingNode()
    
                      +getTargetNode() 
    
                      +getStartPageNumber() 
    
            }
    
            enum WorkflowState {
               INIT /** milestone at startup of the process **/
                       RETRIEVE_SYSMETA_TOTAL /** return hzHarvestTotalsRecord from each Node **/
               HARVEST_SYSMETA_LIST /** return hzDigestListRecord  from each Node **/
               RETRIEVE_SYSMETA /** return back a HzSysMetaDataRecord */
               UPDATE_SYSMETA /** perform an update and commit of merged systemMetadata **/
               ACK_UPDATE  /** response to active node after Update SystemMeta **/
               RESET_HARVEST /** stop the harvest process **/
               END_AUDIT /** may be significant to perform cleanup before ending the processing */
                       NODE_FAILURE /** exception queue needs to be evaluated **/
            
            }
                    AuditMessageProcessContext *-- WorkflowState
                    AuditMessage *-- WorkflowState
    
                   class DigestAuditRecord {
                     ..
                     Serializable
                     ..
    
                     -Identifier pid
                     -long serialVersion
                     -Date lastSystemMetadataModificationDate
                     -Boolean deleted
    
                     ==
    
                     +getPid()
                     +setPid()
    
                     +getSerialVersion()
                     +setSerialVersion()
    
                     +getLastSystemMetadataModificationDate()
                     +setLastSystemMetadataModificationDate()
    
                     +isDeleted()
                     +deleted()
    
                    }
    
                    class DataoneConfiguration {
                        - static String contextLabel
                        - static String debConfNS
                        - static String ipExpression
                        - static String nodeIdExpression
    
                        - String activeNodeId
                        - String nodeId
    
                        - Resource d1DebConfiguration;
                        - List<NodeConfigInfo> nodes = null;
    
                     ==
                     - initialize()
                     - initializeXPathExpressions()
                     - parseXPath()
                     - generateXmlDocument()
    
                     # DataoneConfiguration()
                     + DataoneConfiguration()
    
                     + init()
                     + getNodeConfigInfoByIp()
                     + getNodeConfigInfoByNode()
                     + getActiveNodeConfigInfo()
                     + getNodeConfigInfoForLocal()
                     + isLocalNode()
                     + isActiveNode()
                     + isPassiveNode()
    
                    }
                     class NodeConfigInfo {
                        - NodeReference nodeReference
                        - String ip
                        - boolean activeNode
                        - boolean memberOfCluster
    
                        ==
                        + getNodeReference()
                        + setNodeReference()
                        + getIp()
    
    
                       + setIp() 
    
                       + isActiveNode()
    
                       + setActiveNode()
    
                       + isMemberOfCluster()
    
                       + setMemberOfCluster
                     }
                    DataoneConfiguration *-- NodeConfigInfo
    
        }

}
@enduml