Package com.sos.JSHelper.DataElements

Source Code of com.sos.JSHelper.DataElements.JSDataElementDate

/********************************************************* begin of preamble
**
** Copyright (C) 2003-2010 Software- und Organisations-Service GmbH.
** All rights reserved.
**
** This file may be used under the terms of either the
**
**   GNU General Public License version 2.0 (GPL)
**
**   as published by the Free Software Foundation
**   http://www.gnu.org/licenses/gpl-2.0.txt and appearing in the file
**   LICENSE.GPL included in the packaging of this file.
**
** or the
** 
**   Agreement for Purchase and Licensing
**
**   as offered by Software- und Organisations-Service GmbH
**   in the respective terms of supply that ship with this file.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
** IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
** THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
** PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
** POSSIBILITY OF SUCH DAMAGE.
********************************************************** end of preamble*/
package com.sos.JSHelper.DataElements;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import com.sos.JSHelper.Exceptions.FormatPatternException;

/**
* \file JSDataElementDate.java
* \brief Datenelement vom Typ Datum
*
* \class JSDataElementDate
* \brief Datenelement vom Typ Datum
*
* \details
* Diese Klasse bildet ein Datenelement vom Typ Datum ab. Instanzen dieser Klasse k�nnen
* - je nach vorliegendem Ausgangswert - wie folgt gebildet werden:
*
* 1. Ohne Wertzuweisung (diese mu� dann mit der Methode Value() erfolgen):
* \code
* JSDataElementDate objDate = new JSDataElementDate();
* \endcode
*
* 2. Auf Basis einer Datumsvariablen:
* \code
* Date objDat = new Date(2009, 05, 12);
* JSDataElementDate objDate = new JSDataElementDate(objDat);
* \endcode
*
* 3. Auf Basis eines Strings (das Stringformat mu� dem Standardformat JSDateFormat.dfISO entsprechen):
* \code
* JSDataElementDate objDate = new JSDataElementDate("2005-04-02T18:13:25");
* \endcode
*
* 4. Auf Basis eines Strings mit Vorgabe des Datumsformates (aus der Klasse JSDateFormat):
* \code
* JSDataElementDate objDate = new JSDataElementDate("12.05.2009",JSDateFormat.dfGERMAN_SHORT);
* \endcode
*
* Wahlweise kann das Eingabeformat mit der Methode setParsePattern(JSDateFormat pobjFormat) gesetzt werden.
* Die Formatierung der Ausgabe kann mit setFormatPattern(JSDateFormat pobjFormat) beeinflusst werden. Vorgabe ist
* auch hier das ISO-Format (JSDateFormat.dfISO.toPattern()).
*
* \author EQCPN
* @version $Id: JSDataElementDate.java 14731 2011-07-05 20:50:42Z sos $13.05.2009 10:36:25
* <div class="sos_branding">
*   <p>� 2009 APL/Software GmbH - Berlin - generated by ClaviusXPress (<a style="color:silver" href="http://www.sos-berlin.com" target="_blank">http://www.sos-berlin.com</a>)</p>
* </div>
*/
public class JSDataElementDate extends JSDataElement {

  private final String  conClassName  = "JSDataElementDate";

  // private Date datValue = new Date();
  private JSDateFormat  objFormat    = null;        // JSDateFormat.dfISO;

  /**
   * \brief Konstruktor ohne Initialisierung
   *
   * \details
   * Stellt eine Instanz des Objektes ohne Wertezuweisung zur Verf�gung.
   */
  public JSDataElementDate() {
    super();
  }

  public JSDataElementDate(final String pstrDate, final String pstrTime) {
    super.Value(pstrDate + pstrTime);
  }

  public JSDataElementDate(final JSDataElement pelemDate, final JSDataElement pelemTime) {
    final String strD = pelemDate.Value();
    String strT = pelemTime.Value();
    if (strT.trim().length() <= 0) {
      strT = "000000";
    }
    super.Value(strD + strT);
  }

  /**
   * \brief Initialisierung mit Datumsstring im Standardormat
   *
   * \details
   * Der �bergebene Datumsstring muss dem ISO-Format yyyy-MM-dd'T'HH:mm:ss (JSDateFormat.dfISO) entsprechen.
   *
   * @param pstrDate
   */
  public JSDataElementDate(final String pstrDate) {

    super.Value(pstrDate);
  }

  /**
   * \brief Initialisierung mit Datumsstring und vorgegebenen Format
   *
   * \details
   * Der �bergebene Datumsstring muss dem mit setFormatPattern(JSDateFormat pobjFormat)
   * gesetztem Format entsprechen (Standard ist JSDateFormat.dfISO).
   *
   * @param pstrDate
   * @param pobjFormat
   */
  public JSDataElementDate(final String pstrDate, final JSDateFormat pobjFormat) {
    super.Value(pstrDate);
    objFormat = pobjFormat;
  }

  public JSDataElementDate(final Date pdteDate, final JSDateFormat pobjFormat) {
    this.Value(pdteDate);
    objFormat = pobjFormat;
  }

  /**
   * \brief Initialisierung mit Datumswert.
   * @param pdatDate
   */
  public JSDataElementDate(final Date pdatDate) {
    JSDateFormat objFormat = JSDateFormat.dfTIMESTAMPS24;

    this.Value(objFormat.format(pdatDate));
  }

  public JSDataElementDate(final String pPstrValue, final String pPstrDescription, final int pPintSize, final int pPintPos, final String pPstrFormatString,
      final String pPstrColumnHeader, final String pPstrXMLTagName) {
    super(pPstrValue, pPstrDescription, pPintSize, pPintPos, pPstrFormatString, pPstrColumnHeader, pPstrXMLTagName);
    // TODO Auto-generated constructor stub
  }

  @Override
  public void Value(String pstrValue) {

    @SuppressWarnings("unused")
    final String conMethodName = conClassName + "::Value";

    if (pstrValue == null || pstrValue.equals("00000000")) {
      pstrValue = "";
    }

    super.Value(pstrValue);
  } // public void Value}

  /**
   *
   * \brief Value
   *
   * \details

   * \return void
   *
   * @param pdblValue
   */
  public void Value(final Date pdatValue) {
    if (objFormat == null) {
      objFormat = JSDateFormat.dfDATE_N8;
    }
    super.Value(objFormat.format(pdatValue));
    // this.datValue = pdatValue;
  }

  /**
   *
   * \brief Datumsobjekt liefern
   *
   * \details
   * Normalerweise sollte hier die Methode getDate aus JSToolbox �berschrieben werden, die liefert aber
   * einen String statt Date.
   *
   * \return Date
   * @throws ParseException
   */
  public Date getDateObject() {
    // return datValue;
    try {
      if (objFormat == null) {
        objFormat = JSDateFormat.dfDATE_N8;
      }
      return objFormat.parse(this.Value());
    }
    catch (final ParseException e) {
      message(e.getMessage());
      e.printStackTrace();
    }
    return null;
  }

  /**
   * \brief Setzen des Musters zur Datumserkennung
   *
   * \details
   * Setzt das Muster, nach dem die (Text-)Datumsangaben peparst werden. Diese Muster
   * ist NICHT identisch mit dem f�r die formatierte Ausgabe. Das kann �ber die Methode
   * setFormatString() festgelegt werden.
   *
   * \see checkFormatPattern()
   * \return void
   *
   * @param pobjFormat
   */
  public void setParsePattern(final JSDateFormat pobjFormat) {
    objFormat = pobjFormat;
  }

  public JSDateFormat getParsePattern() {

    @SuppressWarnings("unused")
    final String conMethodName = conClassName + "::getParsePattern";

    return objFormat;
  } // public void getParsePattern}

  /**
   * \brief Setzen des Musters zur Ausgabeformatierung
   *
   * \details
   * Setzt das Muster, nach dem die Datumsangabe formatiert wird �ber ein JSDateFormat-Objekt.
   * Wahlweise kann auch die Methode FormatString() verwendet werden.
   *
   * \return void
   *
   * @param pobjFormat
   *
   * \see FormattedValue ()
   */
  public void setFormatPattern(final JSDateFormat pobjFormat) {
    super.FormatString(pobjFormat.toPattern());
  }

  /**
   *
   * \brief doInit
   *
   * \details

   * \return void
   *
   */
  @Override
  public void doInit() {
    // super.FormatString(JSDateFormat.dfISO.toPattern());
    super.FormatString(JSDateFormat.dfDATE_N8.toPattern());
    super.Description("Date");
    super.ColumnHeader("Date");
    super.XMLTagName("Date");
    final String strFormat = super.FormatString();
    if (isNotEmpty(strFormat)) {
      final JSDateFormat df = new JSDateFormat(strFormat);
      super.setFormatPattern(df.toPattern());
    }
  }

  /**
   * \brief FormattedValue - Liefert den Wert des Elements formatiert
   *
   * \details
   * das Format (die Edit-Maske) wird �ber die Eigenschaft FormatString
   * definiert.
   *
   * Wenn kein Format-String definiert ist, so wird der Wert als String
   * zur�ckgegeben.
   *
   * \see setFormatPattern(JSDateFormat pobjFormat)
   * \see JSDataElement::FormatString(String pstrFormatString)
   * \return String
   */
  @Override
  public String FormattedValue() {
    String strFormat = super.FormatString();
    if (strFormat.length() <= 0) {
      strFormat = JSDateFormat.dfDATE_N8.toPattern();
    }

    if (isNotEmpty(strFormat) && HasAValue() == true) {
      final JSDateFormat df = new JSDateFormat(strFormat);
      return df.format(getDateObject());
    }
    else {
      return this.Value();
    }
  }

  /**
   * \brief checkFormatPattern
   *
   * \details
   *
   * \return
   *
   * @throws FormatPatternException
   *
   * \see setParsePattern(JSDateFormat pobjFormat)
   */
  @Override
  public void checkFormatPattern() throws FormatPatternException {
    if (objFormat != null) {
      try {
        objFormat.parse(this.Value());
      }
      catch (final ParseException e) {
        throw new FormatPatternException("the value '" + this.Value() + "' does not correspond with the pattern " + objFormat.toPattern());
      }
    }
  }

  public boolean HasAValue() {

    @SuppressWarnings("unused")
    final String conMethodName = conClassName + "::HasAValue";

    return !this.isEmpty();
  } // public boolean HasAValue}

  /**
   *
   * \brief ISEmpty
   *
   * \details
   *
   * \return boolean
   *
   * @return
   */
  public boolean isEmpty() {

    @SuppressWarnings("unused")
    final String conMethodName = conClassName + "::ISEmpty";

    if (super.Value().trim().length() <= 0 || super.Value().trim().equals("00000000")) {
      return true;
    }
    else {
      return false;
    }

  } // public boolean ISEmpty

  @Override
  public String SQLValue() {

    @SuppressWarnings("unused")
    final String conMethodName = conClassName + "::SQLValue";
    this.FormatString(JSDateFormat.dfTIMESTAMPS.toPattern());
    String strV = FormattedValue();

    /**
     * \todo die "richtige" Maske f�r das date-format in Oracle einbauen ...
     */
    strV = strV.substring(0, 14);
    final String strMask = "YYYYMMDDHH24MISS"; // .substring(0, 8);
    return "to_date(" + strV + ", '" + strMask + "')";
  } // public String SQLValue}

  /**
   *
   * \brief Now
   *
   * \details
   *
   * \return
   *
   * @return
   */
  public Date Now() {

    @SuppressWarnings("unused")
    final String conMethodName = conClassName + "::Now";

    final java.util.Calendar now = java.util.Calendar.getInstance();
    return now.getTime();
  } // public Date Now}

  public static String getCurrentTimeAsString(String dateTimeFormat) throws Exception {

    String strFormat = dateTimeFormat;
    if (dateTimeFormat == null || dateTimeFormat.length() <= 0) {
      strFormat = "yyyyMMddHHmmss";
    }
    SimpleDateFormat formatter = new SimpleDateFormat(strFormat);
//    formatter.setLenient(lenient);
    Calendar now = Calendar.getInstance();
    return formatter.format(now.getTime());
  }

  public static String getCurrentTimeAsString() throws Exception {

    return getCurrentTimeAsString("yyyyMMddHHmmss");
  }

}
TOP

Related Classes of com.sos.JSHelper.DataElements.JSDataElementDate

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.