/*
* #%L
* Native ARchive plugin for Maven
* %%
* Copyright (C) 2002 - 2014 NAR Maven Plugin developers.
* %%
* 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.
* #L%
*/
package com.github.maven_nar.cpptasks;
import java.util.Vector;
import org.apache.tools.ant.types.DataType;
import org.apache.tools.ant.types.Reference;
/**
* Distributed build information (Non-functional prototype).
*
*/
public final class DistributerDef extends DataType {
/**
* if property.
*/
private String ifCond;
/**
* unless property.
*/
private String unlessCond;
/**
* hosts.
*
*/
private String hosts;
/**
* Protocol.
*
*/
private DistributerProtocolEnum protocol;
/**
* Not sure what this is.
*/
private int tcpCork;
/**
* user name.
*/
private String user;
/**
* local to remote file name maps.
*/
private final Vector maps = new Vector();
/**
* Constructor.
*
*/
public DistributerDef() {
}
/**
* Local to remote filename maps.
*
* @return new map
*/
public DistributerMap createMap() {
final DistributerMap map = new DistributerMap();
map.setProject(getProject());
this.maps.addElement(map);
return map;
}
/**
* Required by documentation generator.
*/
public void execute() {
throw new org.apache.tools.ant.BuildException("Not an actual task, but looks like one for documentation purposes");
}
/**
* Gets hosts.
*
* @return hosts, may be null.
*
*/
public String getHosts() {
if (isReference()) {
final DistributerDef refDistributer = (DistributerDef) getCheckedRef(DistributerDef.class, "DistributerDef");
return refDistributer.getHosts();
}
return this.hosts;
}
/**
* Gets protocol.
*
* @return protocol, may be null.
*
*/
public DistributerProtocolEnum getProtocol() {
if (isReference()) {
final DistributerDef refDistributer = (DistributerDef) getCheckedRef(DistributerDef.class, "DistributerDef");
return refDistributer.getProtocol();
}
return this.protocol;
}
/**
* Gets tcp cork.
*
* @return TCP_CORK value.
*
*/
public int getTcpcork() {
if (isReference()) {
final DistributerDef refDistributer = (DistributerDef) getCheckedRef(DistributerDef.class, "DistributerDef");
return refDistributer.getTcpcork();
}
return this.tcpCork;
}
/**
* Returns true if the if and unless conditions (if any) are
* satisfied.
*
* @return true if definition is active.
*/
public boolean isActive() {
return CUtil.isActive(getProject(), this.ifCond, this.unlessCond);
}
/**
* Sets hosts.
*
* @param value
* new value
*/
public void setHosts(final String value) {
if (isReference()) {
throw tooManyAttributes();
}
this.hosts = value;
}
/**
* Sets an id that can be used to reference this element.
*
* @param id
* id
*/
public void setId(final String id) {
//
// this is actually accomplished by a different
// mechanism, but we can document it
//
}
/**
* Sets the property name for the 'if' condition.
*
* The define will be ignored unless the property is defined.
*
* The value of the property is insignificant, but values that would imply
* misinterpretation ("false", "no") will throw an exception when
* evaluated.
*
* @param propName
* property name
*/
public void setIf(final String propName) {
this.ifCond = propName;
}
/**
* Sets protocol.
*
* @param value
* new value
*/
public void setProtocol(final DistributerProtocolEnum value) {
if (isReference()) {
throw tooManyAttributes();
}
this.protocol = value;
}
/**
* Specifies that this element should behave as if the content of the
* element with the matching id attribute was inserted at this location. If
* specified, no other attributes should be specified.
*
* @param r
* reference name
*/
@Override
public void setRefid(final Reference r) {
super.setRefid(r);
}
/**
* Sets TCP_CORK value.
*
* @param value
* new value
*/
public void setTcpcork(final int value) {
if (isReference()) {
throw tooManyAttributes();
}
this.tcpCork = value;
}
/**
* Set the property name for the 'unless' condition.
*
* If named property is set, the define will be ignored.
*
* The value of the property is insignificant, but values that would imply
* misinterpretation ("false", "no") of the behavior will throw an
* exception when evaluated.
*
* @param propName
* name of property
*/
public void setUnless(final String propName) {
this.unlessCond = propName;
}
/**
* Sets remote user name.
*
* @param value
* user name
*/
public void setUser(final String value) {
this.user = value;
}
}