org.pentaho.di.www.SlaveServerDetection Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kettle-engine Show documentation
Show all versions of kettle-engine Show documentation
Container pom for Pentaho Data Integration modules
The newest version!
/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2017 by Hitachi Vantara : http://www.pentaho.com
*
*******************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
package org.pentaho.di.www;
import java.util.Date;
import org.pentaho.di.cluster.SlaveServer;
import org.pentaho.di.core.Const;
import org.pentaho.di.core.xml.XMLHandler;
import org.w3c.dom.Node;
/**
* This class is what describes the information that we keep when we detect a slave server in the cloud / cluster.
* It contains the slave server information as well as the time it was last seen alive,
* whether it is still alive, etc.
*
*
* @author matt
* @since 2008-OCT-08
*/
public class SlaveServerDetection {
public static final String XML_TAG = "SlaveServerDetection";
public enum SlaveRelationShip {
SLAVE_SEVER( "SLAVE_SERVER", "Slave server" ), // Regular slave server
FAILOVER_MASTER( "FAILOVER_MASTER", "Fail-over master server" ); // Fail-over master server
private String code, description;
private SlaveRelationShip( String code, String description ) {
this.code = code;
this.description = description;
}
/**
* @return the code
*/
public String getCode() {
return code;
}
/**
* @return the description
*/
public String getDescription() {
return description;
}
}
public static final SlaveRelationShip getSlaveRelationShip( String code ) {
for ( SlaveRelationShip slaveRelationShip : SlaveRelationShip.values() ) {
if ( slaveRelationShip.getCode().equalsIgnoreCase( code ) ) {
return slaveRelationShip;
}
}
return null;
}
private SlaveServer slaveServer;
private boolean active;
private Date lastActiveDate;
private Date lastInactiveDate;
public SlaveServerDetection( SlaveServer slaveServer ) {
this.slaveServer = slaveServer;
this.active = true;
this.lastActiveDate = new Date();
this.lastInactiveDate = null; // It's active
}
public String getXML() {
StringBuilder xml = new StringBuilder();
xml.append( XMLHandler.openTag( XML_TAG ) ).append( Const.CR );
xml.append( slaveServer.getXML() );
xml.append( XMLHandler.addTagValue( "active", active ) );
xml.append( XMLHandler.addTagValue( "last_active_date", lastActiveDate ) );
xml.append( XMLHandler.addTagValue( "last_inactive_date", lastInactiveDate ) );
xml.append( XMLHandler.closeTag( XML_TAG ) ).append( Const.CR );
return xml.toString();
}
public SlaveServerDetection( Node node ) {
slaveServer = new SlaveServer( XMLHandler.getSubNode( node, SlaveServer.XML_TAG ) );
active = "Y".equalsIgnoreCase( XMLHandler.getTagValue( node, "active" ) );
lastActiveDate = XMLHandler.stringToDate( XMLHandler.getTagValue( node, "last_active_date" ) );
lastInactiveDate = XMLHandler.stringToDate( XMLHandler.getTagValue( node, "last_inactive_date" ) );
}
public boolean equals( Object ssd ) {
return slaveServer.equals( ( (SlaveServerDetection) ssd ).getSlaveServer() );
}
public int hashCode() {
return slaveServer.hashCode();
}
/**
* @return the slaveServer
*/
public SlaveServer getSlaveServer() {
return slaveServer;
}
/**
* @param slaveServer
* the slaveServer to set
*/
public void setSlaveServer( SlaveServer slaveServer ) {
this.slaveServer = slaveServer;
}
/**
* @return the active
*/
public boolean isActive() {
return active;
}
/**
* @param active
* the active to set
*/
public void setActive( boolean active ) {
this.active = active;
}
/**
* @return the lastActiveDate
*/
public Date getLastActiveDate() {
return lastActiveDate;
}
/**
* @param lastActiveDate
* the lastActiveDate to set
*/
public void setLastActiveDate( Date lastActiveDate ) {
this.lastActiveDate = lastActiveDate;
}
/**
* @return the lastInactiveDate
*/
public Date getLastInactiveDate() {
return lastInactiveDate;
}
/**
* @param lastInactiveDate
* the lastInactiveDate to set
*/
public void setLastInactiveDate( Date lastInactiveDate ) {
this.lastInactiveDate = lastInactiveDate;
}
}