MultiSessionAgentSessionDef.java
/*
** Module : MultiSessionAgentSessionDef.java
** Abstract : A descriptor that contains details regarding a multi-session agent session.
**
** Copyright (c) 2025, Golden Code Development Corporation.
**
** -#- -I- --Date-- ----------------------------Description------------------------------
** 001 GBB 20250123 Initial version.
*/
/*
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU Affero General Public License as
** published by the Free Software Foundation, either version 3 of the
** License, or (at your option) any later version.
**
** This program 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 Affero General Public License for more details.
**
** You may find a copy of the GNU Affero GPL version 3 at the following
** location: https://www.gnu.org/licenses/agpl-3.0.en.html
**
** Additional terms under GNU Affero GPL version 3 section 7:
**
** Under Section 7 of the GNU Affero GPL version 3, the following additional
** terms apply to the works covered under the License. These additional terms
** are non-permissive additional terms allowed under Section 7 of the GNU
** Affero GPL version 3 and may not be removed by you.
**
** 0. Attribution Requirement.
**
** You must preserve all legal notices or author attributions in the covered
** work or Appropriate Legal Notices displayed by works containing the covered
** work. You may not remove from the covered work any author or developer
** credit already included within the covered work.
**
** 1. No License To Use Trademarks.
**
** This license does not grant any license or rights to use the trademarks
** Golden Code, FWD, any Golden Code or FWD logo, or any other trademarks
** of Golden Code Development Corporation. You are not authorized to use the
** name Golden Code, FWD, or the names of any author or contributor, for
** publicity purposes without written authorization.
**
** 2. No Misrepresentation of Affiliation.
**
** You may not represent yourself as Golden Code Development Corporation or FWD.
**
** You may not represent yourself for publicity purposes as associated with
** Golden Code Development Corporation, FWD, or any author or contributor to
** the covered work, without written authorization.
**
** 3. No Misrepresentation of Source or Origin.
**
** You may not represent the covered work as solely your work. All modified
** versions of the covered work must be marked in a reasonable way to make it
** clear that the modified work is not originating from Golden Code Development
** Corporation or FWD. All modified versions must contain the notices of
** attribution required in this license.
*/
package com.goldencode.p2j.admin;
import java.util.*;
/** A descriptor that contains details regarding a multi-session agent session. */
public class MultiSessionAgentSessionDef
extends TaggedName
{
/** Enum for the states of the session */
public enum State
{
/** The session is being used. */
ACTIVE,
/** The session is not used. */
IDLE,
/** The session is reserved to be used. */
RESERVED
}
/** The appserver name. */
private String appserverName;
/** The agent id. */
private int agentId;
/** The session id. */
private int sessionId;
/** The session start time. */
private Date sessionStartTime;
/** Flag to indicate if the session is bound to client connection. */
private boolean bound;
/** State of the session. */
private State state;
/** Connection model. */
private String connectionModel;
/** The running procedure. */
private String runningProc;
/** The running procedure start time. */
private Date runningProcStartTime;
/** Client details */
private String client;
/** Public constructor without args used for Serializable. */
public MultiSessionAgentSessionDef()
{
}
/**
* Public constructor accepting values for all fields.
*
* @param appserverName
* The appserver name.
* @param agentId
* The agent id.
* @param sessionId
* The session id.
* @param sessionStartTime
* The session start time.
* @param bound
* Flag to indicate if the session is bound to client connection.
* @param state
* State of the session.
* @param connectionModel
* Connection model.
* @param runningProc
* The running procedure.
* @param runningProcStartTime
* The running procedure start time.
*/
public MultiSessionAgentSessionDef(String appserverName,
int agentId,
int sessionId,
Date sessionStartTime,
boolean bound,
State state,
String connectionModel,
String runningProc,
Date runningProcStartTime)
{
this.appserverName = appserverName;
this.agentId = agentId;
this.sessionId = sessionId;
this.sessionStartTime = sessionStartTime;
this.bound = bound;
this.state = state;
this.connectionModel = connectionModel;
this.runningProc = runningProc;
this.runningProcStartTime = runningProcStartTime;
this.client = null;
}
/**
* Checks if the argument object represents the same session, identified by all its fields.
*
* @param o
* The object to compare to.
*
* @return <code>true</code> if it's the same instance or the fields have the same values.
* <code>false</code> otherwise.
*/
@Override
public boolean equals(Object o)
{
if (this == o)
{
return true;
}
if (o == null || getClass() != o.getClass())
{
return false;
}
MultiSessionAgentSessionDef that = (MultiSessionAgentSessionDef) o;
return agentId == that.agentId &&
sessionId == that.sessionId &&
bound == that.bound &&
Objects.equals(appserverName, that.appserverName) &&
state == that.state &&
connectionModel == that.connectionModel &&
Objects.equals(runningProc, that.runningProc) &&
Objects.equals(runningProcStartTime, that.runningProcStartTime) &&
Objects.equals(client, that.client);
}
/**
* Returns the hash of the fields uniquely identifying the object.
*
* @return See above.
*/
@Override
public int hashCode()
{
return Objects.hash(appserverName, agentId, sessionId);
}
/**
* Returns the string representation.
*
* @return See above.
*/
@Override
public String toString()
{
return "MultiSessionAgentSessionDef{" +
"appserverName='" + appserverName + '\'' +
", agentId=" + agentId +
", sessionId=" + sessionId +
'}';
}
/**
* Getter for {@link #appserverName}.
*
* @return See above.
*/
public String getAppserverName()
{
return appserverName;
}
/**
* Getter for {@link #agentId}.
*
* @return See above.
*/
public int getAgentId()
{
return agentId;
}
/**
* Getter for {@link #sessionId}.
*
* @return See above.
*/
public int getSessionId()
{
return sessionId;
}
/**
* Getter for {@link #sessionStartTime}.
*
* @return See above.
*/
public Date getSessionStartTime()
{
return sessionStartTime;
}
/**
* Getter for {@link #bound}.
*
* @return See above.
*/
public boolean isBound()
{
return bound;
}
/**
* Getter for {@link #state}.
*
* @return See above.
*/
public State getState()
{
return state;
}
/**
* Getter for {@link #connectionModel}.
*
* @return See above.
*/
public String getConnectionModel()
{
return connectionModel;
}
/**
* Getter for {@link #runningProc}.
*
* @return See above.
*/
public String getRunningProc()
{
return runningProc;
}
/**
* Getter for {@link #runningProcStartTime}.
*
* @return See above.
*/
public Date getRunningProcStartTime()
{
return runningProcStartTime;
}
/**
* Getter for {@link #client}.
*
* @return See above.
*/
public String getClient()
{
return client;
}
}