This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

UITable und DateFormat

Allgemeine Fragen zur Entwicklung von und mit JVx.

UITable und DateFormat

Postby tak » Mon Aug 09, 2010 10:28 pm

Wie kann einer Column vom Type TimestampDataType ein DateFormat zugewiesen werden, um dieses für die Anzeige verwenden zu können ?

LG, Tommy
tak
 
Posts: 14
Joined: Tue Oct 20, 2009 9:21 pm

Re: UITable und DateFormat

Postby Support@SIB » Tue Aug 10, 2010 5:10 pm

Das Format wird im Moment durch den Editor definiert, z.B:

Code: Select all
((IDateCellEditor)<IDataRow>.getRowDefinition().getColumnDefinition(COLUMN).
                              getDataType().getCellEditor()).setDateFormat("yyyy-MM-dd");
User avatar
Support@SIB
 
Posts: 353
Joined: Mon Sep 28, 2009 1:56 pm

Re: UITable und DateFormat

Postby tak » Tue Aug 10, 2010 8:03 pm

Zu welchem Zeitpunkt soll das DateFormat gesetzt werden?

Nach dem Open des RemoteDataBooks ?

In diesem Fall bekomme ich eine NullPointerException.
tak
 
Posts: 14
Joined: Tue Oct 20, 2009 9:21 pm

Re: UITable und DateFormat

Postby Support@SIB » Wed Aug 11, 2010 11:34 am

Der Zugriff auf die MetaDaten (Spaltenbezeichnungen) sollte immer nach dem open() durchgeführt werden. Ansonsten wird eine ModelException geworfen, da die Column nicht bekannt ist!

Obiges Beispiel setzt voraus, daß ein Editor auf die Spalte, manuell, gesetzt wurde!

Grundsätzlich wird von JVx für die DataTypes kein Cell Editor direkt zugewiesen, außer es wurde manuell ein CellEditor definiert. Wenn kein CellEditor definiert wurde, dann werden die Default CellEditoren verwendet. Auf die Standard Cell Editoren wird über die Factory zugegriffen:

Code: Select all
getFactory().getDefaultCellEditor(<IDataRow>.getRowDefinition().getColumnDefinition(COLUMN)
            .getDataType().getTypeClass());

Die Default CellEditoren sind veränderbar durch:

Code: Select all
getFactory().setDefaultCellEditor(<Class>, <ICellEditor>);
User avatar
Support@SIB
 
Posts: 353
Joined: Mon Sep 28, 2009 1:56 pm

Re: UITable und DateFormat

Postby tak » Wed Aug 11, 2010 9:31 pm

Erst einmal danke für die raschen Antworten.

Leider Hilft mir die Antwort nur begrenzt weiter, also Poste ich einfach mal ein kleines Beispiel welches meine Wünsche wohl besser beschreibt.

Code: Select all
//create databook
MemDataBook mdbDaySelection = new MemDataBook();
mdbDaySelection.setName("DAY_SELECTION");
mdbDaySelection.getRowDefinition().addColumnDefinition(new ColumnDefinition("DAY", new TimestampDataType()));
mdbDaySelection.open();

//set correct dateformat in table
mdbDaySelection.getRowDefinition().getColumnDefinition("DAY").getDataType().setCellEditor(new UIDateCellEditor("dd.MM.yyyy"));

//fill with dummy data
mdbDaySelection.insert(false);
mdbDaySelection.setValue("DAY", new java.util.Date(2010-1900,1,1));
mdbDaySelection.saveSelectedRow();

mdbDaySelection.insert(false);
mdbDaySelection.setValue("DAY", new java.util.Date(2010-1900,1,2));
mdbDaySelection.saveSelectedRow();

//create datarow
RowDefinition rdDay = new RowDefinition();
rdDay.addColumnDefinition(new ColumnDefinition("DAY", new TimestampDataType()));      
//DataRow drDay = new DataRow(rdDay);
DataRow drDay = new DataRow(rdDay);

//set linkedcelleditor
UILinkedCellEditor lceDaySelection = new UILinkedCellEditor(new ReferenceDefinition(new String[] {"DAY"},mdbDaySelection,new String[] {"DAY"}));
drDay.getRowDefinition().getColumnDefinition("DAY").getDataType().setCellEditor(lceDaySelection);

//create editor
UIEditor eDay = new UIEditor();
eDay.setColumnName("DAY");
eDay.setDataRow(drDay);


Problem ist nun das der im Editor angezeigte Wert (Format) nicht dem im DataBook zugewiesenem entspricht.
Gibt es eine Möglichkeit das Format für den Editor anzugeben?

Frage am Rande:

Code: Select all
((TimestampDataType)mdbDaySelection.getRowDefinition().getColumnDefinition("DAY").getDataType()).setDateFormat("dd.MM.yyyy");


Hat das im DataType angegebene Format im Moment Auswirkungen auf Komponenten?


Grüße, Tommy
tak
 
Posts: 14
Joined: Tue Oct 20, 2009 9:21 pm

Re: UITable und DateFormat

Postby Development@SIB » Thu Aug 12, 2010 12:12 pm

Das ursprüngliche Problem der Anzeige, passt nun nicht mehr ganz zum Titel, da folgendes passiert:

Es wird ein LinkedCellEditor mit Daten in der Auswahl verwendet. Diese Daten sind speziell formatiert und diese Formatierung soll dann nach der Auswahl, auch als Text in den Editor übernommen werden.

Im Gegensatz zum DateCellEditor wird beim LinkedCellEditor das Format nicht berücksichtigt. Das Problem besteht im Moment auch bei anderen Type Formatierungen.
(Details siehe Support System)


Im Moment bleiben folgende Workarounds:

1.) Wenn ein java.util.Date Objekt, für die weitere Verarbeitung, benötigt wird

In der Auswahlliste einfach eine zweite Spalte (StringDataType) definieren, die den bereits formatierten Wert enthält. Wenn die Auswahlliste aus der DB über eine View bereitgestellt wird, dann einfach eine formatierte Spalte in die View einfügen.

Den Editor auf die Text Spalte verlinken und den LinkedCellEditor mit Text und Datum Spalte konfigurieren.

Die nicht benötigte Spalte in der Auswahlliste ausblenden.


2.) Wenn keine weitere Verarbeitung erfolgt

Anstatt TimestampDataType einen StringDataType verwenden und die Werte formatiert setzen.


Bezüglich der Frage zum DataType Format: Nein es hat im Moment keine Auswirkung.

Dieses Format wird benötigt um im Model die best-case Typ Konvertierung durchführen zu können, sprich wenn ein String auf eine Timstamp Column gesetzt wird. Nachdem das Model keine Referenz zum UI hält, ist das Format an dieser Stelle notwendig.

Das Type Format sollte auch vom LinkedCellEditor berücksichtigt werden, ist aber in JVx 0.8 beta2 noch nicht der Fall (Details siehe Support System).


Anmerkungen zum geposteten Source Code:

Anstatt: new java.util.Date(2010-1900,1,2)
wäre: java.sql.Timestamp.valueOf("yyyy-mm-dd hh:mm:ss.fffffffff") etwas praktischer.
Um alle Probleme zu vermeiden, würde sich ein Calendar anbieten.
User avatar
Development@SIB
 
Posts: 325
Joined: Mon Sep 28, 2009 1:54 pm


Return to Development (DE)