package helpmaker.model;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class XMLNodeItemExtended {
private String caption;
private List<XMLParameter> parameters;
private String nodeName;
public int isParameterExist(String key) {
for (int i = 0; i < parameters.size(); i++) {
if (parameters.get(i).getKey().equals(key))
return i;
}
return -1;
}
public int updateParameter(String key, String value) {
if (key.equals(XMLParameter.PARAMETER_CAPTION)) {
this.caption = value;
return 0;
} else {
int i = isParameterExist(key);
if (i >= 0) {
parameters.get(i).setValue(value);
return i;
} else {
parameters.add(new XMLParameter(key, value));
return parameters.size() - 1;
}
}
}
public void addParameter(String key, String value) {
updateParameter(key, value);
}
public void addParameter(XMLParameter xmlParameter) {
updateParameter(xmlParameter.getKey(), xmlParameter.getValue());
}
public void deleteParameter(XMLParameter xmlParameter) {
deleteParameter(xmlParameter.getKey());
}
public void deleteParameter(String key) {
int i = isParameterExist(key);
if (i >= 0) {
parameters.remove(i);
}
}
public void deleteParameter(int index) {
if ((index >= 0) && (parameters.size() > index)) {
parameters.remove(index);
}
}
public XMLNodeItemExtended(String caption, ArrayList<XMLParameter> params) {
this.caption = caption;
parameters = params;
}
public XMLNodeItemExtended(String caption) {
this.caption = caption;
this.nodeName = "node";
parameters = new ArrayList<>();
}
public String getCaption() {
return caption;
}
public void setCaption(String caption) {
this.caption = caption;
updateParameter(XMLParameter.PARAMETER_CAPTION, caption);
}
public List<XMLParameter> getParameters() {
return Collections.unmodifiableList(parameters);
}
public String getParameterValueByKey(String key) {
int index = isParameterExist(key);
if (index >= 0) {
return parameters.get(index).getValue();
} else {
return null;
}
}
public void setParameters(ArrayList<XMLParameter> parameters) {
this.parameters = parameters;
}
public String getNodeName() {
return nodeName;
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
@Override
public String toString() {
return caption;
}
}