R/Host.R

Defines functions host

setClass (
  Class = "Host",
  representation = representation(
    address = "character", 
    port = "character", 
    alias = "character"
  ),
  validity = function(object){
    cat("~~~ Host: inspector ~~~ \n")
    
    address <- object@address
    port <- object@port
    alias <- object@alias
    
    if(length(object@address) != length(object@port) && length(object@address) != length(object@alias)  &&  length(object@password) != 1){
      stop ("[Host: validation] Only one user, one password and one alias allowed")
    }else{}
    return(TRUE)
  }
)

#*******************************************************
#CONSTRUCTOR

setMethod (
  f="initialize",
  signature="Host",
  definition=function(.Object,name,password){
    #cat ("~~~~~ Host: initializator ~~~~~ \n")
    if(!missing(address)){
      if(!missing(port)){
        if(!missing(alias)){
          .Object@address <- address
          .Object@port <- port
          .Object@alias <- alias
          validObject(.Object)# call of the inspector
        }else{
          .Object@alias <- character(0)
        }
      }else{
        .Object@port <- character(0)
      }
    }else{
      .Object@address <- character(0)
    }
    return(.Object)
  }
)


#CONSTRUCTOR (USER FRIENDLY)
host <- function(address,port,alias){
  cat ("~~~~~ Host: constructor ~~~~~ \n")
  new (Class="Host", address = address, port = port, alias = alias)
}



#*******************************************************
#ACCESSORS

setGeneric("getAddress",function(object){standardGeneric ("getAddress")})
setMethod("getAddress","Host",
          function(object){
            return(object@address)
          }
)

setGeneric("getPort",function(object){standardGeneric ("getPort")})
setMethod("getPort","Host",
          function(object){
            return(object@port)
          }
)

setGeneric("getAlias",function(object){standardGeneric ("getAlias")})
setMethod("getAlias","Host",
          function(object){
            return(object@alias)
          }
)
jimjonesbr/sdd documentation built on May 19, 2019, 10:34 a.m.