zcommon/src/main/java/org/zkoss/idom/DOMException.java

Summary

Maintainability
A
1 hr
Test Coverage
/* DOMException.java


    Purpose: 
    Description: 
    History:
    2001/09/28 14:04:16, Create, Tom M. Yeh.

Copyright (C) 2001 Potix Corporation. All Rights Reserved.

{{IS_RIGHT
    This program is distributed under LGPL Version 2.1 in the hope that
    it will be useful, but WITHOUT ANY WARRANTY.
}}IS_RIGHT
*/
package org.zkoss.idom;

import org.xml.sax.Locator;

import org.zkoss.xml.Locators;

/**
 * Denotes an operation is not supported.
 *
 * @author tomyeh
 */
public class DOMException extends org.w3c.dom.DOMException {
    protected Locator _loc;

    public DOMException(short code) {
        super(code, message(code, null, null));
    }
    public DOMException(short code, String extraMsg) {
        super(code, message(code, extraMsg, null));
    }
    public DOMException(short code, Locator loc) {
        super(code, message(code, null, loc));
        _loc = loc;
    }
    public DOMException(short code, String extraMsg, Locator loc) {
        super(code, message(code, extraMsg, loc));
        _loc = loc;
    }

    private static final String
    message(short code, String extraMsg, Locator loc) {
        StringBuffer sb = new StringBuffer(64);
        switch (code) {
        case HIERARCHY_REQUEST_ERR:
            sb.append("Hierarchy request error");
            break;
        case INVALID_ACCESS_ERR:
            sb.append("Invalid access to the underly object");
            break;
        case INVALID_CHARACTER_ERR:
            sb.append("Invalid character(s)");
            break;
        case NAMESPACE_ERR:
            sb.append("Namespace error");
            break;
        case NO_DATA_ALLOWED_ERR:
            sb.append("Data not allowed");
            break;
        case NO_MODIFICATION_ALLOWED_ERR:
            sb.append("No modification allowed");
            break;
        case NOT_FOUND_ERR:
            sb.append("Not found");
            break;
        case NOT_SUPPORTED_ERR:
            sb.append("Not supported yet");
            break;
        case SYNTAX_ERR:
            sb.append("Syntax error");
            break;
        default:
            sb.append("Unknown error");
            break;
        }
        if (extraMsg != null)
            sb.append(": ").append(extraMsg);

        return Locators.format(sb.toString(), loc);
    }
}