/** * Takes a DocInfo object and converts it to a string that the file will be named as. * * @param info Course info to be converted * @return String of a DocInfo object in the form: lname_fname subject courseNum-section semester * year */ private String generateSaveFileName(DocInfo info) { return info.getInstLName() + "_" + info.getInstFName() + " " + info.getSubject() + " " + info.getCourseNum() + "-" + info.getSection() + " " + info.getSemester() + " " + info.getYear() + ".docx"; }
/** * Generates, saves, and opens Word template comments sheet based on a DocInfo object. It * generates a header table with course info stored in the DocInfo object. Each evaluation * question has its own table below the header table. The file is saved at the location specified * with a name generated by the program based on the course info. */ public void generateCommentTemplate(DocInfo info, File saveLoc) { try { // Check if file exists. If it does exist, give the user the option // to cancel. File wordDoc = new File(saveLoc, generateSaveFileName(info)); if (wordDoc.exists()) { String message = "The comment template sheet already exists. By selecting " + "yes, the file will be overwritten. Are you sure you want to overwrite " + "the file?"; int response = JOptionPane.showConfirmDialog(null, message); if (response != JOptionPane.YES_OPTION) { return; } } wordMLPackage = WordprocessingMLPackage.createPackage(); factory = Context.getWmlObjectFactory(); // Add title to top of document wordMLPackage.getMainDocumentPart().addParagraphOfText("Student Feedback to Instructor"); // Create table for header information Tbl courseInfoTable = factory.createTbl(); // Create instructor name row Tr instNameRow = factory.createTr(); addStyledTableCellWithWidth( instNameRow, "Instructor Name:", true, "20", TABLE_SHORT_FIELD_LENGTH); addStyledTableCellWithWidth( instNameRow, info.getInstFName() + " " + info.getInstLName(), false, "20", TABLE_LONG_FIELD_LENGTH); // Create subject/course number row Tr courseInfoRow = factory.createTr(); addStyledTableCellWithWidth(courseInfoRow, "Course Subject & Number:", true, "20", 3000); addStyledTableCellWithWidth( courseInfoRow, info.getSubject() + " " + info.getCourseNum(), false, "20", TABLE_LONG_FIELD_LENGTH); // Create section row Tr sectionRow = factory.createTr(); addStyledTableCellWithWidth(sectionRow, "Section:", true, "20", TABLE_SHORT_FIELD_LENGTH); addStyledTableCellWithWidth( sectionRow, info.getSection(), false, "20", TABLE_LONG_FIELD_LENGTH); // Semester/Year row Tr semesterRow = factory.createTr(); addStyledTableCellWithWidth(semesterRow, "Semester:", true, "20", TABLE_SHORT_FIELD_LENGTH); addStyledTableCellWithWidth( semesterRow, info.getSemester().toString() + " " + info.getYear(), false, "20", TABLE_LONG_FIELD_LENGTH); // Add rows to table courseInfoTable.getContent().add(instNameRow); courseInfoTable.getContent().add(courseInfoRow); courseInfoTable.getContent().add(sectionRow); courseInfoTable.getContent().add(semesterRow); // Add border around entire table addBorders(courseInfoTable); // Place tables on document wordMLPackage.getMainDocumentPart().addObject(courseInfoTable); // Create a new table for each evaluation question for (String question : evalQuestions) { // Add empty paragraph so there is a space between questions wordMLPackage.getMainDocumentPart().addParagraphOfText(NEW_LINE); // Create table and add to doc Tbl questionTable = factory.createTbl(); // Row with question Tr questionRow = factory.createTr(); addStyledTableCellWithWidth(questionRow, question, true, "20", 10000); questionTable.getContent().add(questionRow); // Row with blank line for input Tr blankRow = factory.createTr(); addStyledTableCellWithWidth(blankRow, "", true, "20", 10000); questionTable.getContent().add(blankRow); addBorders(questionTable); // Add table to document wordMLPackage.getMainDocumentPart().addObject(questionTable); } wordMLPackage.save(wordDoc); openFile(wordDoc); } catch (InvalidFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Docx4JException e) { JOptionPane.showMessageDialog( null, "The comment sheet could not be saved. Make sure the document is not already open in Word."); e.printStackTrace(); } }
/** * Generates an OIT scan sheet. If checkbox for print is open, uses a Desktop object to print to * the default printer. The current system date is used as the date. * * @param info Course inform * @param print If true, the document will be sent to default printer */ public void generateOITSheet(DocInfo info, boolean print) { try { // Create new doc wordMLPackage = WordprocessingMLPackage.createPackage(); factory = Context.getWmlObjectFactory(); // Add title to top of document wordMLPackage.getMainDocumentPart().addParagraphOfText("OIT Scan Cover Sheet"); // Create table for header information Tbl infoTable = factory.createTbl(); // Create instructor name row Tr instNameRow = factory.createTr(); addStyledTableCellWithWidth( instNameRow, "Instructor Name:", true, "20", TABLE_SHORT_FIELD_LENGTH); addStyledTableCellWithWidth( instNameRow, info.getInstFName() + " " + info.getInstLName(), false, "20", TABLE_LONG_FIELD_LENGTH); // Create subject/course number row Tr courseInfoRow = factory.createTr(); addStyledTableCellWithWidth(courseInfoRow, "Course Subject & Number:", true, "20", 3000); addStyledTableCellWithWidth( courseInfoRow, info.getSubject() + " " + info.getCourseNum(), false, "20", TABLE_LONG_FIELD_LENGTH); // Create section row Tr sectionRow = factory.createTr(); addStyledTableCellWithWidth(sectionRow, "Section:", true, "20", TABLE_SHORT_FIELD_LENGTH); addStyledTableCellWithWidth( sectionRow, info.getSection(), false, "20", TABLE_LONG_FIELD_LENGTH); // Semester/Year row Tr semesterRow = factory.createTr(); addStyledTableCellWithWidth(semesterRow, "Semester:", true, "20", TABLE_SHORT_FIELD_LENGTH); addStyledTableCellWithWidth( semesterRow, info.getSemester().toString() + " " + info.getYear(), false, "20", TABLE_LONG_FIELD_LENGTH); // Faculty supp name row Tr facSuppNameRow = factory.createTr(); addStyledTableCellWithWidth( facSuppNameRow, "Faculty Support Name:", true, "20", TABLE_SHORT_FIELD_LENGTH); addStyledTableCellWithWidth( facSuppNameRow, info.getFacSuppName(), false, "20", TABLE_LONG_FIELD_LENGTH); // Faculty supp name row Tr facSuppExtenRow = factory.createTr(); addStyledTableCellWithWidth( facSuppExtenRow, "Faculty Support Extension:", true, "20", TABLE_SHORT_FIELD_LENGTH); addStyledTableCellWithWidth( facSuppExtenRow, info.getFacSuppExten(), false, "20", TABLE_LONG_FIELD_LENGTH); // Mailbox row Tr mailboxRow = factory.createTr(); addStyledTableCellWithWidth( mailboxRow, "I would like the results delivered to mailbox:", true, "20", TABLE_SHORT_FIELD_LENGTH); addStyledTableCellWithWidth( mailboxRow, info.getMailbox(), false, "20", TABLE_LONG_FIELD_LENGTH); Tr dateRow = factory.createTr(); DateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy"); Date date = new Date(); System.out.println(dateFormat.format(date)); addStyledTableCellWithWidth( dateRow, "Date of Request:", true, "20", TABLE_SHORT_FIELD_LENGTH); addStyledTableCellWithWidth( dateRow, dateFormat.format(date), false, "20", TABLE_LONG_FIELD_LENGTH); // Add rows to table infoTable.getContent().add(instNameRow); infoTable.getContent().add(courseInfoRow); infoTable.getContent().add(sectionRow); infoTable.getContent().add(semesterRow); infoTable.getContent().add(facSuppNameRow); infoTable.getContent().add(facSuppExtenRow); infoTable.getContent().add(mailboxRow); infoTable.getContent().add(dateRow); // Add border around entire table addBorders(infoTable); // Place tables on document wordMLPackage.getMainDocumentPart().addObject(infoTable); // Save in project files wordMLPackage.save(new File(OIT_SCAN_SHEET_SAVE_LOC)); // Print or open file based on user decision if (print) { desktop.print(new File(OIT_SCAN_SHEET_SAVE_LOC)); } else { desktop.open(new File(OIT_SCAN_SHEET_SAVE_LOC)); } System.out.println("OIT Scan sheet generated."); } catch (InvalidFormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Docx4JException e) { // TODO Auto-generated catch block JOptionPane.showMessageDialog( null, "Unable to open the OIT scan sheet. Make sure the document is not open."); e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }