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);
     }
   }
 }