Search in sources :

Example 1 with ProblemDatabase

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>());
                }
            }
        }
    }
}
Also used : Page(doc.Page) Grouping(doc.mathobjects.Grouping) ProblemDatabase(doc.ProblemDatabase) Document(doc.Document) AttributeException(doc.attributes.AttributeException) Vector(java.util.Vector)

Example 2 with ProblemDatabase

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);
    }
}
Also used : FileReader(java.io.FileReader) ProblemDatabase(doc.ProblemDatabase) File(java.io.File) BackingStoreException(java.util.prefs.BackingStoreException) IOException(java.io.IOException) SAXException(org.xml.sax.SAXException)

Aggregations

ProblemDatabase (doc.ProblemDatabase)2 Document (doc.Document)1 Page (doc.Page)1 AttributeException (doc.attributes.AttributeException)1 Grouping (doc.mathobjects.Grouping)1 File (java.io.File)1 FileReader (java.io.FileReader)1 IOException (java.io.IOException)1 Vector (java.util.Vector)1 BackingStoreException (java.util.prefs.BackingStoreException)1 SAXException (org.xml.sax.SAXException)1