> Inhalt: JavaScout Base-System (JSBS)

JSBS_FramePosition_BOS – Klasse für die Server-Side des Frame-Position Business-Objects

* Bitte beachten Sie die Hinweise und Bestimmungen bezüglich Urheberrecht, Haftungsausschluß und geschützte Marken oder Warenzeichen die für dieses Web-Dokument und möglicherweise auch für 'verlinkte' Dokumente gelten.

  • Der Betreiber dieser Web-Site (www.javascout.biz) ist nicht verantwortlich für den Inhalt von Web-Sites, die innerhalb dieses Web-Dokumentes oder anderer Dokumente von www.javascout.biz verlinkt sind.

  • Wenn dieses Web-Dokument oder andere Dokumente dieser Web-Site (www.javascout.biz) Rechte von Ihnen verletzen, oder sie glauben, dass Rechte Anderer (Dritter Personen) dadurch verletzt werden, informieren Sie bitte den Betreiber dieser Web-Site.
    Eine E-Mail können Sie ganz einfach durch Anklicken des Symbols oder Textes im Frame rechts oben senden.

Dieses Dokument drucken.

 Letzte Bearbeitung dieses  Dokuments:
2011-09-27

Inhaltsverzeichnis

Code 
Erklärungen und Anwendungsbeispiele 
Verwandte Dokumentation
 

Code

package js_base.bos;
/*
 *  de: Package mit Klassen für den Zugriff auf Datenbanken.
 *  en: Package with classes to access databases. */

import
java.sql.*;
/*
 *  de: Package und Klasse für das Ermitteln des System-Datums.
 *  en: Package and class to get the system-date. */

import java.util.Date;

import
js_base.bo.*;
import
js_base.dba.*;
/*
 *  de: 
 *  JSBS-Package und Klasse mit der Daten-Struktur mit den minimal notwendigen Parametern.
 *  en: 
 *  JSBS-package and class with the data-structure containing the minimum set of parameters. */

import
js_base.structures.JSBS_MinimalParameters;
/*
 *  de: 
 *  JSBS-Package und Klasse zum Packen mehrerer numerischer Werte in eine Zeichenkette.
 *  en: 
 *  JSBS-package and class to pack several numeric values into a String. */

import
js_base.utilities.JSBS_Formatter;

/**
 *
 * @author kurt(at)javascout[biz]
 * @date 2009-10-22
 *
 * @description
 *  de:
 *  Server-seitiger Teil des Business Object für die 'FramePosition'.
 *  
 *  Diese Klasse hat die folgenden Aufgaben:
 *  * Implementierung der Logik die in den Methoden zur Bearbeitung von persistenten Daten
 *    des Business Objekts einfachere Methoden zur Steuerung von Data-Base-Objects (DBA)
 *    (deren Code mit SQL-Kommandos direkt auf die Datenbank zugreift) aufruft.
 *  * Logik zum Entscheiden ob eine Transaktion vollständig ausgeführt wurde und mit einem
 *    'commit' abgeschlossen werden kann oder während der Transaktion ein Fehler aufgetreten ist
 *    alle bisherigen Operationen auf die Datenbank durch ein 'Rollback' ungültig gemacht werden
 *    müssen.
 *  
 *  Eine Beschreibung der Variablen und des Anwender-bekannten Schlüssels finden Sie in der
 *  geerbten Generellen BO-Klasse. 
 *  
 *  en:

 *  Server-Side Derivation of the Business Object for the 'FramePosition'.
 *
 *  This class has the following function:
 *  * Implements the logic to break down the methods to handle persistant data of the
 *    Business Object to the more simple methods (close to the SQL-statements of the DB-system)
 *    of the Data-Base-Access objects.
 *  * Logic to decide if a transaction was fulfilled completely and can be committed
      or failed at one step and has to be 'rolled back' to assure the data-integrity.
 *
 *  For the variables and the user-known key please refer to the inherited BO-class.
 *
 * @change-log
 * when         who               why
 * --------------------------------------------------------
 *
 */

public class JSBS_FramePosition_BOS extends JSBS_FramePosition_BO {
/*
 * VARIABLE / VARIABLES.
 * -------------------- */

/*
 * de:
 * Merker ob das Objekt dieser Klasse durch ein BOC (Client-Side-Klasse eines Business Object)
 * oder durch ein EJB (Enterprise Java Bean) konstruiert wurde.
 * Diese Information wird benötigt wenn ein 'Commit' oder 'Rollback' ausgeführt werden soll.
 * 'Commit' und 'Rollback' werden nur in den Objekten ausgeführt die direkt von einem BOC oder EJB
 * konstruiert wurden – nicht in Objekten, die von einem anderen BOS konstruiert wurden.
 * en:
 * Flag if the object of this class was constructed by a BOC (Client-Side-class of a Business Object)
 * or by a EJB (Enterprise Java Bean).
 * This Information is needed when a 'Commit' or a 'Rollback' has to be performed.
 * 'Commit' and 'Rollback' are only done in objects that were constructed by BOC or EJB -
 * not in objects that were constructed by another BOS. */
    private boolean bolObjectConstructedByBOC_or_EJB;
/*
 * de:
 * Referenz zur bestehenden Verbindung zur Datenbank.
 * Dieser Werte muss von der aufrufenden Methode als Parameter übergeben werden
 * wenn diese Klasse 'konstruiert' wird.
 * en:
 * Referenc to the established connection to the database.
 * This value has to be passed by the calling method when this class is constructed. */

    private Connection structDBCon = null;
/*
 * de:

 * Minimales Set von Parameter mit Informationen über Anwender, Arbeitsplatz
 * und Datum des Client von dem die Datenbank-Operation angefordert wurde.
 * Verwendet wird der Anwender-Name und das Arbeitsdatum des Arbeitsplatzes auf
 * dem das Client-Programm ausgeführt wird.
 * Das Datum des Client-Programms kann unterschiedlich zum System-Datum sein.
 * en:
 * Minimal Parameters containing user-, workstation- and date-information from
 * where the request for the database-operation originated.
 * Used is the user-name and the date the workstation is set to.
 * The date of the workstation might be different of the system-date. */
    private JSBS_MinimalParameters structJSBS_MinimalParameters = null;
/*
 * de:

 * Datenstruktur des DBA-Objektes mit dem die SQL-Kommandos gegen die Datenbank
 * ausgeführt werden.
 * en:
 * Structure of the DBA object used to perform SQL-commands against the database. */
    private JSBS_Parameter_DBA structJSBS_Parameter_DBA = new JSBS_Parameter_DBA();
/*
 * --------------------
 * de:
 * CONSTRUCTOR
 * der verwendet wird wenn eine bestehende (und geöffnete!) Verbindung zur Datenbank
 * (Connection) als Parameter übergeben wird.
 * en:
 * CONSTRUCTOR
 * when an existing (and open!) Connection to the database-system is passed. */
    
public JSBS_FramePosition_BOS(JSBS_MinimalParameters parmMinParm,
                                Connection parmDBCon) {
/* 
 * de: Aufrufen der Methode, die das Kopieren der Parameter ausführt.
 * en: Call the method written to do the copying of the parameters. */
     constructionWithDBConnection(parmMinParm, parmDBCon);
/* 
 
* de: Setzen des Merkers dass das Objekt nicht von einem BOC oder EJB konstruiert wurde.
 * en: Set the flag signalling that the object was not constructed by a BOC or EJB
. */
      bolObjectConstructedByBOC_or_EJB = false;
    }
/*
 * --------------------
 * de:
 * CONSTRUCTOR
 * der verwendet wird wenn eine bestehende (und geöffnete!) Verbindung zur Datenbank
 * (Connection) als Parameter übergeben wird und
 * die Werte der Variablen aus dem übergebenen Business Object übernommen werden müssen.
 * en:
 * CONSTRUCTOR
 * when an existing (and open!) Connection to the database-system is passed and
 * the values of the variables have to be taken from a Business Object passed as parameter. */
    
public JSBS_FramePosition_BOS(JSBS_MinimalParameters parmMinParm,
                                Connection parmDBCon,
                                JSBS_FramePosition_BO parmJSBS_FramePosition_BO) {
/* 
 * de: Aufrufen der Methode, die das Kopieren der Parameter ausführt.
 * en: Call the method written to do the copying of the parameters. */

     constructionWithDBConnection(parmMinParm, parmDBCon);
/* 
 * de: Setzen des Merkers dass das Objekt
nicht von einem BOC oder EJB konstruiert wurde.
 * en: Set the flag signalling that the object was not constructed by a BOC or EJB. */

    
  bolObjectConstructedByBOC_or_EJB = false;
/* de:
 * Methode (in der generellen Klasse dieses Business Objects [geerbte Superklasse]) aufrufen
 * die die Werte des als Parameter übergebenen BO auf die Variablen dieses BO kopiert.
 * en:
 * Call the method (in the General Class [superclass]) for this Business Object to
 * copy the values from the BO passed as parameter to the variables of this Business Object. */
      copyFromJSBS_FramePosition_BO(parmJSBS_FramePosition_BO);
    }
/*
 * --------------------
 * de:
 * CONSTRUCTOR
 * der verwendet wird wenn eine bestehende (und geöffnete!) Verbindung zur Datenbank
 * (Connection) als Parameter übergeben wird.
 * In den Parametern wird auch übergeben, ob das Objekt dieser Klasse durch ein BOC oder EJB
 * konstruiert wird.
 * en:
 * CONSTRUCTOR
 * when an existing (and open!) Connection to the database-system is passed.
 * There is a parameter signalling that this object is constructed by a BOC or EJB. */
    
public JSBS_FramePosition_BOS(JSBS_MinimalParameters parmMinParm,
                                Connection parmDBCon,
                                
boolean parmObjectConstructedByBOC_or_EJB) {
/* 
 * de: Aufrufen der Methode, die das Kopieren der Parameter ausführt.
 * en: Call the method written to do the copying of the parameters. */
     constructionWithDBConnection(parmMinParm, parmDBCon);
/* 
 
* de: Übernehmen des Werts des Parameters in den Merker.
 * en: Transfer the value from the parameter into the flag
. */
      bolObjectConstructedByBOC_or_EJB = parmObjectConstructedByBOC_or_EJB;
    }
/*
 * --------------------
 * de:
 * CONSTRUCTOR
 * der verwendet wird wenn eine bestehende (und geöffnete!) Verbindung zur Datenbank
 * (Connection) als Parameter übergeben wird und
 * die Werte der Variablen aus dem übergebenen Business Object übernommen werden müssen.
 * In den Parametern wird auch übergeben, ob das Objekt dieser Klasse durch ein BOC oder EJB
 * konstruiert wird.
 * en:
 * CONSTRUCTOR
 * when an existing (and open!) Connection to the database-system is passed and
 * the values of the variables have to be taken from a Business Object passed as parameter.
 * There is a parameter signalling that this object is constructed by a BOC or EJB. */
    
public JSBS_FramePosition_BOS(JSBS_MinimalParameters parmMinParm,
                                Connection parmDBCon,
                                JSBS_FramePosition_BO parmJSBS_FramePosition_BO,
                                
boolean parmObjectConstructedByBOC_or_EJB) {
/* 
 * de: Aufrufen der Methode, die das Kopieren der Parameter ausführt.
 * en: Call the method written to do the copying of the parameters. */

     constructionWithDBConnection(parmMinParm, parmDBCon);
/* 
 
* de: Übernehmen des Werts des Parameters in den Merker.
 * en: Transfer the value from the parameter into the flag
. */
      bolObjectConstructedByBOC_or_EJB = parmObjectConstructedByBOC_or_EJB;
/* de:
 * Methode (in der generellen Klasse dieses Business Objects [geerbte Superklasse]) aufrufen
 * die die Werte des als Parameter übergebenen BO auf die Variablen dieses BO kopiert.
 * en:
 * Call the method (in the General Class [superclass]) for this Business Objject to
 * copy the values from the BO passed as parameter to the variables of this Business Objject. */
      copyFromJSBS_FramePosition_BO(parmJSBS_FramePosition_BO);
    }
/*
 * --------------------

 
* de:
 
* METHODE zum Kopieren der Werte, die in den Parametern der 'Constructors'
 
* übergeben wurden in die Variablen dieses Objekts.
 
* en:
 * METHOD to copy the values that were passed in the parameters of the 'constructors'

 
* into the variables of this Object. */
    
private void constructionWithDBConnection(
                                JSBS_MinimalParameters parmMinParm,
                                Connection parmDBConnection) {

      structJSBS_MinimalParameters = new JSBS_MinimalParameters(parmMinParm);
      
structDBCon = parmDBConnection;
    }
/*
 * --------------------
 * de:

 * METHODE um die Änderungen, die mit dieser Datenbank-Verbindung gemacht wurden,
 * als 'gültig' zu markieren (commit).
 * Das 'commit' wird nur ausgeführt, wenn das Objekt durch ein BOC oder EJB konstruiert
 * wurde; d.h. der entsprechende Parameter im 'Constructor' übergeben wurde.

 * Diese Regel ist eine Konvention damit auch innerhalb eines BOS-Objekts wieder
 * BOS-Objekte konstruiert werden können. In diesen Objekten wird aber kein 'commit' oder
 * 'rollback' ausgeführt.
 * en:
 * METHOD to 'commit' the changes made with this database-connection.
 * The commit is only done if the object was constructed by a BOC or EJB;
 * i.e. the adjacent parameter was passed in the 'constructor'.
 * This rule is a convention that allows to 'construct' BOS objects within
 * BOS-objects. Within these BOS-objects a'commit' or 'rollback' is not executed. */
    
private void commitDBConnection(boolean parmReadOnly) {
/* 
 * de:
 * Wenn dieses BOS-Objekt nicht in einem BOC oder EJB konstruiert wurde, dann wird diese
 * Methode hier beendet.
 * en:
 * If this BOS-object has not been constructed in a BOC or EJB, this method will end here. */
      if (! bolObjectConstructedByBOC_or_EJB) return;
/* 
 * de:
 * 'Commit' nur ausführen wenn die DB-Verbindung nicht als 'autocommit' geöffnet wurde.
 * Ein Beenden der Methode bei 'autocommit' verbessert die Performanz.
 * en:
 * Perform the 'commit' only if the DB-connection was not opened as 'autocommit'
 * Ending the method when 'autocommit' was chosen enhances the performance. */
      if (! parmReadOnly) {
/* 
 * de:
 * 'Commit' innerhalb einer try/catch-Logik ausführen damit ein eventueller Fehler beim
 * 'commit' abgefangen werden kann.
 * en:
 * Run the 'commit' within the try/catch-logic to be able to handle a potential error. */
        try {structDBCon.commit();}
        
catch (SQLException SQLExc) {
/* 
 * de:
 * Fehler im Datenbank-System während des 'commit';
 * Fehler an die aufrufende Methode zurück liefern.
 * en:
 * Error of the database-system during 'commit'; report the error to the calling method. */
          StatusCode = CONST_DB_SYSTEM_ERROR;
          
StatusMsg = SQLExc.getMessage();
/* 
 * de: Um auf der sicheren Seite zu sein zusätzlich ein 'rollback' ausführen.
 * en: To be on the save side: perform a 'rollback'. */

          rollbackDBConnection(parmReadOnly);

        }
      }
    }
/*
 * --------------------
 * de:

 * METHODE um die Änderungen, die mit dieser Datenbank-Verbindung gemacht wurden,
 * 'rückgängig' zu machen (rollback); d.h. die Änderungen werden nicht gültig.
 * Das 'rollback' wird nur ausgeführt, wenn das Objekt durch ein BOC oder EJB konstruiert
 * wurde; d.h. der entsprechende Parameter im 'Constructor' übergeben wurde.

 * Diese Regel ist eine Konvention damit auch innerhalb eines BOS-Objekts wieder
 * BOS-Objekte konstruiert werden können. In diesen Objekten wird aber kein 'commit' oder
 * 'rollback' ausgeführt.
 * en:
 * METHOD to 'rollback' the changes made with this database-connection.
 * The rollback is only done if the object was constructed by a BOC or EJB;
 * i.e. the adjacent parameter was passed in the 'constructor'.
 * This rule is a convention that allows to 'construct' BOS objects within
 * BOS-objects. Within these BOS-objects a'commit' or 'rollback' is not executed. */
    
private void rollbackDBConnection(boolean parmReadOnly) {
/* 
 * de:
 * Wenn dieses BOS-Objekt nicht in einem BOC oder EJB konstruiert wurde, dann wird diese
 * Methode hier beendet.
 * en:
 * If this BOS-object has not been constructed in a BOC or EJB, this method will end here. */
      if (! bolObjectConstructedByBOC_or_EJB) return;
/* 
 * de:
 * 'Rollback' nur ausführen wenn die DB-Verbindung nicht als 'autocommit' geöffnet wurde.
 * Ein Beenden der Methode bei 'autocommit' verbessert die Performanz.
 * en:
 * Perform the 'rollback' only if the DB-connection was not opened as 'autocommit'
 * Ending the method when 'autocommit' was chosen enhances the performance. */
      if (! parmReadOnly) {
/* 
 * de:
 * 'Commit' innerhalb einer try/catch-Logik ausführen damit ein eventueller Fehler beim
 * 'commit' abgefangen werden kann.
 * en:
 * Run the 'commit' within the try/catch-logic to be able to handle a potential error. */
        try {structDBCon.commit();}
        
catch (SQLException SQLExc) {
/* 
 * de:
 * Fehler im Datenbank-System während des 'commit';
 * Fehler an die aufrufende Methode zurück liefern.
 * en:
 * Error of the database-system during 'commit'; report the error to the calling method. */
          StatusCode = CONST_DB_SYSTEM_ERROR;
          
StatusMsg = SQLExc.getMessage();
/* 
 * de: Um auf der sicheren Seite zu sein zusätzlich ein 'rollback' ausführen.
 * en: To be on the save side: perform a 'rollback'. */
          
rollbackDBConnection(parmReadOnly);
        }
      }
    }
/*
 * --------------------
 * de:
 * METHODE zum Übertragen der Variablen-weWerte dieses Business Object auf die
 * Variablen des Data-Base-Acces (DBA) Objekts das diesem Business Objekt zugeordnet ist.
 * en:
 * METHOD to transfer the values of the variables from this Business Object
 * to the attributes of the Data-Base-Access (DBA) Object that is assigned
 * to this Business Object. */
    
private void setDBAAttributes(JSBS_Parameter_DBA parmJSBS_Parameter_DBA) {
/* 
 * de:
 * Methode der Superklasse (JSBS_BO) aufrufen um die Werte der Allgemeinen Attribute
 * (Common Attributes) zu übertragen.
 * en:
 * Call the method of the superclass (JSBS_BO) to transfer the values of the
 * Common Attributes. */
      
setCommonDBAAttributes(parmJSBS_Parameter_DBA);
/* 
 * de: Übertragen der geschäfts-spezifischen Attribute dieses Business Object.
 * en: Transfer the business specific attributes of this Business Object. */
      parmJSBS_Parameter_DBA.ParameterName = this.CONST_PARAMETER_NAME;
      parmJSBS_Parameter_DBA.
Value01 = this.FrameClassName;
      parmJSBS_Parameter_DBA.
Value02 = this.UserID;
      parmJSBS_Parameter_DBA.
Value06 =
          packFrameProperties(
this.PosX, this.PosY, this.FrameWidth, this.FrameHeight);
      parmJSBS_Parameter_DBA.
Value07 = JSBS_Formatter.packStringArray(this.ColumnWidthArray01);
      parmJSBS_Parameter_DBA.
Value08 = JSBS_Formatter.packStringArray(this.ColumnWidthArray02);
      parmJSBS_Parameter_DBA.
Value09 = JSBS_Formatter.packStringArray(this.ColumnWidthArray03);
      parmJSBS_Parameter_DBA.
Value10 = JSBS_Formatter.packStringArray(this.ColumnWidthArray04);
      parmJSBS_Parameter_DBA.
Value11 = JSBS_Formatter.packStringArray(this.ColumnWidthArray05);
      parmJSBS_Parameter_DBA.
Value12 = JSBS_Formatter.packStringArray(this.ColumnWidthArray06);
      parmJSBS_Parameter_DBA.
Value13 = JSBS_Formatter.packStringArray(this.ColumnWidthArray07);
      parmJSBS_Parameter_DBA.
Value14 = JSBS_Formatter.packStringArray(this.ColumnWidthArray08);
      parmJSBS_Parameter_DBA.
Value15 = JSBS_Formatter.packStringArray(this.ColumnWidthArray09);
      parmJSBS_Parameter_DBA.
Value16 = JSBS_Formatter.packStringArray(this.ColumnWidthArray10);
    }
/*
 * --------------------
 * de:
 * METHODE zum Speichern der Werte in den Variablen dieses Business Object in der/den
 * Datenbank-Tabelle/n; oder technisch ausgedrückt: Werte 'persistent' machen.
 * Innerhalb der Methode wird entschieden
 * ob dieses Objekt neu ist und ein INSERT der Daten in die DB-Tabelle notwendig ist oder
 * ob die geschäfts-spezifischen Werte geändert wurden und ein UPDATE erforderlich ist.
 * en:
 * METHOD to store the values of the variables from this Business Object
 * into the database-table(s); or in a technical term: make the data persistent.
 * Within the method is decided
 * if this object is new and an INSERT into the db-table is requiered or
 * the business-values object were changed and an UPDATE has to be done. */
    
public void store() {
/* 
 * de:
 * Festlegen, dass 'Update' Operationen auf die Datenbank ausgeführt werden;
 * 'autocommit' nicht setzen.
 * en:
 * Define that there are 'Update' operations to the database: do not set 'autocommit'. */
      boolean bol_autocommit = false;
/* 
 * de: Status-Variablen auf 'OK' setzen.
 * en: Set the Status-variables to a state of 'OK'. */
      
this.StatusCode = CONST_OK;
      
this.StatusMsg = "";
/* 
 * de: Entscheiden ob das Business Object neu erstellt (ObjectID ist 0) oder verändert wurde.
 * en: Decide if the Business Object is newly created (ObjectID is 0) or updated. */
      if (ObjectID == 0) {
/* 
 * de:
 * Speichern eines neuen Objekts angefordert; prüfen, dass ein Datensatz mit dem
 * gleichen Anwender-bekannten-Schlüssel noch nicht existiert für das aktuelle Datum.
 * en:
 * Storing of a new object requested; check that a dataset with the same User-Known-Key
 * does not already exist for the actual date. */
        
boolean locboolDataSetExists =
          
structJSBS_Parameter_DBA.selectByUserKnownKey(structDBCon,
                                                       
structJSBS_MinimalParameters,
                                                        
this.CONST_PARAMETER_NAME,
                                                        
this.FrameClassName,
                                                       
this.UserID);
        if (locboolDataSetExists) {
/* 
 * de: Datensatz mit dem bekannten Schlüssel existiert bereits; 'Fehler' melden.
 * en: Data-Set with the known key already exists; report 'error'. */
          
StatusCode = CONST_DUPLICATE_KEY;
          
StatusMsg = "";
          rollbackDBConnection(bol_autocommit);
          
return;
        }
        
else {
/* 
 * de: Prüfen ob ein Datenbankfehler aufgetreten ist.
 * en: Check if a database-error occured. */
          if (structJSBS_Parameter_DBA.ErrorMsg.length() > 0) {
/* 
 * de: Datenbankfehler aufgetreten; diese Methode nicht fortsetzen.
 * en: Database-Error happened; do not go on with this method. */
            
StatusCode = CONST_DB_SYSTEM_ERROR;
            
StatusMsg = structJSBS_Parameter_DBA.ErrorMsg;
            rollbackDBConnection(bol_autocommit);
            
return;
          }
        }
/* 
 * de:
 * Datensatz mit dem Anwender-bekannten-Schlüssel existiert noch nicht; mit INSERT fortsetzen.
 * Der übergebene Parameter signalisiert, dass dieses der erste Datensatz mit dem
 * Anwender-bekannten-Schlüssel ist.
 * en:
 * Data-Set with the User-Known-Key does not already exist; go ahead with INSERT.
 * The passed parameter signals that this is the first Data-Set with the User-Known-Key. */
        internalInsert(true);
/* 
 * de: Prüfen ob das INSERT fehlerfrei war; sonst Fehlerbehandlung beginnen.
 * en: Verify if the INSERT was ok; otherwise start error-handling. */
        if (StatusCode != CONST_OK) {
          rollbackDBConnection(bol_autocommit);
          
return;
        }
      }
      
else {
/* 
 * de:
 * Ändern eines bestehenden Datensatzes.
 * Im Unterschied zu einer Standard-Implementierung einer BOS-Klasse, zeichnet dieses BOS
 * die durchgeführten Änderungen nicht auf. Eine Änderungs-Historie für die Größe und Position
 * eines Frames (Fensters) ist sinnlos und kostet nur Speicherplatz.
 * en:
 * Update of an existing dataset.
 * Different to a standard-implementation of a BOS-class, this BOS does not record a history of changes.
 * A history of changes in the Frame-Positon and -Size is meaningless and just costs storage-space. */
/*
 * de: Einen UPDATE für dieses BOS ausführen.
 * en: Do an UPDATE for this BOS. */
        internalUpdate();
/* 
 * de: Prüfen ob die Datenbank-Operation fehlerfrei war; wenn nicht ein 'rollback' ausführen.
 * en: Verify if the database-operation was error-free; if not do a rollback. */
        if (StatusCode != CONST_OK) {
/* 
 * de: Ändern des bestehenden Datensatzes ergaben Fehler; an die aufrufende Methode melden.
 * en: Updating existing record failed; report it to the calling method. */
          StatusMsg = "Unexpected Error during update of existing record: " + StatusMsg;
/*
 * de: Ein 'rollback' ausführen und dann die Methode beenden.
 * en: Do a rollback and then end the method. */
          rollbackDBConnection(bol_autocommit);
          
return;
        }
/* 
 * de: Alle Datenbank-Operation waren bis jetzt fehlerfrei; Änderungen bestätigen ('commit').
 * en: All database-operations were error-free till now; commit the changes. */
        commitDBConnection(bol_autocommit);
      }
    }
/*
 * --------------------
 * de:
 * METHODE (nur zur Verwendung innerhalb dieser Klasse) um die CommonAttributes
 * (allgemeine Attribute) aufzubereiten und dann das DBA-Objekt, das die Daten
 * in die Datenbank einträgt, aufzurufen.
 * Der übergebene Parameter signalisiert, ob dieser der erste Datensatz eines
 * Business Objects ist. In diesem Fall werden ObjectID, CreatedAt und CreatedBy
 * mit Werten gefüllt.
 * en:
 * METHOD (just for usage within this class) to prepare the CommonAttributes and
 * then call the DBA object to insert the data into the database.
 * The passed parameter signals if this is the first dataset of a Business Object.
 * In that case, the ObjectID, CreatedAt and CreatedBy attributes are filled. */
    
private void internalInsert(boolean parmFirstInsert) {
/* 
 * de: Attribute, die die zeitliche Gültigkeit des BO festlegen, mit Werten füllen.
 * en: Set the attributes defining the time-validity of the BO. */
      
ValidFrom = JSBS_BO_Services.getNewValidFrom(structJSBS_MinimalParameters);
      ValidTill = JSBS_BO_Services.getGoodTillCancelled_SQLDate();
/* 
 * de:
 * Anwender, der die Änderung ausgeführt hat und die Systemzeit der Änderung festlegen.
 * en:
 * Set the user who made the change and the system-time when the change was made. */
      
ChangedBy structJSBS_MinimalParameters.strUserName;
      ChangedAt = new Timestamp(new Date().getTime());
/* 
 * de:
 * Ein Surrogat (interner Schlüssel) für den Datensatz ermitteln und prüfen,
 * ob dieses Surrogat nicht bereits ein Primärschlüssel in der Datenbank-Tabelle ist.
 * Wenn der Datensatz der erste für ein BO ist, ist das Surrogat auch der ObjectID des BO.
 * en:
 * Get a surrogate for the DataSetID (which is the ObjectID too
 * if it is the first dataset for a BO) and check if the generated surrogate is already
 * a primary key in the database-table. */
      int intTrialCounter = 9;
      
do {
/* 
 * de: Methode, die ein surrogat innerhalb eines großen Wertebereichs erzeugt, aufrufen.
 * en: Call the method that generates a surrogate with a widespread range. */
        DataSetID = JSBS_BO_Services.generateSurrogate();
/* 
 * de:
 * Datenbankzugriff ausführen um zu prüfen, ob das gerade generierte Surrogat bereits
 * verwendet wird.
 * en:
 * Make a database-access to check if the just generated surrogate is already used. */
        boolean locbolDataSetExists =
          
structJSBS_Parameter_DBA.selectByDataSetID(structDBCon, this.DataSetID);
        
if (locbolDataSetExists) {
/* 
 * de: Seltener Fall, dass das generierte Surrogat bereits verwendet wird; nochmals versuchen.
 * en: Rare case that the generated surrogate is already a key; try again. */
          intTrialCounter--;
          
continue;
        }
        
else {
/* 
 * de: Prüfen ob bei der Datenbank-Operation ein Fehler aufgetreten ist.
 * en: Check if there was an error at the database operation. */
          if (structJSBS_Parameter_DBA.ErrorMsg.length() > 0) {
/* 
 * de: Das DBA-Objekt meldet einen Fehler; Fehler-Meldung in dieses Objekt übernehmen.
 * en: DBA object reports an error; transfer the Error-Message to this object. */
            
StatusCode = CONST_DB_SYSTEM_ERROR;
            
StatusMsg = structJSBS_Parameter_DBA.ErrorMsg;
            
return;
          
}
/* 
 * de:
 * Ein Datensatz mit dem generierten Surrogat als Primärschlüssel existiert noch nicht -
 * Verarbeitung fortsetzen.
 * Wenn das Business Object das erste Mal in die Datenbanktabelle aufgenommen wird:
 * Werte für ObjectID, CreatedAt und CreatedBy festlegen.
 * en:
 * A dataset with the generated surrogate as primary key does not already exist -
 * continue processing.
 * When the Business Object is inserted for the first time into the database-table:
 * set the values for ObjectID, CreatedAt and CreatedBy. */
          if (parmFirstInsert) {
            
ObjectID = DataSetID;
            
CreatedAt = ChangedAt;
            
CreatedBy = ChangedBy;
          }
/* 
 * de: Übertragen der Werte dieses Business Objects in das DBA-Objekt.
 * en: Transfer the values of this Business Object to the DBA object. */
          setDBAAttributes(structJSBS_Parameter_DBA);
/* 
 * de:
 * Methode des DBA Objekts aufrufen und das INSERT in die Datenbank auf niederer
 * Ebene ausführen.
 * en:
 * Call the method of the DBA object to do the database INSERT on the low level. */
          structJSBS_Parameter_DBA.insert(structDBCon);
/* 
 * de: Prüfen ob das INSERT in die Datenbank fehlerfrei war.
 * en: Check if the database INSERT was error-free. */
          if (structJSBS_Parameter_DBA.ErrorMsg.length() > 0) {
/* 
 * de: Fehlermeldung ist nicht leer, Fehler auf dieses Objekt übertragen.
 * en: Error-Message is not empty; transfer the error to this object. */
            
StatusCode = CONST_DB_SYSTEM_ERROR;
            
StatusMsg = structJSBS_Parameter_DBA.ErrorMsg;
            
return;
          
}
          
else {
/* 
 * de: Fehlermeldung ist leer; d.h. kein Fehler wurde vom DBA zurück gemeldet.
 * en: Error-Message is empty; i.e. no error is reported by the DBA. */
            return;
          }
        }
      }
while (intTrialCounter > 0);
/* 
 * de:
 * Alle der 9 generierten Surrogate sind bereits Primärschlüssel in der Tabelle;
 * Datenbank scheinbar voll; Fehler melden.
 * en:
 * All of the 9 generated surrogates were already primary key in the table;
 * database obviously full; report error. */
      
StatusCode = CONST_DB_UNKNOWN_ERROR;
      
StatusMsg = "No surrogate found after 9 trials; database-table obviously full.";
    }
/*
 * --------------------
 * de:
 * METHODE (nur zur Verwendung innerhalb dieser Klasse) um das DBA Objekt
 * aufzurufen, den bestehenden Datensatz mit den Werten aus diesem
 * Business Object zu füllen und die geänderten Werte auf die Datenbank-Tabelle
 * zu schreiben.
 * en:
 * METHOD (just for usage within this class) to call the DBA object to
 * update the existing dataset with the values of this Business Object. */
    
private void internalUpdate() {
/* 
 * de: Werte dieses Business Objects auf das DBA Objekt übertragen.
 * en: Transfer the values of this Business Object to the DBA object. */
      setDBAAttributes(structJSBS_Parameter_DBA);
/* 
 * de:
 * Aufrufen der Methode des DBA-Objekts und den UPDATE auf der Datenbank
 * auf niederer Ebene ausführen.
 * en:
 * Call the method of the DBA object to do the database UPDATE on the low level. */
      structJSBS_Parameter_DBA.update(structDBCon);
/* 
 * de: Prüfen ob der UPDATE auf der Datenbank fehlerfrei war.
 * en: Check if the database UPDATE was error-free. */
      if (structJSBS_Parameter_DBA.ErrorMsg.length() > 0) {
/* 
 * de: Fehlermeldung des DBA ist nicht leer; Fehler auf dieses Objekt übertragen.
 * en: Error-Message of the DBA is not empty; transfer the error to this object. */
        
StatusCode = CONST_DB_SYSTEM_ERROR;
        
StatusMsg = structJSBS_Parameter_DBA.ErrorMsg;
        
return;
      
}
    }
/*
 * --------------------
 * de:
 * METHODE zum Selektieren eines Datensatzes mit dem Primärschlüssel (DataSetID).
 * Mit dem Primärschlüssel der Tabelle kann nur ein Datensatz gefunden werden.
 * en:
 * METHOD to get the dataset identified by the primary key (DataSetID).
 * With the primary key of the table, only one dataset can be found. */
    
public void selectByDataSetID(double parmDataSetID) {
/* 
 * de:
 * Festlegen, dass nur 'Read' Operation auf die Datenbank ausgeführt werden;
 * 'autocommit' setzen.
 * en:
 * Define that there are only 'Read' operations to the database; set 'autocommit'. */
      boolean bol_autocommit = true;
/* 
 * de: Status-Variablen auf 'OK' setzen.
 * en: Reset the Status-variables to a state of OK. */
      this.StatusCode = CONST_OK;
      this.StatusMsg = "";
/* 
 * de: Datenbank-Operation ausführen.
 * en: Perform the database-operation. */
      
if (structJSBS_Parameter_DBA.selectByDataSetID(structDBCon, parmDataSetID)) {
/* 
 * de: Angeforderter Datensatz vorhanden; Werte vom DBA auf dieses BO übertragen.
 * en: Requested dataset exists; transfer the value from the DBA object to this BO. */
        getDBAAttributes(structJSBS_Parameter_DBA);
/* 
 * de:
 * Methode, die entscheidet ob ein 'Commit' auszuführen ist und es wenn notwendig
 * ausführt, aufrufen und Methode beenden.
 * en:
 * Call the method deciding if a 'commit' is needed, and performing it,
 * and end the method. */
        commitDBConnection(bol_autocommit);
        
return;
      }
      
else {
/* 
 * de:
 * Prüfen ob die Operation fehlerfrei war und kein Datensatz gefunden wurde
 * oder ein Fehler aufgetreten ist.
 * en:
 * Verify if the operation was error-free and no dataset was found
 * or an error occured. */
        if (structJSBS_Parameter_DBA.ErrorMsg.length() <= 0) {
/* 
 * de:
 * Fehlermeldung ist leer; das bedeutet, dass mit den Suchkriterien kein
 * Datensatz gefunden wurde.
 * en:
 * Error-Message is empty; means that no dataset was found with the search criteria. */
          
StatusCode = CONST_NOT_FOUND;
          
StatusMsg = "";
/* 
 * de:
 * Methode, die entscheidet ob ein 'Rollback' auszuführen ist und es wenn notwendig
 * ausführt, aufrufen und Methode beenden.
 * en:
 * Call the method deciding if a 'rollback' is needed, and performing it,
 * and end the method. */
          rollbackDBConnection(bol_autocommit);
          
return;
        
}
        
else {
/* 
 * de: Fehlermeldung ist nicht leer; Fehlermeldung auf dieses BO übertragen.
 * en: Error-Message is not empty; transfer the error-message to this BO. */
          
StatusCode = CONST_DB_SYSTEM_ERROR;
          
StatusMsg = structJSBS_Parameter_DBA.ErrorMsg;
/* 
 * de:
 * Methode, die entscheidet ob ein 'Rollback' auszuführen ist und es wenn notwendig
 * ausführt, aufrufen und Methode beenden.
 * en:
 * Call the method deciding if a 'rollback' is needed, and performing it,
 * and end the method. */
          rollbackDBConnection(bol_autocommit);
          
return;
        }
      }

   
}
/*
 * --------------------
 * de:
 * METHODE zum Selektieren des Datensatzes der durch den Anwender-bekannten Schlüssel
 * (FrameClass-Name / User-ID) festgelegt ist.
 * Per Definition kann zu einem Zeitpunkt nur ein gültiger Datensatz gefunden werden.
 * en:

 * METHOD to select the dataset identified by the User-Known-Key
 * (FrameClass-Name / User-ID).
 * As there is only one valid dataset for the given date only one dataset can be found. */
    
public void selectByUserKnownKey(String parmFrameClassName, String parmUserID) {
/* de:
 * Per Definition gibt es in dieser Methode nur 'Lese'-Operation auf die Datenbank;
 * aus Gründen der Performanz wird deswegen 'autocommit' eingeschalten.
 * en:
 * Define that there are only 'Read' operations to the database; set 'autocommit' to gain
 * performance of the database-system. */
      boolean bol_autocommit = true;
/* de: Status-Variable auf 'OK' setzen.
 * en: Set the Status-variables to a state of OK. */
      
this.StatusCode = CONST_OK;
      
this.StatusMsg = "";
/* de: Datenbank-Operation ausführen.
 * en: Perform the database-operation. */

      
if (structJSBS_Parameter_DBA.selectByUserKnownKey(structDBCon,
                                                       
structJSBS_MinimalParameters,
                                                       
CONST_PARAMETER_NAME,
                                                        parmFrameClassName,
                                                        parmUserID)) {
/* de: Gesuchter Datensatz existiert; übertragen der Werte vom DBA in dieses BO.
 * en: Requested dataset exists; transfer the values from the DBA object to this BO. */
        getDBAAttributes(structJSBS_Parameter_DBA);
/* de:
 * Commit ausführen (notwendig für einige Datenbank-Systeme obwohl es keine Änderungen
 * zu bestätigen gibt weil die Verbindung mit 'readonly' eröffnet wurde).
 * en:
 * Commit (necessary for some DB-Systems although there is no commit as the Connection was
 * opened 'ReadOnly'). */
        commitDBConnection(bol_autocommit);
        
return;
      }
      
else {
/* de:
 * Prüfen ob die Operation fehlerfrei war und nur der gesuchte Datensatz nicht gefunden wurde
 * oder ob ein Fehler aufgetreten ist.
 * en:
 * Verify if the operation was error-free and the searched dataset was not found
 * or an error occured. */
        if (structJSBS_Parameter_DBA.ErrorMsg.length() <= 0) {
/* de: Fehler-Nachricht ist 'leer'; bedeutet dass der gesuchte Datensatz nicht gefunden wurde.
 * en: Error-Message is empty; means that no dataset was found with the search criteria. */
          
StatusCode = CONST_NOT_FOUND;
          
StatusMsg = "";
/* de:
 * Rollback ausführen (notwendig für einige Datenbank-Systeme obwohl es keine Änderungen
 * zu bestätigen gibt weil die Verbindung mit 'readonly' eröffnet wurde).
 * en:
 * Rollback (necessary for some DB-Systems although there is no commit as the Connection was
 * opened 'ReadOnly'). */
          rollbackDBConnection(bol_autocommit);
          
return;
        
}
        
else {
/* de: Error-Message ist nicht leer; übertragen der Fehler-Meldung auf dieses BO.
 * en: Error-Message is not empty; transfer the error-message to this BO. */
          
StatusCode = CONST_DB_SYSTEM_ERROR;
          
StatusMsg = structJSBS_Parameter_DBA.ErrorMsg;
/* de:
 * Rollback ausführen (notwendig für einige Datenbank-Systeme obwohl es keine Änderungen
 * zu bestätigen gibt weil die Verbindung mit 'readonly' eröffnet wurde).
 * en:
 * Rollback (necessary for some DB-Systems although there is no commit as the Connection was
 * opened 'ReadOnly'). */
          rollbackDBConnection(bol_autocommit);
          
return;
        }
      }
   }
/*
 * --------------------
 * de:
 * METHODE zum Übertragen der Attributs-Werte des Data-Base-Access (DBA) Objekts
 * das diesem Business-Object thematisch am nächsten ist auf die Variablen dieses BO.
 * en:

 * METHOD to transfer the attribute-values from the Data-Base-Access (DBA) Object
 * that is closest to this Business Object to the variables of this BO.  */
    
public void getDBAAttributes(JSBS_Parameter_DBA parmJSBS_Parameter_DBA) {
/* 
 * de:
 * Methode der geerbten Superklasse (JSBS_BO) aufrufen um die Werte der
 * Allgemeinen Attribute (Common Attributes) zu übertragen.
 * en:
 * Call the method of the inherited superclass (JSBS_BO) to transfer the values of the
 * Common Attributes. */
      
getCommonDBAAttributes(parmJSBS_Parameter_DBA);
/* 
 * de: Geschäftsbezogene Werte dieses Business Object übertragen.
 * en: Transfer the business specific values of this Business Object. */
      this.FrameClassName = parmJSBS_Parameter_DBA.Value01;
      
this.UserID = parmJSBS_Parameter_DBA.Value02;
      
this.PosX = unpackFrameProperties_PosX(parmJSBS_Parameter_DBA.Value06);
      
this.PosY = unpackFrameProperties_PosY(parmJSBS_Parameter_DBA.Value06);
      
this.FrameWidth = unpackFrameProperties_FrameWidth(parmJSBS_Parameter_DBA.Value06);
      
this.FrameHeight = unpackFrameProperties_FrameHeight(parmJSBS_Parameter_DBA.Value06);
      
this.ColumnWidthArray01 = JSBS_Formatter.unpackStringArray(parmJSBS_Parameter_DBA.Value07);
      
this.ColumnWidthArray02 = JSBS_Formatter.unpackStringArray(parmJSBS_Parameter_DBA.Value08);
      
this.ColumnWidthArray03 = JSBS_Formatter.unpackStringArray(parmJSBS_Parameter_DBA.Value09);
      
this.ColumnWidthArray04 = JSBS_Formatter.unpackStringArray(parmJSBS_Parameter_DBA.Value10);
      
this.ColumnWidthArray05 = JSBS_Formatter.unpackStringArray(parmJSBS_Parameter_DBA.Value11);
      
this.ColumnWidthArray06 = JSBS_Formatter.unpackStringArray(parmJSBS_Parameter_DBA.Value12);
      
this.ColumnWidthArray07 = JSBS_Formatter.unpackStringArray(parmJSBS_Parameter_DBA.Value13);
      
this.ColumnWidthArray08 = JSBS_Formatter.unpackStringArray(parmJSBS_Parameter_DBA.Value14);
      
this.ColumnWidthArray09 = JSBS_Formatter.unpackStringArray(parmJSBS_Parameter_DBA.Value15);
      
this.ColumnWidthArray10 = JSBS_Formatter.unpackStringArray(parmJSBS_Parameter_DBA.Value16);
    }
/*
 * --------------------
 * de:
 * METHODE zum 'packen' der Attribute die Grösse und Position des JFrame festlegen in
 * eine Zeichenkette die in einem Attribut des 'Parameter' DBA gespeichert werden kann.
 * en:

 * METHOD to pack the attributes defining size and position of the JFrame into a string
 * that can be stored within
one attribute of the 'Parameter' DBA. */
    
protected String packFrameProperties(int parmPosX, int parmPosY,
                                         
int parmFrameWidth, int parmFrameHeight) {
/* Zeichenkette für den Rückgabe-Wert ('gepackte' Werte).
 * String for the return-value (packed values). */
      
String strReturnValue;
/* 
 * de:
 * Umwandeln der Parameter in Zeichenketten und diese 'zusammenhängen'.
 * Trennzeichen zwischen den einzelnen Werte ist ':' (Doppelpunkt).
 * en:
 * Convert the parameters to Strings and concatenate them. Delimiter is ':' (colon). */
      strReturnValue = JSBS_Formatter.toFormattedString(parmPosX) + ":";
      strReturnValue += JSBS_Formatter.toFormattedString(parmPosY) +
":";
      strReturnValue += JSBS_Formatter.toFormattedString(parmFrameWidth) +
":";
      strReturnValue += JSBS_Formatter.toFormattedString(parmFrameHeight);
      
return strReturnValue;
    }
/*
 * --------------------
 * de:
 * METHODE zum Extrahieren der Position X des JFrame aus einer Zeichenkette mit
 * den gepackten 'Eigenschaften' des JFrame - die in einem Attribut der Parameter_DBA
 * gespeichert sind.
 * en:

 * METHOD to extract the Frame-Position X from a string that represents the
 * packed Frame-Properties that are stored within an attribute of the Parameter_DBA. */
    
private int unpackFrameProperties_PosX(String parmFrameProperties) {
/* de: Rückgabewert.
 * en: return-value. */
      
int intReturnValue;
/* de: PosX ist der Wert vor dem ersten ':'.
 * en: PosX is the value before the first ':'. */
      int intDelimiterPosition = parmFrameProperties.indexOf(':');
      
if (intDelimiterPosition < 0) return 0;
      String strReturnValue = parmFrameProperties.substring(0, intDelimiterPosition);
/* de: Umwandeln der Zeichenkette mit dem numerischen Wert in einen int-Wert.
 * en: Convert the String with the numeric value to an int-value. */
      try {
          intReturnValue = (
new Integer(strReturnValue)).intValue();
      }
      
catch (Exception Exc) {intReturnValue = 0;};
      
return intReturnValue;
    }
/*
 * --------------------
 * de:
 * METHODE zum Extrahieren der Position Y des JFrame aus einer Zeichenkette mit
 * den gepackten 'Eigenschaften' des JFrame - die in einem Attribut der Parameter_DBA
 * gespeichert sind.
 * en:

 * METHOD to extract the Frame-Position Y from a string that represents the
 * packed Frame-Properties that are stored within the Parameter_DBA. */
    
private int unpackFrameProperties_PosY(String parmFrameProperties) {
/* de: Rückgabewert.
 * en: return-value. */

      int intReturnValue;
/* de: PosY ist der Wert zwischen dem ersten und zweiten ':'.
 * en: PosY is the value between the first and second ':'. */
      int intDelimiterPosition1 = parmFrameProperties.indexOf(':');
      
if (intDelimiterPosition1 < 0) return 0;
      
int intDelimiterPosition2 = parmFrameProperties.indexOf(':', intDelimiterPosition1 + 1);
      
if (intDelimiterPosition2 < 0) return 0;
      String strReturnValue = parmFrameProperties.substring(
                                intDelimiterPosition1 + 1, intDelimiterPosition2);

/* de: Umwandeln der Zeichenkette mit dem numerischen Wert in einen int-Wert.
 * en: Convert the String with the numeric value to an int-value. */

      
try {
          intReturnValue = (
new Integer(strReturnValue)).intValue();
      }
      
catch (Exception Exc) {intReturnValue = 0;};
      
return intReturnValue;
    }
/*
 * --------------------
 * de:
 * METHODE zum Extrahieren der Breite des JFrame aus einer Zeichenkette mit
 * den gepackten 'Eigenschaften' des JFrame - die in einem Attribut der Parameter_DBA
 * gespeichert sind.
 * en:

 * METHOD to extract the Frame-Width from a string that represents the
 * packed Frame-Properties that are stored within the Parameter_DBA. */
    
private int unpackFrameProperties_FrameWidth(String parmFrameProperties) {
/* de: Rückgabewert.
 * en: return-value. */

      int intReturnValue;
/* de: Breite des JFrame ist der Wert zwischen dem zweiten und dritten ':'.
 * en: FrameWidth is the value between the second and third ':'. */
      int intDelimiterPosition1 = parmFrameProperties.indexOf(':');
      
if (intDelimiterPosition1 < 0) return 700;
      
int intDelimiterPosition2 = parmFrameProperties.indexOf(':', intDelimiterPosition1 + 1);
      
if (intDelimiterPosition2 < 0) return 700;
      
int intDelimiterPosition3 = parmFrameProperties.indexOf(':', intDelimiterPosition2 + 1);
      
if (intDelimiterPosition3 < 0) return 700;
      String strReturnValue = parmFrameProperties.substring(
                                intDelimiterPosition2 + 1, intDelimiterPosition3);

/* de: Umwandeln der Zeichenkette mit dem numerischen Wert in einen int-Wert.
 * en: Convert the String with the numeric value to an int-value. */

      
try {
          intReturnValue = (
new Integer(strReturnValue)).intValue();
      }
      
catch (Exception Exc) {intReturnValue = 700;};
      
return intReturnValue;
    }
/*
 * --------------------
 * de:
 * METHODE zum Extrahieren der Höhe des JFrame aus einer Zeichenkette mit
 * den gepackten 'Eigenschaften' des JFrame - die in einem Attribut der Parameter_DBA
 * gespeichert sind.
 * en:

 * METHOD to extract the Frame-Height from a string that represents the
 * packed Frame-Properties that are stored within the Parameter_DBA. */
    
private int unpackFrameProperties_FrameHeight(String parmFrameProperties) {
/* de: Rückgabewert.
 * en: return-value. */

      int intReturnValue;
/* de: Höhe des JFrame ist der Wert nach dem dritten ':'.
 * en: FrameHeight is the value after the third ':'. */
      int intDelimiterPosition1 = parmFrameProperties.indexOf(':');
      
if (intDelimiterPosition1 < 0) return 500;
      
int intDelimiterPosition2 = parmFrameProperties.indexOf(':', intDelimiterPosition1 + 1);
      
if (intDelimiterPosition2 < 0) return 500;
      
int intDelimiterPosition3 = parmFrameProperties.indexOf(':', intDelimiterPosition2 + 1);
      
if (intDelimiterPosition3 < 0) return 500;
      String strReturnValue = parmFrameProperties.substring(
                                intDelimiterPosition3 + 1);

/* de: Umwandeln der Zeichenkette mit dem numerischen Wert in einen int-Wert.
 * en: Convert the String with the numeric value to an int-value. */

      
try {
          intReturnValue = (
new Integer(strReturnValue)).intValue();
      }
      
catch (Exception Exc) {intReturnValue = 500;};
      
return intReturnValue;
    }

}

zum Inhaltsverzeichnis

Erklärungen und Anwendungsbeispiele

Die Methoden dieser Klasse werden nur von Methoden innerhalb des JavaScout Basis-Systems aufgerufen und sind nicht für eine allgemeine Verwendung gedacht.

zum Inhaltsverzeichnis

Verwandte Dokumentation

Dokument

Inhalt

Leitfaden für die Entwicklung von Heavyweight-Clients mit dem JS-FCF – Notwendige Schritte zur Entwicklung des StartFrames  

Dieser Leitfaden enthält die notwendigen Tätigkeiten für die Entwicklung eines StartFrame (auch als Command-Center bekannt).
Das StartFrame stellt die Möglichkeiten bereit, verschiedene TaskFrames für die Bearbeitung von Geschäftsfällen aufzurufen.
Weiters ist im StartFrame jener Programm-Code enthalten, der die Verbindung zum Datenbanksystem bzw. zum Java-Application-Server (JAS) herstellt.

zum Inhaltsverzeichnis