return rels.findRelation(qName);
}
private RelEffect parseEffect(IAnnotation effectAnno, Relation rel, IMethod method) throws JavaModelException {
RelEffect effect = null;
IMemberValuePair paramsPair = null;
IMemberValuePair actEffectPair = null;
IMemberValuePair testPair = null;
switch (effectAnno.getMemberValuePairs().length) {
case 1:
paramsPair = effectAnno.getMemberValuePairs()[0];
break;
case 2:
if (effectAnno.getMemberValuePairs()[0].getMemberName().equals("value")) {
paramsPair = effectAnno.getMemberValuePairs()[0];
actEffectPair = effectAnno.getMemberValuePairs()[1];
}
else {
paramsPair = effectAnno.getMemberValuePairs()[1];
actEffectPair = effectAnno.getMemberValuePairs()[0];
}
break;
case 3:
if (effectAnno.getMemberValuePairs()[0].getMemberName().equals("value")) {
paramsPair = effectAnno.getMemberValuePairs()[0];
if (effectAnno.getMemberValuePairs()[1].getMemberName().equals("effect")) {
actEffectPair = effectAnno.getMemberValuePairs()[1];
testPair = effectAnno.getMemberValuePairs()[2];
}
else {
actEffectPair = effectAnno.getMemberValuePairs()[2];
testPair = effectAnno.getMemberValuePairs()[1];
}
}
else if (effectAnno.getMemberValuePairs()[1].getMemberName().equals("value")) {
paramsPair = effectAnno.getMemberValuePairs()[1];
if (effectAnno.getMemberValuePairs()[0].getMemberName().equals("effect")) {
actEffectPair = effectAnno.getMemberValuePairs()[0];
testPair = effectAnno.getMemberValuePairs()[2];
}
else {
actEffectPair = effectAnno.getMemberValuePairs()[2];
testPair = effectAnno.getMemberValuePairs()[0];
}
}
else {
paramsPair = effectAnno.getMemberValuePairs()[2];
if (effectAnno.getMemberValuePairs()[0].getMemberName().equals("effect")) {
actEffectPair = effectAnno.getMemberValuePairs()[0];
testPair = effectAnno.getMemberValuePairs()[1];
}
else {
actEffectPair = effectAnno.getMemberValuePairs()[1];
testPair = effectAnno.getMemberValuePairs()[0];
}
}
break;
}
Object[] objParams = (Object[])paramsPair.getValue();
SpecVar[] params = new SpecVar[objParams.length];
for (int ndx = 0; ndx < objParams.length; ndx++) {
if (objParams[ndx].equals(SpecVar.WILD_CARD))
params[ndx] = SpecVar.createWildCard();
else
params[ndx] = new SpecVar((String)objParams[ndx]);
}
/* try {
checkTypes(rel, params, method);
} catch (ParseException e) {
// TODO Put out a real error message
e.printStackTrace();
}
*/
edu.cmu.cs.fusion.annot.Relation.Effect actualEffect;
if (actEffectPair != null) {
String strEffect = ((String)actEffectPair.getValue()).substring(((String)actEffectPair.getValue()).lastIndexOf('.') + 1); //SCREW YOU ECLIPSE!!!!!
actualEffect = edu.cmu.cs.fusion.annot.Relation.Effect.valueOf(strEffect);
}
else
actualEffect = edu.cmu.cs.fusion.annot.Relation.Effect.ADD;
String test = null;
switch (actualEffect) {
case ADD:
effect = RelEffect.createAddEffect(rel, params);
break;
case REMOVE:
effect = RelEffect.createRemoveEffect(rel, params);
break;
case TEST:
test = (String) testPair.getValue();
effect = RelEffect.createTestEffect(rel, params, new SpecVar(test));
break;
}
return effect;
}