Package org.apache.ws.jaxme.impl

Source Code of org.apache.ws.jaxme.impl.JMControllerImpl

/*
* Copyright 2003, 2004  The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.

*/
package org.apache.ws.jaxme.impl;

import java.text.Format;
import java.util.HashMap;
import java.util.Map;

import javax.xml.bind.DatatypeConverterInterface;
import javax.xml.bind.PropertyException;
import javax.xml.bind.ValidationEventHandler;

import org.apache.ws.jaxme.xs.util.XsDateFormat;
import org.apache.ws.jaxme.xs.util.XsDateTimeFormat;
import org.apache.ws.jaxme.xs.util.XsTimeFormat;



/** <p>Common subclass for JMMarshallerImpl, JMUnmarshallerImpl and
* JMValidatorImpl.</p>
*
* @author <a href="mailto:joe@ispsoft.de">Jochen Wiedmann</a>
* @version $Id: JMControllerImpl.java 279090 2005-09-06 22:26:11 +0200 (Di, 06 Sep 2005) jochen $
*/
public abstract class JMControllerImpl {
    /** Property prefix for users private settings:
   * "jaxme.private.". If a property
   * name starts with this prefix, then the property value is
   * stored in an internal Map.
   */
  public static final String JAXME_PRIVATE = "jaxme.private.";
 
  /** Name of the property for setting the
   * {@link javax.xml.bind.DatatypeConverterInterface}: "jaxme.datatypeConverter".
   */
  public static final String JAXME_DATATYPE_CONVERTER = "jaxme.datatypeConverter";
 
  /** Property for setting an instance of {@link java.text.Format},
   * which is being used for parsing and printing <code>xs:dateTime</code>
   * values. Defaults to an instance of
   * {@link org.apache.ws.jaxme.xs.util.XsDateTimeFormat}.
   */
  public static final String JAXME_FORMAT_DATETIME = "jaxme.format.dateTime";
 
  /** Property for setting an instance of {@link java.text.Format},
   * which is being used for parsing and printing <code>xs:date</code>
   * values. Defaults to an instance of
   * {@link org.apache.ws.jaxme.xs.util.XsDateFormat}.
   */
  public static final String JAXME_FORMAT_DATE = "jaxme.format.date";
 
  /** Property for setting an instance of {@link java.text.Format},
   * which is being used for parsing and printing <code>xs:time</code>
   * values. Defaults to an instance of
   * {@link org.apache.ws.jaxme.xs.util.XsTimeFormat}.
   */
  public static final String JAXME_FORMAT_TIME = "jaxme.format.time";
 
  private Map privateMap;
  private JAXBContextImpl context;
  private DatatypeConverterInterface datatypeConverter = new DatatypeConverterImpl();
  private Format dateTimeFormat, dateFormat, timeFormat;
 
  /** Sets the property <code>pProperty</code> to the value
   * <code>pValue</code>.
   */
  public void setProperty(String pProperty, Object pValue)
  throws PropertyException {
    if (pProperty.startsWith(JAXME_PRIVATE)) {
      if (privateMap == null) {
        privateMap = new HashMap();
      }
      privateMap.put(pProperty, pValue);
      return;
    } else if (pProperty.equals(JAXME_DATATYPE_CONVERTER)) {
      datatypeConverter = (DatatypeConverterInterface) pValue;
      return;
    } else if (JAXME_FORMAT_DATETIME.equals(pProperty)) {
      setDateTimeFormat((Format) pValue);
      return;
    } else if (JAXME_FORMAT_DATE.equals(pProperty)) {
      setDateFormat((Format) pValue);
      return;
    } else if (JAXME_FORMAT_TIME.equals(pProperty)) {
      setTimeFormat((Format) pValue);
      return;
    }
   
    throw new PropertyException("Unknown property: " + pProperty);
  }
 
  /** Returns the value for property <code>pProperty</code>.
   */
  public Object getProperty(String pProperty) throws PropertyException {
    if (pProperty.startsWith(JAXME_PRIVATE)) {
      if (privateMap == null) { return null; }
      return privateMap.get(pProperty);
    } else if (pProperty.equals(JAXME_DATATYPE_CONVERTER)) {
      return datatypeConverter;
    } else if (JAXME_FORMAT_DATETIME.equals(pProperty)) {
      return getDateTimeFormat();
    } else if (JAXME_FORMAT_DATE.equals(pProperty)) {
      return getDateFormat();
    } else if (JAXME_FORMAT_TIME.equals(pProperty)) {
      return getTimeFormat();
    }
   
    throw new PropertyException("Unknown property: " + pProperty);
  }
 
  protected ValidationEventHandler eventHandler;
 
  /** Returns a users event handler for validation events, if any.
   * Defaults to null.
   * @see #setEventHandler(ValidationEventHandler)
   */
  public ValidationEventHandler getEventHandler() { return eventHandler; }
 
  /** Sets a users event handler for validation events.
   * Defaults to null.
   * @see #getEventHandler()
   */
  public void setEventHandler(ValidationEventHandler pEventHandler) { eventHandler = pEventHandler; }
 
  /** Sets the marshallers or unmarshallers
   * {@link javax.xml.bind.JAXBContext}. This is used mainly as an
   * object factory.
   */
  public void setJAXBContextImpl(JAXBContextImpl pContext) { context = pContext; }
  /** Returns the marshallers or unmarshallers
   * {@link javax.xml.bind.JAXBContext}. This is used mainly as an
   * object factory.
   */
  public JAXBContextImpl getJAXBContextImpl() { return context; }
 
  /** Sets the marshallers or unmarshallers datatype converter.
   * Defaults to an instance of {@link DatatypeConverterImpl}.
   */
  public void setDatatypeConverter(DatatypeConverterInterface pConverter) { datatypeConverter = pConverter; }
  /** Returns the marshallers or unmarshallers datatype converter.
   * Defaults to an instance of {@link DatatypeConverterImpl}.
   */
  public DatatypeConverterInterface getDatatypeConverter() { return datatypeConverter; }
 
  /** <p>Sets the {@link java.text.Format} for parsing and printing
   * <code>xs:dateTime</code> values.</p>
   * @param pFormat An instance of {@link java.text.DateFormat} or an
   *   instance of {@link org.apache.ws.jaxme.xs.util.XsDateTimeFormat}
   *   (default).
   */
  public void setDateTimeFormat(Format pFormat) {
    dateTimeFormat = pFormat;
  }
 
  /** <p>Returns the {@link java.text.Format} for parsing and printing
   * <code>xs:dateTime</code> values.</p>
   * @return An instance of {@link java.text.DateFormat} or an
   *   instance of {@link org.apache.ws.jaxme.xs.util.XsDateTimeFormat}
   *   (default).
   */
  public Format getDateTimeFormat() {
    if (dateTimeFormat == null) {
      dateTimeFormat = new XsDateTimeFormat();
    }
    return dateTimeFormat;
  }
 
  /** <p>Sets the {@link java.text.Format} for parsing and printing
   * <code>xs:date</code> values.</p>
   * @param pFormat An instance of {@link java.text.DateFormat} or an
   *   instance of {@link org.apache.ws.jaxme.xs.util.XsDateFormat}
   *   (default).
   */
  public void setDateFormat(Format pFormat) {
    dateFormat = pFormat;
  }
 
  /** <p>Returns the {@link java.text.Format} for parsing and printing
   * <code>xs:date</code> values.</p>
   * @return An instance of {@link java.text.DateFormat} or an
   *   instance of {@link org.apache.ws.jaxme.xs.util.XsDateFormat}
   *   (default).
   */
  public Format getDateFormat() {
    if (dateFormat == null) {
      dateFormat = new XsDateFormat();
    }
    return dateFormat;
  }
 
  /** <p>Sets the {@link java.text.Format} for parsing and printing
   * <code>xs:date</code> values.</p>
   * @param pFormat An instance of {@link java.text.DateFormat} or an
   *   instance of {@link org.apache.ws.jaxme.xs.util.XsDateFormat}
   *   (default).
   */
  public void setTimeFormat(Format pFormat) {
    timeFormat = pFormat;
  }
 
  /** <p>Returns the {@link java.text.Format} for parsing and printing
   * <code>xs:time</code> values.</p>
   * @return An instance of {@link java.text.DateFormat} or an
   *   instance of {@link org.apache.ws.jaxme.xs.util.XsTimeFormat}
   *   (default).
   */
  public Format getTimeFormat() {
    if (timeFormat == null) {
      timeFormat = new XsTimeFormat();
    }
    return timeFormat;
  }
}
TOP

Related Classes of org.apache.ws.jaxme.impl.JMControllerImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.