|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.zeroturnaround.liverebel.api.impl.CommandCenterImpl
public class CommandCenterImpl
CommandCenter,
CommandCenterFactory| Constructor Summary | |
|---|---|
CommandCenterImpl(String url,
String username,
String password,
boolean verbose)
|
|
| Method Summary | |
|---|---|
void |
addDatabaseConf(String serverId,
Long databaseDriverId,
String jdbcUrl,
String schemaName)
Creates configuration and its schema. |
boolean |
addGroupChild(String groupName,
String childGroupName)
|
void |
addLdapUser(String domainName,
String liveRebelUsername,
String ldapUserName)
Note: LDAP user ID-s may be complex or contain symbols that are not allowed in LiveRebel usernames, such as @. You can use a simpler username in LiveRebel and specify the full LDAP one separately. |
boolean |
addServersToGroup(String groupName,
Collection<String> serverIds)
|
boolean |
cancelUpdate(Long updateId)
Cancels manual update by id. |
boolean |
checkPrimaryAlive()
|
void |
close()
|
DiffResult |
compare(String _applicationId,
String _fromVersionId,
String _toVersionId,
boolean full)
Compares two versions of the given application. |
int |
countSeats()
|
String |
createDatabaseProxy(com.zeroturnaround.liverebel.util.DatabaseServerExecutionMode execMode,
String targetServerId)
Sets up database server proxy. |
String |
createDatabaseProxyServer()
Sets up database server proxy |
String |
createDatabaseProxyServer(Long serverGroupId)
Sets up database server proxy |
Long |
createDatabaseSchema(String serverId,
String jdbcUrl,
String schemaName)
Creates database schema for given server. |
boolean |
createGroup(String name,
String description,
Collection<String> serverIds)
|
LdapDomainCreation |
createLdapDomain(String name)
|
Long |
createProxyDatabaseConf(String serverId,
Long databaseDriverId,
String executionServer)
Creates configuration for proxy database server. |
Long |
createProxyPromptDatabaseConf(String serverId,
Long databaseDriverId)
Creates configuration for proxy prompt database server. |
Long |
createStandaloneDatabaseConf(String serverId,
Long databaseDriverId)
Creates configuration for standalone database server. |
int |
deleteAllLicenses()
|
boolean |
deleteGroup(String name)
|
ConfigurableDeploy |
deploy(String applicationId,
String versionId)
Prepare to deploy a given application version. |
Long |
deploy(String applicationId,
String versionId,
String ctxPath,
Collection<String> servers)
|
Long |
deploy(String applicationId,
String versionId,
String ctxPath,
Collection<String> servers,
Collection<String> groups)
|
Long |
deploy(String applicationId,
String versionId,
String ctxPath,
Collection<String> servers,
Collection<String> groups,
String virtualHostName)
Deploy application to specified servers. |
Long |
deploy(String applicationId,
String versionId,
String ctxPath,
Collection<String> servers,
Collection<String> groups,
String virtualHostName,
boolean disableScripts,
File scriptDescriptionFile)
|
Long |
deploy(String applicationId,
String versionId,
String ctxPath,
Collection<String> servers,
Collection<String> groups,
String virtualHostName,
boolean disableScripts,
File scriptDescriptionFile,
File scriptEntriesArchive)
|
Long |
deploy(String applicationId,
String versionId,
String ctxPath,
Collection<String> servers,
String proxyTargetServerId,
List<Long> schemaIds)
|
Long |
deploy(String applicationId,
String versionId,
String ctxPath,
String fileServerDeploymentPath,
Collection<String> servers,
Collection<String> groups,
String virtualHostName,
boolean disableScripts,
File scriptDescriptionFile,
File scriptEntriesArchive)
|
Long |
deploy(String applicationId,
String versionId,
String ctxPath,
String fileServerDeploymentPath,
Collection<String> servers,
Collection<String> groups,
String virtualHostName,
boolean disableScripts,
File scriptDescriptionFile,
File scriptEntriesArchive,
String proxyTargetServerId,
List<Long> schemaIds)
|
Long |
deployToFileServers(String applicationId,
String versionId,
String fileServerDeploymentPath)
|
ApplicationInfo |
enableNinjaMode(String serverId,
String applicationId)
Enables inplace edit mode (ninja) for given application on a given server |
List<ServerInfo> |
expandGroup(String groupName)
|
FailoverOperations |
failoverOperations()
|
ApplicationInfo |
finishEditMode(String serverId,
String applicationId,
String versionId)
Finishes in-place edit mode on given server for given application. |
ApplicationInfo |
finishNinjaUpdate(String serverId,
String applicationId,
String versionId)
Finishes inplace edit (ninja) update on given server for given application. |
Map<Long,SchemaInfo> |
getAllDatabaseSchemas()
|
List<ServerGroup> |
getAllGroups()
|
ApplicationInfo |
getApplication(String applicationId)
Returns current info about an application. |
Map<String,ApplicationInfo> |
getApplications()
Lists all applications. |
CommandCenterUpdate |
getCommandCenterUpdate()
|
Long |
getDatabaseServerSchemaId(String serverId)
|
Long |
getDatabaseServerSchemaId(String serverId,
String schemaName)
|
List<ServerGroup> |
getGroups(String name)
|
String |
getHistoryAsCsv(Long from,
Long to)
exports history as CSV file |
Collection<InstallerExecution> |
getInstallerExecutions()
|
Date |
getLastFailoverSyncTime()
|
Collection<String> |
getLogLines(Long taskId)
Retrieved the log for given task. |
String |
getMetadata(String applicationId,
String versionId)
Deprecated. |
PausedUpdate |
getPausedUpdate(Long id)
Returns a paused update by its Id. |
List<Long> |
getRunningPausedUpdateIds()
|
ServerInfo |
getServer(String serverIdOrName)
Returns current info about a server. |
Map<String,ServerInfo> |
getServers()
Lists all servers. |
String |
getTrace(String applicationId,
String versionId)
|
boolean |
getVerbose()
|
String |
getVersion()
|
boolean |
isAlive()
|
ManagedConfOperations |
manageConfiguration()
|
boolean |
registerAsFailover(String primaryHost,
int primaryPort,
String token)
|
void |
reloadServers(Collection<String> serverIds,
int timeoutSeconds,
String updateMode)
|
void |
remove(String applicationId)
Removes app from command center. |
void |
removeDatabaseSchema(Long schemaId)
Removes database schema. |
boolean |
removeGroupChild(String groupName,
String childGroupName)
|
void |
removeServer(String serverId)
Removes a server. |
boolean |
removeServersFromGroup(String groupName,
Collection<String> serverIds)
|
void |
removeVersion(String applicationId,
String versionId)
Removes application version from command center. |
ServerInfo |
renameServer(String serverId,
String newName)
|
boolean |
restartServer(String serverId)
Restart server (asynchronously) |
boolean |
resumeUpdate(Long updateId)
Resumes manual update by id. |
void |
resyncApplicationsData(Collection<String> serverIds)
Refreshes application data from servers given by ids and overwrites current info in CC by the actual one that came from servers. |
ServerGroupOperations |
serverGroupOperations()
|
boolean |
setHotpatchingEnabled(String serverId,
boolean enabled)
Enable/disable hotpatching update for specified server |
ApplicationInfo |
startEditMode(String serverId,
String applicationId)
Enables in-place edit mode for given application on a given server |
void |
syncWithFailover()
|
ConfigurableUndeploy |
undeploy(String applicationId)
Prepare to undeploy a given application. |
Long |
undeploy(String applicationId,
Collection<String> servers)
Undeploy application from specified servers. |
Long |
undeploy(String applicationId,
Collection<String> servers,
Collection<String> groups)
Undeploy application from specified servers. |
Long |
undeploy(String applicationId,
Collection<String> servers,
Collection<String> groups,
boolean disableScripts,
File scriptDescriptionFile)
file and archive type scripts are expected to be in the local filesystem |
Long |
undeploy(String applicationId,
Collection<String> servers,
Collection<String> groups,
boolean disableScripts,
File scriptDescriptionFile,
File scriptEntriesArchive)
|
Long |
undeploy(String applicationId,
Collection<String> servers,
Collection<String> groups,
boolean disableScripts,
File scriptDescriptionFile,
File scriptEntriesArchive,
String proxyTargetServerId,
List<Long> schemaIds)
|
Long |
undeploy(String applicationId,
Collection<String> servers,
String proxyTargetServerId,
List<Long> schemaIds)
Undeploy application from specified servers and schemas |
ConfigurableUpdate |
update(String applicationId,
String versionId)
Start updating an application to a given version. |
AgentUpdate |
updateAgent()
|
DatabaseConfiguration |
updateDatabaseConfiguration(Long databaseConfigurationId)
Update existing database configuration. |
SchemaConfiguration |
updateDatabaseSchema(Long schemaId)
Update existing database schema. |
UploadInfo |
upload(File file)
Uploads new version of an application. |
UploadInfo |
upload(String applicationId,
String fromVersion,
File diff)
Uploads new version of an application. |
Long |
uploadDatabaseDriver(File jar)
|
boolean |
uploadLicense(File license)
|
boolean |
uploadMetadata(File file,
String applicationId,
String versionId)
Deprecated. |
boolean |
uploadTrace(File file,
String applicationId,
String versionId)
|
Upload |
uploadVersion(File file)
Prepares the upload of new version of an application. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public CommandCenterImpl(String url,
String username,
String password,
boolean verbose)
| Method Detail |
|---|
public boolean isAlive()
isAlive in interface CommandCentertrue if the Command Center is alive.public Map<String,ServerInfo> getServers()
CommandCenter
getServers in interface CommandCenterpublic ServerInfo getServer(String serverIdOrName)
CommandCenter
getServer in interface CommandCenterserverIdOrName - id or name of the server.
public ServerInfo renameServer(String serverId,
String newName)
renameServer in interface CommandCenternewName - - new name for the server
public boolean restartServer(String serverId)
CommandCenter
restartServer in interface CommandCenterserverId - server id
public void reloadServers(Collection<String> serverIds,
int timeoutSeconds,
String updateMode)
reloadServers in interface CommandCenterserverIds - idstimeoutSeconds - - the same meaning as for updateupdateMode - - OFFLINE or ROLLING (currently only offline :))
public boolean setHotpatchingEnabled(String serverId,
boolean enabled)
CommandCenter
setHotpatchingEnabled in interface CommandCenterserverId - server idenabled - true to enable hotpatching, false to disable it
public void removeServer(String serverId)
CommandCenter
removeServer in interface CommandCenterserverId - server Id.public Map<String,ApplicationInfo> getApplications()
CommandCenter
getApplications in interface CommandCenterpublic ApplicationInfo getApplication(String applicationId)
CommandCenter
getApplication in interface CommandCenterapplicationId - application Id.
public UploadInfo upload(File file)
CommandCenter
upload in interface CommandCenterfile - archive file.
public DiffResult compare(String _applicationId,
String _fromVersionId,
String _toVersionId,
boolean full)
CommandCenter
compare in interface CommandCenter_applicationId - application Id._fromVersionId - current version Id._toVersionId - new version Id.full - include all differences (otherwise only warnings and errors are included).
public ConfigurableUpdate update(String applicationId,
String versionId)
CommandCenter
update in interface CommandCenterapplicationId - application Id.versionId - version Id.public PausedUpdate getPausedUpdate(Long id)
CommandCenter
getPausedUpdate in interface CommandCenterid - update Id.
null if no such update found.PreparedPausableUpdate.executeWithPause()public FailoverOperations failoverOperations()
failoverOperations in interface CommandCenter
public boolean registerAsFailover(String primaryHost,
int primaryPort,
String token)
registerAsFailover in interface CommandCenterpublic void syncWithFailover()
syncWithFailover in interface CommandCenterpublic boolean checkPrimaryAlive()
checkPrimaryAlive in interface CommandCenterpublic boolean getVerbose()
getVerbose in interface CommandCenter
public ConfigurableDeploy deploy(String applicationId,
String versionId)
CommandCenterConfigurableDeploy object.
The deploy will be executed once PreparedDeploy.execute() is invoked.
The archive of the given version must be available in the Command Center before this operation.
deploy in interface CommandCenter
public Long deploy(String applicationId,
String versionId,
String ctxPath,
Collection<String> servers)
deploy in interface CommandCenter
public Long deploy(String applicationId,
String versionId,
String ctxPath,
Collection<String> servers,
String proxyTargetServerId,
List<Long> schemaIds)
deploy in interface CommandCenter
public Long deployToFileServers(String applicationId,
String versionId,
String fileServerDeploymentPath)
deployToFileServers in interface CommandCenter
public Long deploy(String applicationId,
String versionId,
String ctxPath,
Collection<String> servers,
Collection<String> groups)
deploy in interface CommandCenter
public Long deploy(String applicationId,
String versionId,
String ctxPath,
Collection<String> servers,
Collection<String> groups,
String virtualHostName)
CommandCenter
deploy in interface CommandCenterapplicationId - - application idctxPath - - context path for serversservers - - server jvmid-svirtualHostName - - name of the virtual host to be used for deploying
public Long deploy(String applicationId,
String versionId,
String ctxPath,
Collection<String> servers,
Collection<String> groups,
String virtualHostName,
boolean disableScripts,
File scriptDescriptionFile)
deploy in interface CommandCenter
public Long deploy(String applicationId,
String versionId,
String ctxPath,
Collection<String> servers,
Collection<String> groups,
String virtualHostName,
boolean disableScripts,
File scriptDescriptionFile,
File scriptEntriesArchive)
deploy in interface CommandCenter
public Long deploy(String applicationId,
String versionId,
String ctxPath,
String fileServerDeploymentPath,
Collection<String> servers,
Collection<String> groups,
String virtualHostName,
boolean disableScripts,
File scriptDescriptionFile,
File scriptEntriesArchive)
deploy in interface CommandCenter
public Long deploy(String applicationId,
String versionId,
String ctxPath,
String fileServerDeploymentPath,
Collection<String> servers,
Collection<String> groups,
String virtualHostName,
boolean disableScripts,
File scriptDescriptionFile,
File scriptEntriesArchive,
String proxyTargetServerId,
List<Long> schemaIds)
deploy in interface CommandCenter
public Long undeploy(String applicationId,
Collection<String> servers,
String proxyTargetServerId,
List<Long> schemaIds)
CommandCenter
undeploy in interface CommandCenterapplicationId - - application idservers - - server jvmid-sproxyTargetServerId - - proxy target server idschemaIds - - schema ids
public ConfigurableUndeploy undeploy(String applicationId)
CommandCenterConfigurableUndeploy object.
The undeploy will be executed once PreparedUndeploy.execute() is invoked.
undeploy in interface CommandCenter
public Long undeploy(String applicationId,
Collection<String> servers)
CommandCenter
undeploy in interface CommandCenterapplicationId - - application idservers - - server jvmid-s
public Long undeploy(String applicationId,
Collection<String> servers,
Collection<String> groups)
CommandCenter
undeploy in interface CommandCenterapplicationId - - application idservers - - server jvmid-sgroups - - server groups
public Long undeploy(String applicationId,
Collection<String> servers,
Collection<String> groups,
boolean disableScripts,
File scriptDescriptionFile)
CommandCenter
undeploy in interface CommandCenter
public Long undeploy(String applicationId,
Collection<String> servers,
Collection<String> groups,
boolean disableScripts,
File scriptDescriptionFile,
File scriptEntriesArchive)
undeploy in interface CommandCenter
public Long undeploy(String applicationId,
Collection<String> servers,
Collection<String> groups,
boolean disableScripts,
File scriptDescriptionFile,
File scriptEntriesArchive,
String proxyTargetServerId,
List<Long> schemaIds)
undeploy in interface CommandCenterpublic void remove(String applicationId)
CommandCenter
remove in interface CommandCenter
public void removeVersion(String applicationId,
String versionId)
CommandCenter
removeVersion in interface CommandCenterpublic Date getLastFailoverSyncTime()
getLastFailoverSyncTime in interface CommandCenterpublic boolean resumeUpdate(Long updateId)
CommandCenter
resumeUpdate in interface CommandCenterpublic boolean cancelUpdate(Long updateId)
CommandCenter
cancelUpdate in interface CommandCenterpublic List<Long> getRunningPausedUpdateIds()
getRunningPausedUpdateIds in interface CommandCenter
public UploadInfo upload(String applicationId,
String fromVersion,
File diff)
throws DuplicationException
CommandCenter
upload in interface CommandCenterapplicationId - - application identificatorfromVersion - - version on which this diff is baseddiff - archive file.
DuplicationException - if the given version already exists on the server.
public ApplicationInfo startEditMode(String serverId,
String applicationId)
CommandCenter
startEditMode in interface CommandCenter
public ApplicationInfo finishEditMode(String serverId,
String applicationId,
String versionId)
CommandCenter
finishEditMode in interface CommandCenter
public ApplicationInfo enableNinjaMode(String serverId,
String applicationId)
CommandCenter
enableNinjaMode in interface CommandCenter
public ApplicationInfo finishNinjaUpdate(String serverId,
String applicationId,
String versionId)
CommandCenter
finishNinjaUpdate in interface CommandCenterpublic ServerGroupOperations serverGroupOperations()
serverGroupOperations in interface CommandCenterpublic int countSeats()
countSeats in interface CommandCenterpublic boolean uploadLicense(File license)
uploadLicense in interface CommandCenterpublic int deleteAllLicenses()
deleteAllLicenses in interface CommandCenter
public boolean createGroup(String name,
String description,
Collection<String> serverIds)
createGroup in interface CommandCenter
public boolean addServersToGroup(String groupName,
Collection<String> serverIds)
addServersToGroup in interface CommandCenter
public boolean removeServersFromGroup(String groupName,
Collection<String> serverIds)
removeServersFromGroup in interface CommandCenterpublic List<ServerGroup> getAllGroups()
getAllGroups in interface CommandCenterpublic List<ServerGroup> getGroups(String name)
getGroups in interface CommandCenterpublic List<ServerInfo> expandGroup(String groupName)
expandGroup in interface CommandCenterpublic boolean deleteGroup(String name)
deleteGroup in interface CommandCenter
public boolean addGroupChild(String groupName,
String childGroupName)
addGroupChild in interface CommandCenter
public boolean removeGroupChild(String groupName,
String childGroupName)
removeGroupChild in interface CommandCenterpublic CommandCenterUpdate getCommandCenterUpdate()
getCommandCenterUpdate in interface CommandCenterpublic AgentUpdate updateAgent()
updateAgent in interface CommandCenter
public boolean uploadTrace(File file,
String applicationId,
String versionId)
uploadTrace in interface CommandCenter
public String getTrace(String applicationId,
String versionId)
getTrace in interface CommandCenter
@Deprecated
public boolean uploadMetadata(File file,
String applicationId,
String versionId)
CommandCenterCommandCenter.uploadTrace(File, String, String)
uploadMetadata in interface CommandCenter
@Deprecated
public String getMetadata(String applicationId,
String versionId)
CommandCenterCommandCenter.getTrace(String, String)
getMetadata in interface CommandCenterpublic String getVersion()
getVersion in interface CommandCenterpublic Upload uploadVersion(File file)
CommandCenter
uploadVersion in interface CommandCenterfile - archive file
public Collection<String> getLogLines(Long taskId)
CommandCenter
getLogLines in interface CommandCentertaskId - the task ID
public Collection<InstallerExecution> getInstallerExecutions()
getInstallerExecutions in interface CommandCenterpublic ManagedConfOperations manageConfiguration()
manageConfiguration in interface CommandCenter
public void addDatabaseConf(String serverId,
Long databaseDriverId,
String jdbcUrl,
String schemaName)
CommandCenterCreates configuration and its schema.
Note! In case one want's to use proxy database server, one must call
CommandCenter.createDatabaseProxy(DatabaseServerExecutionMode, String)
before adding configuration.
addDatabaseConf in interface CommandCenterserverId - - database server iddatabaseDriverId - - database driver idjdbcUrl - - JDBC urlschemaName - - name of the schema
public String createDatabaseProxy(com.zeroturnaround.liverebel.util.DatabaseServerExecutionMode execMode,
String targetServerId)
CommandCenterSets up database server proxy.
Note! Must be called before CommandCenter.addDatabaseConf(String, Long, String, String).
createDatabaseProxy in interface CommandCenterexecMode - execution mode, DatabaseServerExecutionMode.PROXY or DatabaseServerExecutionMode.PROXY_PROMPTtargetServerId - target server id
public Long uploadDatabaseDriver(File jar)
uploadDatabaseDriver in interface CommandCenterjar - JDBC driver jar
public Long getDatabaseServerSchemaId(String serverId)
getDatabaseServerSchemaId in interface CommandCenterserverId - id of the database server
public Long getDatabaseServerSchemaId(String serverId,
String schemaName)
getDatabaseServerSchemaId in interface CommandCenterserverId - id of the database serverschemaName - name of the schema
public Long createStandaloneDatabaseConf(String serverId,
Long databaseDriverId)
CommandCenterCreates configuration for standalone database server.
createStandaloneDatabaseConf in interface CommandCenterserverId - server iddatabaseDriverId - database driver id
public Long createProxyPromptDatabaseConf(String serverId,
Long databaseDriverId)
CommandCenterCreates configuration for proxy prompt database server.
Note! One must call
CommandCenter.createDatabaseProxyServer(Long)
before adding configuration.
createProxyPromptDatabaseConf in interface CommandCenterserverId - server iddatabaseDriverId - database driver id
public Long createProxyDatabaseConf(String serverId,
Long databaseDriverId,
String executionServer)
CommandCenterCreates configuration for proxy database server.
Note! One must call
CommandCenter.createDatabaseProxyServer(Long)
before adding configuration.
createProxyDatabaseConf in interface CommandCenterserverId - server iddatabaseDriverId - database driver idexecutionServer - execution server id, also know as proxy target
public DatabaseConfiguration updateDatabaseConfiguration(Long databaseConfigurationId)
CommandCenterUpdate existing database configuration.
updateDatabaseConfiguration in interface CommandCenterdatabaseConfigurationId - id of the database configuration to update
public Long createDatabaseSchema(String serverId,
String jdbcUrl,
String schemaName)
CommandCenterCreates database schema for given server.
Note! Server must have configuration before adding schemas.
createDatabaseSchema in interface CommandCenterserverId - server idjdbcUrl - JDBC urlschemaName - schema name
public SchemaConfiguration updateDatabaseSchema(Long schemaId)
CommandCenterUpdate existing database schema.
updateDatabaseSchema in interface CommandCenterschemaId - Id of the database schema to updatepublic void removeDatabaseSchema(Long schemaId)
CommandCenterRemoves database schema.
removeDatabaseSchema in interface CommandCenterschemaId - schema idpublic String createDatabaseProxyServer()
CommandCenterSets up database server proxy
createDatabaseProxyServer in interface CommandCenterpublic String createDatabaseProxyServer(Long serverGroupId)
CommandCenterSets up database server proxy
createDatabaseProxyServer in interface CommandCenterpublic Map<Long,SchemaInfo> getAllDatabaseSchemas()
getAllDatabaseSchemas in interface CommandCenterpublic void resyncApplicationsData(Collection<String> serverIds)
CommandCenter
resyncApplicationsData in interface CommandCenterserverIds - - serverIds of servers to sync, if empty, will resync all servers.public void close()
close in interface Closeablepublic LdapDomainCreation createLdapDomain(String name)
createLdapDomain in interface CommandCentername - Domain name - will be used later to identify this domain, visible also on login page.
public void addLdapUser(String domainName,
String liveRebelUsername,
String ldapUserName)
CommandCenterNote: LDAP user ID-s may be complex or contain symbols that are not allowed in LiveRebel usernames, such as @.
You can use a simpler username in LiveRebel and specify the full LDAP one separately.
In case of simpler user ID-s, you can pass null as ldapUserName, then liveRebelUsername will be used for both.
Also note that the user will not be added to LiveRebel if it doesn't already exist in the LDAP server.
addLdapUser in interface CommandCenterdomainName - Name of the domain to add the user to. The domain must be created before the user is added.
public String getHistoryAsCsv(Long from,
Long to)
CommandCenter
getHistoryAsCsv in interface CommandCenterfrom - - optional timestamp to export history starting from this (UNIX time)to - - optional timestamp to export history before this (UNIX time)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||