All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.code.configprocessor.processing.AddAction Maven / Gradle / Ivy

Go to download

Generates configuration files modified according to a ruleset to prepare them for different environments

The newest version!
/*
 * Copyright (C) 2009 Leandro de Oliveira Aparecido 
 *
 * 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 com.google.code.configprocessor.processing;

import org.apache.commons.lang.*;

public class AddAction extends AbstractAction {

	private static final long serialVersionUID = -5444028483023476286L;
	
	private static final boolean DEFAULT_IGNORE_ROOT = true;

	private boolean first;
	private boolean last;
	private String after;
	private String before;
	private String inside;
	private String file;
	private boolean ignoreRoot;
	private NestedAction nestedAction;

	public AddAction() {
		this(null, null);
	}

	public AddAction(String name, String value) {
		this(name, value, null, null);
	}

	public AddAction(String file, String after, String before) {
		super(null, null);
		
		this.file = file;
		this.after = after;
		this.before = before;
		this.ignoreRoot = DEFAULT_IGNORE_ROOT;
	}

	public AddAction(String name, String value, String after, String before) {
		super(name, value);

		this.after = after;
		this.before = before;
		this.ignoreRoot = DEFAULT_IGNORE_ROOT;
	}
	
	public void validate() throws ActionValidationException {
		if (getFile() == null && getValue() == null) {
			throw new ActionValidationException("File or value are required", this);
		}
		if (getFile() != null && getValue() != null) {
			throw new ActionValidationException("Cannot define both file and value", this);
		}
		if (isFirst() && isLast()) {
			throw new ActionValidationException("Cannot add in both positions first and last", this);
		}
		if ((isFirst() || isLast()) && (getBefore() != null || getAfter() != null)) {
			throw new ActionValidationException("Cannot define first or last and before or after", this);
		}
		if (getInside() != null && (isFirst() || isLast() || getBefore() != null || getAfter() != null)) {
			throw new ActionValidationException("Inside cannot be defined with any absolute or relative positions", this);
		}
	}

	@Override
	protected String getActionName() {
		return "Add";
	}

	public boolean isFirst() {
		return first;
	}

	public void setFirst(boolean first) {
		this.first = first;
	}

	public boolean isLast() {
		return last;
	}

	public void setLast(boolean last) {
		this.last = last;
	}

	public String getAfter() {
		return StringUtils.trimToNull(after);
	}
	
	public void setAfter(String after) {
		this.after = after;
	}

	public String getBefore() {
		return StringUtils.trimToNull(before);
	}
	
	public void setBefore(String before) {
		this.before = before;
	}
	
	public String getInside() {
		return StringUtils.trimToNull(inside);
	}
	
	public void setInside(String inside) {
		this.inside = inside;
	}
	
	public String getFile() {
		return StringUtils.trimToNull(file);
	}

	public void setFile(String file) {
		this.file = file;
	}
	
	public boolean isIgnoreRoot() {
		return ignoreRoot;
	}
	
	public void setIgnoreRoot(boolean ignoreRoot) {
		this.ignoreRoot = ignoreRoot;
	}
	
	public NestedAction getNestedAction() {
		return nestedAction;
	}
	
	public void setNestedAction(NestedAction nestedAction) {
		this.nestedAction = nestedAction;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result + ((after == null) ? 0 : after.hashCode());
		result = prime * result + ((before == null) ? 0 : before.hashCode());
		result = prime * result + ((file == null) ? 0 : file.hashCode());
		result = prime * result + (ignoreRoot ? 1231 : 1237);
		result = prime * result + ((inside == null) ? 0 : inside.hashCode());
		result = prime * result + ((nestedAction == null) ? 0 : nestedAction.hashCode());
		result = prime * result + (first ? 1231 : 1237);
		result = prime * result + (last ? 1231 : 1237);
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (!super.equals(obj)) {
			return false;
		}
		if (!(obj instanceof AddAction)) {
			return false;
		}
		AddAction other = (AddAction) obj;
		if (isFirst() != other.isFirst()) {
			return false;
		}
		if (isLast() != other.isLast()) {
			return false;
		}
		if (after == null) {
			if (other.after != null) {
				return false;
			}
		} else if (!after.equals(other.after)) {
			return false;
		}
		if (before == null) {
			if (other.before != null) {
				return false;
			}
		} else if (!before.equals(other.before)) {
			return false;
		}
		if (file == null) {
			if (other.file != null) {
				return false;
			}
		} else if (!file.equals(other.file)) {
			return false;
		}
		if (isIgnoreRoot() != other.isIgnoreRoot()) {
			return false;
		}
		if (inside == null) {
			if (other.inside != null) {
				return false;
			}
		} else if (!inside.equals(other.inside)) {
			return false;
		}
		if (nestedAction == null) {
			if (other.nestedAction != null) {
				return false;
			}
		} else if (!nestedAction.equals(other.nestedAction)) {
			return false;
		}
		return true;
	}

	@Override
	public String toString() {
		return getActionName() + " [name=" + getName() + ";value=" + getValue() + ";after=" + getAfter() + ";before=" + getBefore() + ";inside=" + getInside() + ";file=" + getFile() + ";ignoreRoot=" + isIgnoreRoot() + ";first=" + isFirst() + ";last=" + isLast() + "]";
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy