use of doc.ProblemDatabase in project OpenNotebook by jaltekruse.
the class DocReader method startElement.
@Override
public void startElement(String uri, String name, String qName, Attributes atts) {
if (qName.equals(Document.OPEN_NOTEBOOK_DOC)) {
// the name of the file in the filesystem
// will allow documents that are renamed outside of
// the application to take their new name
doc = new Document(fileName);
doc.setAuthor(atts.getValue(Document.AUTHOR));
if (atts.getValue(Document.LAST_PROBLEM_NUMBER) != null) {
doc.setLastProblemNumber(Integer.parseInt(atts.getValue(Document.LAST_PROBLEM_NUMBER)));
}
if (atts.getValue(Document.X_MARGIN) != null) {
doc.setxMargin(Double.parseDouble(atts.getValue(Document.X_MARGIN)));
}
if (atts.getValue(Document.Y_MARGIN) != null) {
doc.setyMargin(Double.parseDouble(atts.getValue(Document.Y_MARGIN)));
}
return;
} else if (qName.equals(ProblemDatabase.NAME)) {
database = new ProblemDatabase();
readingProblemDatabase = true;
return;
} else if (qName.equals(Document.GENERATORS)) {
readingGenerators = true;
return;
} else if (qName.equals(ListAttribute.LIST)) {
if (mObj != null) {
// grab the list from the current object with the specified name
list = mObj.getListWithName(atts.getValue(NAME));
if (list != null && !overridenLists.contains(atts.getValue(ListAttribute.NAME))) {
// the object had a list with the given name
list.removeAll();
readingList = true;
}
if (DEBUG) {
System.out.println("list added: " + list);
}
return;
}
} else if (qName.equals(ListAttribute.ENTRY)) {
if (!readingList) {
// this is an entry for a list that is currently not in use
if (DEBUG) {
System.out.println(" found entry tag, but not reading a list");
}
return;
}
try {
list.addValueWithString(atts.getValue(ListAttribute.VAL));
return;
} catch (AttributeException e) {
hadAttributeError = true;
attributeNameInError = atts.getValue(NAME);
attributeValueInError = atts.getValue(VALUE);
objectWithError = mObj.getClass().getSimpleName();
return;
}
} else if (doc != null || readingProblemDatabase) {
if (qName.equals("Page")) {
page = new Page(doc);
doc.addPage(page);
return;
}
if (page != null || readingGenerators || readingProblemDatabase) {
if (mObj != null) {
if (DEBUG) {
System.out.println("in object, should be finding attributes, or other objects if in group");
}
if (readAttribute(uri, name, qName, atts)) {
// if the current tag was an attribute
if (DEBUG) {
System.out.println("return found attribute");
}
return;
}
}
if (DEBUG) {
System.out.println("tag was not attribute " + qName);
}
if (qName.equals("survey")) {
int j = 1;
}
mObj = MathObject.newInstanceWithType(qName);
if (mObj == null) {
mObj = readOldObjectName(qName);
}
if (mObj != null) {
if (DEBUG) {
System.out.println();
System.out.println("added Object: " + mObj.getClass().getSimpleName());
}
if (page != null) {
mObj.setParentContainer(page);
}
} else {
foundBadTag = true;
badTag = qName;
return;
}
if (!containerStack.isEmpty()) {
// if an object tag was found in a group, there is an object in a group
if (mObj != null) {
objectsInGroup.get(objectsInGroup.size() - 1).add(mObj);
if (mObj instanceof Grouping) {
containerStack.add((Grouping) mObj);
objectsInGroup.add(new Vector<MathObject>());
}
}
} else {
// in the document, or in the background of the application
if (readingGenerators || readingProblemDatabase) {
if (DEBUG) {
System.out.println("wait until attributes are read before adding to database");
}
} else {
page.addObject(mObj);
}
if (mObj instanceof Grouping) {
containerStack.add((Grouping) mObj);
objectsInGroup.add(new Vector<MathObject>());
}
}
}
}
}
use of doc.ProblemDatabase in project OpenNotebook by jaltekruse.
the class OpenNotebook method readProblemDatabase.
private static void readProblemDatabase() {
FileReader fileReader;
try {
fileReader = new FileReader(new File(getPreferencesPath() + DATABASE_FILENAME));
database = reader.readDatabase(fileReader);
} catch (Exception e) {
e.printStackTrace();
database = new ProblemDatabase();
JOptionPane.showMessageDialog(null, "An error occured finding problem Database,\n" + "try using the \"Set Preferences Directory\" option\n" + "in the Edit menu to resolve the issue.", "Warning", JOptionPane.WARNING_MESSAGE);
}
}
Aggregations