private void validatePrinterLabelTemplates( Account account, LabelPrinter printer, StringBuffer problems, boolean appendComma) { Map templates = printer.getLabelTemplates(); // if there are no label templates defined for the printer, return an error if (templates.isEmpty()) { if (appendComma) { problems.append(","); } problems.append( " printer with name = " + printer.getName() + " in account with id = " + account.getId() + " has no label templates defined."); appendComma = true; } else { Iterator iterator = templates.keySet().iterator(); while (iterator.hasNext()) { LabelTemplate template = (LabelTemplate) templates.get(iterator.next()); // make sure every template refers to a known template definition String templateDefinitionName = template.getLabelTemplateDefinitionName(); if (printer .getParent() .getLabelTemplateDefinitions() .get(templateDefinitionName.toLowerCase()) == null) { if (appendComma) { problems.append(","); } problems.append( " label template for printer (" + printer.getName() + ") references an unknown labelTemplateDefinition (" + templateDefinitionName + ")"); appendComma = true; } // make sure every template has a fully qualified name value String fullName = template.getFullyQualifiedName(); if (ApiFunctions.isEmpty(fullName)) { if (appendComma) { problems.append(","); } problems.append( " label template with labelTemplateDefinitionName = " + templateDefinitionName + " has no fully qualified name value"); appendComma = true; } } } }
private void validateAccountLabelPrinters(Account account, StringBuffer problems) { boolean appendComma = problems.length() > 0; Map printers = account.getLabelPrinters(); // if there are no label printers defined for the account, return an error if (printers.isEmpty()) { if (appendComma) { problems.append(","); } problems.append(" account with id = " + account.getId() + " has no printers defined."); appendComma = true; } else { Map displayNames = new HashMap(); Iterator iterator = printers.keySet().iterator(); while (iterator.hasNext()) { LabelPrinter printer = (LabelPrinter) printers.get(iterator.next()); String name = printer.getName(); // check that the name by which the printer will be displayed (display name if present, // otherwise name) is unique String displayName = printer.getDisplayName(); if (ApiFunctions.isEmpty(displayName)) { displayName = name; } if (displayNames.put(displayName, displayName) != null) { if (appendComma) { problems.append(","); } problems.append( " printer with name = " + name + " has the same display name as another printer in the account"); appendComma = true; } // make sure the printer is set up for at least one type of printing mechanism // (i.e. tcp/ip, email, etc) if (!printer.isEmailBasedPrintingEnabled() && !printer.isFileBasedPrintingEnabled() && !printer.isTcpIpBasedPrintingEnabled()) { if (appendComma) { problems.append(","); } problems.append(" printer with name = " + name + " has no printing mechanism enabled"); appendComma = true; } // make sure all required printing information has been specified else { if (printer.isEmailBasedPrintingEnabled()) { if (ApiFunctions.isEmpty(printer.getEmailAddress())) { if (appendComma) { problems.append(","); } problems.append(" printer with name = " + name + " has no email address."); appendComma = true; } if (ApiFunctions.isEmpty(printer.getEmailSubject())) { if (appendComma) { problems.append(","); } problems.append(" printer with name = " + name + " has no email subject."); appendComma = true; } } if (printer.isFileBasedPrintingEnabled()) { if (!ApiFunctions.isEmpty(printer.getFileTransferCommand()) && printer .getFileTransferCommand() .indexOf(Constants.LABEL_PRINTING_TRANSFER_COMMAND_FILE_INSERTION_STRING) < 0) { if (appendComma) { problems.append(","); } problems.append( " printer with name = " + name + " has a file transfer command with no insertion point for the filename."); appendComma = true; } if (ApiFunctions.isEmpty(printer.getFileName())) { if (appendComma) { problems.append(","); } problems.append(" printer with name = " + name + " has no file name."); appendComma = true; } if (ApiFunctions.isEmpty(printer.getFileExtension())) { if (appendComma) { problems.append(","); } problems.append(" printer with name = " + name + " has no file extension."); appendComma = true; } } if (printer.isTcpIpBasedPrintingEnabled()) { if (ApiFunctions.isEmpty(printer.getTcpIpHost())) { if (appendComma) { problems.append(","); } problems.append(" printer with name = " + name + " has no tcp/ip host."); appendComma = true; } String tcpIpPort = printer.getTcpIpPort(); if (ApiFunctions.isEmpty(tcpIpPort)) { if (appendComma) { problems.append(","); } problems.append(" printer with name = " + name + " has no tcp/ip port."); appendComma = true; } else { if (!ApiFunctions.isInteger(tcpIpPort)) { if (appendComma) { problems.append(","); } problems.append(" printer with name = " + name + " has an invalid tcp/ip port."); appendComma = true; } } } } // validate the label templates specified as available on this printer validatePrinterLabelTemplates(account, printer, problems, appendComma); } } }