/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* ident "%Z%%M% %I% %E% SMI"
*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*
* Printer class
* Printer object containing attributes and methods for
* updating printers.
*/
package com.sun.admin.pm.server;
public class Printer
{
//
// Printer object attributes
//
private String printername = null;
private String printertype = null;
private String printserver = null;
private String comment = null;
private String device = null;
private String make = null;
private String model = null;
private String ppd = null;
private String ppdfile = null;
private String notify = null;
private String protocol = null;
private String destination = null;
private String extensions = null;
private String[] file_contents = null;
private String[] user_allow_list = null;
private String[] user_deny_list = null;
private boolean use_ppd_file = true;
private boolean default_printer = false;
private String banner = null;
private boolean enable = true;
private boolean accept = true;
private String locale = null; // Possible future use
private NameService nscontext;
//
// Logs
//
private String warnlog = null;
private String errlog = null;
private String cmdlog = null;
//
// Constructors
//
public Printer()
{
Debug.message("SVR: Printer constructor called empty.");
nscontext = new NameService();
PrinterDebug.printObj(nscontext);
}
public Printer(NameService ns)
{
Debug.message("SVR: Printer constructor called with NS.");
nscontext = ns;
PrinterDebug.printObj(ns);
}
//
// Is a printer local to this machine
//
public synchronized boolean isPrinterLocal(String printername)
throws Exception
{
Debug.message("SVR: Printer.isPrinterLocal()");
return (DoPrinterUtil.isLocal(printername));
}
//
// Get details of a printer.
//
public synchronized void getPrinterDetails()
throws Exception
{
Debug.message("SVR: Printer.getPrinterDetails()");
if (printername == null) {
throw new pmInternalErrorException(
"Printer.getPrinterDetails(): printername must be set");
}
DoPrinterView.view(this, nscontext);
}
//
// Add a local printer
//
public synchronized void addLocalPrinter()
throws Exception
{
Debug.message("SVR: Printer.addLocalPrinter()");
if (printername == null) {
throw new pmInternalErrorException(
"Printer.addLocalPrinter(): printername must be set");
}
if (printserver == null) {
Host h = new Host();
printserver = h.getLocalHostName();
h = null;
}
if (device == null) {
throw new pmInternalErrorException(
"Printer.addLocalPrinter(): device must be set");
}
if ((pmMisc.isppdCachefile()) && use_ppd_file) {
if (make == null) {
throw new pmInternalErrorException(
"Printer.addLocalPrinter(): make must be set");
}
if (model == null) {
throw new pmInternalErrorException(
"Printer.addLocalPrinter(): model must be set");
}
if (ppd == null) {
throw new pmInternalErrorException(
"Printer.addLocalPrinter(): ppd file must be selected");
}
}
PrinterDebug.printObj(this);
clearLogs();
DoPrinterAdd.add(this, nscontext);
}
//
// Add access to a remote printer
//
public synchronized void addRemotePrinter()
throws Exception
{
Debug.message("SVR: Printer.addRemotePrinter()");
if (printername == null) {
throw new pmInternalErrorException(
"Printer.addRemotePrinter(): printername must be set");
}
if (printserver == null) {
throw new pmInternalErrorException(
"Printer.addRemotePrinter(): printserver must be set");
}
PrinterDebug.printObj(this);
clearLogs();
DoPrinterAdd.add(this, nscontext);
}
//
// Delete a printer
//
public synchronized void deletePrinter()
throws Exception
{
Debug.message("SVR: Printer.deletePrinter()");
if (printername == null) {
throw new pmInternalErrorException(
"Printer.deletePrinter(): printername must be set");
}
PrinterDebug.printObj(this);
clearLogs();
DoPrinterDelete.delete(this, nscontext);
}
//
// Modify a printer
//
public synchronized void modifyPrinter()
throws Exception
{
Debug.message("SVR: Printer.modifyPrinter()");
if (printername == null) {
throw new pmInternalErrorException(
"Printer.modifyPrinter(): printername must be set");
}
PrinterDebug.printObj(this);
clearLogs();
DoPrinterMod.modify(this, nscontext);
}
//
// Set list of commands executed
//
public synchronized void setCmdLog(String newcmds)
{
if (newcmds == null) {
return;
}
if (!newcmds.endsWith("\n")) {
newcmds = newcmds.concat("\n");
}
if (cmdlog == null) {
cmdlog = new String(newcmds);
return;
}
cmdlog = cmdlog.concat(newcmds);
}
//
// Set an error message.
//
public synchronized void setErrorLog(String errs)
{
if (errs == null) {
return;
}
if (!errs.endsWith("\n")) {
errs = errs.concat("\n");
}
if (errlog == null) {
errlog = new String(errs);
return;
} else {
errlog = errlog.concat(errs);
}
}
//
// Set an warning message.
//
public synchronized void setWarnLog(String warning)
{
if (warning == null) {
return;
}
if (!warning.endsWith("\n")) {
warning = warning.concat("\n");
}
if (warnlog == null) {
warnlog = new String(warning);
return;
} else {
warnlog = warnlog.concat(warning);
}
}
//
// Get commands executed.
//
public String getCmdLog()
{
if (cmdlog == null) {
return (null);
}
return (new String(cmdlog.trim()));
}
//
// Get error messages
//
public String getErrorLog()
{
if (errlog == null) {
return (null);
}
return (new String(errlog.trim()));
}
//
// Get warning messages
//
public String getWarnLog()
{
if (warnlog == null) {
return (null);
}
return (new String(warnlog.trim()));
}
//
// Set printer attributes
//
public synchronized void setPrinterName(String arg)
{
printername = arg;
}
public synchronized void setPrinterType(String arg)
{
printertype = arg;
}
public synchronized void setPrintServer(String arg)
{
printserver = arg;
}
public synchronized void setComment(String arg)
{
comment = arg;
}
public synchronized void setMake(String arg)
{
make = arg;
}
public synchronized void setModel(String arg)
{
model = arg;
}
public synchronized void setPPD(String arg)
{
ppd = arg;
}
public synchronized void setPPDFile(String arg)
{
ppdfile = arg;
}
public synchronized void setDevice(String arg)
{
device = arg;
}
public synchronized void setUsePPD(boolean arg)
{
use_ppd_file = arg;
}
public synchronized void setNotify(String arg)
{
notify = arg;
}
public synchronized void setProtocol(String arg)
{
protocol = arg;
}
public synchronized void setDestination(String arg)
{
destination = arg;
}
public synchronized void setExtensions(String arg)
{
extensions = arg;
}
public synchronized void setFileContents(String[] arg)
{
file_contents = arg;
}
public synchronized void setUserAllowList(String[] arg)
{
user_allow_list = arg;
}
public synchronized void setUserDenyList(String[] arg)
{
user_deny_list = arg;
}
public synchronized void setIsDefaultPrinter(boolean arg)
{
default_printer = arg;
}
public synchronized void setBanner(String arg)
{
banner = arg;
}
public synchronized void setEnable(boolean arg)
{
enable = arg;
}
public synchronized void setAccept(boolean arg)
{
accept = arg;
}
public synchronized void setLocale(String arg)
{
locale = arg;
}
//
// Get printer attributes.
//
public String getPrinterName()
{
return (printername);
}
public String getPrinterType()
{
return (printertype);
}
public String getPrintServer()
{
return (printserver);
}
public String getComment()
{
return (comment);
}
public String getDevice()
{
return (device);
}
public boolean getUsePPD()
{
return (use_ppd_file);
}
public String getMake()
{
return (make);
}
public String getModel()
{
return (model);
}
public String getPPD()
{
return (ppd);
}
public String getPPDFile()
{
return (ppdfile);
}
public String getNotify()
{
return (notify);
}
public String getProtocol()
{
return (protocol);
}
public String getDestination()
{
return (destination);
}
public String getExtensions()
{
return (extensions);
}
public String[] getFileContents()
{
return (file_contents);
}
public String[] getUserAllowList()
{
return (user_allow_list);
}
public String[] getUserDenyList()
{
return (user_deny_list);
}
public boolean getIsDefaultPrinter()
{
return (default_printer);
}
public String getBanner()
{
return (banner);
}
public boolean getEnable()
{
return (enable);
}
public boolean getAccept()
{
return (accept);
}
public String getLocale()
{
return (locale);
}
protected void clearLogs()
{
warnlog = null;
errlog = null;
cmdlog = null;
}
// Hints for optimizing printer modifications
protected String modhints = "";
}