use of pcgen.core.prereq.PrerequisiteOperator in project pcgen by PCGen.
the class AbstractPrerequisiteWriter method checkValidOperator.
protected void checkValidOperator(Prerequisite prereq, PrerequisiteOperator[] comparators) throws PersistenceLayerException {
StringBuilder comparatorString = new StringBuilder(25);
for (int i = 0; i < comparators.length; i++) {
PrerequisiteOperator comparator = comparators[i];
if (prereq.getOperator().equals(comparators[i])) {
return;
}
if (i > 0) {
comparatorString.append(", ");
}
comparatorString.append(comparator);
}
String kind = prereq.getKind();
if (kind == null) {
kind = "<NULL>";
}
throw new PersistenceLayerException("Cannot write token: LST syntax only supports " + comparatorString.toString() + " operators for PRE" + kind.toUpperCase() + ": " + prereq.toString());
}
use of pcgen.core.prereq.PrerequisiteOperator in project pcgen by PCGen.
the class PreCSkillWriter method specialCase.
@Override
public boolean specialCase(Writer writer, Prerequisite prereq) throws IOException {
PrerequisiteOperator po = getConsolidateMethod(kindHandled(), prereq, false);
if (po == null) {
return false;
}
if (po != prereq.getOperator()) {
writer.write('!');
}
writer.write("PRE" + kindHandled().toUpperCase() + ':' + (prereq.isOverrideQualify() ? "Q:" : ""));
writer.write(po == PrerequisiteOperator.GTEQ ? prereq.getOperand() : "1");
for (Prerequisite p : prereq.getPrerequisites()) {
writer.write(',');
writer.write(p.getKey());
}
return true;
}
use of pcgen.core.prereq.PrerequisiteOperator in project pcgen by PCGen.
the class PreCampaignWriter method specialCase.
/**
* @see pcgen.persistence.lst.output.prereq.AbstractPrerequisiteWriter#specialCase(java.io.Writer writer, pcgen.core.prereq.Prerequisite prereq)
*/
@Override
public boolean specialCase(Writer writer, Prerequisite prereq) throws IOException {
PrerequisiteOperator po = getConsolidateMethod(kindHandled(), prereq, false);
if (po == null) {
return false;
}
if (!po.equals(prereq.getOperator())) {
writer.write('!');
}
writer.write("PRE" + kindHandled().toUpperCase() + ':' + (prereq.isOverrideQualify() ? "Q:" : ""));
writer.write(po.equals(PrerequisiteOperator.GTEQ) ? prereq.getOperand() : "1");
for (Prerequisite p : prereq.getPrerequisites()) {
writer.write(',');
writer.write(p.getKey());
}
return true;
}
use of pcgen.core.prereq.PrerequisiteOperator in project pcgen by PCGen.
the class PreArmorProfWriter method specialCase.
@Override
public boolean specialCase(Writer writer, Prerequisite prereq) throws IOException {
PrerequisiteOperator po = getConsolidateMethod(kindHandled(), prereq, false);
if (po == null) {
return false;
}
if (!po.equals(prereq.getOperator())) {
writer.write('!');
}
writer.write("PRE" + kindHandled().toUpperCase() + ':' + (prereq.isOverrideQualify() ? "Q:" : ""));
writer.write(po.equals(PrerequisiteOperator.GTEQ) ? prereq.getOperand() : "1");
for (Prerequisite p : prereq.getPrerequisites()) {
writer.write(',');
writer.write(p.getKey());
}
return true;
}
use of pcgen.core.prereq.PrerequisiteOperator in project pcgen by PCGen.
the class PreAlignWriter method specialCase.
@Override
public boolean specialCase(Writer writer, Prerequisite prereq) throws IOException {
// If this is NOT a PREMULT... fail
if (prereq.getKind() != null) {
return false;
}
PrerequisiteOperator oper = null;
for (Prerequisite p : prereq.getPrerequisites()) {
//
if (!"1".equals(p.getOperand())) {
return false;
}
//
if (!kindHandled().equalsIgnoreCase(p.getKind())) {
return false;
}
//
if (oper == null) {
oper = p.getOperator();
} else {
if (!oper.equals(p.getOperator())) {
return false;
}
}
}
String count = prereq.getOperand();
if (PrerequisiteOperator.NEQ.equals(oper)) {
try {
int i = Integer.parseInt(count);
if (prereq.getPrerequisiteCount() != i) {
return false;
}
} catch (NumberFormatException e) {
return false;
}
} else if (!PrerequisiteOperator.EQ.equals(oper)) {
return false;
}
if (oper.equals(PrerequisiteOperator.EQ) && !"1".equals(prereq.getOperand())) {
return false;
}
if (!PrerequisiteOperator.GTEQ.equals(prereq.getOperator()) ^ !PrerequisiteOperator.EQ.equals(oper)) {
writer.write('!');
}
writer.write("PRE" + kindHandled().toUpperCase() + ':' + (prereq.isOverrideQualify() ? "Q:" : ""));
boolean first = true;
for (Prerequisite p : prereq.getPrerequisites()) {
if (!first) {
writer.write(',');
}
writer.write(p.getKey());
first = false;
}
return true;
}
Aggregations