package pt.ist.fenixframework.pstm.dml.codeGenerator.oneBoxPerObject;
import java.io.PrintWriter;
import java.util.Iterator;
import pt.ist.fenixframework.pstm.dml.FenixCodeGeneratorOneBoxPerObject;
import dml.CompilerArgs;
import dml.DomainClass;
import dml.DomainModel;
import dml.Role;
public class FenixCheckDisconnectedReportGenerator extends FenixCodeGeneratorOneBoxPerObject {
public FenixCheckDisconnectedReportGenerator(CompilerArgs compArgs, DomainModel domainModel) {
super(compArgs, domainModel);
}
@Override
protected void generateCheckDisconnected(DomainClass domClass, PrintWriter out) {
newline(out);
printMethod(out, "protected", "boolean", "checkDisconnected");
startMethodBody(out);
println(out, "java.util.List<String> relationList = new java.util.ArrayList<String>();");
println(out, "boolean result = checkDisconnected(relationList);");
println(out, "doCheckDisconnectedAction(relationList);");
println(out, "return result;");
endMethodBody(out);
newline(out);
printMethod(out, "protected", "boolean", "checkDisconnected", "java.util.List connectedRelationList");
startMethodBody(out);
if (domClass.hasSuperclass()) {
println(out, "super.checkDisconnected(connectedRelationList);");
}
Iterator<Role> roleSlotsIter = domClass.getRoleSlots();
while (roleSlotsIter.hasNext()) {
Role role = roleSlotsIter.next();
if (role.getName() != null) {
onNewline(out);
print(out, "if (");
if (role.getMultiplicityUpper() == 1) {
print(out, "has");
} else {
print(out, "hasAny");
}
print(out, capitalize(role.getName()));
println(out, String.format("()) connectedRelationList.add(\"%s\"); ", role.getName()));
}
}
println(out, "return connectedRelationList.isEmpty();");
endMethodBody(out);
}
}