GroupManager/src/main/java/org/anjocaido/groupmanager/data/GroupVariables.java

90 lines
2.3 KiB
Java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.anjocaido.groupmanager.data;
import java.util.Map;
/**
*
* @author gabrielcouto
*/
public class GroupVariables extends Variables implements Cloneable {
private final Group owner;
public GroupVariables(final Group owner) {
super(owner);
this.owner = owner;
addVar("prefix", "");
addVar("suffix", "");
addVar("build", false);
}
public GroupVariables(final Group owner, final Map<String, Object> varList) {
super(owner);
variables.clear();
variables.putAll(varList);
if (variables.get("prefix") == null) {
variables.put("prefix", "");
owner.flagAsChanged();
}
// thisGrp.prefix = infoNode.get("prefix").toString();
if (variables.get("suffix") == null) {
variables.put("suffix", "");
owner.flagAsChanged();
}
// thisGrp.suffix = infoNode.get("suffix").toString();
if (variables.get("build") == null) {
variables.put("build", false);
owner.flagAsChanged();
}
this.owner = owner;
}
/**
* @return the owner
*/
@Override
public Group getOwner() {
return owner;
}
/**
* Remove a var from the list
*
* @param name
*/
@Override
public void removeVar(final String name) {
try {
this.variables.remove(name);
} catch (final Exception e) {
}
if (name.equals("prefix")) {
addVar("prefix", "");
} else if (name.equals("suffix")) {
addVar("suffix", "");
} else if (name.equals("build")) {
addVar("build", false);
}
owner.flagAsChanged();
}
/**
* A clone of all vars here.
*
* @return GroupVariables clone
*/
protected GroupVariables clone(final Group newOwner) {
final GroupVariables clone = new GroupVariables(newOwner);
synchronized (variables) {
for (final String key : variables.keySet()) {
clone.variables.put(key, variables.get(key));
}
}
newOwner.flagAsChanged();
return clone;
}
}