else if (qName.equals("locations")) location = -1; else if (qName.equals("location")) solver.getLocations().setName(++location, getString(attributes, "name", location)); else if (qName.equals("times")) time = -1; else if (qName.equals("time")) solver.getTimes().setName(++time, getString(attributes, "name", time));
  public void startElement(String uri, String localName, String qName,                            Attributes attributes)   {    if (qName.equals("openconclave"))    {      int topicNumber   = getInt(attributes, "topics", 12);      int personNumber  = getInt(attributes, "persons", 12);      int roleNumber    = getInt(attributes, "roles", 3);      int sessionNumber = getInt(attributes, "sessions", 2);            main.reconfigure(topicNumber, personNumber, roleNumber, sessionNumber);      solver = main.getSolver();    }    else if (qName.equals("topics"))      topic = -1;    else if (qName.equals("topic"))      solver.getTopics().setName(++topic, getString(attributes, "name", topic));    else if (qName.equals("persons"))      person = -1;    else if (qName.equals("person"))    {      solver.getPersons().setName(++person, getString(attributes, "name", person));      topic = -1;    }    else if (qName.equals("roles"))      role = -1;    else if (qName.equals("role"))    {      Roles roles = solver.getRoles();      roles.setName(++role, getString(attributes, "name", role));      int minmax = solver.getPersons().getNumber()      				/	solver.getSessionNumber()      				/ solver.getRoles().getNumber();      roles.setMinimumPerSession(role, getInt(attributes, "min", minmax));      roles.setMaximumPerSession(role, getInt(attributes, "max", minmax));    }    else if (qName.equals("preferredTopic"))      solver.getPersons().setPreference(person, ++topic, getInt(attributes, "index", 0));    else if (qName.equals("solutionParameters"))    {      int keepBest = getInt(attributes, "keepBest", 10);      solver.setKeepBest(keepBest);      main.setSolutionParameters(getInt(attributes, "topicClusters",     5),                                 getInt(attributes, "personAssignments", 5),                                 getInt(attributes, "attempts",          100000),                                 keepBest);    }    else if (qName.equals("solutions"))    {      solution = 0;      solver.getPersons().createPreferenceIndex();    }    else if (qName.equals("solution"))    {      currentSolution = new Solution(solver);      currentSolution.setName(getString(attributes, "name", solution));      main.getSolver().addSolution(currentSolution);    }/*    else if (qName.equals("statistics"))      currentSolution.setStatistics(getDouble(attributes, "meandev", 0.0),                                    getDouble(attributes, "maxdev",  0.0),                                    getDouble(attributes, "stddev",  0.0),                                    getInt(attributes, "target",     0));*/                                        else if (qName.equals("topicGroups"))      group = -1;    else if (qName.equals("topicGroup"))    {      ++group;      groupIndex = -1;    }    else if (qName.equals("groupTopic"))      currentSolution.setGroupElement(group, ++groupIndex,                                       getInt(attributes, "index", 0));    else if (qName.equals("roleAssignments"))      currentSolution.clearRoleAssignments();    else if (qName.equals("roleAssignment"))      currentSolution.setRole(getInt(attributes, "person", 0),                              getInt(attributes, "topic", 0),                              getInt(attributes, "role", 0));       else if (qName.equals("personSums"))      person = -1;    else if (qName.equals("personSum"))      currentSolution.setPersonSum(++person, getDouble(attributes, "sum", 0));  }